2024-11-28 16:49:41 +01:00
package resources
import (
"cloud.o-forge.io/core/oc-lib/models/resources/resource_model"
"cloud.o-forge.io/core/oc-lib/models/utils"
"cloud.o-forge.io/core/oc-lib/tools"
)
type Container struct {
Image string ` json:"image,omitempty" bson:"image,omitempty" ` // Image is the container image
Command string ` json:"command,omitempty" bson:"command,omitempty" ` // Command is the container command
Args string ` json:"args,omitempty" bson:"args,omitempty" ` // Args is the container arguments
Env map [ string ] string ` json:"env,omitempty" bson:"env,omitempty" ` // Env is the container environment variables
Volumes map [ string ] string ` json:"volumes,omitempty" bson:"volumes,omitempty" ` // Volumes is the container volumes
}
type Expose struct {
Port int ` json:"port,omitempty" bson:"port,omitempty" ` // Port is the port
Reverse string ` json:"reverse,omitempty" bson:"reverse,omitempty" ` // Reverse is the reverse
PAT int ` json:"pat,omitempty" bson:"pat,omitempty" ` // PAT is the PAT
}
/ *
* ProcessingResource is a struct that represents a processing resource
* it defines the resource processing
* /
type ProcessingResource struct {
resource_model . AbstractResource
IsService bool ` json:"is_service,omitempty" bson:"is_service,omitempty" ` // IsService is a flag that indicates if the processing is a service
CPUs [ ] * CPU ` bson:"cpus,omitempty" json:"cp_us,omitempty" ` // CPUs is the list of CPUs
GPUs [ ] * GPU ` bson:"gpus,omitempty" json:"gp_us,omitempty" ` // GPUs is the list of GPUs
RAM * RAM ` bson:"ram,omitempty" json:"ram,omitempty" ` // RAM is the RAM
Storage uint ` bson:"storage,omitempty" json:"storage,omitempty" ` // Storage is the storage
Parallel bool ` bson:"parallel,omitempty" json:"parallel,omitempty" ` // Parallel is a flag that indicates if the processing is parallel
ScalingModel uint ` bson:"scaling_model,omitempty" json:"scaling_model,omitempty" ` // ScalingModel is the scaling model
DiskIO string ` bson:"disk_io,omitempty" json:"disk_io,omitempty" ` // DiskIO is the disk IO
Container * Container ` bson:"container,omitempty" json:"container,omitempty" ` // Container is the container
Expose [ ] Expose ` bson:"expose,omitempty" json:"expose,omitempty" ` // Expose is the execution
}
2024-12-04 11:33:08 +01:00
func ( d * ProcessingResource ) GetAccessor ( username string , peerID string , groups [ ] string , caller * tools . HTTPCaller ) utils . Accessor {
return New [ * ProcessingResource ] ( tools . PROCESSING_RESOURCE , username , peerID , groups , caller , func ( ) utils . DBObject { return & ProcessingResource { } } ) // Create a new instance of the accessor
2024-11-28 16:49:41 +01:00
}