Skip to content

Commit c85df3d

Browse files
committed
populating metaconfig
1 parent 46f25b9 commit c85df3d

2 files changed

Lines changed: 69 additions & 4 deletions

File tree

plugin/driver/driver.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,8 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
309309
Gateway: gatewayIP,
310310
}
311311

312+
AddMetaconfig(domainid, bridgeID, j.SandboxKey[22:], endID, mac[:17])
313+
312314
objectResponse(w, res)
313315
Log.Infof("Join endpoint %s:%s to %s", j.NetworkID, j.EndpointID, j.SandboxKey)
314316
}
@@ -322,6 +324,8 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) {
322324
}
323325
Log.Infof("Leave request: %+v", &l)
324326

327+
domainid, bridgeID := FindDomainFromNetwork(l.NetworkID)
328+
325329
if_local_name := "tap" + l.EndpointID[:5]
326330

327331
//first command {adding port on plumgrid}
@@ -352,6 +356,9 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) {
352356
if err := netlink.LinkDel(local); err != nil {
353357
Log.Warningf("unable to delete veth on leave: %s", err)
354358
}
359+
360+
RemoveMetaconfig(domainid, bridgeID, l.EndpointID)
361+
355362
emptyResponse(w)
356363
Log.Infof("Leave %s:%s", l.NetworkID, l.EndpointID)
357364
}

plugin/driver/pg_helper.go

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)