self._loop = loop
self._dts = dts
self.nsm = parent
+ self.project = parent._project
self._log.debug("Initialized ROConfigManager")
def is_ready(self):
@property
def cm_state_xpath(self):
- return ("/rw-conman:cm-state/rw-conman:cm-nsr")
+ return self.project.add_project("/rw-conman:cm-state/rw-conman:cm-nsr")
@classmethod
def map_config_status(cls, status):
'received': nsrY.ConfigStates.CONFIGURING,
'cfg_delay': nsrY.ConfigStates.CONFIGURING,
'cfg_process': nsrY.ConfigStates.CONFIGURING,
- 'cfg_process-failed': nsrY.ConfigStates.CONFIGURING,
+ 'cfg_process_failed': nsrY.ConfigStates.CONFIGURING,
'cfg_sched': nsrY.ConfigStates.CONFIGURING,
'connecting': nsrY.ConfigStates.CONFIGURING,
'failed_connection': nsrY.ConfigStates.CONFIGURING,
# Update the NSR's config status
new_status = ROConfigManager.map_config_status(cm_nsr['state'])
- self._log.debug("Updating config status of NSR {} to {}({})".
- format(nsrid, new_status, cm_nsr['state']))
- yield from self.nsm.nsrs[nsrid].set_config_status(new_status, cm_nsr.get('state_details'))
+ self._log.info("Updating config status of NSR {} to {}({})".
+ format(nsrid, new_status, cm_nsr['state']))
+
+ # If terminate nsr request comes when NS instantiation is in 'Configuring state'; self.nsm.nsrs dict
+ # is already empty when self.nsm.nsrs[nsrid].set_config_status gets executed. So adding a check here.
+ if nsrid in self.nsm.nsrs:
+ yield from self.nsm.nsrs[nsrid].set_config_status(new_status, cm_nsr.get('state_details'))
except Exception as e:
self._log.error("Failed to process cm-state for nsr {}: {}".
@asyncio.coroutine
def register(self):
""" Register for cm-state changes """
-
+
@asyncio.coroutine
def on_prepare(xact_info, query_action, ks_path, msg):
""" cm-state changed """
handler=handler)
except Exception as e:
self._log.error("Failed to register for cm-state changes as %s", str(e))
-
+
+
+ def deregister(self):
+ if self.dts_reg_hdl:
+ self.dts_reg_hdl.deregister()
+ self.dts_reg_hdl = None