Skip to content

Commit b5cfad1

Browse files
author
Fawad Khaliq
authored
Merge pull request #45 from plumgrid/sagheer-dev
moved veth pair creation to endpoint call and improved declarations
2 parents 5f7a24a + 1213dd5 commit b5cfad1

2 files changed

Lines changed: 56 additions & 62 deletions

File tree

plugin/driver/driver.go

Lines changed: 55 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,19 @@ func (driver *driver) createEndpoint(w http.ResponseWriter, r *http.Request) {
199199
ip := create.Interface.Address
200200
Log.Infof("Got IP from IPAM %s", ip)
201201

202+
local := vethPair(endID[:5])
203+
if err := netlink.LinkAdd(local); err != nil {
204+
Log.Error(err)
205+
errorResponsef(w, "could not create veth pair")
206+
return
207+
}
208+
link, _ := netlink.LinkByName(local.PeerName)
209+
mac := link.Attrs().HardwareAddr.String()
210+
202211
resp := &api.CreateEndpointResponse{
203-
Interface: &api.EndpointInterface{},
212+
Interface: &api.EndpointInterface{
213+
MacAddress: mac,
214+
},
204215
}
205216

206217
objectResponse(w, resp)
@@ -215,6 +226,12 @@ func (driver *driver) deleteEndpoint(w http.ResponseWriter, r *http.Request) {
215226
return
216227
}
217228
Log.Debugf("Delete endpoint request: %+v", &delete)
229+
230+
local := vethPair(delete.EndpointID[:5])
231+
if err := netlink.LinkDel(local); err != nil {
232+
Log.Warningf("unable to delete veth on leave: %s", err)
233+
}
234+
218235
emptyResponse(w)
219236
Log.Infof("Delete endpoint %s", delete.EndpointID)
220237
}
@@ -247,52 +264,36 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
247264
domainid = default_vd
248265
}
249266
gatewayIP := FindNetworkGateway(domainid, netID)
250-
// create and attach local name to the bridge
267+
251268
local := vethPair(endID[:5])
252-
if err := netlink.LinkAdd(local); err != nil {
253-
Log.Error(err)
254-
errorResponsef(w, "could not create veth pair")
255-
return
256-
}
257269

258270
if_local_name := "tap" + endID[:5]
259271

260-
//getting mac address of tap...
261-
cmdStr0 := "ifconfig " + local.PeerName + " | awk '/HWaddr/ {print $NF}'"
262-
Log.Infof("mac address cmd: %s", cmdStr0)
263-
cmd0 := exec.Command("/bin/sh", "-c", cmdStr0)
264-
var out0 bytes.Buffer
265-
cmd0.Stdout = &out0
266-
err0 := cmd0.Run()
267-
if err0 != nil {
268-
Log.Error("Error thrown: ", err0)
269-
}
270-
mac := out0.String()
271-
Log.Infof("output of cmd: %s\n", mac)
272+
link, _ := netlink.LinkByName(local.PeerName)
273+
mac := link.Attrs().HardwareAddr.String()
274+
Log.Infof("mac address: %s\n", mac)
272275

273276
//first command {adding port on plumgrid}
274-
cmdStr1 := "sudo /opt/pg/bin/ifc_ctl gateway add_port " + if_local_name
275-
Log.Infof("second cmd: %s", cmdStr1)
276-
cmd1 := exec.Command("/bin/sh", "-c", cmdStr1)
277-
var out1 bytes.Buffer
278-
cmd1.Stdout = &out1
279-
err1 := cmd1.Run()
280-
if err1 != nil {
281-
Log.Error("Error thrown: ", err1)
277+
cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway add_port " + if_local_name
278+
Log.Infof("addport cmd: %s", cmdStr)
279+
cmd := exec.Command("/bin/sh", "-c", cmdStr)
280+
var addport bytes.Buffer
281+
cmd.Stdout = &addport
282+
if err := cmd.Run(); err != nil {
283+
Log.Error("Error thrown: ", err)
282284
}
283-
Log.Infof("output of cmd: %+v\n", out1.String())
285+
Log.Infof("output: %+v\n", addport.String())
284286

285287
//second command {up the port on plumgrid}
286-
cmdStr2 := "sudo /opt/pg/bin/ifc_ctl gateway ifup " + if_local_name + " access_container cont_" + endID[:2] + " " + mac[:17] + " pgtag2=" + bridgeID + " pgtag1=" + domainid
287-
Log.Infof("third cmd: %s", cmdStr2)
288-
cmd2 := exec.Command("/bin/sh", "-c", cmdStr2)
289-
var out2 bytes.Buffer
290-
cmd2.Stdout = &out2
291-
err2 := cmd2.Run()
292-
if err2 != nil {
293-
Log.Error("Error thrown: ", err2)
288+
cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway ifup " + if_local_name + " access_container cont_" + endID[:8] + " " + mac + " pgtag2=" + bridgeID + " pgtag1=" + domainid
289+
Log.Infof("ifup cmd: %s", cmdStr)
290+
cmd = exec.Command("/bin/sh", "-c", cmdStr)
291+
var ifup bytes.Buffer
292+
cmd.Stdout = &ifup
293+
if err := cmd.Run(); err != nil {
294+
Log.Error("Error thrown: ", err)
294295
}
295-
Log.Infof("output of cmd: %+v\n", out2.String())
296+
Log.Infof("output: %+v\n", ifup.String())
296297

297298
if netlink.LinkSetUp(local) != nil {
298299
errorResponsef(w, `unable to bring veth up`)
@@ -309,7 +310,7 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
309310
Gateway: gatewayIP,
310311
}
311312

312-
AddMetaconfig(domainid, bridgeID, j.SandboxKey[22:], endID, mac[:17])
313+
AddMetaconfig(domainid, bridgeID, j.SandboxKey[22:], endID, mac)
313314

314315
objectResponse(w, res)
315316
Log.Infof("Join endpoint %s:%s to %s", j.NetworkID, j.EndpointID, j.SandboxKey)
@@ -329,33 +330,26 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) {
329330
if_local_name := "tap" + l.EndpointID[:5]
330331

331332
//first command {adding port on plumgrid}
332-
cmdStr1 := "sudo /opt/pg/bin/ifc_ctl gateway ifdown " + if_local_name
333-
Log.Infof("second cmd: %s", cmdStr1)
334-
cmd1 := exec.Command("/bin/sh", "-c", cmdStr1)
335-
var out1 bytes.Buffer
336-
cmd1.Stdout = &out1
337-
err1 := cmd1.Run()
338-
if err1 != nil {
339-
Log.Error("Error thrown: ", err1)
333+
cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway ifdown " + if_local_name
334+
Log.Infof("ifdown cmd: %s", cmdStr)
335+
cmd := exec.Command("/bin/sh", "-c", cmdStr)
336+
var ifdown bytes.Buffer
337+
cmd.Stdout = &ifdown
338+
if err := cmd.Run(); err != nil {
339+
Log.Error("Error thrown: ", err)
340340
}
341-
Log.Infof("output of cmd: %+v\n", out1.String())
341+
Log.Infof("output: %+v\n", ifdown.String())
342342

343343
//second command {up the port on plumgrid}
344-
cmdStr2 := "sudo /opt/pg/bin/ifc_ctl gateway del_port " + if_local_name
345-
Log.Infof("third cmd: %s", cmdStr2)
346-
cmd2 := exec.Command("/bin/sh", "-c", cmdStr2)
347-
var out2 bytes.Buffer
348-
cmd2.Stdout = &out2
349-
err2 := cmd2.Run()
350-
if err2 != nil {
351-
Log.Error("Error thrown: ", err2)
352-
}
353-
Log.Infof("output of cmd: %+v\n", out2.String())
354-
355-
local := vethPair(l.EndpointID[:5])
356-
if err := netlink.LinkDel(local); err != nil {
357-
Log.Warningf("unable to delete veth on leave: %s", err)
344+
cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway del_port " + if_local_name
345+
Log.Infof("delport cmd: %s", cmdStr)
346+
cmd = exec.Command("/bin/sh", "-c", cmdStr)
347+
var delport bytes.Buffer
348+
cmd.Stdout = &delport
349+
if err := cmd.Run(); err != nil {
350+
Log.Error("Error thrown: ", err)
358351
}
352+
Log.Infof("output: %+v\n", delport.String())
359353

360354
RemoveMetaconfig(domainid, bridgeID, l.EndpointID)
361355

plugin/driver/pg_helper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func BridgeCreate(ID string, domainid string, gatewayip string) {
4141
data = []byte(`{"mark_disabled": false,
4242
"ne_dest": "/ne/bri` + ID + `/action/action1",
4343
"ne_dname": "cont-` + ID[10:] + `",
44-
"ne_type": "cnf-vmgroup",
44+
"ne_type": "cnf-contgroup",
4545
"rule": {
4646
"rules` + ID + `": {
4747
"add_context": "",

0 commit comments

Comments
 (0)