class OpenmanoVnfr(object):
- def __init__(self, log, loop, cli_api, http_api, vnfr, nsd, ssh_key=None):
+ def __init__(self, project, log, loop, cli_api, http_api, vnfr, nsd, ssh_key=None):
+ self._project = project
self._log = log
self._loop = loop
self._cli_api = cli_api
@property
def openmano_vnfd(self):
self._log.debug("Converting vnfd %s from rift to openmano", self.vnfd.id)
- openmano_vnfd = rift2openmano.rift2openmano_vnfd(self.vnfd, self.nsd, self._http_api)
+ openmano_vnfd = rift2openmano.rift2openmano_vnfd(self.vnfd, self.nsd, self._http_api, self._project)
return openmano_vnfd
@property
if self._vnf_id is None:
self._log.warning("Openmano vnf id not set. Cannot delete.")
return
-
- self._cli_api.vnf_delete(self._vnf_id)
-
+ try:
+ self._cli_api.vnf_delete(self._vnf_id)
+ except Exception as e:
+ self._log.error(e)
+ raise e
class OpenmanoNSRecordState(Enum):
""" Network Service Record State """
@asyncio.coroutine
def add_vnfr(self, vnfr):
- vnfr = OpenmanoVnfr(self._log, self._loop, self._cli_api, self.http_api,
+ vnfr = OpenmanoVnfr(self._project, self._log, self._loop, self._cli_api, self.http_api,
vnfr, nsd=self.nsd, ssh_key=self._ssh_key)
yield from vnfr.create()
self._vnfrs.append(vnfr)
deleted_vnf_id_list = []
for vnfr in self._vnfrs:
if vnfr.vnfr.vnfd.id not in deleted_vnf_id_list:
- vnfr.delete()
+ try:
+ vnfr.delete()
+ except Exception as e:
+ self._log.error("Failed to delete the vnf at the RO")
+ if "Resource is not free" in str(e):
+ self._log.error("Resource is not free, hence forego the vnf-delete")
+ else:
+ raise e
deleted_vnf_id_list.append(vnfr.vnfr.vnfd.id)
@asyncio.coroutine
del self._openmano_nsrs[nsr_id]
def terminate(self, openmano_nsr):
- openmano_nsr.terminate()
- openmano_nsr.delete()
+ try:
+ openmano_nsr.terminate()
+ openmano_nsr.delete()
+ except Exception as e:
+ self._log.error("The NSR terminate failed for {}".format(openmano_nsr))
+ raise e
@asyncio.coroutine
def terminate_vnf(self, nsr, vnfr, scalein=False):
if scalein:
self._log.debug("Terminating Scaling VNFR - {}".format(vnfr))
openmano_vnf_nsr = self._openmano_nsr_by_vnfr_id[vnfr.id]
- openmano_vnf_nsr.terminate()
- openmano_vnf_nsr.delete()
+ try:
+ openmano_vnf_nsr.terminate()
+ openmano_vnf_nsr.delete()
+ except Exception as e:
+ self._log.error("The NSR terminate failed for {}".format(openmano_nsr))
+ raise e
+
yield from openmano_vnf_nsr.remove_vnf(vnfr)
@asyncio.coroutine