diff --git a/core/core.go b/core/core.go index 1f1006d40..8ad9978d7 100644 --- a/core/core.go +++ b/core/core.go @@ -42,7 +42,7 @@ type Network interface { // A network identifies a group of (addressable) endpoints that can // comunicate. CreateNetwork(id string) error - DeleteNetwork(value string) error + DeleteNetwork(id string) error FetchNetwork(id string) (State, error) } @@ -50,7 +50,7 @@ type Endpoint interface { // An endpoint identifies an addressable entity in a network. An endpoint // belongs to a single network. CreateEndpoint(id string) error - DeleteEndpoint(value string) error + DeleteEndpoint(id string) error FetchEndpoint(id string) (State, error) } @@ -74,7 +74,7 @@ type NetworkDriver interface { Init(config *Config, stateDriver StateDriver) error Deinit() CreateNetwork(id string) error - DeleteNetwork(value string) error + DeleteNetwork(id string) error } type EndpointDriver interface { @@ -83,7 +83,7 @@ type EndpointDriver interface { Init(config *Config, stateDriver StateDriver) error Deinit() CreateEndpoint(id string) error - DeleteEndpoint(value string) error + DeleteEndpoint(id string) error MakeEndpointAddress() (*Address, error) } diff --git a/drivers/ovsdriver.go b/drivers/ovsdriver.go index 128cb6987..6935ed52d 100644 --- a/drivers/ovsdriver.go +++ b/drivers/ovsdriver.go @@ -350,15 +350,15 @@ func (d *OvsDriver) createVtep(epCfg *OvsCfgEndpointState) error { return nil } -func (d *OvsDriver) deleteVtep(epCfg *OvsCfgEndpointState) error { +func (d *OvsDriver) deleteVtep(epOper *OvsOperEndpointState) error { cfgNw := OvsCfgNetworkState{StateDriver: d.stateDriver} - err := cfgNw.Read(epCfg.NetId) + err := cfgNw.Read(epOper.NetId) if err != nil { return err } - intfName := vxlanIfName(epCfg.NetId, epCfg.VtepIp) + intfName := vxlanIfName(epOper.NetId, epOper.VtepIp) err = d.createDeletePort(intfName, intfName, "vxlan", cfgNw.Id, nil, cfgNw.PktTag, DELETE_PORT) if err != nil { @@ -434,18 +434,10 @@ func (d *OvsDriver) CreateNetwork(id string) error { return nil } -func (d *OvsDriver) DeleteNetwork(value string) error { +func (d *OvsDriver) DeleteNetwork(id string) error { // no driver operation for network delete - var err error - - cfgNw := OvsCfgNetworkState{} - err = cfgNw.Unmarshal(value) - if err != nil { - log.Printf("Failed to unmarshal network config, err '%s' \n", err) - return err - } - log.Printf("delete net %s \n", cfgNw.Id) + log.Printf("delete net %s \n", id) return nil } @@ -525,26 +517,10 @@ func (d *OvsDriver) CreateEndpoint(id string) error { return nil } -func (d *OvsDriver) DeleteEndpoint(value string) (err error) { - - epCfg := OvsCfgEndpointState{} - err = epCfg.Unmarshal(value) - if err != nil { - log.Printf("Failed to unmarshal epcfg, err '%s' \n", err) - return - } - - if epCfg.VtepIp != "" { - err = d.deleteVtep(&epCfg) - if err != nil { - log.Printf("error '%s' creating vtep interface(s) for "+ - "remote endpoint %s\n", err, epCfg.VtepIp) - } - return - } +func (d *OvsDriver) DeleteEndpoint(id string) (err error) { epOper := OvsOperEndpointState{StateDriver: d.stateDriver} - err = epOper.Read(epCfg.Id) + err = epOper.Read(id) if err != nil { return err } @@ -552,13 +528,22 @@ func (d *OvsDriver) DeleteEndpoint(value string) (err error) { epOper.Clear() }() - portName, err := d.getPortOrIntfNameFromId(epCfg.Id, GET_PORT_NAME) + if epOper.VtepIp != "" { + err = d.deleteVtep(&epOper) + if err != nil { + log.Printf("error '%s' deleting vtep interface(s) for "+ + "remote endpoint %s\n", err, epOper.VtepIp) + } + return + } + + portName, err := d.getPortOrIntfNameFromId(epOper.Id, GET_PORT_NAME) if err != nil { return err } intfName := "" - intfName, err = d.getPortOrIntfNameFromId(epCfg.Id, GET_INTF_NAME) + intfName, err = d.getPortOrIntfNameFromId(epOper.Id, GET_INTF_NAME) if err != nil { return err } diff --git a/drivers/ovsdriver_test.go b/drivers/ovsdriver_test.go index e06a06ece..95b540228 100644 --- a/drivers/ovsdriver_test.go +++ b/drivers/ovsdriver_test.go @@ -296,16 +296,7 @@ func TestOvsDriverDeleteEndpoint(t *testing.T) { t.Fatalf("endpoint Creation failed. Error: %s", err) } - cfgEp := &OvsCfgEndpointState{} - err = driver.stateDriver.ReadState(id, cfgEp, nil) - if err != nil { - t.Fatalf("error '%s' reading state for id %s \n", err, id) - } - value, err := cfgEp.Marshal() - if err != nil { - t.Fatalf("error marshaling config '%s' \n", err) - } - err = driver.DeleteEndpoint(value) + err = driver.DeleteEndpoint(id) if err != nil { t.Fatalf("endpoint Deletion failed. Error: %s", err) } @@ -332,16 +323,7 @@ func TestOvsDriverDeleteEndpointiWithIntfName(t *testing.T) { t.Fatalf("endpoint Creation failed. Error: %s", err) } - cfgEp := &OvsCfgEndpointState{} - err = driver.stateDriver.ReadState(id, cfgEp, nil) - if err != nil { - t.Fatalf("error '%s' reading state for id %s \n", err, id) - } - value, err := cfgEp.Marshal() - if err != nil { - t.Fatalf("error marshaling config '%s' \n", err) - } - err = driver.DeleteEndpoint(value) + err = driver.DeleteEndpoint(id) if err != nil { t.Fatalf("endpoint Deletion failed. Error: %s", err) } @@ -400,17 +382,7 @@ func TestOvsDriverDeleteVxlanPeer(t *testing.T) { t.Fatalf("endpoint Creation failed. Error: %s", err) } - cfgEp := &OvsCfgEndpointState{} - err = driver.stateDriver.ReadState(deleteVxlanEpId, cfgEp, nil) - if err != nil { - t.Fatalf("error '%s' reading state for id %s \n", err, - deleteVxlanEpId) - } - value, err := cfgEp.Marshal() - if err != nil { - t.Fatalf("error marshaling config '%s' \n", err) - } - err = driver.DeleteEndpoint(value) + err = driver.DeleteEndpoint(deleteVxlanEpId) if err != nil { t.Fatalf("endpoint Deletion failed. Error: %s", err) } diff --git a/drivers/ovsendpointstate.go b/drivers/ovsendpointstate.go index 815e464d1..2f0afae87 100644 --- a/drivers/ovsendpointstate.go +++ b/drivers/ovsendpointstate.go @@ -127,12 +127,3 @@ func (s *OvsOperEndpointState) Clear() error { key := fmt.Sprintf(EP_OPER_PATH, s.Id) return s.StateDriver.ClearState(key) } - -func (s *OvsOperEndpointState) Unmarshal(value string) error { - return json.Unmarshal([]byte(value), s) -} - -func (s *OvsOperEndpointState) Marshal() (string, error) { - bytes, err := json.Marshal(s) - return string(bytes[:]), err -} diff --git a/drivers/ovsnetworkstate.go b/drivers/ovsnetworkstate.go index a8001faa9..83c481b0a 100644 --- a/drivers/ovsnetworkstate.go +++ b/drivers/ovsnetworkstate.go @@ -67,12 +67,3 @@ func (s *OvsCfgNetworkState) Clear() error { key := fmt.Sprintf(NW_CFG_PATH, s.Id) return s.StateDriver.ClearState(key) } - -func (s *OvsCfgNetworkState) Unmarshal(value string) error { - return json.Unmarshal([]byte(value), s) -} - -func (s *OvsCfgNetworkState) Marshal() (string, error) { - bytes, err := json.Marshal(s) - return string(bytes[:]), err -} diff --git a/netd.go b/netd.go index 234a4bbdd..74c4372b9 100644 --- a/netd.go +++ b/netd.go @@ -185,7 +185,7 @@ func processNetEvent(netPlugin *plugin.NetPlugin, key, preValue string, operStr := "" if preValue != "" { - err = netPlugin.DeleteNetwork(preValue) + err = netPlugin.DeleteNetwork(netId) operStr = "delete" } else { err = netPlugin.CreateNetwork(netId) @@ -307,7 +307,7 @@ func processEpEvent(netPlugin *plugin.NetPlugin, crt *crt.Crt, operStr := "" if preValue != "" { - err = netPlugin.DeleteEndpoint(preValue) + err = netPlugin.DeleteEndpoint(epId) operStr = "delete" } else { err = netPlugin.CreateEndpoint(epId) diff --git a/plugin/netplugin.go b/plugin/netplugin.go index 684d1de0a..c53a52d3f 100644 --- a/plugin/netplugin.go +++ b/plugin/netplugin.go @@ -173,8 +173,8 @@ func (p *NetPlugin) CreateNetwork(id string) error { return p.NetworkDriver.CreateNetwork(id) } -func (p *NetPlugin) DeleteNetwork(value string) error { - return p.NetworkDriver.DeleteNetwork(value) +func (p *NetPlugin) DeleteNetwork(id string) error { + return p.NetworkDriver.DeleteNetwork(id) } func (p *NetPlugin) FetchNetwork(id string) (core.State, error) { @@ -185,8 +185,8 @@ func (p *NetPlugin) CreateEndpoint(id string) error { return p.EndpointDriver.CreateEndpoint(id) } -func (p *NetPlugin) DeleteEndpoint(value string) error { - return p.EndpointDriver.DeleteEndpoint(value) +func (p *NetPlugin) DeleteEndpoint(id string) error { + return p.EndpointDriver.DeleteEndpoint(id) } func (p *NetPlugin) FetchEndpoint(id string) (core.State, error) {