bRouterExternal = Boolean.valueOf(queryRouterExternal); if ((queryID == null || queryID.equals(oSN.getID())) && (queryName == null || queryName.equals(oSN.getNetworkName())) && (bAdminStateUp == null || bAdminStateUp.booleanValue() == oSN.isAdminStateUp()) && (queryStatus == null || queryStatus.equals(oSN.getStatus())) && (bShared == null || bShared.booleanValue() == oSN.isShared()) && (bRouterExternal == null || bRouterExternal.booleanValue() == oSN.isRouterExternal()) && (queryTenantID == null || queryTenantID.equals(oSN.getTenantID()))) { if (fields.size() > 0) { ans.add(extractFields(oSN,fields));
NeutronNetwork ans = new NeutronNetwork(); Iterator<String> i = fields.iterator(); while (i.hasNext()) { String s = i.next(); if (s.equals("id")) { ans.setNetworkUUID(this.getNetworkUUID()); ans.setNetworkName(this.getNetworkName()); ans.setAdminStateUp(adminStateUp); ans.setStatus(this.getStatus()); subnetList.addAll(this.getSubnets()); ans.setSubnets(subnetList); ans.setShared(shared); ans.setTenantID(this.getTenantID());
public int canCreateNetwork(NeutronNetwork network) { if (network.getAdminStateUp() != null && !network.isAdminStateUp()) { return 400; } return 200; } public void neutronNetworkCreated(NeutronNetwork input) {
public int canUpdateNetwork(NeutronNetwork delta, NeutronNetwork original) { /* * transitions forbidden by openDove */ if (delta.getNetworkName() != null || delta.getAdminStateUp() != null || delta.getShared() != null || delta.getRouterExternal() != null) { return 403; } return 200; }
public void neutronNetworkCreated(NeutronNetwork input) { IfNBSystemRU systemDB = OpenDoveCRUDInterfaces.getIfSystemRU(this); IfOpenDoveDomainCRUD domainDB = OpenDoveCRUDInterfaces.getIfDoveDomainCRU(this); IfOpenDoveNetworkCRUD doveNetworkDB = OpenDoveCRUDInterfaces.getIfDoveNetworkCRU(this); if (!input.isRouterExternal()) { // don't map router external networks if (input.isShared()) { // map shared network OpenDoveNeutronControlBlock controlBlock = systemDB.getSystemBlock(); //get system block if (!controlBlock.getDomainSeparation()) { //if domain separation not supported, map to shared domain OpenDoveDomain sharedDomain = createDoveDomain("SharedDomain", input.getID(), domainDB, doveNetworkDB); int vnid = doveNetworkDB.allocateVNID(); String networkName = "Neutron "+input.getID(); OpenDoveNetwork doveNetwork = new OpenDoveNetwork(networkName, vnid, sharedDomain, 0, input.getID()); doveNetworkDB.addNetwork(doveNetwork.getUUID(), doveNetwork); } } else { // map dedicated network String domainName = "Neutron "+input.getTenantID(); OpenDoveDomain domain = createDoveDomain(domainName, input.getID(), domainDB, doveNetworkDB); domain.setAssociatedOSTenantUUID(input.getTenantID()); int vnid = doveNetworkDB.allocateVNID(); String networkName = "Neutron "+input.getID(); OpenDoveNetwork doveNetwork = new OpenDoveNetwork(networkName, vnid, domain, 0, input.getID()); doveNetworkDB.addNetwork(doveNetwork.getUUID(), doveNetwork); } } }
private int canAllocateEGW(String uuid, boolean negate) { /* if object is shared and domains are not separated, * then we need to configure an external gateway at this point. If we don't have one * don't create the port */ IfNBSystemRU systemDB = OpenDoveCRUDInterfaces.getIfSystemRU(this); INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(uuid); if (!neutronNetwork.isRouterExternal()) { if (neutronNetwork.isShared()) { OpenDoveNeutronControlBlock controlBlock = systemDB.getSystemBlock(); //get system block if ((!negate && controlBlock.getDomainSeparation()) || (negate && !controlBlock.getDomainSeparation())) { IfOpenDoveServiceApplianceCRUD serviceApplianceDB = OpenDoveCRUDInterfaces.getIfDoveServiceApplianceCRUD(this); for (OpenDoveServiceAppliance oDSA : serviceApplianceDB.getAppliances()) { if (oDSA.get_isDGW() && oDSA.getDoveTunnel() != null){ return 200; } } return 400; } } } return 200; } }
if (delta.getID() != null || delta.getTenantID() != null || delta.getStatus() != null) { throw new BadRequestException("attribute edit blocked by Neutron");
INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(neutronSubnet.getNetworkUUID()); String networkName = "Neutron " + neutronNetwork.getID(); IfSBDoveSubnetCRUD doveSubnetDB = OpenDoveCRUDInterfaces.getIfDoveSubnetCRUD(this); IfOpenDoveNetworkCRUD doveNetworkDB = OpenDoveCRUDInterfaces.getIfDoveNetworkCRU(this); NeutronSubnet oldNeutronSubnet = neutronSubnetIf.getSubnet(oldInterface.getSubnetUUID()); NeutronNetwork oldNeutronNetwork = neutronNetworkIf.getNetwork(oldNeutronSubnet.getNetworkUUID()); String oldNetworkUUID = "Neutron " + oldNeutronNetwork.getID(); OpenDoveNetwork oldODN = doveNetworkDB.getNetworkByName(oldNetworkUUID); if (neutronNetwork.isRouterExternal() || oldNeutronNetwork.isRouterExternal()) { if (neutronNetwork.isRouterExternal()) { Iterator<OpenDoveSubnet> i = doveSubnetDB.getSubnets().iterator(); while (i.hasNext()) {
NeutronNetwork network = neutronNetworkCRUDif.getNetwork(neutronNetwork); String doveDomainName = "Neutron "+port.getTenantID(); String doveNetworkName = "Neutron "+network.getID(); IfNBSystemRU systemDB = OpenDoveCRUDInterfaces.getIfSystemRU(o); if (network.isShared() && !controlBlock.getDomainSeparation()) doveDomainName = "SharedDomain"; IfOpenDoveDomainCRUD domainDB = OpenDoveCRUDInterfaces.getIfDoveDomainCRU(o);
if (networkInterface.networkExists(singleton.getID())) { throw new BadRequestException("network UUID already exists"); singleton.initDefaults(); networkInterface.addNetwork(singleton); if (instances != null) { if (networkInterface.networkExists(test.getID())) { throw new BadRequestException("network UUID already exists"); if (testMap.containsKey(test.getID())) { throw new BadRequestException("network UUID already exists"); throw new ServiceUnavailableException("Couldn't get providers list. Please try again later"); testMap.put(test.getID(),test); while (i.hasNext()) { NeutronNetwork test = i.next(); test.initDefaults(); networkInterface.addNetwork(test); if (instances != null) {
throw new BadRequestException("external network UUID doesn't exist."); NeutronNetwork externNetwork = networkInterface.getNetwork(externalNetworkUUID); if (!externNetwork.isRouterExternal()) throw new BadRequestException("external network isn't marked router:external"); if (externNetwork.getSubnets().size() != 1) throw new BadRequestException("external network doesn't have a subnet"); NeutronSubnet externSubnet = subnetInterface.getSubnet(externNetwork.getSubnets().get(0)); if (!externSubnet.isValidIP(floatingIP)) throw new BadRequestException("external IP isn't valid for the specified subnet.");
public int canAttachInterface(NeutronRouter router, NeutronRouter_Interface routerInterface) { //See if a EGW will need to be configured //If so, and there aren't GWs available, return BADREQUEST with a message INeutronSubnetCRUD neutronSubnetIf = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this); NeutronSubnet neutronSubnet = neutronSubnetIf.getSubnet(routerInterface.getSubnetUUID()); INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(neutronSubnet.getNetworkUUID()); if (neutronNetwork.isRouterExternal()) { IfOpenDoveServiceApplianceCRUD serviceApplianceDB = OpenDoveCRUDInterfaces.getIfDoveServiceApplianceCRUD(this); List<OpenDoveServiceAppliance> oDSAs = serviceApplianceDB.getAppliances(); Iterator<OpenDoveServiceAppliance> iterator = oDSAs.iterator(); while (iterator.hasNext()) { if (iterator.next().get_isDGW()) { return 200; } } return 400; } return 200; }
public void neutronNetworkDeleted(NeutronNetwork network) { IfOpenDoveNetworkCRUD doveNetworkDB = OpenDoveCRUDInterfaces.getIfDoveNetworkCRU(this); // mark open dove networks for deletion // no need to release EGW and SNAT pools for networks here - before the network can be removed, // the router interface has to be removed (which tears down policies and SNAT pools) and // then the port has to be removed. Iterator<OpenDoveNetwork> i = doveNetworkDB.getNetworks().iterator(); while (i.hasNext()) { OpenDoveNetwork oDN = i.next(); if (oDN.getNeutronNetwork().equalsIgnoreCase(network.getID())) { oDN.setTombstoneFlag(true); doveNetworkDB.updateNetwork(oDN.getUUID()); } } }
public OpenDoveSubnet(NeutronSubnet neutronSubnet, OpenDoveDomain domain, NeutronNetwork neutronNetwork, OpenDoveNetwork network) { networkUUIDs = new ArrayList<String>(); uuid = java.util.UUID.randomUUID().toString(); domainUUID = domain.getUUID(); subnet = getIPNetwork(neutronSubnet.getCidr()); mask = getIPMask(neutronSubnet.getCidr()); nexthop = neutronSubnet.getGatewayIP(); if (neutronNetwork.isShared()) { subnetType = "Shared"; } else { subnetType = "Dedicated"; } // link to network networkUUIDs.add(network.getUUID()); tombstoneFlag = false; associatedOSSubnetUUID = neutronSubnet.getID(); }
if (externNetwork.getSubnets().size() != 1) throw new BadRequestException("external network doesn't have a subnet."); NeutronSubnet externSubnet = subnetInterface.getSubnet(externNetwork.getSubnets().get(0)); if (!externSubnet.isValidIP(floatingIP)) throw new BadRequestException("floating IP not valid for external subnet");
INeutronSubnetCRUD neutronSubnetIf = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this); NeutronSubnet neutronSubnet = neutronSubnetIf.getSubnet(port.getFixedIPs().get(0).getSubnetUUID()); if (!neutronNetwork.isRouterExternal()) { if (neutronNetwork.isShared()) { String domainName = "Neutron "+neutronNetwork.getTenantID(); OpenDoveDomain domain = createDoveDomain(domainName, neutronNetwork.getID(), domainDB, networkDB); domain.setAssociatedOSTenantUUID(neutronNetwork.getTenantID()); int vnid = networkDB.allocateVNID(); String networkName = "Neutron "+neutronNetwork.getID(); OpenDoveNetwork doveNetwork = new OpenDoveNetwork(networkName, vnid, domain, 0, neutronNetwork.getID()); networkDB.addNetwork(doveNetwork.getUUID(), doveNetwork);
INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(subnet.getNetworkUUID()); if (!neutronNetwork.isRouterExternal()) { if (neutronNetwork.isShared()) { if (!controlBlock.getDomainSeparation()) {
INeutronNetworkCRUD neutronNetworkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); NeutronNetwork neutronNetwork = neutronNetworkIf.getNetwork(neutronSubnet.getNetworkUUID()); String networkUUID = "Neutron " + neutronNetwork.getID(); IfSBDoveSubnetCRUD doveSubnetDB = OpenDoveCRUDInterfaces.getIfDoveSubnetCRUD(this); IfOpenDoveNetworkCRUD doveNetworkDB = OpenDoveCRUDInterfaces.getIfDoveNetworkCRU(this); NeutronSubnet oldNeutronSubnet = neutronSubnetIf.getSubnet(oldInterface.getSubnetUUID()); NeutronNetwork oldNeutronNetwork = neutronNetworkIf.getNetwork(oldNeutronSubnet.getNetworkUUID()); String oldNetworkUUID = "Neutron " + oldNeutronNetwork.getID(); OpenDoveNetwork oldODN = doveNetworkDB.getNetworkByName(oldNetworkUUID); if (neutronNetwork.isRouterExternal() || oldNeutronNetwork.isRouterExternal()) { if (neutronNetwork.isRouterExternal()) { Iterator<OpenDoveSubnet> i = doveSubnetDB.getSubnets().iterator(); while (i.hasNext()) {
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; }
NeutronSubnet neutronSubnet = neutronSubnetIf.getSubnet(port.getFixedIPs().get(0).getSubnetUUID()); if (!neutronNetwork.isRouterExternal()) { if (neutronNetwork.isShared()) { if (controlBlock.getDomainSeparation()) {