diff --git a/graph.go b/graph.go index 013788a..5e72462 100644 --- a/graph.go +++ b/graph.go @@ -168,13 +168,13 @@ func (g *Graph) GetWorkflowComponents(workflow string){ if (comp_id != "") { switch component_type { case "computing": - g.AddComputingModel(comp_id, value) + g.AddComputingModel(comp_id, value, id.Str) case "data": - g.AddDataModel(comp_id, value) + g.AddDataModel(comp_id, value, id.Str) case "datacenter": - g.AddDatacenterModel(comp_id, value) + g.AddDatacenterModel(comp_id, value, id.Str) case "storage": - g.AddStorageModel(comp_id, value) + g.AddStorageModel(comp_id, value, id.Str) default : logs.Critical("Component type doesn't match a know type : " + component_type) } @@ -186,47 +186,7 @@ func (g *Graph) GetWorkflowComponents(workflow string){ } -func (g *Graph) AddComponentObject(comp_type string, component interface{}){ - - switch comp_type { - case "computing": - g.Computings = append(g.Computings, component.(models.ComputingModel)) - - case "data": - g.Datas = append(g.Datas, component.(models.DataModel)) - - case "datacenter": - g.Datacenters = append(g.Datacenters, component.(models.DatacenterModel)) - - case "storage": - g.Storages = append(g.Storages, component.(models.StorageModel)) - - } - -} - -// Construct the object corresponding to component_type from its ID, retrieved in -// the xml graph, in order to merge the user input with the base model - -func (g *Graph) GetComponentById(component_type string, id string) (map[string]interface{}, error) { - // TODO : Add a verification that g.ws is initialized ? - - body , err := g.ws.Get("v1/"+component_type+"/"+id) - if err != nil { - return nil, err - } - - comp := make(map[string]interface{}) - jsonified := gjson.ParseBytes(body) - jsonified.ForEach(func(key, value gjson.Result) bool { - comp[key.Str] = value.String() - return true // keep iterating - }) - - return comp, nil -} - -func (g *Graph) AddDataModel(id string, user_input gjson.Result) error { +func (g *Graph) AddDataModel(id string, user_input gjson.Result, wf_id string) error { var d models.DataModel resp, err := g.ws.Get("v1/data/" + id) if err != nil { @@ -234,11 +194,12 @@ func (g *Graph) AddDataModel(id string, user_input gjson.Result) error { } json.Unmarshal(resp, &d) json.Unmarshal([]byte(user_input.Raw),&d.DataNEWModel) + d.ID = wf_id g.Datas = append(g.Datas, d) return nil } -func (g *Graph) AddDatacenterModel(id string, user_input gjson.Result) error { +func (g *Graph) AddDatacenterModel(id string, user_input gjson.Result, wf_id string) error { var d models.DatacenterModel resp, err := g.ws.Get("v1/datacenter/" + id) if err != nil { @@ -246,11 +207,12 @@ func (g *Graph) AddDatacenterModel(id string, user_input gjson.Result) error { } json.Unmarshal(resp, &d) json.Unmarshal([]byte(user_input.Raw),&d.DatacenterNEWModel) + d.ID = wf_id g.Datacenters = append(g.Datacenters, d) return nil } -func (g *Graph) AddComputingModel(id string, user_input gjson.Result) error { +func (g *Graph) AddComputingModel(id string, user_input gjson.Result, wf_id string) error { var c models.ComputingModel resp, err := g.ws.Get("v1/computing/" + id) if err != nil { @@ -258,11 +220,12 @@ func (g *Graph) AddComputingModel(id string, user_input gjson.Result) error { } json.Unmarshal(resp, &c) json.Unmarshal([]byte(user_input.Raw),&c.ComputingNEWModel) + c.ID = wf_id g.Computings = append(g.Computings, c) return nil } -func (g *Graph) AddStorageModel(id string, user_input gjson.Result) error { +func (g *Graph) AddStorageModel(id string, user_input gjson.Result, wf_id string) error { var s models.StorageModel resp, err := g.ws.Get("v1/data/" + id) if err != nil { @@ -270,6 +233,7 @@ func (g *Graph) AddStorageModel(id string, user_input gjson.Result) error { } json.Unmarshal(resp, &s) json.Unmarshal([]byte(user_input.Raw),&s.StorageNEWModel) + s.ID = wf_id g.Storages = append(g.Storages, s) return nil }