return filepath
+class VNFExistError(Exception):
+ pass
+
class VnfrConsoleOperdataDtsHandler(object):
""" registers 'D,/vnfr:vnfr-console/vnfr:vnfr[id]/vdur[id]' and handles CRUD from DTS"""
@property
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._cli_api = None
self._http_api = None
self._openmano_nsrs = {}
- self._vnfr_uptime_tasks = {}
+ self._openmano_nsr_by_vnfr_id = {}
+ #self._nsr_uuid = None
self._set_ro_account(ro_account)
openmano_nsr.nsd_msg,
openmano_nsr.nsr_config_msg,
openmano_nsr.key_pairs,
- #openmano_nsr.nsr_msg,
vnfr.vnfd.id
)
+ self._openmano_nsr_by_vnfr_id[nsr.id] = openmano_nsr
+ if vnfr.id in self._openmano_nsr_by_vnfr_id:
+ raise VNFExistError("VNF %s already exist", vnfr.id)
+ self._openmano_nsr_by_vnfr_id[vnfr.id] = openmano_vnf_nsr
+ self._log.debug("VNFRID %s %s %s", type(self._openmano_nsr_by_vnfr_id), type(openmano_vnf_nsr), type(self._openmano_nsr_by_vnfr_id[vnfr.id]))
+
for vlr in openmano_nsr.vlrs:
yield from openmano_vnf_nsr.add_vlr(vlr)
try:
self._log.debug("Attempting to publish openmano vnf: %s", vnfr_msg)
with self._dts.transaction() as xact:
yield from self._publisher.publish_vnfr(xact, vnfr_msg)
- self._log.debug("Creating a task to update uptime for vnfr: %s", vnfr.id)
- self._vnfr_uptime_tasks[vnfr.id] = self._loop.create_task(self.vnfr_uptime_update(vnfr))
-
- def vnfr_uptime_update(self, vnfr):
- try:
- vnfr_ = RwVnfrYang.YangData_Vnfr_VnfrCatalog_Vnfr.from_dict({'id': vnfr.id})
- while True:
- vnfr_.uptime = int(time.time()) - vnfr._create_time
- yield from self._publisher.publish_vnfr(None, vnfr_)
- yield from asyncio.sleep(2, loop=self._loop)
- except asyncio.CancelledError:
- self._log.debug("Received cancellation request for vnfr_uptime_update task")
@asyncio.coroutine
def instantiate_vl(self, nsr, vlr):
openmano_nsr.delete()
@asyncio.coroutine
- def terminate_vnf(self, vnfr):
+ def terminate_vnf(self, nsr, vnfr, scalein=False):
"""
Terminate the network service
"""
- if vnfr.id in self._vnfr_uptime_tasks:
- self._vnfr_uptime_tasks[vnfr.id].cancel()
+ if scalein:
+ openmano_vnf_nsr = self._openmano_nsr_by_vnfr_id[vnfr.id]
+ openmano_vnf_nsr.terminate()
+ openmano_vnf_nsr.delete()
+ yield from openmano_vnf_nsr.remove_vnf(vnfr)
@asyncio.coroutine
def terminate_vl(self, vlr):