access func
This commit is contained in:
parent
7f1f85c00e
commit
4fab0cb153
@ -3,13 +3,33 @@ package oclib
|
|||||||
import (
|
import (
|
||||||
"cloud.o-forge.io/core/oc-lib/dbs/mongo"
|
"cloud.o-forge.io/core/oc-lib/dbs/mongo"
|
||||||
"cloud.o-forge.io/core/oc-lib/models"
|
"cloud.o-forge.io/core/oc-lib/models"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/utils"
|
"cloud.o-forge.io/core/oc-lib/models/resources"
|
||||||
|
"cloud.o-forge.io/core/oc-lib/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
type LibData resources.ResourceType
|
||||||
|
|
||||||
|
const (
|
||||||
|
WORKFLOW LibData = 5
|
||||||
)
|
)
|
||||||
|
|
||||||
func Init() {
|
func Init() {
|
||||||
mongo.MONGOService.Init(models.GetModelsNames(), GetConfig())
|
mongo.MONGOService.Init(models.GetModelsNames(), GetConfig())
|
||||||
}
|
}
|
||||||
|
|
||||||
func Model(name string) utils.DBObject {
|
func LoadOne(name string, driver utils.Driver, id string) interface{} {
|
||||||
return models.Model(name)
|
return models.Model(name).GetAccessor(driver).LoadOne(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateOne(name string, driver utils.Driver, set map[string]interface{}, id string) interface{} {
|
||||||
|
return models.Model(name).GetAccessor(driver).UpdateOne(set, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteOne(name string, driver utils.Driver, id string) interface{} {
|
||||||
|
return models.Model(name).GetAccessor(driver).DeleteOne(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func StoreOne(name string, driver utils.Driver, object map[string]interface{}) interface{} {
|
||||||
|
model := models.Model(name)
|
||||||
|
return model.GetAccessor(driver).StoreOne(model.Deserialize(object))
|
||||||
}
|
}
|
||||||
|
@ -11,18 +11,18 @@ import (
|
|||||||
w "cloud.o-forge.io/core/oc-lib/models/workflow"
|
w "cloud.o-forge.io/core/oc-lib/models/workflow"
|
||||||
)
|
)
|
||||||
|
|
||||||
var models = map[string]utils.DBObject{
|
var models = map[string]func() utils.DBObject{
|
||||||
w.WORKFLOW: &w.Workflow{},
|
w.WORKFLOW: func() utils.DBObject { return &w.Workflow{} },
|
||||||
r.ToString(r.DATA): &d.Data{},
|
r.ToString(r.DATA): func() utils.DBObject { return &d.Data{} },
|
||||||
r.ToString(r.DATACENTER): &dc.Datacenter{},
|
r.ToString(r.DATACENTER): func() utils.DBObject { return &dc.Datacenter{} },
|
||||||
r.ToString(r.STORAGE): &s.Storage{},
|
r.ToString(r.STORAGE): func() utils.DBObject { return &s.Storage{} },
|
||||||
r.ToString(r.PROCESSING): &p.Processing{},
|
r.ToString(r.PROCESSING): func() utils.DBObject { return &p.Processing{} },
|
||||||
}
|
}
|
||||||
|
|
||||||
func Model(model string) utils.DBObject {
|
func Model(model string) utils.DBObject {
|
||||||
log := logs.CreateLogger("oclib", "")
|
log := logs.CreateLogger("oclib", "")
|
||||||
if _, ok := models[model]; ok {
|
if _, ok := models[model]; ok {
|
||||||
return models[model]
|
return models[model]()
|
||||||
}
|
}
|
||||||
log.Error().Msg("Can't find model " + model + ".")
|
log.Error().Msg("Can't find model " + model + ".")
|
||||||
return nil
|
return nil
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
resources "cloud.o-forge.io/core/oc-lib/models/resources"
|
resources "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/models/utils"
|
||||||
|
tool "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Data struct {
|
type Data struct {
|
||||||
@ -12,14 +15,23 @@ type Data struct {
|
|||||||
Example string `json:"example" bson:"example" required:"true" validate:"required" description:"base64 encoded data"`
|
Example string `json:"example" bson:"example" required:"true" validate:"required" description:"base64 encoded data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dma *Data) Deserialize(j map[string]interface{}) utils.DBObject {
|
||||||
|
b, err := json.Marshal(j)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
json.Unmarshal(b, dma)
|
||||||
|
return dma
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Data) GetType() resources.ResourceType {
|
func (d *Data) GetType() resources.ResourceType {
|
||||||
return resources.DATA
|
return resources.DATA
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) GetAccessor(driver utils.Driver) utils.Accessor {
|
func (d *Data) GetAccessor(driver tool.Driver) utils.Accessor {
|
||||||
var data utils.Accessor
|
var data utils.Accessor
|
||||||
switch driver {
|
switch driver {
|
||||||
case utils.MONGO:
|
case tool.MONGO:
|
||||||
data = &DataMongoAccessor{}
|
data = &DataMongoAccessor{}
|
||||||
default:
|
default:
|
||||||
data = &DataMongoAccessor{}
|
data = &DataMongoAccessor{}
|
||||||
|
@ -3,6 +3,7 @@ package datacenter
|
|||||||
import (
|
import (
|
||||||
resources "cloud.o-forge.io/core/oc-lib/models/resources"
|
resources "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/models/utils"
|
||||||
|
tool "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Datacenter struct {
|
type Datacenter struct {
|
||||||
@ -39,10 +40,10 @@ func (d *Datacenter) GetType() resources.ResourceType {
|
|||||||
return resources.DATACENTER
|
return resources.DATACENTER
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Datacenter) GetAccessor(driver utils.Driver) utils.Accessor {
|
func (d *Datacenter) GetAccessor(driver tool.Driver) utils.Accessor {
|
||||||
var data utils.Accessor
|
var data utils.Accessor
|
||||||
switch driver {
|
switch driver {
|
||||||
case utils.MONGO:
|
case tool.MONGO:
|
||||||
data = &DatacenterMongoAccessor{}
|
data = &DatacenterMongoAccessor{}
|
||||||
default:
|
default:
|
||||||
data = &DatacenterMongoAccessor{}
|
data = &DatacenterMongoAccessor{}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package processing
|
package processing
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
resources "cloud.o-forge.io/core/oc-lib/models/resources"
|
resources "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/models/utils"
|
||||||
|
tool "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Processing struct {
|
type Processing struct {
|
||||||
@ -29,14 +32,23 @@ type ExecutionRequirementsModel struct {
|
|||||||
DiskIO string `bson:"disk_io,omitempty" json:"disk_io,omitempty"`
|
DiskIO string `bson:"disk_io,omitempty" json:"disk_io,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dma *Processing) Deserialize(j map[string]interface{}) utils.DBObject {
|
||||||
|
b, err := json.Marshal(j)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
json.Unmarshal(b, dma)
|
||||||
|
return dma
|
||||||
|
}
|
||||||
|
|
||||||
func (p *Processing) GetType() resources.ResourceType {
|
func (p *Processing) GetType() resources.ResourceType {
|
||||||
return resources.PROCESSING
|
return resources.PROCESSING
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Processing) GetAccessor(driver utils.Driver) utils.Accessor {
|
func (d *Processing) GetAccessor(driver tool.Driver) utils.Accessor {
|
||||||
var data utils.Accessor
|
var data utils.Accessor
|
||||||
switch driver {
|
switch driver {
|
||||||
case utils.MONGO:
|
case tool.MONGO:
|
||||||
data = &ProcessingMongoAccessor{}
|
data = &ProcessingMongoAccessor{}
|
||||||
default:
|
default:
|
||||||
data = &ProcessingMongoAccessor{}
|
data = &ProcessingMongoAccessor{}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package storage
|
package storage
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
resources "cloud.o-forge.io/core/oc-lib/models/resources"
|
resources "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/models/utils"
|
||||||
|
tool "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type URL struct {
|
type URL struct {
|
||||||
@ -22,14 +25,23 @@ type Storage struct {
|
|||||||
BookingPrice uint `bson:"booking_price,omitempty" json:"booking_price,omitempty"`
|
BookingPrice uint `bson:"booking_price,omitempty" json:"booking_price,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dma *Storage) Deserialize(j map[string]interface{}) utils.DBObject {
|
||||||
|
b, err := json.Marshal(j)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
json.Unmarshal(b, dma)
|
||||||
|
return dma
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Storage) GetType() resources.ResourceType {
|
func (s *Storage) GetType() resources.ResourceType {
|
||||||
return resources.STORAGE
|
return resources.STORAGE
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Storage) GetAccessor(driver utils.Driver) utils.Accessor {
|
func (d *Storage) GetAccessor(driver tool.Driver) utils.Accessor {
|
||||||
var data utils.Accessor
|
var data utils.Accessor
|
||||||
switch driver {
|
switch driver {
|
||||||
case utils.MONGO:
|
case tool.MONGO:
|
||||||
data = &StorageMongoAccessor{}
|
data = &StorageMongoAccessor{}
|
||||||
default:
|
default:
|
||||||
data = &StorageMongoAccessor{}
|
data = &StorageMongoAccessor{}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
|
import "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
|
|
||||||
type DBObject interface {
|
type DBObject interface {
|
||||||
GetName() string
|
GetName() string
|
||||||
GetAccessor(driver Driver) Accessor
|
Deserialize(j map[string]interface{}) DBObject
|
||||||
|
GetAccessor(driver utils.Driver) Accessor
|
||||||
}
|
}
|
||||||
|
|
||||||
type Accessor interface {
|
type Accessor interface {
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package oclib
|
package oclib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
"cloud.o-forge.io/core/oc-lib/models/resources"
|
"cloud.o-forge.io/core/oc-lib/models/resources"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/resources/data"
|
"cloud.o-forge.io/core/oc-lib/models/resources/data"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/resources/datacenter"
|
"cloud.o-forge.io/core/oc-lib/models/resources/datacenter"
|
||||||
@ -8,6 +10,7 @@ import (
|
|||||||
"cloud.o-forge.io/core/oc-lib/models/resources/storage"
|
"cloud.o-forge.io/core/oc-lib/models/resources/storage"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/utils"
|
"cloud.o-forge.io/core/oc-lib/models/utils"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/workflow/graph"
|
"cloud.o-forge.io/core/oc-lib/models/workflow/graph"
|
||||||
|
tool "cloud.o-forge.io/core/oc-lib/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const WORKFLOW = "workflow"
|
const WORKFLOW = "workflow"
|
||||||
@ -22,10 +25,10 @@ type Workflow struct {
|
|||||||
Schedule WorkflowSchedule `bson:"schedule,omitempty" json:"schedule,omitempty"`
|
Schedule WorkflowSchedule `bson:"schedule,omitempty" json:"schedule,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Workflow) GetAccessor(driver utils.Driver) utils.Accessor {
|
func (d *Workflow) GetAccessor(driver tool.Driver) utils.Accessor {
|
||||||
var data utils.Accessor
|
var data utils.Accessor
|
||||||
switch driver {
|
switch driver {
|
||||||
case utils.MONGO:
|
case tool.MONGO:
|
||||||
data = &WorkflowMongoAccessor{}
|
data = &WorkflowMongoAccessor{}
|
||||||
default:
|
default:
|
||||||
data = &WorkflowMongoAccessor{}
|
data = &WorkflowMongoAccessor{}
|
||||||
@ -34,6 +37,15 @@ func (d *Workflow) GetAccessor(driver utils.Driver) utils.Accessor {
|
|||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dma *Workflow) Deserialize(j map[string]interface{}) utils.DBObject {
|
||||||
|
b, err := json.Marshal(j)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
json.Unmarshal(b, dma)
|
||||||
|
return dma
|
||||||
|
}
|
||||||
|
|
||||||
func (w *Workflow) isDCLink(link graph.GraphLink) bool {
|
func (w *Workflow) isDCLink(link graph.GraphLink) bool {
|
||||||
if _, exists := w.Datacenters[link.Destination.ID]; exists {
|
if _, exists := w.Datacenters[link.Destination.ID]; exists {
|
||||||
return true
|
return true
|
||||||
|
Loading…
Reference in New Issue
Block a user