K8s action support
[osm/N2VC.git] / n2vc / k8s_conn.py
index f9aefa7..b1f3230 100644 (file)
@@ -50,13 +50,13 @@ class K8sConnector(abc.ABC, Loggable):
         # parent class
         Loggable.__init__(self, log=log, log_to_console=True, prefix='\nK8S')
 
-        self.info('Initializing generic K8S connector')
+        # self.log.info('Initializing generic K8S connector')
 
         # the database and update callback
         self.db = db
         self.on_update_db = on_update_db
 
-        self.info('K8S generic connector initialized')
+        # self.log.info('K8S generic connector initialized')
 
     @abc.abstractmethod
     async def init_env(
@@ -123,6 +123,20 @@ class K8sConnector(abc.ABC, Loggable):
         """
 
     @abc.abstractmethod
+    async def synchronize_repos(
+            self,
+            cluster_uuid: str,
+            name: str
+    ):
+        """
+        Synchronizes the list of repositories created in the cluster with
+        the repositories added by the NBI
+
+        :param cluster_uuid: the cluster
+        :return: List of repositories deleted from the cluster and dictionary with repos added
+        """
+
+    @abc.abstractmethod
     async def reset(
             self,
             cluster_uuid: str,
@@ -148,7 +162,8 @@ class K8sConnector(abc.ABC, Loggable):
             timeout: float = 300,
             params: dict = None,
             db_dict: dict = None,
-            kdu_name: str = None
+            kdu_name: str = None,
+            namespace: str = None
     ):
         """
         Deploys of a new KDU instance. It would implicitly rely on the `install` call to deploy the Chart/Bundle
@@ -169,6 +184,7 @@ class K8sConnector(abc.ABC, Loggable):
                         It contains a dict with {collection: <str>, filter: {},  path: <str>},
                             e.g. {collection: "nsrs", filter: {_id: <nsd-id>, path: "_admin.deployed.K8S.3"}
         :param kdu_name: Name of the KDU instance to be installed
+        :param namespace: K8s namespace to use for the KDU instance
         :return: True if successful
         """
 
@@ -238,6 +254,28 @@ class K8sConnector(abc.ABC, Loggable):
         """
 
     @abc.abstractmethod
+    async def exec_primitive(
+        self,
+        cluster_uuid: str = None,
+        kdu_instance: str = None,
+        primitive_name: str = None,
+        timeout: float = 300,
+        params: dict = None,
+        db_dict: dict = None,
+    ) -> str:
+        """Exec primitive (Juju action)
+
+        :param cluster_uuid str: The UUID of the cluster
+        :param kdu_instance str: The unique name of the KDU instance
+        :param primitive_name: Name of action that will be executed
+        :param timeout: Timeout for action execution
+        :param params: Dictionary of all the parameters needed for the action
+        :db_dict: Dictionary for any additional data
+
+        :return: Returns the output of the action
+        """
+
+    @abc.abstractmethod
     async def inspect_kdu(
             self,
             kdu_model: str,
@@ -319,7 +357,7 @@ class K8sConnector(abc.ABC, Loggable):
             self.warning('No db_dict => No database write')
             return False
 
-        self.debug('status={}'.format(status))
+        self.log.debug('status={}'.format(status))
 
         try:
 
@@ -352,5 +390,5 @@ class K8sConnector(abc.ABC, Loggable):
             return True
 
         except Exception as e:
-            self.info('Exception writing status to database: {}'.format(e))
+            self.log.info('Exception writing status to database: {}'.format(e))
             return False