X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fn2vc_conn.py;h=5e11b5f9708aba449b6e867d9bf09fa23d704346;hp=c0bb558a3a05e0eac260dcc5971fc280fde8ef31;hb=8bfcc14713a71f43f155e3cddec168380134d344;hpb=f52cb7cfeb4e24febe7c66af3d5bb275a50d7f99 diff --git a/n2vc/n2vc_conn.py b/n2vc/n2vc_conn.py index c0bb558..5e11b5f 100644 --- a/n2vc/n2vc_conn.py +++ b/n2vc/n2vc_conn.py @@ -23,7 +23,6 @@ import abc import asyncio -from enum import Enum from http import HTTPStatus import os import shlex @@ -35,14 +34,7 @@ from osm_common.dbmongo import DbException import yaml from n2vc.loggable import Loggable - - -class N2VCDeploymentStatus(Enum): - PENDING = "pending" - RUNNING = "running" - COMPLETED = "completed" - FAILED = "failed" - UNKNOWN = "unknown" +from n2vc.utils import EntityType, JujuStatusToOSM, N2VCDeploymentStatus class N2VCConnector(abc.ABC, Loggable): @@ -150,7 +142,7 @@ class N2VCConnector(abc.ABC, Loggable): # Find the path where we expect our key lives (~/.ssh) homedir = os.environ.get("HOME") if not homedir: - self.warning("No HOME environment variable, using /tmp") + self.log.warning("No HOME environment variable, using /tmp") homedir = "/tmp" sshdir = "{}/.ssh".format(homedir) if not os.path.exists(sshdir): @@ -253,6 +245,38 @@ class N2VCConnector(abc.ABC, Loggable): :param float total_timeout: """ + @abc.abstractmethod + async def install_k8s_proxy_charm( + self, + charm_name: str, + namespace: str, + artifact_path: str, + db_dict: dict, + progress_timeout: float = None, + total_timeout: float = None, + config: dict = None, + ) -> str: + """ + Install a k8s proxy charm + + :param charm_name: Name of the charm being deployed + :param namespace: collection of all the uuids related to the charm. + :param str artifact_path: where to locate the artifacts (parent folder) using + the self.fs + the final artifact path will be a combination of this artifact_path and + additional string from the config_dict (e.g. charm name) + :param dict db_dict: where to write into database when the status changes. + It contains a dict with + {collection: , filter: {}, path: }, + e.g. {collection: "nsrs", filter: + {_id: , path: "_admin.deployed.VCA.3"} + :param float progress_timeout: + :param float total_timeout: + :param config: Dictionary with additional configuration + + :returns ee_id: execution environment id. + """ + @abc.abstractmethod async def get_ee_ssh_public__key( self, @@ -468,7 +492,14 @@ class N2VCConnector(abc.ABC, Loggable): else: self.log.info("Exception writing status to database: {}".format(e)) + def osm_status(self, entity_type: EntityType, status: str) -> N2VCDeploymentStatus: + if status not in JujuStatusToOSM[entity_type]: + self.log.warning("Status {} not found in JujuStatusToOSM.".format(status)) + return N2VCDeploymentStatus.UNKNOWN + return JujuStatusToOSM[entity_type][status] + +# DEPRECATED def juju_status_2_osm_status(statustype: str, status: str) -> N2VCDeploymentStatus: if statustype == "application" or statustype == "unit": if status in ["waiting", "maintenance"]: