import concurrent
import os
import uuid
+import yaml
import juju
from juju.controller import Controller
+from juju.model import Model
from n2vc.exceptions import K8sException
from n2vc.k8s_conn import K8sConnector
-import yaml
from .exceptions import MethodNotImplemented
in the package>
- <URL_where_to_fetch_juju_bundle>
"""
-
- previous_workdir = os.getcwd()
+ try:
+ previous_workdir = os.getcwd()
+ except FileNotFoundError:
+ previous_workdir = "/app/storage"
bundle = kdu_model
if kdu_model.startswith("cs:"):
return status
+ async def get_services(self,
+ cluster_uuid: str,
+ kdu_instance: str,
+ namespace: str = None) -> list:
+ """
+ Returns empty list as currently add_repo is not implemented
+ """
+ raise MethodNotImplemented
+
+ async def get_service(self,
+ cluster_uuid: str,
+ service_name: str,
+ namespace: str = None) -> object:
+ """
+ Returns empty list as currently add_repo is not implemented
+ """
+ raise MethodNotImplemented
+
# Private methods
async def add_k8s(self, cloud_name: str, credentials: str,) -> bool:
"""Add a k8s cloud to Juju
return True
- async def add_model(self, model_name: str, cluster_uuid: str,) -> juju.model.Model:
+ async def add_model(self, model_name: str, cluster_uuid: str,) -> Model:
"""Adds a model to the controller
Adds a new model to the Juju controller
"Adding model '{}' to cluster_uuid '{}'".format(model_name, cluster_uuid)
)
try:
- model = await self.controller.add_model(
- model_name, config={"authorized-keys": self.juju_public_key}
- )
+ if self.juju_public_key is not None:
+ model = await self.controller.add_model(
+ model_name, config={"authorized-keys": self.juju_public_key}
+ )
+ else:
+ model = await self.controller.add_model(model_name)
except Exception as ex:
self.log.debug(ex)
self.log.debug("Caught exception: {}".format(ex))
"Unable to locate configuration for cluster {}".format(cluster_uuid)
)
- async def get_model(self, model_name: str, cluster_uuid: str,) -> juju.model.Model:
+ async def get_model(self, model_name: str, cluster_uuid: str,) -> Model:
"""Get a model from the Juju Controller.
Note: Model objects returned must call disconnected() before it goes