public int canDeleteSubnet(NeutronSubnet subnet) { /* check if router external - if so, check for EGW assignments or SNAT pool assignments * if either exist, can't delete router external subnet */ INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(subnet.getNetworkUUID()); if (neutronNetwork.isRouterExternal()) { IfSBDoveEGWSNATPoolCRUD snatPoolDB = OpenDoveCRUDInterfaces.getIfDoveEGWSNATPoolCRUD(this); if (snatPoolDB.getEgwSNATPools().size() > 0 ) { return 409; } IfSBDoveGwIpv4CRUD gatewayIPDB = OpenDoveCRUDInterfaces.getIfSBDoveGwIpv4CRUD(this); for (OpenDoveGwIpv4 ipv4 : gatewayIPDB.getGwIpv4Pool()) { if (ipv4.getType().equalsIgnoreCase("external")) { return 409; } } } return 200; }
OpenDoveServiceAppliance target = oDSAs.get(index); List<OpenDoveGwIpv4> gwIPs= gatewayIPDB.getGwIpv4Pool(); Iterator<OpenDoveGwIpv4> ipIterator = gwIPs.iterator(); boolean found = false;
public static void tombstoneEGWs( IfOpenDoveServiceApplianceCRUD serviceApplianceDB, IfSBDoveGwIpv4CRUD gatewayIPDB, NeutronSubnet subnet, OpenDoveNetwork network) { for (OpenDoveGwIpv4 gwIP: gatewayIPDB.getGwIpv4Pool()) { if (subnet.isValidIP(gwIP.getIP())) { subnet.releaseIP(gwIP.getIP()); gwIP.setTombstoneFlag(true); gatewayIPDB.updateGwIpv4(gwIP); network.removeEGW(serviceApplianceDB.getDoveServiceAppliance(gwIP.getGWUUID())); } } } }