add draft compute units
This commit is contained in:
parent
2264d22c69
commit
1c751f7253
@ -17,6 +17,7 @@ import (
|
|||||||
"cloud.o-forge.io/core/oc-lib/models"
|
"cloud.o-forge.io/core/oc-lib/models"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/collaborative_area"
|
"cloud.o-forge.io/core/oc-lib/models/collaborative_area"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/collaborative_area/rules/rule"
|
"cloud.o-forge.io/core/oc-lib/models/collaborative_area/rules/rule"
|
||||||
|
"cloud.o-forge.io/core/oc-lib/models/compute_units"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/order"
|
"cloud.o-forge.io/core/oc-lib/models/order"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/peer"
|
"cloud.o-forge.io/core/oc-lib/models/peer"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/resources"
|
"cloud.o-forge.io/core/oc-lib/models/resources"
|
||||||
@ -577,3 +578,10 @@ func (l *LibData) ToOrder() *order.Order {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *LibData) ToComputeUnits() *compute_units.ComputeUnits {
|
||||||
|
if l.Data.GetAccessor(nil).GetType() == tools.COMPUTE_UNITS {
|
||||||
|
return l.Data.(*compute_units.ComputeUnits)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -34,6 +34,7 @@ func (a *computeUnitsMongoAccessor) DeleteOne(id string) (utils.DBObject, int, e
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *computeUnitsMongoAccessor) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
func (a *computeUnitsMongoAccessor) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
||||||
|
// should verify if a source is existing...
|
||||||
return utils.GenericUpdateOne(set, id, a, &ComputeUnits{})
|
return utils.GenericUpdateOne(set, id, a, &ComputeUnits{})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,6 +48,14 @@ func (a *computeUnitsMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject
|
|||||||
return nil, 422, errors.New("can't publish a drafted compute units")
|
return nil, 422, errors.New("can't publish a drafted compute units")
|
||||||
}
|
}
|
||||||
computeUnits := data.(*ComputeUnits)
|
computeUnits := data.(*ComputeUnits)
|
||||||
|
if computeUnits.MonitorPath == "" || computeUnits.GetID() != "" {
|
||||||
|
return nil, 422, errors.New("publishing is only allowed is it can be monitored and be accessible")
|
||||||
|
}
|
||||||
|
if res, code, err := a.LoadOne(computeUnits.GetID()); err != nil {
|
||||||
|
return nil, code, err
|
||||||
|
} else {
|
||||||
|
computeUnits = res.(*ComputeUnits)
|
||||||
|
}
|
||||||
resAccess := resources.NewAccessor[*resources.ComputeResource](tools.COMPUTE_RESOURCE, a.Request, func() utils.DBObject { return &resources.ComputeResource{} })
|
resAccess := resources.NewAccessor[*resources.ComputeResource](tools.COMPUTE_RESOURCE, a.Request, func() utils.DBObject { return &resources.ComputeResource{} })
|
||||||
var instance *resources.ComputeResourceInstance
|
var instance *resources.ComputeResourceInstance
|
||||||
b, _ := json.Marshal(computeUnits)
|
b, _ := json.Marshal(computeUnits)
|
||||||
@ -65,11 +74,16 @@ func (a *computeUnitsMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject
|
|||||||
existingComputeResource.Instances = append(existingComputeResource.Instances, instance)
|
existingComputeResource.Instances = append(existingComputeResource.Instances, instance)
|
||||||
return resAccess.UpdateOne(existingComputeResource, existingComputeResource.UUID)
|
return resAccess.UpdateOne(existingComputeResource, existingComputeResource.UUID)
|
||||||
} else {
|
} else {
|
||||||
var resource *resources.ComputeResource
|
var r resources.ComputeResource
|
||||||
b, _ := json.Marshal(computeUnits)
|
b, _ := json.Marshal(computeUnits)
|
||||||
json.Unmarshal(b, resource)
|
json.Unmarshal(b, &r)
|
||||||
resource.Instances = append(resource.Instances, instance)
|
r.Instances = append(r.Instances, instance)
|
||||||
return resAccess.StoreOne(resource)
|
res, code, err := resAccess.StoreOne(&r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, code, err
|
||||||
|
}
|
||||||
|
computeUnits.ResourceID = res.GetID()
|
||||||
|
return a.UpdateOne(computeUnits, computeUnits.GetID())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package resources
|
package resources
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"slices"
|
"slices"
|
||||||
|
|
||||||
"cloud.o-forge.io/core/oc-lib/dbs"
|
"cloud.o-forge.io/core/oc-lib/dbs"
|
||||||
@ -37,16 +38,25 @@ func (dca *ResourceMongoAccessor[T]) DeleteOne(id string) (utils.DBObject, int,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (dca *ResourceMongoAccessor[T]) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
func (dca *ResourceMongoAccessor[T]) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
||||||
|
if dca.GetType() == tools.COMPUTE_RESOURCE {
|
||||||
|
return nil, 404, errors.New("can't update a non existing computing units resource not reported onto compute units catalog")
|
||||||
|
}
|
||||||
set.(T).Trim()
|
set.(T).Trim()
|
||||||
return utils.GenericUpdateOne(set, id, dca, dca.generateData())
|
return utils.GenericUpdateOne(set, id, dca, dca.generateData())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dca *ResourceMongoAccessor[T]) StoreOne(data utils.DBObject) (utils.DBObject, int, error) {
|
func (dca *ResourceMongoAccessor[T]) StoreOne(data utils.DBObject) (utils.DBObject, int, error) {
|
||||||
|
if dca.GetType() == tools.COMPUTE_RESOURCE {
|
||||||
|
return nil, 404, errors.New("can't create a non existing computing units resource not reported onto compute units catalog")
|
||||||
|
}
|
||||||
data.(T).Trim()
|
data.(T).Trim()
|
||||||
return utils.GenericStoreOne(data, dca)
|
return utils.GenericStoreOne(data, dca)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dca *ResourceMongoAccessor[T]) CopyOne(data utils.DBObject) (utils.DBObject, int, error) {
|
func (dca *ResourceMongoAccessor[T]) CopyOne(data utils.DBObject) (utils.DBObject, int, error) {
|
||||||
|
if dca.GetType() == tools.COMPUTE_RESOURCE {
|
||||||
|
return nil, 404, errors.New("can't copy/publish a non existing computing units resource not reported onto compute units catalog")
|
||||||
|
}
|
||||||
return dca.StoreOne(data)
|
return dca.StoreOne(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user