Skip to content

Commit 20e3382

Browse files
committed
Pass Id as input to DeleteNetwork and DeleteEndpoint APIs
This commit reverts the DeleteNetwork and DeleteEndpoint APIs to taking network and endpoint Ids as input instead of an opaque value string. This follows the netplugin design to keep driver specific state handling inside the driver than the Netplugin Core.
1 parent 86d8913 commit 20e3382

File tree

7 files changed

+31
-92
lines changed

7 files changed

+31
-92
lines changed

core/core.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ type Network interface {
4242
// A network identifies a group of (addressable) endpoints that can
4343
// comunicate.
4444
CreateNetwork(id string) error
45-
DeleteNetwork(value string) error
45+
DeleteNetwork(id string) error
4646
FetchNetwork(id string) (State, error)
4747
}
4848

4949
type Endpoint interface {
5050
// An endpoint identifies an addressable entity in a network. An endpoint
5151
// belongs to a single network.
5252
CreateEndpoint(id string) error
53-
DeleteEndpoint(value string) error
53+
DeleteEndpoint(id string) error
5454
FetchEndpoint(id string) (State, error)
5555
}
5656

@@ -74,7 +74,7 @@ type NetworkDriver interface {
7474
Init(config *Config, stateDriver StateDriver) error
7575
Deinit()
7676
CreateNetwork(id string) error
77-
DeleteNetwork(value string) error
77+
DeleteNetwork(id string) error
7878
}
7979

8080
type EndpointDriver interface {
@@ -83,7 +83,7 @@ type EndpointDriver interface {
8383
Init(config *Config, stateDriver StateDriver) error
8484
Deinit()
8585
CreateEndpoint(id string) error
86-
DeleteEndpoint(value string) error
86+
DeleteEndpoint(id string) error
8787
MakeEndpointAddress() (*Address, error)
8888
}
8989

drivers/ovsdriver.go

+18-33
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,15 @@ func (d *OvsDriver) createVtep(epCfg *OvsCfgEndpointState) error {
350350
return nil
351351
}
352352

353-
func (d *OvsDriver) deleteVtep(epCfg *OvsCfgEndpointState) error {
353+
func (d *OvsDriver) deleteVtep(epOper *OvsOperEndpointState) error {
354354

355355
cfgNw := OvsCfgNetworkState{StateDriver: d.stateDriver}
356-
err := cfgNw.Read(epCfg.NetId)
356+
err := cfgNw.Read(epOper.NetId)
357357
if err != nil {
358358
return err
359359
}
360360

361-
intfName := vxlanIfName(epCfg.NetId, epCfg.VtepIp)
361+
intfName := vxlanIfName(epOper.NetId, epOper.VtepIp)
362362
err = d.createDeletePort(intfName, intfName, "vxlan", cfgNw.Id,
363363
nil, cfgNw.PktTag, DELETE_PORT)
364364
if err != nil {
@@ -434,18 +434,10 @@ func (d *OvsDriver) CreateNetwork(id string) error {
434434
return nil
435435
}
436436

437-
func (d *OvsDriver) DeleteNetwork(value string) error {
437+
func (d *OvsDriver) DeleteNetwork(id string) error {
438438

439439
// no driver operation for network delete
440-
var err error
441-
442-
cfgNw := OvsCfgNetworkState{}
443-
err = cfgNw.Unmarshal(value)
444-
if err != nil {
445-
log.Printf("Failed to unmarshal network config, err '%s' \n", err)
446-
return err
447-
}
448-
log.Printf("delete net %s \n", cfgNw.Id)
440+
log.Printf("delete net %s \n", id)
449441

450442
return nil
451443
}
@@ -525,40 +517,33 @@ func (d *OvsDriver) CreateEndpoint(id string) error {
525517
return nil
526518
}
527519

528-
func (d *OvsDriver) DeleteEndpoint(value string) (err error) {
529-
530-
epCfg := OvsCfgEndpointState{}
531-
err = epCfg.Unmarshal(value)
532-
if err != nil {
533-
log.Printf("Failed to unmarshal epcfg, err '%s' \n", err)
534-
return
535-
}
536-
537-
if epCfg.VtepIp != "" {
538-
err = d.deleteVtep(&epCfg)
539-
if err != nil {
540-
log.Printf("error '%s' creating vtep interface(s) for "+
541-
"remote endpoint %s\n", err, epCfg.VtepIp)
542-
}
543-
return
544-
}
520+
func (d *OvsDriver) DeleteEndpoint(id string) (err error) {
545521

546522
epOper := OvsOperEndpointState{StateDriver: d.stateDriver}
547-
err = epOper.Read(epCfg.Id)
523+
err = epOper.Read(id)
548524
if err != nil {
549525
return err
550526
}
551527
defer func() {
552528
epOper.Clear()
553529
}()
554530

555-
portName, err := d.getPortOrIntfNameFromId(epCfg.Id, GET_PORT_NAME)
531+
if epOper.VtepIp != "" {
532+
err = d.deleteVtep(&epOper)
533+
if err != nil {
534+
log.Printf("error '%s' deleting vtep interface(s) for "+
535+
"remote endpoint %s\n", err, epOper.VtepIp)
536+
}
537+
return
538+
}
539+
540+
portName, err := d.getPortOrIntfNameFromId(epOper.Id, GET_PORT_NAME)
556541
if err != nil {
557542
return err
558543
}
559544

560545
intfName := ""
561-
intfName, err = d.getPortOrIntfNameFromId(epCfg.Id, GET_INTF_NAME)
546+
intfName, err = d.getPortOrIntfNameFromId(epOper.Id, GET_INTF_NAME)
562547
if err != nil {
563548
return err
564549
}

drivers/ovsdriver_test.go

+3-31
Original file line numberDiff line numberDiff line change
@@ -296,16 +296,7 @@ func TestOvsDriverDeleteEndpoint(t *testing.T) {
296296
t.Fatalf("endpoint Creation failed. Error: %s", err)
297297
}
298298

299-
cfgEp := &OvsCfgEndpointState{}
300-
err = driver.stateDriver.ReadState(id, cfgEp, nil)
301-
if err != nil {
302-
t.Fatalf("error '%s' reading state for id %s \n", err, id)
303-
}
304-
value, err := cfgEp.Marshal()
305-
if err != nil {
306-
t.Fatalf("error marshaling config '%s' \n", err)
307-
}
308-
err = driver.DeleteEndpoint(value)
299+
err = driver.DeleteEndpoint(id)
309300
if err != nil {
310301
t.Fatalf("endpoint Deletion failed. Error: %s", err)
311302
}
@@ -332,16 +323,7 @@ func TestOvsDriverDeleteEndpointiWithIntfName(t *testing.T) {
332323
t.Fatalf("endpoint Creation failed. Error: %s", err)
333324
}
334325

335-
cfgEp := &OvsCfgEndpointState{}
336-
err = driver.stateDriver.ReadState(id, cfgEp, nil)
337-
if err != nil {
338-
t.Fatalf("error '%s' reading state for id %s \n", err, id)
339-
}
340-
value, err := cfgEp.Marshal()
341-
if err != nil {
342-
t.Fatalf("error marshaling config '%s' \n", err)
343-
}
344-
err = driver.DeleteEndpoint(value)
326+
err = driver.DeleteEndpoint(id)
345327
if err != nil {
346328
t.Fatalf("endpoint Deletion failed. Error: %s", err)
347329
}
@@ -400,17 +382,7 @@ func TestOvsDriverDeleteVxlanPeer(t *testing.T) {
400382
t.Fatalf("endpoint Creation failed. Error: %s", err)
401383
}
402384

403-
cfgEp := &OvsCfgEndpointState{}
404-
err = driver.stateDriver.ReadState(deleteVxlanEpId, cfgEp, nil)
405-
if err != nil {
406-
t.Fatalf("error '%s' reading state for id %s \n", err,
407-
deleteVxlanEpId)
408-
}
409-
value, err := cfgEp.Marshal()
410-
if err != nil {
411-
t.Fatalf("error marshaling config '%s' \n", err)
412-
}
413-
err = driver.DeleteEndpoint(value)
385+
err = driver.DeleteEndpoint(deleteVxlanEpId)
414386
if err != nil {
415387
t.Fatalf("endpoint Deletion failed. Error: %s", err)
416388
}

drivers/ovsendpointstate.go

-9
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,3 @@ func (s *OvsOperEndpointState) Clear() error {
127127
key := fmt.Sprintf(EP_OPER_PATH, s.Id)
128128
return s.StateDriver.ClearState(key)
129129
}
130-
131-
func (s *OvsOperEndpointState) Unmarshal(value string) error {
132-
return json.Unmarshal([]byte(value), s)
133-
}
134-
135-
func (s *OvsOperEndpointState) Marshal() (string, error) {
136-
bytes, err := json.Marshal(s)
137-
return string(bytes[:]), err
138-
}

drivers/ovsnetworkstate.go

-9
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,3 @@ func (s *OvsCfgNetworkState) Clear() error {
6767
key := fmt.Sprintf(NW_CFG_PATH, s.Id)
6868
return s.StateDriver.ClearState(key)
6969
}
70-
71-
func (s *OvsCfgNetworkState) Unmarshal(value string) error {
72-
return json.Unmarshal([]byte(value), s)
73-
}
74-
75-
func (s *OvsCfgNetworkState) Marshal() (string, error) {
76-
bytes, err := json.Marshal(s)
77-
return string(bytes[:]), err
78-
}

netd.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func processNetEvent(netPlugin *plugin.NetPlugin, key, preValue string,
185185

186186
operStr := ""
187187
if preValue != "" {
188-
err = netPlugin.DeleteNetwork(preValue)
188+
err = netPlugin.DeleteNetwork(netId)
189189
operStr = "delete"
190190
} else {
191191
err = netPlugin.CreateNetwork(netId)
@@ -307,7 +307,7 @@ func processEpEvent(netPlugin *plugin.NetPlugin, crt *crt.Crt,
307307

308308
operStr := ""
309309
if preValue != "" {
310-
err = netPlugin.DeleteEndpoint(preValue)
310+
err = netPlugin.DeleteEndpoint(epId)
311311
operStr = "delete"
312312
} else {
313313
err = netPlugin.CreateEndpoint(epId)

plugin/netplugin.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ func (p *NetPlugin) CreateNetwork(id string) error {
173173
return p.NetworkDriver.CreateNetwork(id)
174174
}
175175

176-
func (p *NetPlugin) DeleteNetwork(value string) error {
177-
return p.NetworkDriver.DeleteNetwork(value)
176+
func (p *NetPlugin) DeleteNetwork(id string) error {
177+
return p.NetworkDriver.DeleteNetwork(id)
178178
}
179179

180180
func (p *NetPlugin) FetchNetwork(id string) (core.State, error) {
@@ -185,8 +185,8 @@ func (p *NetPlugin) CreateEndpoint(id string) error {
185185
return p.EndpointDriver.CreateEndpoint(id)
186186
}
187187

188-
func (p *NetPlugin) DeleteEndpoint(value string) error {
189-
return p.EndpointDriver.DeleteEndpoint(value)
188+
func (p *NetPlugin) DeleteEndpoint(id string) error {
189+
return p.EndpointDriver.DeleteEndpoint(id)
190190
}
191191

192192
func (p *NetPlugin) FetchEndpoint(id string) (core.State, error) {

0 commit comments

Comments
 (0)