- self._log.debug("Creating instance-scenario-create input file for nsd %s with name %s", self.nsd.id, self._nsr_config_msg.name)
- openmano_instance_create = {}
- openmano_instance_create["name"] = self._nsr_config_msg.name
- openmano_instance_create["description"] = self._nsr_config_msg.description
- openmano_instance_create["scenario"] = self._nsd_uuid
-
- cloud_config = self.get_ssh_key_pairs()
- if cloud_config:
- openmano_instance_create["cloud-config"] = cloud_config
- if self._nsr_config_msg.has_field("om_datacenter"):
- openmano_instance_create["datacenter"] = self._nsr_config_msg.om_datacenter
- openmano_instance_create["vnfs"] = {}
- for vnfr in self._vnfrs:
- if "om_datacenter" in vnfr.vnfr.vnfr_msg:
- vnfr_name = vnfr.vnfr.vnfd.name + "__" + str(vnfr.vnfr.vnfr_msg.member_vnf_index_ref)
- openmano_instance_create["vnfs"][vnfr_name] = {"datacenter": vnfr.vnfr.vnfr_msg.om_datacenter}
- openmano_instance_create["networks"] = {}
- for vld_msg in self._nsd_msg.vld:
- openmano_instance_create["networks"][vld_msg.name] = {}
- openmano_instance_create["networks"][vld_msg.name]["sites"] = list()
- for vlr in self._vlrs:
- if vlr.vld_msg.name == vld_msg.name:
- self._log.debug("Received VLR name %s, VLR DC: %s for VLD: %s",vlr.vld_msg.name,
- vlr.om_datacenter_name,vld_msg.name)
- #network["vim-network-name"] = vld_msg.name
- network = {}
- ip_profile = {}
- if vld_msg.vim_network_name:
- network["netmap-use"] = vld_msg.vim_network_name
- elif vlr._ip_profile and vlr._ip_profile.has_field("ip_profile_params"):
- ip_profile_params = vlr._ip_profile.ip_profile_params
- if ip_profile_params.ip_version == "ipv6":
- ip_profile['ip-version'] = "IPv6"
+ try:
+ self._log.debug("Creating instance-scenario-create input file for nsd %s with name %s", self.nsd.id, self._nsr_config_msg.name)
+ openmano_instance_create = {}
+ openmano_instance_create["name"] = self._nsr_config_msg.name
+ openmano_instance_create["description"] = self._nsr_config_msg.description
+ openmano_instance_create["scenario"] = self._nsd_uuid
+
+ cloud_config = self.get_ssh_key_pairs()
+ if cloud_config:
+ openmano_instance_create["cloud-config"] = cloud_config
+ if self._nsr_config_msg.has_field("datacenter"):
+ openmano_instance_create["datacenter"] = self._nsr_config_msg.datacenter
+ openmano_instance_create["vnfs"] = {}
+ for vnfr in self._vnfrs:
+ if "datacenter" in vnfr.vnfr.vnfr_msg:
+ vnfr_name = vnfr.vnfr.vnfd.name + "." + str(vnfr.vnfr.vnfr_msg.member_vnf_index_ref)
+ openmano_instance_create["vnfs"][vnfr_name] = {"datacenter": vnfr.vnfr.vnfr_msg.datacenter}
+ openmano_instance_create["networks"] = {}
+ for vld_msg in self._nsd_msg.vld:
+ openmano_instance_create["networks"][vld_msg.name] = {}
+ openmano_instance_create["networks"][vld_msg.name]["sites"] = list()
+ for vlr in self._vlrs:
+ if vlr.vld_msg.name == vld_msg.name:
+ self._log.debug("Received VLR name %s, VLR DC: %s for VLD: %s",vlr.vld_msg.name,
+ vlr.datacenter_name,vld_msg.name)
+ #network["vim-network-name"] = vld_msg.name
+ network = {}
+ ip_profile = {}
+ if vld_msg.vim_network_name:
+ network["netmap-use"] = vld_msg.vim_network_name
+ elif vlr._ip_profile and vlr._ip_profile.has_field("ip_profile_params"):
+ ip_profile_params = vlr._ip_profile.ip_profile_params
+ if ip_profile_params.ip_version == "ipv6":
+ ip_profile['ip-version'] = "IPv6"
+ else:
+ ip_profile['ip-version'] = "IPv4"
+ if ip_profile_params.has_field('subnet_address'):
+ ip_profile['subnet-address'] = ip_profile_params.subnet_address
+ if ip_profile_params.has_field('gateway_address'):
+ ip_profile['gateway-address'] = ip_profile_params.gateway_address
+ if ip_profile_params.has_field('dns_server') and len(ip_profile_params.dns_server) > 0:
+ ip_profile['dns-address'] = ip_profile_params.dns_server[0].address
+ if ip_profile_params.has_field('dhcp_params'):
+ ip_profile['dhcp'] = {}
+ ip_profile['dhcp']['enabled'] = ip_profile_params.dhcp_params.enabled
+ ip_profile['dhcp']['start-address'] = ip_profile_params.dhcp_params.start_address
+ ip_profile['dhcp']['count'] = ip_profile_params.dhcp_params.count
+ if ip_profile['dhcp']['enabled'] is True and ip_profile['dhcp']['start-address'] is None:
+ addr_pool = list(ipaddress.ip_network(ip_profile['subnet-address']).hosts())
+ gateway_ip_addr = ip_profile.get('gateway-address', None)
+ if gateway_ip_addr is None:
+ gateway_ip_addr = str(next(iter(addr_pool)))
+ ip_profile['gateway-address'] = gateway_ip_addr
+
+ self._log.debug("Gateway Address {}".format(gateway_ip_addr))
+
+ if ipaddress.ip_address(gateway_ip_addr) in addr_pool:
+ addr_pool.remove(ipaddress.ip_address(gateway_ip_addr))
+ if len(addr_pool) > 0:
+ ip_profile['dhcp']['start-address'] = str(next(iter(addr_pool)))
+ #DHCP count more than 200 is not instantiating any instances using OPENMANO RO
+ #So restricting it to a feasible count of 100.
+ dhcp_count = ip_profile['dhcp']['count']
+ if dhcp_count is None or dhcp_count == 0 or dhcp_count > len(addr_pool):
+ ip_profile['dhcp']['count'] = min(len(addr_pool), 100)
+ self._log.debug("DHCP start Address {} DHCP count {}".
+ format(ip_profile['dhcp']['start-address'], ip_profile['dhcp']['count']))