47 lines
2.3 KiB
Go
47 lines
2.3 KiB
Go
package live
|
|
|
|
import (
|
|
"cloud.o-forge.io/core/oc-lib/models/common/enum"
|
|
"cloud.o-forge.io/core/oc-lib/models/resources"
|
|
"cloud.o-forge.io/core/oc-lib/models/utils"
|
|
"cloud.o-forge.io/core/oc-lib/tools"
|
|
)
|
|
|
|
/*
|
|
* LiveStorage is a struct that represents a compute units in your datacenters
|
|
*/
|
|
|
|
type LiveStorage struct {
|
|
AbstractLive
|
|
|
|
Source string `bson:"source,omitempty" json:"source,omitempty"` // Source is the source of the storage
|
|
Path string `bson:"path,omitempty" json:"path,omitempty"` // Path is the store folders in the source
|
|
Local bool `bson:"local" json:"local"`
|
|
SecurityLevel string `bson:"security_level,omitempty" json:"security_level,omitempty"`
|
|
SizeType enum.StorageSize `bson:"size_type" json:"size_type" default:"0"` // SizeType is the type of the storage size
|
|
SizeGB int64 `bson:"size,omitempty" json:"size,omitempty"` // Size is the size of the storage
|
|
Encryption bool `bson:"encryption,omitempty" json:"encryption,omitempty"` // Encryption is a flag that indicates if the storage is encrypted
|
|
Redundancy string `bson:"redundancy,omitempty" json:"redundancy,omitempty"` // Redundancy is the redundancy of the storage
|
|
Throughput string `bson:"throughput,omitempty" json:"throughput,omitempty"` // Throughput is the throughput of the storage
|
|
}
|
|
|
|
func (d *LiveStorage) GetAccessor(request *tools.APIRequest) utils.Accessor {
|
|
return NewAccessor[*LiveStorage](tools.LIVE_STORAGE, request) // Create a new instance of the accessor
|
|
}
|
|
func (d *LiveStorage) GetResourceAccessor(request *tools.APIRequest) utils.Accessor {
|
|
return resources.NewAccessor[*resources.ComputeResource](tools.STORAGE_RESOURCE, request, func() utils.DBObject { return &resources.StorageResource{} })
|
|
}
|
|
|
|
func (d *LiveStorage) GetResource() resources.ResourceInterface {
|
|
return &resources.StorageResource{}
|
|
}
|
|
func (d *LiveStorage) GetResourceInstance() resources.ResourceInstanceITF {
|
|
return &resources.StorageResourceInstance{}
|
|
}
|
|
|
|
func (d *LiveStorage) SetResourceInstance(res resources.ResourceInterface, i resources.ResourceInstanceITF) resources.ResourceInterface {
|
|
r := res.(*resources.StorageResource)
|
|
r.Instances = append(r.Instances, i.(*resources.StorageResourceInstance))
|
|
return r
|
|
}
|