K8s action support
[osm/N2VC.git] / n2vc / k8s_helm_conn.py
index ff1f331..d3fbed6 100644 (file)
@@ -327,7 +327,8 @@ class K8sHelmConnector(K8sConnector):
             timeout: float = 300,
             params: dict = None,
             db_dict: dict = None,
             timeout: float = 300,
             params: dict = None,
             db_dict: dict = None,
-            kdu_name: str = None
+            kdu_name: str = None,
+            namespace: str = None
     ):
 
         self.log.debug('installing {} in cluster {}'.format(kdu_model, cluster_uuid))
     ):
 
         self.log.debug('installing {} in cluster {}'.format(kdu_model, cluster_uuid))
@@ -348,6 +349,10 @@ class K8sHelmConnector(K8sConnector):
         atomic_str = ''
         if atomic:
             atomic_str = '--atomic'
         atomic_str = ''
         if atomic:
             atomic_str = '--atomic'
+        # namespace
+        namespace_str = ''
+        if namespace:
+            namespace_str = "--namespace {}".format(namespace)
 
         # version
         version_str = ''
 
         # version
         version_str = ''
@@ -374,9 +379,11 @@ class K8sHelmConnector(K8sConnector):
                 pass
 
         # helm repo install
                 pass
 
         # helm repo install
-        command = '{} install {} --output yaml --kubeconfig={} --home={} {} {} --name={} {} {}'\
-            .format(self._helm_command, atomic_str, config_filename, helm_dir,
-                    params_str, timeout_str, kdu_instance, kdu_model, version_str)
+        command = '{helm} install {atomic} --output yaml --kubeconfig={config} --home={dir} {params} {timeout} ' \
+                  '--name={name} {ns} {model} {ver}'.format(helm=self._helm_command, atomic=atomic_str,
+                                                            config=config_filename, dir=helm_dir, params=params_str,
+                                                            timeout=timeout_str, name=kdu_instance, ns=namespace_str,
+                                                            model=kdu_model, ver=version_str)
         self.log.debug('installing: {}'.format(command))
 
         if atomic:
         self.log.debug('installing: {}'.format(command))
 
         if atomic:
@@ -649,6 +656,29 @@ class K8sHelmConnector(K8sConnector):
 
         return self._output_to_table(output)
 
 
         return self._output_to_table(output)
 
+    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
+        """
+        raise K8sException("KDUs deployed with Helm don't support actions "
+                           "different from rollback, upgrade and status")
+
     async def inspect_kdu(
             self,
             kdu_model: str,
     async def inspect_kdu(
             self,
             kdu_model: str,
@@ -1200,13 +1230,13 @@ class K8sHelmConnector(K8sConnector):
                 return '', -1
 
     def _check_file_exists(self, filename: str, exception_if_not_exists: bool = False):
                 return '', -1
 
     def _check_file_exists(self, filename: str, exception_if_not_exists: bool = False):
-        self.log.debug('Checking if file {} exists...'.format(filename))
+        self.log.debug('Checking if file {} exists...'.format(filename))
         if os.path.exists(filename):
             return True
         else:
             msg = 'File {} does not exist'.format(filename)
             if exception_if_not_exists:
         if os.path.exists(filename):
             return True
         else:
             msg = 'File {} does not exist'.format(filename)
             if exception_if_not_exists:
-                self.log.error(msg)
+                self.log.error(msg)
                 raise K8sException(msg)
 
 
                 raise K8sException(msg)