@@ -27,6 +27,7 @@ func BridgeCreate(ID string, domainid string, gatewayip string) {
2727 "action_text": "create_and_link_ifc(DYN_1)"}
2828 },
2929 "ifc": {},
30+ "metadata": "` + ID + `",
3031 "mobility": "true",
3132 "ne_description": "PLUMgrid Bridge",
3233 "ne_dname": "net-` + ID [:10 ] + `",
@@ -45,7 +46,7 @@ func BridgeCreate(ID string, domainid string, gatewayip string) {
4546 "rules` + ID + `": {
4647 "add_context": "",
4748 "criteria": "pgtag2",
48- "match": "bridge- ` + ID [: 10 ] + `"
49+ "match": "bri ` + ID + `"
4950 }
5051 }
5152 }` )
@@ -57,6 +58,13 @@ func BridgeCreate(ID string, domainid string, gatewayip string) {
5758 RestCall ("PUT" , url , data )
5859}
5960
61+ func AddGatewayInfo (ID string , domainid string , gatewayip string ) {
62+
63+ url := "/0/connectivity/domain_prop/" + domainid + "/ne/brii" + ID
64+ data := []byte (`{"ne_metadata": "` + gatewayip + `"}` )
65+ RestCall ("PUT" , url , data )
66+ }
67+
6068func BridgeDelete (ID string , domainid string ) {
6169
6270 url := "/0/connectivity/domain_prop/" + domainid + "/ne/brii" + ID
@@ -69,7 +77,7 @@ func BridgeDelete(ID string, domainid string) {
6977 RestCall ("DELETE" , url , nil )
7078}
7179
72- func FindDomainFromNetwork ( ID string ) ( domainid string ) {
80+ func AddNetworkInfo ( dNetwork string , neID string ) {
7381
7482 url := "/0/connectivity/domain?configonly=true&level=3"
7583 body , _ := RestCall ("GET" , url , nil )
@@ -80,12 +88,36 @@ func FindDomainFromNetwork(ID string) (domainid string) {
8088 }
8189 for domains , domain_val := range domain_data {
8290 if nes , ok := domain_val .(map [string ]interface {})["ne" ]; ok {
83- if _ , ok := nes .(map [string ]interface {})["bri" + ID ]; ok {
84- domainid = domains
91+ if ne , ok := nes .(map [string ]interface {})[neID ]; ok {
92+ ne .(map [string ]interface {})["metadata" ] = dNetwork
93+ ne_data , _ := json .Marshal (ne )
94+ RestCall ("PUT" , "/0/connectivity/domain/" + domains + "/ne/" + neID , ne_data )
8595 break
8696 }
8797 }
8898 }
99+ }
100+
101+ func FindDomainFromNetwork (ID string ) (domainid string , netid string ) {
102+
103+ url := "/0/connectivity/domain?configonly=true&level=3"
104+ body , _ := RestCall ("GET" , url , nil )
105+ var domain_data map [string ]interface {}
106+ err := json .Unmarshal ([]byte (body ), & domain_data )
107+ if err != nil {
108+ panic (err )
109+ }
110+ for domains , domain_val := range domain_data {
111+ if nes , ok := domain_val .(map [string ]interface {})["ne" ]; ok {
112+ for ne , data := range nes .(map [string ]interface {}) {
113+ if data .(map [string ]interface {})["metadata" ] == ID {
114+ domainid = domains
115+ netid = ne
116+ break
117+ }
118+ }
119+ }
120+ }
89121 return
90122}
91123
@@ -121,12 +153,12 @@ func DomainCreate(domainID string) {
121153 data := []byte (`{"containers": {
122154 "` + domainID + `": {
123155 "enable": "True",
124- "qos_marking": "9",
125156 "context": "` + domainID + `",
126- "type": "Gold",
127- "property": "Container ` + domainID + ` Property",
128157 "domains": {}, "rules": {}}}}` )
158+ RestCall ("PUT" , url , data )
129159
160+ url = "/0/tenant_manager/metaconfig/" + domainID
161+ data = []byte (`{}` )
130162 RestCall ("PUT" , url , data )
131163
132164 url = "/0/tunnel_service/vnd_config/" + domainID
@@ -178,7 +210,10 @@ func DomainDelete(domainID string) {
178210 url = "/0/tunnel_service/vnd_config/" + domainID
179211 RestCall ("DELETE" , url , nil )
180212
181- 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
182217 RestCall ("DELETE" , url , nil )
183218 }
184219 }
@@ -295,3 +330,57 @@ func CheckNeChildList(NeID string, DomainID string, childList string) {
295330 return
296331 }
297332}
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+ "prop": {
357+ "` + endpointID + `": {
358+ "phy_address": "` + macaddr + `",
359+ "hint": "` + netID + `"}}}` )
360+ RestCall ("PUT" , url , data )
361+ }
362+
363+ func RemoveMetaconfig (domainID string , netID string , endpointID string ) {
364+
365+ url := "/0/tenant_manager/metaconfig/" + domainID + "?configonly=true"
366+ body , _ := RestCall ("GET" , url , nil )
367+ var tm_data map [string ]interface {}
368+ err := json .Unmarshal ([]byte (body ), & tm_data )
369+ if err != nil {
370+ panic (err )
371+ }
372+
373+ for device , prop := range tm_data ["workloads" ].(map [string ]interface {}) {
374+ for endpoint , _ := range prop .(map [string ]interface {})["prop" ].(map [string ]interface {}) {
375+ if endpoint == endpointID {
376+ if len (prop .(map [string ]interface {})["prop" ].(map [string ]interface {})) < 2 {
377+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + device
378+ RestCall ("DELETE" , url , nil )
379+ return
380+ }
381+ url = "/0/tenant_manager/metaconfig/" + domainID + "/workloads/" + device + "/prop/" + endpoint
382+ RestCall ("DELETE" , url , nil )
383+ }
384+ }
385+ }
386+ }
0 commit comments