initial commit
This commit is contained in:
138
models/storage.go
Normal file
138
models/storage.go
Normal file
@@ -0,0 +1,138 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"cloud.o-forge.io/core/oc-catalog/models/rtype"
|
||||
"cloud.o-forge.io/core/oc-catalog/services"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type StorageNEWModel struct {
|
||||
Name string `json:"name" required:"true"`
|
||||
Description string `json:"description" required:"true"`
|
||||
ShortDescription string `json:"short_description" required:"true" validate:"required"`
|
||||
Logo string `json:"logo" required:"true" validate:"required"`
|
||||
Type string `json:"type,omitempty" required:"true"`
|
||||
|
||||
DCacronym string `json:"DCacronym" required:"true" description:"Unique ID of the DC where it is the storage"`
|
||||
|
||||
Size uint `json:"size" required:"true"`
|
||||
Encryption bool `json:"encryption" `
|
||||
Redundancy string `json:"redundancy" `
|
||||
Throughput string `json:"throughput" `
|
||||
BookingPrice uint `json:"bookingPrice" `
|
||||
}
|
||||
|
||||
type StorageModel struct {
|
||||
ID string `json:"ID" bson:"_id" required:"true"`
|
||||
StorageNEWModel `bson:",inline"`
|
||||
}
|
||||
|
||||
func (obj StorageModel) getRtype() rtype.Rtype {
|
||||
return rtype.STORAGE
|
||||
}
|
||||
|
||||
func (model StorageModel) getName() string {
|
||||
return model.Name
|
||||
}
|
||||
|
||||
type StorageObject struct {
|
||||
ReferenceID primitive.ObjectID `json:"referenceID" description:"Storage model ID"`
|
||||
|
||||
Inputs []string `json:"inputs" `
|
||||
Outputs []string `json:"outputs" `
|
||||
}
|
||||
|
||||
func (obj StorageObject) getHost() *string {
|
||||
return nil // Host is DC only attribute
|
||||
}
|
||||
|
||||
func (obj StorageObject) getModel() (ret ResourceModel, err error) {
|
||||
var ret2 StorageModel
|
||||
res := services.MngoCollStorage.FindOne(services.MngoCtx,
|
||||
primitive.M{"_id": obj.ReferenceID},
|
||||
)
|
||||
|
||||
if err = res.Err(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = res.Decode(&ret2)
|
||||
return ret2, err
|
||||
}
|
||||
|
||||
func (obj *StorageObject) setReference(rID primitive.ObjectID) {
|
||||
obj.ReferenceID = rID
|
||||
}
|
||||
|
||||
func (obj StorageObject) getReference() primitive.ObjectID {
|
||||
return obj.ReferenceID
|
||||
}
|
||||
|
||||
func (obj StorageObject) getRtype() rtype.Rtype {
|
||||
return rtype.STORAGE
|
||||
}
|
||||
|
||||
func (obj StorageObject) getName() (name *string) {
|
||||
|
||||
res := services.MngoCollStorage.FindOne(services.MngoCtx, primitive.M{"_id": obj.ReferenceID})
|
||||
|
||||
if res.Err() != nil {
|
||||
logs.Error(res)
|
||||
return
|
||||
}
|
||||
|
||||
var ret StorageModel
|
||||
res.Decode(&ret)
|
||||
|
||||
return &ret.Name
|
||||
}
|
||||
|
||||
func (obj StorageObject) isLinked(rObjID string) LinkingState {
|
||||
if contains(obj.Inputs, rObjID) {
|
||||
return INPUT
|
||||
}
|
||||
|
||||
if contains(obj.Outputs, rObjID) {
|
||||
return OUTPUT
|
||||
}
|
||||
|
||||
return NO_LINK
|
||||
}
|
||||
|
||||
func (obj *StorageObject) addLink(direction LinkingState, rObjID string) {
|
||||
switch direction {
|
||||
case INPUT:
|
||||
obj.Inputs = append(obj.Inputs, rObjID)
|
||||
case OUTPUT:
|
||||
obj.Outputs = append(obj.Outputs, rObjID)
|
||||
}
|
||||
}
|
||||
|
||||
func PostOneStorage(obj StorageNEWModel) (string, error) {
|
||||
return postOneResource(obj, rtype.STORAGE)
|
||||
}
|
||||
|
||||
func GetOneStorage(ID string) (object *StorageModel, err error) {
|
||||
obj, err := getOneResourceByID(ID, rtype.STORAGE)
|
||||
|
||||
if err != nil {
|
||||
return object, err
|
||||
}
|
||||
|
||||
object = obj.(*StorageModel)
|
||||
|
||||
return object, err
|
||||
}
|
||||
|
||||
func GetMultipleStorage(IDs []string) (object *[]StorageModel, err error) {
|
||||
objArray, err := getMultipleResourceByIDs(IDs, rtype.STORAGE)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
object = objArray.(*[]StorageModel)
|
||||
|
||||
return object, err
|
||||
}
|
||||
Reference in New Issue
Block a user