From c9057dd0ef6976e015b2d92788d1d7733e8dd457 Mon Sep 17 00:00:00 2001 From: Ruth Devlaeminck Date: Mon, 26 Feb 2018 19:39:34 +0000 Subject: [PATCH] Add external network field to subnet and connect to it instead of first router/external router it finds --- .../mano/common/AbstractVirtualLink.java | 13 +++++++ .../descriptor/VirtualLinkDescriptor.java | 14 ------- .../catalogue/nfvo/networks/Subnet.java | 12 ++++++ .../utils/viminstance/VimInstanceUtils.java | 39 ++++++++++++------- .../openbaton/vim_impl/vim/GenericVIM.java | 8 ++-- 5 files changed, 53 insertions(+), 33 deletions(-) diff --git a/catalogue/src/main/java/org/openbaton/catalogue/mano/common/AbstractVirtualLink.java b/catalogue/src/main/java/org/openbaton/catalogue/mano/common/AbstractVirtualLink.java index 01fa700c9..a59e4422e 100644 --- a/catalogue/src/main/java/org/openbaton/catalogue/mano/common/AbstractVirtualLink.java +++ b/catalogue/src/main/java/org/openbaton/catalogue/mano/common/AbstractVirtualLink.java @@ -68,6 +68,16 @@ public abstract class AbstractVirtualLink extends BaseEntity { private String cidr; + private String poolName; + + public String getPoolName() { + return poolName; + } + + public void setPoolName(String poolName) { + this.poolName = poolName; + } + public String getCidr() { return cidr; } @@ -157,6 +167,9 @@ public String toString() { + ", cidr='" + cidr + '\'' + + ", poolName='" + + poolName + + '\'' + "} " + super.toString(); } diff --git a/catalogue/src/main/java/org/openbaton/catalogue/mano/descriptor/VirtualLinkDescriptor.java b/catalogue/src/main/java/org/openbaton/catalogue/mano/descriptor/VirtualLinkDescriptor.java index c859ce03c..8b0375ae0 100644 --- a/catalogue/src/main/java/org/openbaton/catalogue/mano/descriptor/VirtualLinkDescriptor.java +++ b/catalogue/src/main/java/org/openbaton/catalogue/mano/descriptor/VirtualLinkDescriptor.java @@ -44,9 +44,6 @@ public String toString() { + ", descriptor_version='" + descriptor_version + '\'' - + ", poolName='" - + poolName - + '\'' + ", number_of_endpoints=" + number_of_endpoints + ", connection=" @@ -62,9 +59,6 @@ public String toString() { /** Version of this VLD */ private String descriptor_version; - /** Public ip pool */ - private String poolName; - public List getDns() { return dns; } @@ -91,14 +85,6 @@ public void setDns(List dns) { public VirtualLinkDescriptor() {} - public String getPoolName() { - return poolName; - } - - public void setPoolName(String poolName) { - this.poolName = poolName; - } - public String getName() { return name; } diff --git a/catalogue/src/main/java/org/openbaton/catalogue/nfvo/networks/Subnet.java b/catalogue/src/main/java/org/openbaton/catalogue/nfvo/networks/Subnet.java index 14d0e3398..737c0d814 100644 --- a/catalogue/src/main/java/org/openbaton/catalogue/nfvo/networks/Subnet.java +++ b/catalogue/src/main/java/org/openbaton/catalogue/nfvo/networks/Subnet.java @@ -30,6 +30,7 @@ public class Subnet extends BaseEntity { private String networkId; private String cidr; private String gatewayIp; + private String externalNetworkName; public Subnet() {} @@ -84,6 +85,14 @@ public void setDns(List dns) { this.dns = dns; } + public String getExternalNetworkName() { + return externalNetworkName; + } + + public void setExternalNetworkName(String externalNetworkName) { + this.externalNetworkName = externalNetworkName; + } + @Override public String toString() { return "Subnet{" @@ -102,6 +111,9 @@ public String toString() { + ", gatewayIp='" + gatewayIp + '\'' + + ", externalNetworkName='" + + externalNetworkName + + '\'' + "} " + super.toString(); } diff --git a/common/src/main/java/org/openbaton/nfvo/common/utils/viminstance/VimInstanceUtils.java b/common/src/main/java/org/openbaton/nfvo/common/utils/viminstance/VimInstanceUtils.java index a0f972dad..1b68598c8 100644 --- a/common/src/main/java/org/openbaton/nfvo/common/utils/viminstance/VimInstanceUtils.java +++ b/common/src/main/java/org/openbaton/nfvo/common/utils/viminstance/VimInstanceUtils.java @@ -3,6 +3,7 @@ import java.util.*; import java.util.stream.Collectors; import org.apache.commons.net.util.SubnetUtils; +import org.openbaton.catalogue.mano.common.AbstractVirtualLink; import org.openbaton.catalogue.mano.descriptor.InternalVirtualLink; import org.openbaton.catalogue.mano.descriptor.NetworkServiceDescriptor; import org.openbaton.catalogue.mano.descriptor.VNFDConnectionPoint; @@ -126,6 +127,7 @@ public static void updateBaseNetworks(BaseNetwork networkOld, BaseNetwork networ subnetNfvo.setNetworkId(subnetNew.getNetworkId()); subnetNfvo.setGatewayIp(subnetNew.getGatewayIp()); subnetNfvo.setCidr(subnetNew.getCidr()); + subnetNfvo.setExternalNetworkName(subnetNew.getExternalNetworkName()); found_subnet = true; break; } @@ -217,11 +219,13 @@ public static BaseNetwork createBaseNetwork( HashSet subnets = new HashSet<>(); Subnet subnet = new Subnet(); subnet.setName(String.format("%s_subnet", vnfdConnectionPoint.getVirtual_link_reference())); - subnet.setCidr( - getCidrFromVLName( + AbstractVirtualLink avl = + getVLFromVLName( vnfdConnectionPoint.getVirtual_link_reference(), networkServiceDescriptor, - virtualNetworkFunctionDescriptor)); + virtualNetworkFunctionDescriptor); + subnet.setCidr(avl.getCidr()); + subnet.setExternalNetworkName(avl.getPoolName()); subnets.add(subnet); network.setSubnets(subnets); network.setName(vnfdConnectionPoint.getVirtual_link_reference()); @@ -229,11 +233,12 @@ public static BaseNetwork createBaseNetwork( } else if (vimInstance instanceof DockerVimInstance) { DockerNetwork networkdc = new DockerNetwork(); networkdc.setName(vnfdConnectionPoint.getVirtual_link_reference()); - networkdc.setSubnet( - getCidrFromVLName( + AbstractVirtualLink avl = + getVLFromVLName( vnfdConnectionPoint.getVirtual_link_reference(), networkServiceDescriptor, - virtualNetworkFunctionDescriptor)); + virtualNetworkFunctionDescriptor); + networkdc.setSubnet(avl.getCidr()); return networkdc; } else { BaseNetwork networkb = new BaseNetwork(); @@ -254,9 +259,11 @@ public static BaseNetwork createBaseNetwork( Subnet subnet = new Subnet(); subnet.setName(String.format("%s_subnet", vlr.getName())); subnet.setDns(vlr.getDns()); - subnet.setCidr( - getCidrFromVLName( - vlr.getName(), networkServiceDescriptor, virtualNetworkFunctionDescriptor)); + AbstractVirtualLink avl = + getVLFromVLName( + vlr.getName(), networkServiceDescriptor, virtualNetworkFunctionDescriptor); + subnet.setCidr(avl.getCidr()); + subnet.setExternalNetworkName(avl.getPoolName()); subnets.add(subnet); network.setSubnets(subnets); network.setName(vlr.getName()); @@ -264,9 +271,10 @@ public static BaseNetwork createBaseNetwork( } else if (vimInstance instanceof DockerVimInstance) { DockerNetwork networkdc = new DockerNetwork(); networkdc.setName(vlr.getName()); - networkdc.setSubnet( - getCidrFromVLName( - vlr.getName(), networkServiceDescriptor, virtualNetworkFunctionDescriptor)); + AbstractVirtualLink avl = + getVLFromVLName( + vlr.getName(), networkServiceDescriptor, virtualNetworkFunctionDescriptor); + networkdc.setSubnet(avl.getCidr()); return networkdc; } else { BaseNetwork networkb = new BaseNetwork(); @@ -275,19 +283,20 @@ public static BaseNetwork createBaseNetwork( } } - private static String getCidrFromVLName( + private static AbstractVirtualLink getVLFromVLName( String virtual_link_reference, NetworkServiceDescriptor networkServiceDescriptor, VirtualNetworkFunctionDescriptor virtualNetworkFunctionDescriptor) throws BadRequestException { + for (VirtualLinkDescriptor vld : networkServiceDescriptor.getVld()) { if (vld.getName().equals(virtual_link_reference)) { - return vld.getCidr(); + return vld; } } for (InternalVirtualLink ivl : virtualNetworkFunctionDescriptor.getVirtual_link()) { if (ivl.getName().equals(virtual_link_reference)) { - return ivl.getCidr(); + return ivl; } } throw new BadRequestException( diff --git a/vim-impl/src/main/java/org/openbaton/vim_impl/vim/GenericVIM.java b/vim-impl/src/main/java/org/openbaton/vim_impl/vim/GenericVIM.java index dc7fa2e21..9f6f0cf69 100644 --- a/vim-impl/src/main/java/org/openbaton/vim_impl/vim/GenericVIM.java +++ b/vim-impl/src/main/java/org/openbaton/vim_impl/vim/GenericVIM.java @@ -588,16 +588,16 @@ public BaseNetwork add(BaseVimInstance vimInstance, BaseNetwork network) throws e); } if (network instanceof Network) { - Network osNetowork = (Network) network; + Network osNetwork = (Network) network; log.debug( "Creating Subnets for Network with name: " + network.getName() + " on VimInstance " + vimInstance.getName() + " -> Subnets: " - + osNetowork.getSubnets()); + + osNetwork.getSubnets()); Set createdSubnets = new HashSet<>(); - for (Subnet subnet : osNetowork.getSubnets()) { + for (Subnet subnet : osNetwork.getSubnets()) { try { log.debug( "Creating Subnet with name: " @@ -659,7 +659,7 @@ public BaseNetwork add(BaseVimInstance vimInstance, BaseNetwork network) throws + " on VimInstnace " + vimInstance.getName() + " -> Subnets: " - + osNetowork.getSubnets()); + + osNetwork.getSubnets()); } return createdNetwork; }