|
15 | 15 | package driver |
16 | 16 |
|
17 | 17 | import ( |
18 | | - "bytes" |
19 | 18 | "encoding/hex" |
20 | 19 | "encoding/json" |
21 | 20 | "fmt" |
22 | 21 | "io" |
23 | 22 | "net" |
24 | 23 | "net/http" |
25 | | - "os/exec" |
26 | 24 |
|
27 | 25 | Log "github.com/Sirupsen/logrus" |
28 | 26 | "github.com/docker/libnetwork/drivers/remote/api" |
29 | 27 | "github.com/docker/libnetwork/netlabel" |
30 | 28 | docker "github.com/fsouza/go-dockerclient" |
| 29 | + "github.com/plumgrid/cli/helpers/plumgrid/ifc_ctl" |
31 | 30 |
|
32 | 31 | "github.com/gorilla/mux" |
33 | 32 | "github.com/vishvananda/netlink" |
@@ -202,7 +201,7 @@ func (driver *driver) createEndpoint(w http.ResponseWriter, r *http.Request) { |
202 | 201 | local := vethPair(endID[:5]) |
203 | 202 | if err := netlink.LinkAdd(local); err != nil { |
204 | 203 | Log.Error(err) |
205 | | - errorResponsef(w, "could not create veth pair") |
| 204 | + errorResponse(w, "could not create veth pair") |
206 | 205 | return |
207 | 206 | } |
208 | 207 | link, _ := netlink.LinkByName(local.PeerName) |
@@ -273,30 +272,14 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) { |
273 | 272 | mac := link.Attrs().HardwareAddr.String() |
274 | 273 | Log.Infof("mac address: %s\n", mac) |
275 | 274 |
|
276 | | - //first command {adding port on plumgrid} |
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) |
284 | | - } |
285 | | - Log.Infof("output: %+v\n", addport.String()) |
286 | | - |
287 | | - //second command {up the port on plumgrid} |
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) |
| 275 | + // ifc_ctl interface up {Interface Name, Container ID, Domain ID, Bridge ID, MAC address, SE name} |
| 276 | + if err := ifc_ctl.PgIfUp(if_local_name, "cont_"+endID[:8], domainid, bridgeID, mac, "gateway"); err != nil { |
| 277 | + Log.Error(err) |
| 278 | + errorResponse(w, "Unable to on-board container onto PLUMgrid") |
295 | 279 | } |
296 | | - Log.Infof("output: %+v\n", ifup.String()) |
297 | 280 |
|
298 | 281 | if netlink.LinkSetUp(local) != nil { |
299 | | - errorResponsef(w, `unable to bring veth up`) |
| 282 | + errorResponse(w, `unable to bring veth up`) |
300 | 283 | return |
301 | 284 | } |
302 | 285 |
|
@@ -329,27 +312,11 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) { |
329 | 312 |
|
330 | 313 | if_local_name := "tap" + l.EndpointID[:5] |
331 | 314 |
|
332 | | - //first command {adding port on plumgrid} |
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) |
340 | | - } |
341 | | - Log.Infof("output: %+v\n", ifdown.String()) |
342 | | - |
343 | | - //second command {up the port on plumgrid} |
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) |
| 315 | + // ifc_ctl interface down {Interface name, SE name} |
| 316 | + if err := ifc_ctl.PgIfDown(if_local_name, "gateway"); err != nil { |
| 317 | + Log.Error(err) |
| 318 | + errorResponse(w, "Unable to off-board container from PLUMgrid") |
351 | 319 | } |
352 | | - Log.Infof("output: %+v\n", delport.String()) |
353 | 320 |
|
354 | 321 | RemoveMetaconfig(domainid, bridgeID, l.EndpointID) |
355 | 322 |
|
|
0 commit comments