@@ -48,8 +48,7 @@ func NewOvsDriver(bridgeName string) *OvsDriver {
4848 _ = ovs .MonitorAll ("Open_vSwitch" , "" )
4949
5050 // Create the default bridge instance
51- err = ovsDriver .CreateBridge (ovsDriver .OvsBridgeName )
52- if err != nil {
51+ if err = ovsDriver .CreateBridge (ovsDriver .OvsBridgeName ); err != nil {
5352 log .Fatalf ("Error creating the default bridge. Err: %v" , err )
5453 }
5554
@@ -183,9 +182,9 @@ func (self *OvsDriver) ovsdbTransact(ops []libovsdb.Operation) error {
183182 // Parse reply and look for errors
184183 for i , o := range reply {
185184 if o .Error != "" && i < len (ops ) {
186- return errors .New ("OVS Transaction failed err " + o .Error + "Details: " + o .Details )
185+ return errors .New ("OVS Transaction failed err " + o .Error + "Details: " + o .Details + " UUID: " + o . UUID . GoUuid )
187186 } else if o .Error != "" {
188- return errors .New ("OVS Transaction failed err " + o .Error + "Details: " + o .Details )
187+ return errors .New ("OVS Transaction failed err " + o .Error + "Details: " + o .Details + " UUID: " + o . UUID . GoUuid )
189188 }
190189 }
191190
@@ -345,6 +344,31 @@ func (self *OvsDriver) GetOtherConfig() (map[string]string, error) {
345344 return buildMapFromOVSDBMap (externalIds ), nil
346345}
347346
347+ func (self * OvsDriver ) GetInternalPortMac () (string , error ) {
348+ selectOper := libovsdb.Operation {
349+ Op : "select" ,
350+ Table : "Port" ,
351+ Where : []interface {}{[]interface {}{"name" , "==" , self .OvsBridgeName }},
352+ Columns : []string {"mac" },
353+ }
354+
355+ opers := []libovsdb.Operation {selectOper }
356+ ret , err := self .ovsClient .Transact ("Open_vSwitch" , opers ... )
357+ if err != nil {
358+ return "" , fmt .Errorf ("ovsdb select internal port mac transaction failed: %v" , opers )
359+ }
360+
361+ if len (ret ) == 0 || len (ret [0 ].Rows ) == 0 {
362+ return "" , nil
363+ }
364+
365+ mac , ok := ret [0 ].Rows [0 ]["mac" ].(string )
366+ if ! ok {
367+ return "" , nil
368+ }
369+ return mac , nil
370+ }
371+
348372func (self * OvsDriver ) SetExternalIds (externalIds map [string ]string ) error {
349373 oMap := buildOVSDBMapFromMap (externalIds )
350374 row := make (map [string ]interface {})
@@ -406,8 +430,8 @@ func (self *OvsDriver) UpdateInterface(ifaceName string, externalIDs map[string]
406430
407431// Create an internal port in OVS
408432func (self * OvsDriver ) CreatePort (intfName , intfType string , vlanTag uint ) error {
409- portUuidStr := intfName
410- intfUuidStr := fmt . Sprintf ( "Intf%s" , intfName )
433+ portUuidStr := "portdummy"
434+ intfUuidStr := "ifacedummy"
411435 portUuid := []libovsdb.UUID {{GoUuid : portUuidStr }}
412436 intfUuid := []libovsdb.UUID {{GoUuid : intfUuidStr }}
413437 opStr := "insert"
0 commit comments