public static void assignEGWs(IfOpenDoveServiceApplianceCRUD serviceApplianceDB, IfSBDoveGwIpv4CRUD gatewayIPDB, NeutronSubnet neutronSubnet, OpenDoveNeutronControlBlock controlBlock, OpenDoveNetwork network) { Integer replicationFactor = controlBlock.getEgwReplicationFactor(); List<OpenDoveServiceAppliance> oDSAs = getAssignableDGWs(serviceApplianceDB); SubnetUtils util = new SubnetUtils(neutronSubnet.getCidr()); SubnetInfo info = util.getInfo(); while (ipIterator.hasNext()) { OpenDoveGwIpv4 gwIP = ipIterator.next(); if (gwIP.getGWUUID().equalsIgnoreCase(target.getUUID()) && info.isInRange(gwIP.getIP())) { found = true; String gwAddress = neutronSubnet.getLowAddr(); neutronSubnet.allocateIP(gwAddress); OpenDoveGwIpv4 newGWIP = new OpenDoveGwIpv4(gwAddress, OpenDoveSubnet.getIPMask(neutronSubnet.getCidr()), neutronSubnet.getGatewayIP(), "external", target.getUUID(), 0); newGWIP.setNeutronSubnet(neutronSubnet); gatewayIPDB.addGwIpv4(newGWIP.getUUID(), newGWIP);
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())); } } } }
if (gwIpv4.getIP() == null) { throw new BadRequestException("request missing required information"); } else { IfSBDoveGwIpv4CRUD gatewayIPDB = OpenDoveCRUDInterfaces.getIfSBDoveGwIpv4CRUD(this); OpenDoveGwIpv4 newGWIP = new OpenDoveGwIpv4(gwIpv4.getIP(), gwIpv4.getMask(), gwIpv4.getNexthop(), gwIpv4.getType(), odgwUUID, 0); gatewayIPDB.addGwIpv4(newGWIP.getUUID(), newGWIP); dgwAppliance.setDoveTunnel(newGWIP); ipv4UUID = newGWIP.getUUID();
openDoveSBInterfaces.removeGwIpv4(o.getUUID()); OpenDoveGwIpv4 gwIP = (OpenDoveGwIpv4) o; if (gwIP.getNeutronSubnet() != null) { gwIP.getNeutronSubnet().releaseIP(gwIP.getIP()); gwIP.setNeutronSubnet(null);
public void updateGwIpv4(OpenDoveGwIpv4 ipv4) { gwIpv4Map.update(ipv4.getUUID(), ipv4); }
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; }
IfOpenDoveServiceApplianceCRUD serviceApplianceDB = OpenDoveCRUDInterfaces.getIfDoveServiceApplianceCRUD(this); IfSBDoveGwIpv4CRUD gatewayIPDB = OpenDoveCRUDInterfaces.getIfSBDoveGwIpv4CRUD(this); OpenDoveGwIpv4.assignEGWs(serviceApplianceDB, gatewayIPDB, neutronSubnet, controlBlock, oldODN); OpenDoveEGWSNATPool.configureEGWSNATPool(neutronSubnet, snatPoolDB, controlBlock, oldODN); IfOpenDoveServiceApplianceCRUD serviceApplianceDB = OpenDoveCRUDInterfaces.getIfDoveServiceApplianceCRUD(this); IfSBDoveGwIpv4CRUD gatewayIPDB = OpenDoveCRUDInterfaces.getIfSBDoveGwIpv4CRUD(this); OpenDoveGwIpv4.assignEGWs(serviceApplianceDB, gatewayIPDB, oldNeutronSubnet, controlBlock, newODN); OpenDoveEGWSNATPool.configureEGWSNATPool(oldNeutronSubnet, snatPoolDB, controlBlock, newODN);
OpenDoveGwIpv4.assignEGWs(serviceApplianceDB, gatewayIPDB, neutronSubnet, controlBlock, doveNetwork);
OpenDoveGwIpv4.assignEGWs(serviceApplianceDB, gatewayIPDB, neutronSubnet, controlBlock, network);