Skip to content

Commit

Permalink
Merge pull request #25 from contiv/deleteApiCleanup
Browse files Browse the repository at this point in the history
Pass Id as input to DeleteNetwork and DeleteEndpoint APIs
  • Loading branch information
mapuri committed Mar 12, 2015
2 parents 86d8913 + 1685046 commit 9131917
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 92 deletions.
8 changes: 4 additions & 4 deletions core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ 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)
}

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)
}

Expand All @@ -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 {
Expand All @@ -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)
}

Expand Down
51 changes: 18 additions & 33 deletions drivers/ovsdriver.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -525,40 +517,33 @@ 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
}
defer func() {
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
}
Expand Down
34 changes: 3 additions & 31 deletions drivers/ovsdriver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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)
}
Expand Down Expand Up @@ -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)
}
Expand Down
9 changes: 0 additions & 9 deletions drivers/ovsendpointstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
9 changes: 0 additions & 9 deletions drivers/ovsnetworkstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
4 changes: 2 additions & 2 deletions netd.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions plugin/netplugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down

0 comments on commit 9131917

Please sign in to comment.