Skip to content

Commit be65fb6

Browse files
committed
Merge remote-tracking branch 'origin/master' into sagheer-dev
Conflicts: plugin/driver/driver.go
2 parents a9734dc + 73f14d7 commit be65fb6

2 files changed

Lines changed: 53 additions & 11 deletions

File tree

plugin/driver/driver.go

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,19 @@
1515
package driver
1616

1717
import (
18+
"bytes"
1819
"encoding/hex"
1920
"encoding/json"
2021
"fmt"
2122
"io"
2223
"net"
2324
"net/http"
25+
"os/exec"
2426

2527
Log "github.com/Sirupsen/logrus"
2628
"github.com/docker/libnetwork/drivers/remote/api"
2729
"github.com/docker/libnetwork/netlabel"
2830
docker "github.com/fsouza/go-dockerclient"
29-
"github.com/plumgrid/cli/helpers/plumgrid/ifc_ctl"
3031

3132
"github.com/gorilla/mux"
3233
"github.com/vishvananda/netlink"
@@ -212,7 +213,7 @@ func (driver *driver) createEndpoint(w http.ResponseWriter, r *http.Request) {
212213
local := vethPair(endID[:5])
213214
if err := netlink.LinkAdd(local); err != nil {
214215
Log.Error(err)
215-
errorResponse(w, "could not create veth pair")
216+
errorResponsef(w, "could not create veth pair")
216217
return
217218
}
218219
link, _ := netlink.LinkByName(local.PeerName)
@@ -283,15 +284,36 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
283284
mac := link.Attrs().HardwareAddr.String()
284285
Log.Infof("mac address: %s\n", mac)
285286

286-
// ifc_ctl interface up {Interface Name, Container ID, Domain ID, Bridge ID, MAC address, SE name}
287-
if err := ifc_ctl.PgIfUp(if_local_name, "cont_"+endID[:8], domainid, bridgeID, mac, "gateway"); err != nil {
288-
Log.Error(err)
287+
cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway add_port " + if_local_name
288+
Log.Infof("addport cmd: %s", cmdStr)
289+
cmd := exec.Command("/bin/sh", "-c", cmdStr)
290+
var addport bytes.Buffer
291+
cmd.Stdout = &addport
292+
if err := cmd.Run(); err != nil {
293+
Log.Error("Error thrown: ", err)
294+
}
295+
if addport.String() != "" {
296+
Log.Error(fmt.Errorf(addport.String()))
297+
errorResponse(w, "Unable to on-board container onto PLUMgrid")
298+
return
299+
}
300+
301+
cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway ifup " + if_local_name + " access_container cont_" + endID[:8] + " " + mac + " pgtag2=" + bridgeID + " pgtag1=" + domainid
302+
Log.Infof("ifup cmd: %s", cmdStr)
303+
cmd = exec.Command("/bin/sh", "-c", cmdStr)
304+
var ifup bytes.Buffer
305+
cmd.Stdout = &ifup
306+
if err := cmd.Run(); err != nil {
307+
Log.Error("Error thrown: ", err)
308+
}
309+
if ifup.String() != "" {
310+
Log.Error(fmt.Errorf(ifup.String()))
289311
errorResponse(w, "Unable to on-board container onto PLUMgrid")
290312
return
291313
}
292314

293315
if netlink.LinkSetUp(local) != nil {
294-
errorResponse(w, `unable to bring veth up`)
316+
errorResponsef(w, `unable to bring veth up`)
295317
return
296318
}
297319

@@ -324,11 +346,31 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) {
324346

325347
if_local_name := "tap" + l.EndpointID[:5]
326348

327-
// ifc_ctl interface down {Interface name, SE name}
328-
if err := ifc_ctl.PgIfDown(if_local_name, "gateway"); err != nil {
329-
Log.Error(err)
349+
cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway ifdown " + if_local_name
350+
Log.Infof("ifdown cmd: %s", cmdStr)
351+
cmd := exec.Command("/bin/sh", "-c", cmdStr)
352+
var ifdown bytes.Buffer
353+
cmd.Stdout = &ifdown
354+
if err := cmd.Run(); err != nil {
355+
Log.Error("Error thrown: ", err)
356+
}
357+
if ifdown.String() != "" {
358+
Log.Error(fmt.Errorf(ifdown.String()))
359+
errorResponse(w, "Unable to off-board container from PLUMgrid")
360+
}
361+
362+
cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway del_port " + if_local_name
363+
Log.Infof("delport cmd: %s", cmdStr)
364+
cmd = exec.Command("/bin/sh", "-c", cmdStr)
365+
var delport bytes.Buffer
366+
cmd.Stdout = &delport
367+
if err := cmd.Run(); err != nil {
368+
Log.Error("Error thrown: ", err)
369+
}
370+
Log.Infof("output: %+v\n", delport.String())
371+
if delport.String() != "" {
372+
Log.Error(fmt.Errorf(delport.String()))
330373
errorResponse(w, "Unable to off-board container from PLUMgrid")
331-
return
332374
}
333375

334376
RemoveMetaconfig(domainid, bridgeID, l.EndpointID)

plugin/driver/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func sendError(w http.ResponseWriter, msg string, code int) {
3636
http.Error(w, msg, code)
3737
}
3838

39-
func errorResponse(w http.ResponseWriter, fmtString string, item ...interface{}) {
39+
func errorResponsef(w http.ResponseWriter, fmtString string, item ...interface{}) {
4040
json.NewEncoder(w).Encode(map[string]string{
4141
"Err": fmt.Sprintf(fmtString, item...),
4242
})

0 commit comments

Comments
 (0)