+ if self._nsr_config_msg.has_field("om_datacenter"):
+ scaling_instance_create["datacenter"] = self._nsr_config_msg.om_datacenter
+ scaling_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)
+ scaling_instance_create["vnfs"][vnfr_name] = {"datacenter": vnfr.vnfr.vnfr_msg.om_datacenter}
+ scaling_instance_create["networks"] = {}
+ for vld_msg in self._nsd_msg.vld:
+ scaling_instance_create["networks"][vld_msg.name] = {}
+ scaling_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
+ #else:
+ # network["netmap-create"] = vlr.name
+ if vlr.om_datacenter_name:
+ network["datacenter"] = vlr.om_datacenter_name
+ elif vld_msg.has_field("om_datacenter"):
+ network["datacenter"] = vld_msg.om_datacenter
+ elif "datacenter" in scaling_instance_create:
+ network["datacenter"] = scaling_instance_create["datacenter"]
+ if network:
+ scaling_instance_create["networks"][vld_msg.name]["sites"].append(network)
+
+ return yaml.safe_dump(scaling_instance_create, default_flow_style=False, width=1000)
+
+ @asyncio.coroutine
+ def add_vlr(self, vlr):
+ self._vlrs.append(vlr)
+ yield from self._publisher.publish_vlr(None, vlr.vlr_msg)
+ yield from asyncio.sleep(1, loop=self._loop)
+
+ @asyncio.coroutine
+ def remove_vlr(self, vlr):
+ if vlr in self._vlrs:
+ self._vlrs.remove(vlr)
+ yield from self._publisher.unpublish_vlr(None, vlr.vlr_msg)
+ yield from asyncio.sleep(1, loop=self._loop)
+
+ @asyncio.coroutine
+ def remove_vnf(self,vnf):
+ if vnf in self._vnfrs:
+ self._vnfrs.remove(vnf)
+ yield from self._publisher.unpublish_vnfr(
+ None,
+ vnfr_msg
+ )
+ yield from asyncio.sleep(1, loop=self._loop)
+
+ @asyncio.coroutine
+ def delete_vlr(self, vlr):
+ if vlr in self._vlrs:
+ self._vlrs.remove(vlr)
+ if not vlr.vld_msg.vim_network_name:
+ yield from self._loop.run_in_executor(
+ None,
+ self._cli_api.ns_vim_network_delete,
+ vlr.name,
+ vlr.om_datacenter_name)
+ yield from self._publisher.unpublish_vlr(None, vlr.vlr_msg)
+ yield from asyncio.sleep(1, loop=self._loop)
+