Skip to content

Commit 70de18f

Browse files
committed
fixing sanity failures and missed commits
1 parent 18bc5e0 commit 70de18f

File tree

8 files changed

+100
-48
lines changed

8 files changed

+100
-48
lines changed

core/core.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ type NetworkDriver interface {
9292
Init(config *Config, info *InstanceInfo) error
9393
Deinit()
9494
CreateNetwork(id string) error
95-
DeleteNetwork(id, encap string, pktTag, extPktTag int) error
95+
DeleteNetwork(id, encap string, pktTag, extPktTag int, Gateway string) error
9696
CreateEndpoint(id string) error
9797
DeleteEndpoint(id string) error
9898
AddPeerHost(node ServiceInfo) error

drivers/fakenetepdriver.go

100644100755
+11-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (d *FakeNetEpDriver) CreateNetwork(id string) error {
2626
}
2727

2828
// DeleteNetwork is not implemented.
29-
func (d *FakeNetEpDriver) DeleteNetwork(id, encap string, pktTag, extPktTag int) error {
29+
func (d *FakeNetEpDriver) DeleteNetwork(id, encap string, pktTag, extPktTag int, Gw string) error {
3030
return core.Errorf("Not implemented")
3131
}
3232

@@ -59,3 +59,13 @@ func (d *FakeNetEpDriver) AddMaster(node core.ServiceInfo) error {
5959
func (d *FakeNetEpDriver) DeleteMaster(node core.ServiceInfo) error {
6060
return core.Errorf("Not implemented")
6161
}
62+
63+
// AddBgpNeighbors is not implemented.
64+
func (d *FakeNetEpDriver) AddBgpNeighbors(id string) (err error) {
65+
return core.Errorf("Not implemented")
66+
}
67+
68+
// DeleteBgpNeighbors is not implemented.
69+
func (d *FakeNetEpDriver) DeleteBgpNeighbors(id string) (err error) {
70+
return core.Errorf("Not implemented")
71+
}

drivers/ovsSwitch.go

+26-15
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ limitations under the License.
1616
package drivers
1717

1818
import (
19+
"errors"
1920
"fmt"
2021
"net"
2122
"strings"
@@ -56,12 +57,6 @@ func NewOvsSwitch(bridgeName, netType, localIP string, fwdMode string, routerInf
5657
sw.bridgeName = bridgeName
5758
sw.netType = netType
5859

59-
// Create OVS db driver
60-
sw.ovsdbDriver, err = NewOvsdbDriver(bridgeName, "secure")
61-
if err != nil {
62-
log.Fatalf("Error creating ovsdb driver. Err: %v", err)
63-
}
64-
6560
// determine ofnet and ctrler ports to use
6661
if netType == "vxlan" {
6762
ofnetPort = vxlanOfnetPort
@@ -70,28 +65,30 @@ func NewOvsSwitch(bridgeName, netType, localIP string, fwdMode string, routerInf
7065
ofnetPort = vlanOfnetPort
7166
ctrlerPort = vlanCtrlerPort
7267
}
68+
7369
// For Vxlan, initialize ofnet. For VLAN mode, we use OVS normal forwarding
7470
if netType == "vxlan" {
71+
// Create OVS db driver
72+
sw.ovsdbDriver, err = NewOvsdbDriver(bridgeName, "secure")
73+
if err != nil {
74+
log.Fatalf("Error creating ovsdb driver. Err: %v", err)
75+
}
7576
// Create an ofnet agent
7677
if fwdMode == "bridge" {
7778
sw.ofnetAgent, err = ofnet.NewOfnetAgent("vxlan", net.ParseIP(localIP),
78-
ofnet.OFNET_AGENT_VXLAN_PORT, 6633)
79+
ofnetPort, ctrlerPort)
7980
} else if fwdMode == "routing" {
8081
sw.ofnetAgent, err = ofnet.NewOfnetAgent("vrouter", net.ParseIP(localIP),
81-
ofnet.OFNET_AGENT_VXLAN_PORT, 6633)
82+
ofnetPort, ctrlerPort)
83+
} else {
84+
log.Errorf("Invalid Forwarding mode")
85+
return nil, errors.New("Invalid forwarding mode. Expects 'bridge' or 'routing'")
8286
}
8387
if err != nil {
8488
log.Fatalf("Error initializing ofnet")
8589
return nil, err
8690
}
8791

88-
// Create an ofnet agent
89-
sw.ofnetAgent, err = ofnet.NewOfnetAgent(netType, net.ParseIP(localIP), ofnetPort, ctrlerPort)
90-
if err != nil {
91-
log.Fatalf("Error initializing ofnet")
92-
return nil, err
93-
}
94-
9592
// Add controller to the OVS
9693
ctrlerIP := "127.0.0.1"
9794
target := fmt.Sprintf("tcp:%s:%d", ctrlerIP, ctrlerPort)
@@ -124,11 +121,25 @@ func NewOvsSwitch(bridgeName, netType, localIP string, fwdMode string, routerInf
124121
// Create an ofnet agent
125122
if fwdMode == "bridge" {
126123
//For vlan bridge fwd mode ofnetAgent is not instantiated
124+
// Create OVS db driver
125+
sw.ovsdbDriver, err = NewOvsdbDriver(bridgeName, "")
126+
if err != nil {
127+
log.Fatalf("Error creating ovsdb driver. Err: %v", err)
128+
}
127129
return sw, nil
128130
} else if fwdMode == "routing" {
131+
// Create OVS db driver
132+
sw.ovsdbDriver, err = NewOvsdbDriver(bridgeName, "secure")
133+
if err != nil {
134+
log.Fatalf("Error creating ovsdb driver. Err: %v", err)
135+
}
129136
sw.ofnetAgent, err = ofnet.NewOfnetAgent("vlrouter", net.ParseIP(localIP),
130137
ofnet.OFNET_AGENT_VLAN_PORT, 6634, routerInfo...)
138+
} else {
139+
log.Errorf("Invalid Forwarding mode")
140+
return nil, errors.New("Invalid forwarding mode. Expects 'bridge' or 'routing'")
131141
}
142+
132143
if err != nil {
133144
log.Fatalf("Error initializing ofnet")
134145
return nil, err

drivers/ovsdriver.go

+9-20
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ func (d *OvsDriver) CreateNetwork(id string) error {
197197
}
198198

199199
// DeleteNetwork deletes a network by named identifier
200-
func (d *OvsDriver) DeleteNetwork(id, encap string, pktTag, extPktTag int) error {
200+
func (d *OvsDriver) DeleteNetwork(id, encap string, pktTag, extPktTag int, Gw string) error {
201201
log.Infof("delete net %s, encap %s, tags: %d/%d", id, encap, pktTag, extPktTag)
202202

203203
// Find the switch based on network type
@@ -207,7 +207,8 @@ func (d *OvsDriver) DeleteNetwork(id, encap string, pktTag, extPktTag int) error
207207
} else {
208208
sw = d.switchDb["vlan"]
209209
}
210-
return sw.DeleteNetwork(uint16(cfgNw.PktTag), uint32(cfgNw.ExtPktTag), cfgNw.Gateway)
210+
211+
return sw.DeleteNetwork(uint16(pktTag), uint32(extPktTag), Gw)
211212
}
212213

213214
// CreateEndpoint creates an endpoint by named identifier
@@ -447,6 +448,8 @@ func (d *OvsDriver) DeleteMaster(node core.ServiceInfo) error {
447448

448449
// AddBgpNeighbors adds bgp neighbor by named identifier
449450
func (d *OvsDriver) AddBgpNeighbors(id string) error {
451+
var sw *OvsSwitch
452+
450453
cfg := mastercfg.CfgBgpState{}
451454
cfg.StateDriver = d.oper.StateDriver
452455
log.Info("Reading from etcd State %s", id)
@@ -458,34 +461,20 @@ func (d *OvsDriver) AddBgpNeighbors(id string) error {
458461
log.Infof("create Bgp Server %s \n", cfg.Name)
459462

460463
// Find the switch based on network type
461-
var sw *OvsSwitch
462-
//if cfg.CfgType == "bgp-vxlan" {
463-
// sw = d.switchDb["vxlan"]
464-
//} else {
465464
sw = d.switchDb["vlan"]
466-
//}
467465

468466
return sw.AddBgpNeighbors(cfg.Name, cfg.As, cfg.Neighbor)
469467
}
470468

471469
// DeleteBgpNeightbor deletes a bgp neighbor by named identifier
472470
func (d *OvsDriver) DeleteBgpNeighbors(id string) error {
473-
log.Infof("delete router state %s \n", id)
474-
475-
cfg := mastercfg.CfgBgpState{}
476-
cfg.StateDriver = d.oper.StateDriver
477-
err := cfg.Read(id)
478-
if err != nil {
479-
log.Errorf("Failed to read router state %s \n", cfg.Name)
480-
return err
481-
}
471+
log.Infof("delete Bgp Neighbor %s \n", id)
472+
//FixME: We are not maintaining oper state for Bgp
473+
//Need to Revisit again
482474
// Find the switch based on network type
483475
var sw *OvsSwitch
484-
// if cfg.CfgType == "bgp-vxlan" {
485-
// sw = d.switchDb["vxlan"]
486-
// } else {
476+
487477
sw = d.switchDb["vlan"]
488-
// }
489478
return sw.DeleteBgpNeighbors()
490479

491480
}

drivers/ovsdriver_test.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,12 @@ func initOvsDriver(t *testing.T) *OvsDriver {
166166
ovsConfig := &OvsDriverConfig{}
167167
ovsConfig.Ovs.DbIP = ""
168168
ovsConfig.Ovs.DbPort = 0
169+
fMode := "bridge"
169170
config := &core.Config{V: ovsConfig}
170171
stateDriver := &state.FakeStateDriver{}
171172
stateDriver.Init(nil)
172173
instInfo := &core.InstanceInfo{HostLabel: testHostLabel,
173-
StateDriver: stateDriver}
174+
StateDriver: stateDriver, FwdMode: fMode}
174175

175176
err := createCommonState(stateDriver)
176177
if err != nil {
@@ -195,11 +196,12 @@ func TestOvsDriverInitStatefulStart(t *testing.T) {
195196
ovsConfig := &OvsDriverConfig{}
196197
ovsConfig.Ovs.DbIP = ""
197198
ovsConfig.Ovs.DbPort = 0
199+
fMode := "bridge"
198200
config := &core.Config{V: ovsConfig}
199201
stateDriver := &state.FakeStateDriver{}
200202
stateDriver.Init(nil)
201203
instInfo := &core.InstanceInfo{HostLabel: testHostLabelStateful,
202-
StateDriver: stateDriver}
204+
StateDriver: stateDriver, FwdMode: fMode}
203205

204206
operOvs := &OvsDriverOperState{CurrPortNum: 10}
205207
operOvs.StateDriver = stateDriver
@@ -248,8 +250,10 @@ func TestOvsDriverInitInvalidState(t *testing.T) {
248250
ovsConfig := &OvsDriverConfig{}
249251
ovsConfig.Ovs.DbIP = ""
250252
ovsConfig.Ovs.DbPort = 0
253+
fMode := "bridge"
251254
config := &core.Config{V: ovsConfig}
252-
instInfo := &core.InstanceInfo{HostLabel: testHostLabel, StateDriver: nil}
255+
instInfo := &core.InstanceInfo{HostLabel: testHostLabel, StateDriver: nil,
256+
FwdMode: fMode}
253257

254258
err := driver.Init(config, instInfo)
255259
if err == nil {

netplugin/netd.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func processNetEvent(netPlugin *plugin.NetPlugin, nwCfg *mastercfg.CfgNetworkSta
112112

113113
operStr := ""
114114
if isDelete {
115-
err = netPlugin.DeleteNetwork(nwCfg.ID, nwCfg.PktTagType, nwCfg.PktTag, nwCfg.ExtPktTag)
115+
err = netPlugin.DeleteNetwork(nwCfg.ID, nwCfg.PktTagType, nwCfg.PktTag, nwCfg.ExtPktTag, nwCfg.Gateway)
116116
operStr = "delete"
117117
} else {
118118
err = netPlugin.CreateNetwork(nwCfg.ID)

netplugin/plugin/netplugin.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ func (p *NetPlugin) CreateNetwork(id string) error {
104104
}
105105

106106
// DeleteNetwork deletes a network provided by the ID.
107-
func (p *NetPlugin) DeleteNetwork(id, encap string, pktTag, extPktTag int) error {
108-
return p.NetworkDriver.DeleteNetwork(id, encap, pktTag, extPktTag)
107+
func (p *NetPlugin) DeleteNetwork(id, encap string, pktTag, extPktTag int, Gw string) error {
108+
return p.NetworkDriver.DeleteNetwork(id, encap, pktTag, extPktTag, Gw)
109109
}
110110

111111
// FetchNetwork retrieves a network's state given an ID.

netplugin/plugin/netplugin_test.go

100644100755
+43-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ func TestNetPluginInit(t *testing.T) {
3333
"container": "docker"
3434
},
3535
"plugin-instance": {
36-
"host-label": "testHost"
36+
"host-label": "testHost",
37+
"fwd-mode":"bridge"
3738
},
3839
"ovs" : {
3940
"dbip": "127.0.0.1",
@@ -146,7 +147,8 @@ func TestNetPluginInitInvalidConfigMissingStateDriverName(t *testing.T) {
146147
"container": "docker"
147148
},
148149
"plugin-instance": {
149-
"host-label": "testHost"
150+
"host-label": "testHost",
151+
"fwd-mode":"bridge"
150152
},
151153
"ovs" : {
152154
"dbip": "127.0.0.1",
@@ -184,7 +186,8 @@ func TestNetPluginInitInvalidConfigMissingStateDriver(t *testing.T) {
184186
"container": "docker"
185187
},
186188
"plugin-instance": {
187-
"host-label": "testHost"
189+
"host-label": "testHost",
190+
"fwd-mode":"bridge"
188191
},
189192
"ovs" : {
190193
"dbip": "127.0.0.1",
@@ -218,7 +221,8 @@ func TestNetPluginInitInvalidConfigMissingNetworkDriverName(t *testing.T) {
218221
"container": "docker"
219222
},
220223
"plugin-instance": {
221-
"host-label": "testHost"
224+
"host-label": "testHost",
225+
"fwd-mode":"bridge"
222226
},
223227
"ovs" : {
224228
"dbip": "127.0.0.1",
@@ -254,7 +258,8 @@ func TestNetPluginInitInvalidConfigMissingNetworkDriver(t *testing.T) {
254258
"container": "docker"
255259
},
256260
"plugin-instance": {
257-
"host-label": "testHost"
261+
"host-label": "testHost",
262+
"fwd-mode":"bridge"
258263
},
259264
"fakedriver" : {
260265
},
@@ -277,3 +282,36 @@ func TestNetPluginInitInvalidConfigMissingNetworkDriver(t *testing.T) {
277282
}
278283
defer func() { plugin.Deinit() }()
279284
}
285+
286+
func TestNetPluginInitInvalidConfigMissingFwdMode(t *testing.T) {
287+
configStr := `{
288+
"drivers" : {
289+
"network": "ovs",
290+
"endpoint": "ovs",
291+
"state": "fakedriver",
292+
"container": "docker",
293+
},
294+
"plugin-instance": {
295+
"host-label": "testHost"
296+
},
297+
"ovs" : {
298+
"dbip": "127.0.0.1",
299+
"dbport": 6640
300+
},
301+
"fakedriver" : {
302+
},
303+
"docker" : {
304+
"socket" : "unix:///var/run/docker.sock"
305+
}
306+
}`
307+
308+
// Parse the config
309+
pluginConfig := Config{}
310+
err := json.Unmarshal([]byte(configStr), &pluginConfig)
311+
312+
plugin := NetPlugin{}
313+
err = plugin.Init(pluginConfig, configStr)
314+
if err == nil {
315+
t.Fatalf("plugin init succeeded, should have failed!")
316+
}
317+
}

0 commit comments

Comments
 (0)