Skip to content

Commit b283012

Browse files
author
Fawad Khaliq
authored
Merge pull request #65 from plumgrid/sagheer-dev
restrict network creation in transit domain
2 parents 03c21a2 + f710646 commit b283012

3 files changed

Lines changed: 26 additions & 3 deletions

File tree

plugin/driver/driver.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ func (driver *driver) createNetwork(w http.ResponseWriter, r *http.Request) {
137137
}
138138
DomainCreate(domainid.(string))
139139

140+
if CheckExternalConnectivity(domainid.(string)) {
141+
errorResponse(w, fmt.Sprintf("Non-external network cannot be created in transit domain."))
142+
return
143+
}
144+
140145
gatewayip := create.IPv4Data[0].Gateway.IP.String()
141146
neName := create.Options[netlabel.GenericData].(map[string]interface{})["bridge"]
142147

plugin/driver/pg_helper.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ func CheckNeExists(ne_name, domain string) bool {
428428

429429
url := "/0/connectivity/domain/" + domain + "/ne?configonly=true"
430430

431-
body, _ := RestCall("GET", url+"?configonly=true", nil)
431+
body, _ := RestCall("GET", url, nil)
432432
var domain_data map[string]interface{}
433433
err := json.Unmarshal([]byte(body), &domain_data)
434434
if err != nil {
@@ -443,3 +443,23 @@ func CheckNeExists(ne_name, domain string) bool {
443443

444444
return false
445445
}
446+
447+
func CheckExternalConnectivity(domain string) bool {
448+
449+
url := "/0/connectivity/domain_prop/" + domain + "/ne?configonly=true"
450+
451+
body, _ := RestCall("GET", url, nil)
452+
var domain_data map[string]interface{}
453+
err := json.Unmarshal([]byte(body), &domain_data)
454+
if err != nil {
455+
panic(err)
456+
}
457+
458+
for key, _ := range domain_data {
459+
if key == "external_connectivity_enable" {
460+
return true
461+
}
462+
}
463+
464+
return false
465+
}

plugin/driver/utils.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
)
2626

2727
// Response Functions
28-
2928
func notFound(w http.ResponseWriter, r *http.Request) {
3029
Log.Warningf("[plugin] Not found: %+v", r)
3130
http.NotFound(w, r)
@@ -54,7 +53,6 @@ func emptyResponse(w http.ResponseWriter) {
5453
}
5554

5655
// Helper Functions
57-
5856
func vethPair(suffix string) *netlink.Veth {
5957
return &netlink.Veth{
6058
LinkAttrs: netlink.LinkAttrs{Name: "tap" + suffix},

0 commit comments

Comments
 (0)