X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_lcm%2Fns.py;h=5b0b7b0c5cbdc8ef5a7469d5d3a1fbb25fc61e42;hb=refs%2Ftags%2Fbranch-ng-ro-refactor-start;hp=a11a2fa8036eb5a0b9133a2845163f6fe37cce71;hpb=5b2c45aad0bbfdd4410ed3912ff6a21cea1216a9;p=osm%2FLCM.git diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py index a11a2fa..5b0b7b0 100644 --- a/osm_lcm/ns.py +++ b/osm_lcm/ns.py @@ -137,7 +137,7 @@ class NsLcm(LcmBase): juju_command=self.vca_config.get("jujupath"), log=self.logger, loop=self.loop, - on_update_db=None, + on_update_db=self._on_update_k8s_db, vca_config=self.vca_config, fs=self.fs, db=self.db @@ -289,6 +289,40 @@ class NsLcm(LcmBase): except Exception as e: self.logger.warn('Error updating NS state for ns={}: {}'.format(nsr_id, e)) + async def _on_update_k8s_db(self, cluster_uuid, kdu_instance, filter=None): + """ + Updating vca status in NSR record + :param cluster_uuid: UUID of a k8s cluster + :param kdu_instance: The unique name of the KDU instance + :param filter: To get nsr_id + :return: none + """ + + # self.logger.debug("_on_update_k8s_db(cluster_uuid={}, kdu_instance={}, filter={}" + # .format(cluster_uuid, kdu_instance, filter)) + + try: + nsr_id = filter.get('_id') + + # get vca status for NS + vca_status = await self.k8sclusterjuju.status_kdu(cluster_uuid, + kdu_instance, + complete_status=True, + yaml_format=False) + # vcaStatus + db_dict = dict() + db_dict['vcaStatus'] = {nsr_id: vca_status} + + await self.k8sclusterjuju.update_vca_status(db_dict['vcaStatus'], kdu_instance) + + # write to database + self.update_db_2("nsrs", nsr_id, db_dict) + + except (asyncio.CancelledError, asyncio.TimeoutError): + raise + except Exception as e: + self.logger.warn('Error updating NS state for ns={}: {}'.format(nsr_id, e)) + @staticmethod def _parse_cloud_init(cloud_init_text, additional_params, vnfd_id, vdu_id): try: @@ -2259,7 +2293,7 @@ class NsLcm(LcmBase): cluster_uuid=k8s_instance_info["k8scluster-uuid"], kdu_instance=kdu_instance, primitive_name=initial_config_primitive["name"], - params=primitive_params_, db_dict={}), + params=primitive_params_, db_dict=db_dict_install), timeout=timeout) except Exception as e: @@ -3382,10 +3416,15 @@ class NsLcm(LcmBase): self.logger.debug("Task ns={} action={} Enter".format(nsr_id, nslcmop_id)) db_nsr = self.db.get_one("nsrs", {"_id": nsr_id}) - - for vca_index, _ in enumerate(db_nsr['_admin']['deployed']['VCA']): - table, filter, path = "nsrs", {"_id": nsr_id}, "_admin.deployed.VCA.{}.".format(vca_index) - await self._on_update_n2vc_db(table, filter, path, {}) + if db_nsr['_admin']['deployed']['K8s']: + for k8s_index, k8s in enumerate(db_nsr['_admin']['deployed']['K8s']): + cluster_uuid, kdu_instance = k8s["k8scluster-uuid"], k8s["kdu-instance"] + await self._on_update_k8s_db(cluster_uuid, kdu_instance, filter={'_id': nsr_id}) + else: + for vca_index, _ in enumerate(db_nsr['_admin']['deployed']['VCA']): + table, filter = "nsrs", {"_id": nsr_id} + path = "_admin.deployed.VCA.{}.".format(vca_index) + await self._on_update_n2vc_db(table, filter, path, {}) self.logger.debug("Task ns={} action={} Exit".format(nsr_id, nslcmop_id)) self.lcm_tasks.remove("ns", nsr_id, nslcmop_id, "ns_vca_status_refresh") @@ -3568,16 +3607,19 @@ class NsLcm(LcmBase): ee_id, vca_type = self._look_for_deployed_vca(nsr_deployed["VCA"], member_vnf_index=vnf_index, vdu_id=vdu_id, vdu_count_index=vdu_count_index, ee_descriptor_id=ee_descriptor_id) - db_nslcmop_notif = {"collection": "nslcmops", - "filter": {"_id": nslcmop_id}, - "path": "admin.VCA"} + for vca_index, vca_deployed in enumerate(db_nsr['_admin']['deployed']['VCA']): + if vca_deployed.get("member-vnf-index") == vnf_index: + db_dict = {"collection": "nsrs", + "filter": {"_id": nsr_id}, + "path": "_admin.deployed.VCA.{}.".format(vca_index)} + break nslcmop_operation_state, detailed_status = await self._ns_execute_primitive( ee_id, primitive=primitive_name, primitive_params=self._map_primitive_params(config_primitive_desc, primitive_params, desc_params), timeout=timeout_ns_action, vca_type=vca_type, - db_dict=db_nslcmop_notif) + db_dict=db_dict) db_nslcmop_update["detailed-status"] = detailed_status error_description_nslcmop = detailed_status if nslcmop_operation_state == "FAILED" else ""