+ @asyncio.coroutine
+ def nsr_monparam_update(self):
+ #check if the earlier xact is done or there is an xact
+ try:
+ if (len(self.dts_updates) == 0):
+ self.dts_update_task = None
+ return
+ nsr_dict = {"ns_instance_config_ref": self.nsr.ns_instance_config_ref}
+ nsrmsg = NsrYang.YangData_RwProject_Project_NsInstanceOpdata_Nsr.from_dict(nsr_dict)
+
+ for k,v in self.dts_updates.items():
+ mp_dict = NsrYang. \
+ YangData_RwProject_Project_NsInstanceOpdata_Nsr_MonitoringParam. \
+ from_dict(v.as_dict())
+ nsrmsg.monitoring_param.append(mp_dict)
+ self.dts_updates.clear()
+
+ yield from self.dts.query_update(self.nsr_xpath(), rwdts.XactFlag.ADVISE,
+ nsrmsg)
+
+ self.dts_update_task = None
+ if (len(self.dts_updates) == 0):
+ #schedule a DTS task to update the NSR again
+ self.add_dtsupdate_task()
+
+ except Exception as e:
+ self.log.exception("Exception updating NSR mon-param: %s", str(e))
+
+ def add_dtsupdate_task(self):
+ if (self.dts_update_task is None):
+ self.dts_update_task = asyncio.ensure_future(self.nsr_monparam_update(), loop=self.loop)
+