adding optional namespace to K8s install
[osm/N2VC.git] / n2vc / k8s_juju_conn.py
index 895e82b..550ad12 100644 (file)
@@ -306,7 +306,8 @@ class K8sJujuConnector(K8sConnector):
         timeout: float = 300,
         params: dict = None,
         db_dict: dict = None,
-        kdu_name: str = None
+        kdu_name: str = None,
+        namespace: str = None
     ) -> bool:
         """Install a bundle
 
@@ -318,6 +319,7 @@ class K8sJujuConnector(K8sConnector):
                             to finish
         :param params dict: Key-value pairs of instantiation parameters
         :param kdu_name: Name of the KDU instance to be installed
+        :param namespace: K8s namespace to use for the KDU instance
 
         :return: If successful, returns ?
         """
@@ -351,6 +353,8 @@ class K8sJujuConnector(K8sConnector):
                 - <URL_where_to_fetch_juju_bundle>
             """
 
+            previous_workdir = os.getcwd()
+
             bundle = kdu_model
             if kdu_model.startswith("cs:"):
                 bundle = kdu_model
@@ -358,12 +362,11 @@ class K8sJujuConnector(K8sConnector):
                 # Download the file
                 pass
             else:
-                # Local file
+                new_workdir = kdu_model.strip(kdu_model.split("/")[-1])
 
-                # if kdu_model.endswith(".tar.gz") or kdu_model.endswith(".tgz")
-                # Uncompress temporarily
-                # bundle = <uncompressed file>
-                pass
+                os.chdir(new_workdir)
+
+                bundle = "local:{}".format(kdu_model)
 
             if not bundle:
                 # Raise named exception that the bundle could not be found
@@ -395,7 +398,8 @@ class K8sJujuConnector(K8sConnector):
                         )
                         self.log.debug("All units active.")
 
-                    except concurrent.futures._base.TimeoutError:
+                    except concurrent.futures._base.TimeoutError:    # TODO use asyncio.TimeoutError
+                        os.chdir(previous_workdir)
                         self.log.debug("[install] Timeout exceeded; resetting cluster")
                         await self.reset(cluster_uuid)
                         return False
@@ -405,6 +409,8 @@ class K8sJujuConnector(K8sConnector):
                 self.log.debug("[install] Disconnecting model")
                 await model.disconnect()
 
+            os.chdir(previous_workdir)
+
             return kdu_instance
         raise Exception("Unable to install")