- network_dict = {'name': net_name, 'admin_state_up': True}
- if net_type=="data" or net_type=="ptp":
- if self.config.get('dataplane_physical_net') == None:
- raise vimconn.vimconnConflictException("You must provide a 'dataplane_physical_net' at config value before creating sriov network")
- if not self.config.get('multisegment_support'):
- network_dict["provider:physical_network"] = self.config[
- 'dataplane_physical_net'] # "physnet_sriov" #TODO physical
- network_dict["provider:network_type"] = "vlan"
- if vlan!=None:
- network_dict["provider:network_type"] = vlan
+ network_dict = {"name": net_name, "admin_state_up": True}
+
+ if net_type in ("data", "ptp"):
+ provider_physical_network = None
+
+ if provider_network_profile and provider_network_profile.get(
+ "physical-network"
+ ):
+ provider_physical_network = provider_network_profile.get(
+ "physical-network"
+ )
+
+ # provider-network must be one of the dataplane_physcial_netowrk if this is a list. If it is string
+ # or not declared, just ignore the checking
+ if (
+ isinstance(
+ self.config.get("dataplane_physical_net"), (tuple, list)
+ )
+ and provider_physical_network
+ not in self.config["dataplane_physical_net"]
+ ):
+ raise vimconn.VimConnConflictException(
+ "Invalid parameter 'provider-network:physical-network' "
+ "for network creation. '{}' is not one of the declared "
+ "list at VIM_config:dataplane_physical_net".format(
+ provider_physical_network
+ )
+ )
+
+ # use the default dataplane_physical_net
+ if not provider_physical_network:
+ provider_physical_network = self.config.get(
+ "dataplane_physical_net"
+ )
+
+ # if it is non empty list, use the first value. If it is a string use the value directly
+ if (
+ isinstance(provider_physical_network, (tuple, list))
+ and provider_physical_network
+ ):
+ provider_physical_network = provider_physical_network[0]
+
+ if not provider_physical_network:
+ raise vimconn.VimConnConflictException(
+ "missing information needed for underlay networks. Provide "
+ "'dataplane_physical_net' configuration at VIM or use the NS "
+ "instantiation parameter 'provider-network.physical-network'"
+ " for the VLD"
+ )
+
+ if not self.config.get("multisegment_support"):
+ network_dict[
+ "provider:physical_network"
+ ] = provider_physical_network
+
+ if (
+ provider_network_profile
+ and "network-type" in provider_network_profile
+ ):
+ network_dict[
+ "provider:network_type"
+ ] = provider_network_profile["network-type"]
+ else:
+ network_dict["provider:network_type"] = self.config.get(
+ "dataplane_network_type", "vlan"
+ )
+
+ if vlan:
+ network_dict["provider:segmentation_id"] = vlan