@@ -153,12 +153,12 @@ func DomainCreate(domainID string) {
153153 data := []byte (`{"containers": {
154154 "` + domainID + `": {
155155 "enable": "True",
156- "qos_marking": "9",
157156 "context": "` + domainID + `",
158- "type": "Gold",
159- "property": "Container ` + domainID + ` Property",
160157 "domains": {}, "rules": {}}}}` )
158+ RestCall ("PUT" , url , data )
161159
160+ url = "/0/tenant_manager/metaconfig/" + domainID
161+ data = []byte (`{}` )
162162 RestCall ("PUT" , url , data )
163163
164164 url = "/0/tunnel_service/vnd_config/" + domainID
@@ -210,7 +210,10 @@ func DomainDelete(domainID string) {
210210 url = "/0/tunnel_service/vnd_config/" + domainID
211211 RestCall ("DELETE" , url , nil )
212212
213- url = "/0/tenant_manager/tenants" + "/" + domainID
213+ url = "/0/tenant_manager/metaconfig/" + domainID
214+ RestCall ("DELETE" , url , nil )
215+
216+ url = "/0/tenant_manager/tenants/" + domainID
214217 RestCall ("DELETE" , url , nil )
215218 }
216219 }
@@ -327,3 +330,58 @@ func CheckNeChildList(NeID string, DomainID string, childList string) {
327330 return
328331 }
329332}
333+
334+ func AddMetaconfig (domainID string , netID string , deviceID string , endpointID string , macaddr string ) {
335+
336+ url := "/0/tenant_manager/metaconfig/" + domainID + "?configonly=true"
337+ body , _ := RestCall ("GET" , url , nil )
338+ var tm_data map [string ]interface {}
339+ err := json .Unmarshal ([]byte (body ), & tm_data )
340+ if err != nil {
341+ panic (err )
342+ }
343+
344+ for device , _ := range tm_data ["workloads" ].(map [string ]interface {}) {
345+ if device == deviceID {
346+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + deviceID + "/prop/" + endpointID
347+ data := []byte (`{"phy_address": "` + macaddr + `",
348+ "hint": "` + netID + `"}` )
349+ RestCall ("PUT" , url , data )
350+ return
351+ }
352+ }
353+
354+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + deviceID
355+ data := []byte (`{"ne_type": "container",
356+ "ne_dname": "none",
357+ "prop": {
358+ "` + endpointID + `": {
359+ "phy_address": "` + macaddr + `",
360+ "hint": "` + netID + `"}}}` )
361+ RestCall ("PUT" , url , data )
362+ }
363+
364+ func RemoveMetaconfig (domainID string , netID string , endpointID string ) {
365+
366+ url := "/0/tenant_manager/metaconfig/" + domainID + "?configonly=true"
367+ body , _ := RestCall ("GET" , url , nil )
368+ var tm_data map [string ]interface {}
369+ err := json .Unmarshal ([]byte (body ), & tm_data )
370+ if err != nil {
371+ panic (err )
372+ }
373+
374+ for device , prop := range tm_data ["workloads" ].(map [string ]interface {}) {
375+ for endpoint , _ := range prop .(map [string ]interface {})["prop" ].(map [string ]interface {}) {
376+ if endpoint == endpointID {
377+ if len (prop .(map [string ]interface {})["prop" ].(map [string ]interface {})) < 2 {
378+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + device
379+ RestCall ("DELETE" , url , nil )
380+ return
381+ }
382+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + device + "/prop/" + endpoint
383+ RestCall ("DELETE" , url , nil )
384+ }
385+ }
386+ }
387+ }
0 commit comments