X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_lcm%2Fvim_sdn.py;h=a464993aadb8a69a7c438ac3981c62815202dcef;hb=e11384e1797ea0a5f8cd084d6f336948170bc640;hp=0eeb681c0adf42363d7df97815fc1cadab55cbfd;hpb=8bbeeb07c4be6b2396549af9ca8c389d4b888809;p=osm%2FLCM.git diff --git a/osm_lcm/vim_sdn.py b/osm_lcm/vim_sdn.py index 0eeb681..a464993 100644 --- a/osm_lcm/vim_sdn.py +++ b/osm_lcm/vim_sdn.py @@ -22,7 +22,6 @@ import logging import logging.handlers from osm_lcm import ROclient from osm_lcm.lcm_utils import LcmException, LcmBase, deep_get -from n2vc.k8s_helm_conn import K8sHelmConnector from n2vc.k8s_helm3_conn import K8sHelm3Connector from n2vc.k8s_juju_conn import K8sJujuConnector from n2vc.n2vc_juju_conn import N2VCJujuConnector @@ -46,7 +45,7 @@ class VimLcm(LcmBase): ), } - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -54,14 +53,12 @@ class VimLcm(LcmBase): """ self.logger = logging.getLogger("lcm.vim") - self.loop = loop self.lcm_tasks = lcm_tasks self.ro_config = config["RO"] super().__init__(msg, self.logger) async def create(self, vim_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing. @@ -112,7 +109,7 @@ class VimLcm(LcmBase): db_vim_update["_admin.deployed.RO"] = None db_vim_update["_admin.detailed-status"] = step self.update_db_2("vim_accounts", vim_id, db_vim_update) - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) vim_RO = deepcopy(vim_content) vim_RO.pop("_id", None) vim_RO.pop("_admin", None) @@ -214,7 +211,6 @@ class VimLcm(LcmBase): self.lcm_tasks.remove("vim_account", vim_id, order_id) async def edit(self, vim_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -272,7 +268,7 @@ class VimLcm(LcmBase): RO_vim_id = db_vim["_admin"]["deployed"]["RO"] step = "Editing vim at RO" - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) vim_RO = deepcopy(vim_content) vim_RO.pop("_id", None) vim_RO.pop("_admin", None) @@ -370,7 +366,6 @@ class VimLcm(LcmBase): self.lcm_tasks.remove("vim_account", vim_id, order_id) async def delete(self, vim_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -397,7 +392,7 @@ class VimLcm(LcmBase): and db_vim["_admin"]["deployed"].get("RO") ): RO_vim_id = db_vim["_admin"]["deployed"]["RO"] - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) step = "Detaching vim from RO tenant" try: await RO.detach("vim_account", RO_vim_id) @@ -468,7 +463,7 @@ class WimLcm(LcmBase): # values that are encrypted at wim config because they are passwords wim_config_encrypted = () - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -476,14 +471,12 @@ class WimLcm(LcmBase): """ self.logger = logging.getLogger("lcm.vim") - self.loop = loop self.lcm_tasks = lcm_tasks self.ro_config = config["RO"] super().__init__(msg, self.logger) async def create(self, wim_content, order_id): - # HA tasks and backward compatibility: # If 'wim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing. @@ -506,7 +499,7 @@ class WimLcm(LcmBase): step = "Creating wim at RO" db_wim_update["_admin.detailed-status"] = step self.update_db_2("wim_accounts", wim_id, db_wim_update) - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) wim_RO = deepcopy(wim_content) wim_RO.pop("_id", None) wim_RO.pop("_admin", None) @@ -600,7 +593,6 @@ class WimLcm(LcmBase): self.lcm_tasks.remove("wim_account", wim_id, order_id) async def edit(self, wim_content, order_id): - # HA tasks and backward compatibility: # If 'wim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -628,10 +620,9 @@ class WimLcm(LcmBase): and db_wim["_admin"].get("deployed") and db_wim["_admin"]["deployed"].get("RO") ): - RO_wim_id = db_wim["_admin"]["deployed"]["RO"] step = "Editing wim at RO" - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) wim_RO = deepcopy(wim_content) wim_RO.pop("_id", None) wim_RO.pop("_admin", None) @@ -721,7 +712,6 @@ class WimLcm(LcmBase): self.lcm_tasks.remove("wim_account", wim_id, order_id) async def delete(self, wim_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -748,7 +738,7 @@ class WimLcm(LcmBase): and db_wim["_admin"]["deployed"].get("RO") ): RO_wim_id = db_wim["_admin"]["deployed"]["RO"] - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) step = "Detaching wim from RO tenant" try: await RO.detach("wim_account", RO_wim_id) @@ -816,7 +806,7 @@ class WimLcm(LcmBase): class SdnLcm(LcmBase): - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -824,14 +814,12 @@ class SdnLcm(LcmBase): """ self.logger = logging.getLogger("lcm.sdn") - self.loop = loop self.lcm_tasks = lcm_tasks self.ro_config = config["RO"] super().__init__(msg, self.logger) async def create(self, sdn_content, order_id): - # HA tasks and backward compatibility: # If 'sdn_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing. @@ -856,7 +844,7 @@ class SdnLcm(LcmBase): db_sdn_update["_admin.detailed-status"] = step self.update_db_2("sdns", sdn_id, db_sdn_update) - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) sdn_RO = deepcopy(sdn_content) sdn_RO.pop("_id", None) sdn_RO.pop("_admin", None) @@ -912,7 +900,6 @@ class SdnLcm(LcmBase): self.lcm_tasks.remove("sdn", sdn_id, order_id) async def edit(self, sdn_content, order_id): - # HA tasks and backward compatibility: # If 'sdn_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -940,7 +927,7 @@ class SdnLcm(LcmBase): and db_sdn["_admin"]["deployed"].get("RO") ): RO_sdn_id = db_sdn["_admin"]["deployed"]["RO"] - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) step = "Editing sdn at RO" sdn_RO = deepcopy(sdn_content) sdn_RO.pop("_id", None) @@ -994,7 +981,6 @@ class SdnLcm(LcmBase): self.lcm_tasks.remove("sdn", sdn_id, order_id) async def delete(self, sdn_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, and the HA check always returns True @@ -1021,7 +1007,7 @@ class SdnLcm(LcmBase): and db_sdn["_admin"]["deployed"].get("RO") ): RO_sdn_id = db_sdn["_admin"]["deployed"]["RO"] - RO = ROclient.ROClient(self.loop, **self.ro_config) + RO = ROclient.ROClient(**self.ro_config) step = "Deleting sdn from RO" try: await RO.delete("sdn", RO_sdn_id) @@ -1078,7 +1064,7 @@ class SdnLcm(LcmBase): class K8sClusterLcm(LcmBase): timeout_create = 300 - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -1086,21 +1072,11 @@ class K8sClusterLcm(LcmBase): """ self.logger = logging.getLogger("lcm.k8scluster") - self.loop = loop self.lcm_tasks = lcm_tasks self.vca_config = config["VCA"] super().__init__(msg, self.logger) - self.helm2_k8scluster = K8sHelmConnector( - kubectl_command=self.vca_config.get("kubectlpath"), - helm_command=self.vca_config.get("helmpath"), - log=self.logger, - on_update_db=None, - db=self.db, - fs=self.fs, - ) - self.helm3_k8scluster = K8sHelm3Connector( kubectl_command=self.vca_config.get("kubectlpath"), helm_command=self.vca_config.get("helm3path"), @@ -1114,20 +1090,17 @@ class K8sClusterLcm(LcmBase): kubectl_command=self.vca_config.get("kubectlpath"), juju_command=self.vca_config.get("jujupath"), log=self.logger, - loop=self.loop, on_update_db=None, db=self.db, fs=self.fs, ) self.k8s_map = { - "helm-chart": self.helm2_k8scluster, "helm-chart-v3": self.helm3_k8scluster, "juju-bundle": self.juju_k8scluster, } async def create(self, k8scluster_content, order_id): - op_id = k8scluster_content.pop("op_id", None) if not self.lcm_tasks.lock_HA("k8scluster", "create", op_id): return @@ -1160,7 +1133,6 @@ class K8sClusterLcm(LcmBase): # for backwards compatibility and all-false case if not any(k8s_deploy_methods.values()): k8s_deploy_methods = { - "helm-chart": True, "juju-bundle": True, "helm-chart-v3": True, } @@ -1300,12 +1272,12 @@ class K8sClusterLcm(LcmBase): self.lcm_tasks.remove("k8scluster", k8scluster_id, order_id) async def edit(self, k8scluster_content, order_id): - op_id = k8scluster_content.pop("op_id", None) if not self.lcm_tasks.lock_HA("k8scluster", "edit", op_id): return k8scluster_id = k8scluster_content["_id"] + logging_text = "Task k8scluster_edit={} ".format(k8scluster_id) self.logger.debug(logging_text + "Enter") @@ -1326,7 +1298,6 @@ class K8sClusterLcm(LcmBase): self.lcm_tasks.remove("k8scluster", k8scluster_id, order_id) async def delete(self, k8scluster_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing. @@ -1346,7 +1317,6 @@ class K8sClusterLcm(LcmBase): step = "Getting k8scluster='{}' from db".format(k8scluster_id) self.logger.debug(logging_text + step) db_k8scluster = self.db.get_one("k8sclusters", {"_id": k8scluster_id}) - k8s_hc_id = deep_get(db_k8scluster, ("_admin", "helm-chart", "id")) k8s_h3c_id = deep_get(db_k8scluster, ("_admin", "helm-chart-v3", "id")) k8s_jb_id = deep_get(db_k8scluster, ("_admin", "juju-bundle", "id")) @@ -1365,20 +1335,8 @@ class K8sClusterLcm(LcmBase): db_k8scluster_update["_admin.juju-bundle.id"] = None db_k8scluster_update["_admin.juju-bundle.operationalState"] = "DISABLED" - if k8s_hc_id: - step = "Removing helm-chart '{}'".format(k8s_hc_id) - uninstall_sw = ( - deep_get(db_k8scluster, ("_admin", "helm-chart", "created")) - or False - ) - cluster_removed = await self.helm2_k8scluster.reset( - cluster_uuid=k8s_hc_id, uninstall_sw=uninstall_sw - ) - db_k8scluster_update["_admin.helm-chart.id"] = None - db_k8scluster_update["_admin.helm-chart.operationalState"] = "DISABLED" - if k8s_h3c_id: - step = "Removing helm-chart-v3 '{}'".format(k8s_hc_id) + step = "Removing helm-chart-v3 '{}'".format(k8s_h3c_id) uninstall_sw = ( deep_get(db_k8scluster, ("_admin", "helm-chart-v3", "created")) or False @@ -1392,16 +1350,16 @@ class K8sClusterLcm(LcmBase): ] = "DISABLED" # Try to remove from cluster_inserted to clean old versions - if k8s_hc_id and cluster_removed: + if k8s_h3c_id and cluster_removed: step = "Removing k8scluster='{}' from k8srepos".format(k8scluster_id) self.logger.debug(logging_text + step) db_k8srepo_list = self.db.get_list( - "k8srepos", {"_admin.cluster-inserted": k8s_hc_id} + "k8srepos", {"_admin.cluster-inserted": k8s_h3c_id} ) for k8srepo in db_k8srepo_list: try: cluster_list = k8srepo["_admin"]["cluster-inserted"] - cluster_list.remove(k8s_hc_id) + cluster_list.remove(k8s_h3c_id) self.update_db_2( "k8srepos", k8srepo["_id"], @@ -1463,7 +1421,7 @@ class K8sClusterLcm(LcmBase): class VcaLcm(LcmBase): timeout_create = 30 - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -1471,15 +1429,12 @@ class VcaLcm(LcmBase): """ self.logger = logging.getLogger("lcm.vca") - self.loop = loop self.lcm_tasks = lcm_tasks super().__init__(msg, self.logger) # create N2VC connector - self.n2vc = N2VCJujuConnector( - log=self.logger, loop=self.loop, fs=self.fs, db=self.db - ) + self.n2vc = N2VCJujuConnector(log=self.logger, fs=self.fs, db=self.db) def _get_vca_by_id(self, vca_id: str) -> dict: db_vca = self.db.get_one("vca", {"_id": vca_id}) @@ -1645,7 +1600,6 @@ class VcaLcm(LcmBase): self.lcm_tasks.remove("vca", vca_id, order_id) async def delete(self, vca_content, order_id): - # HA tasks and backward compatibility: # If "vim_content" does not include "op_id", we a running a legacy NBI version. # In such a case, HA is not supported by NBI, "op_id" is None, and lock_HA() will do nothing. @@ -1700,7 +1654,7 @@ class VcaLcm(LcmBase): class K8sRepoLcm(LcmBase): - def __init__(self, msg, lcm_tasks, config, loop): + def __init__(self, msg, lcm_tasks, config): """ Init, Connect to database, filesystem storage, and messaging :param config: two level dictionary with configuration. Top level should contain 'database', 'storage', @@ -1708,13 +1662,12 @@ class K8sRepoLcm(LcmBase): """ self.logger = logging.getLogger("lcm.k8srepo") - self.loop = loop self.lcm_tasks = lcm_tasks self.vca_config = config["VCA"] super().__init__(msg, self.logger) - self.k8srepo = K8sHelmConnector( + self.k8srepo = K8sHelm3Connector( kubectl_command=self.vca_config.get("kubectlpath"), helm_command=self.vca_config.get("helmpath"), fs=self.fs, @@ -1724,7 +1677,6 @@ class K8sRepoLcm(LcmBase): ) async def create(self, k8srepo_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing. @@ -1789,7 +1741,6 @@ class K8sRepoLcm(LcmBase): self.lcm_tasks.remove("k8srepo", k8srepo_id, order_id) async def delete(self, k8srepo_content, order_id): - # HA tasks and backward compatibility: # If 'vim_content' does not include 'op_id', we a running a legacy NBI version. # In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.