@@ -16,6 +16,7 @@ package driver
1616
1717import (
1818 "encoding/json"
19+ "fmt"
1920 "strings"
2021)
2122
@@ -77,14 +78,19 @@ func BridgeDelete(ID string, domainid string) {
7778 RestCall ("DELETE" , url , nil )
7879}
7980
80- func AddNetworkInfo (dNetwork string , neName string , domain string ) {
81+ func AddNetworkInfo (dNetwork string , neName string , domain string ) error {
82+
8183 id := GetNeId (neName , domain )
8284 var neId string
8385 if id == "" {
8486 neId = neName
8587 } else {
8688 neId = id
8789 }
90+ if ! CheckNeExists (neId , domain ) {
91+ return fmt .Errorf ("Bridge (%s) doesnot exist in doamin (%s)." , neName , domain )
92+ }
93+
8894 url := "/0/connectivity/domain/" + domain + "/ne/" + neId
8995 body , _ := RestCall ("GET" , url + "?configonly=true" , nil )
9096 var netData map [string ]interface {}
@@ -95,6 +101,8 @@ func AddNetworkInfo(dNetwork string, neName string, domain string) {
95101 netData ["metadata" ] = dNetwork
96102 finalData , _ := json .Marshal (netData )
97103 RestCall ("PUT" , url , finalData )
104+
105+ return nil
98106}
99107
100108func FindDomainFromNetwork (ID string ) (domainid string , netid string ) {
@@ -238,9 +246,13 @@ func GetNeId(NeName string, DomainID string) (NeID string) {
238246 return ""
239247}
240248
241- func CreateNetworkLink (NeName string , DomainID string , NetworkID string , IP string , Netmask string ) {
249+ func CreateNetworkLink (NeName string , DomainID string , NetworkID string , IP string , Netmask string ) error {
242250
243251 ne_ID := GetNeId (NeName , DomainID )
252+ if ! CheckNeExists (ne_ID , DomainID ) {
253+ return fmt .Errorf ("Router (%s) doesnot exist in doamin (%s)." , NeName , DomainID )
254+ }
255+
244256 CheckNeChildList (ne_ID , DomainID , "ifc" )
245257 CheckNeChildList (NetworkName (NetworkID ), DomainID , "ifc" )
246258 ne_ifc := NetworkID
@@ -271,6 +283,8 @@ func CreateNetworkLink(NeName string, DomainID string, NetworkID string, IP stri
271283 "attachment1": "/ne/` + ne_ID + `/ifc/` + ne_ifc + `",
272284 "attachment2": "/ne/` + NetworkName (NetworkID ) + `/ifc/` + net_ifc + `"}` )
273285 RestCall ("PUT" , url , data )
286+
287+ return nil
274288}
275289
276290func DeleteNetworkLinks (DomainID string , NetworkID string ) {
@@ -409,3 +423,23 @@ func DeleteAttachedLB(DomainID string, NetworkID string) {
409423 }
410424 }
411425}
426+
427+ func CheckNeExists (ne_name , domain string ) bool {
428+
429+ url := "/0/connectivity/domain/" + domain + "/ne?configonly=true"
430+
431+ body , _ := RestCall ("GET" , url + "?configonly=true" , nil )
432+ var domain_data map [string ]interface {}
433+ err := json .Unmarshal ([]byte (body ), & domain_data )
434+ if err != nil {
435+ panic (err )
436+ }
437+
438+ for ne , _ := range domain_data {
439+ if ne_name == ne {
440+ return true
441+ }
442+ }
443+
444+ return false
445+ }
0 commit comments