|
15 | 15 | package driver |
16 | 16 |
|
17 | 17 | import ( |
| 18 | + "bytes" |
18 | 19 | "encoding/hex" |
19 | 20 | "encoding/json" |
20 | 21 | "fmt" |
21 | 22 | "io" |
22 | 23 | "net" |
23 | 24 | "net/http" |
| 25 | + "os/exec" |
24 | 26 |
|
25 | 27 | Log "github.com/Sirupsen/logrus" |
26 | 28 | "github.com/docker/libnetwork/drivers/remote/api" |
27 | 29 | "github.com/docker/libnetwork/netlabel" |
28 | 30 | docker "github.com/fsouza/go-dockerclient" |
29 | | - "github.com/plumgrid/cli/helpers/plumgrid/ifc_ctl" |
30 | 31 |
|
31 | 32 | "github.com/gorilla/mux" |
32 | 33 | "github.com/vishvananda/netlink" |
@@ -201,7 +202,7 @@ func (driver *driver) createEndpoint(w http.ResponseWriter, r *http.Request) { |
201 | 202 | local := vethPair(endID[:5]) |
202 | 203 | if err := netlink.LinkAdd(local); err != nil { |
203 | 204 | Log.Error(err) |
204 | | - errorResponse(w, "could not create veth pair") |
| 205 | + errorResponsef(w, "could not create veth pair") |
205 | 206 | return |
206 | 207 | } |
207 | 208 | link, _ := netlink.LinkByName(local.PeerName) |
@@ -272,14 +273,30 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) { |
272 | 273 | mac := link.Attrs().HardwareAddr.String() |
273 | 274 | Log.Infof("mac address: %s\n", mac) |
274 | 275 |
|
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") |
| 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) |
279 | 295 | } |
| 296 | + Log.Infof("output: %+v\n", ifup.String()) |
280 | 297 |
|
281 | 298 | if netlink.LinkSetUp(local) != nil { |
282 | | - errorResponse(w, `unable to bring veth up`) |
| 299 | + errorResponsef(w, `unable to bring veth up`) |
283 | 300 | return |
284 | 301 | } |
285 | 302 |
|
@@ -312,11 +329,27 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) { |
312 | 329 |
|
313 | 330 | if_local_name := "tap" + l.EndpointID[:5] |
314 | 331 |
|
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") |
| 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) |
319 | 351 | } |
| 352 | + Log.Infof("output: %+v\n", delport.String()) |
320 | 353 |
|
321 | 354 | RemoveMetaconfig(domainid, bridgeID, l.EndpointID) |
322 | 355 |
|
|
0 commit comments