func freeNetworkResources(stateDriver core.StateDriver, nwCfg *mastercfg.CfgNetworkState, gCfg *gstate.Cfg) (err error) { tempRm, err := resources.GetStateResourceManager() if err != nil { return err } rm := core.ResourceManager(tempRm) if nwCfg.PktTagType == "vlan" { err = gCfg.FreeVLAN(rm, uint(nwCfg.PktTag)) if err != nil { return err } } else if nwCfg.PktTagType == "vxlan" { log.Infof("freeing vlan %d vxlan %d", nwCfg.PktTag, nwCfg.ExtPktTag) err = gCfg.FreeVXLAN(rm, uint(nwCfg.ExtPktTag), uint(nwCfg.PktTag)) if err != nil { return err } } if nwCfg.SubnetIsAllocated { log.Infof("freeing subnet %s/%d", nwCfg.SubnetIP, nwCfg.SubnetLen) err = gCfg.FreeSubnet(rm, nwCfg.SubnetIP) if err != nil { return err } } if err := gCfg.UnassignNetwork(nwCfg.ID); err != nil { return err } return err }
func freeNetworkResources(stateDriver core.StateDriver, nwMasterCfg *NwConfig, nwCfg *drivers.OvsCfgNetworkState, gCfg *gstate.Cfg) (err error) { tempRm, err := resources.GetStateResourceManager() if err != nil { return err } rm := core.ResourceManager(tempRm) if nwCfg.PktTagType == "vlan" { err = gCfg.FreeVLAN(rm, uint(nwCfg.PktTag)) if err != nil { return err } } else if nwCfg.PktTagType == "vxlan" { log.Infof("freeing vlan %d vxlan %d", nwCfg.PktTag, nwCfg.ExtPktTag) err = gCfg.FreeVXLAN(rm, uint(nwCfg.ExtPktTag), uint(nwCfg.PktTag)) if err != nil { return err } } if nwMasterCfg.SubnetIP == "" { log.Infof("freeing subnet %s/%s", nwCfg.SubnetIP, nwCfg.SubnetLen) err = gCfg.FreeSubnet(rm, nwCfg.SubnetIP) if err != nil { return err } } return err }
// DeleteEndpointGroup handles endpoint group deletes func DeleteEndpointGroup(epgID int) error { // Get the state driver stateDriver, err := utils.GetStateDriver() if err != nil { return err } epgCfg := &mastercfg.EndpointGroupState{} epgCfg.StateDriver = stateDriver err = epgCfg.Read(strconv.Itoa(epgID)) if err != nil { log.Errorf("EpGroup %v is not configured", epgID) return err } gCfg := gstate.Cfg{} gCfg.StateDriver = stateDriver err = gCfg.Read(epgCfg.Tenant) if err != nil { log.Errorf("error reading tenant cfg state. Error: %s", err) return err } // if aci mode we allocate per-epg vlan. free it here. aciMode, aErr := IsAciConfigured() if aErr != nil { return aErr } if aciMode { tempRm, rErr := resources.GetStateResourceManager() if rErr != nil { return rErr } rm := core.ResourceManager(tempRm) if epgCfg.PktTagType == "vlan" { err = gCfg.FreeVLAN(rm, uint(epgCfg.PktTag)) if err != nil { return err } log.Debugf("Freed vlan %v\n", epgCfg.PktTag) } } epgNet := epgCfg.Name + "." + epgCfg.NetworkName + "." + epgCfg.Tenant err = epgCfg.Clear() if err != nil { log.Errorf("error writing epGroup config. Error: %v", err) return err } return deleteDockNet(epgNet) }