- async def add_k8s(self, cloud_name: str, credentials: str,) -> bool:
- """Add a k8s cloud to Juju
-
- Adds a Kubernetes cloud to Juju, so it can be bootstrapped with a
- Juju Controller.
-
- :param cloud_name str: The name of the cloud to add.
- :param credentials dict: A dictionary representing the output of
- `kubectl config view --raw`.
-
- :returns: True if successful, otherwise raises an exception.
- """
-
- cmd = [self.juju_command, "add-k8s", "--local", cloud_name]
- self.log.debug(cmd)
-
- process = await asyncio.create_subprocess_exec(
- *cmd,
- stdout=asyncio.subprocess.PIPE,
- stderr=asyncio.subprocess.PIPE,
- stdin=asyncio.subprocess.PIPE,
- )
-
- # Feed the process the credentials
- process.stdin.write(credentials.encode("utf-8"))
- await process.stdin.drain()
- process.stdin.close()
-
- _stdout, stderr = await process.communicate()
-
- return_code = process.returncode
-
- self.log.debug("add-k8s return code: {}".format(return_code))
-
- if return_code > 0:
- raise Exception(stderr)
-
- return True
-
- 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
-
- :param model_name str: The name of the model to add.
- :returns: The juju.model.Model object of the new model upon success or
- raises an exception.
- """
- if not self.authenticated:
- await self.login(cluster_uuid)
-
- self.log.debug(
- "Adding model '{}' to cluster_uuid '{}'".format(model_name, cluster_uuid)
- )
- model = None
- try:
- 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))
- pass
-
- return model
-
- async def bootstrap(
- self, cloud_name: str, cluster_uuid: str, loadbalancer: bool
- ) -> bool:
- """Bootstrap a Kubernetes controller
-
- Bootstrap a Juju controller inside the Kubernetes cluster
-
- :param cloud_name str: The name of the cloud.
- :param cluster_uuid str: The UUID of the cluster to bootstrap.
- :param loadbalancer bool: If the controller should use loadbalancer or not.
- :returns: True upon success or raises an exception.
- """
-
- if not loadbalancer:
- cmd = [self.juju_command, "bootstrap", cloud_name, cluster_uuid]
- else:
- """
- For public clusters, specify that the controller service is using a
- LoadBalancer.
- """
- cmd = [
- self.juju_command,
- "bootstrap",
- cloud_name,
- cluster_uuid,
- "--config",
- "controller-service-type=loadbalancer",
- ]
-
- self.log.debug(
- "Bootstrapping controller {} in cloud {}".format(cluster_uuid, cloud_name)
- )
-
- process = await asyncio.create_subprocess_exec(
- *cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
- )
-
- _stdout, stderr = await process.communicate()
-
- return_code = process.returncode
-
- if return_code > 0:
- #
- if b"already exists" not in stderr:
- raise Exception(stderr)
-
- return True
-
- async def destroy_controller(self, cluster_uuid: str) -> bool:
- """Destroy a Kubernetes controller
-
- Destroy an existing Kubernetes controller.
-
- :param cluster_uuid str: The UUID of the cluster to bootstrap.
- :returns: True upon success or raises an exception.
- """
- cmd = [
- self.juju_command,
- "destroy-controller",
- "--destroy-all-models",
- "--destroy-storage",
- "-y",
- cluster_uuid,
- ]
-
- process = await asyncio.create_subprocess_exec(
- *cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
- )
-
- _stdout, stderr = await process.communicate()
-
- return_code = process.returncode
-
- if return_code > 0:
- #
- if "already exists" not in stderr:
- raise Exception(stderr)
+ # async def add_k8s(self, cloud_name: str, credentials: str,) -> bool:
+ # """Add a k8s cloud to Juju
+
+ # Adds a Kubernetes cloud to Juju, so it can be bootstrapped with a
+ # Juju Controller.
+
+ # :param cloud_name str: The name of the cloud to add.
+ # :param credentials dict: A dictionary representing the output of
+ # `kubectl config view --raw`.
+
+ # :returns: True if successful, otherwise raises an exception.
+ # """
+
+ # cmd = [self.juju_command, "add-k8s", "--local", cloud_name]
+ # self.log.debug(cmd)
+
+ # process = await asyncio.create_subprocess_exec(
+ # *cmd,
+ # stdout=asyncio.subprocess.PIPE,
+ # stderr=asyncio.subprocess.PIPE,
+ # stdin=asyncio.subprocess.PIPE,
+ # )
+
+ # # Feed the process the credentials
+ # process.stdin.write(credentials.encode("utf-8"))
+ # await process.stdin.drain()
+ # process.stdin.close()
+
+ # _stdout, stderr = await process.communicate()
+
+ # return_code = process.returncode
+
+ # self.log.debug("add-k8s return code: {}".format(return_code))
+
+ # if return_code > 0:
+ # raise Exception(stderr)
+
+ # return True
+
+ # async def add_model(
+ # self, model_name: str, cluster_uuid: str, controller: Controller
+ # ) -> Model:
+ # """Adds a model to the controller
+
+ # Adds a new model to the Juju controller
+
+ # :param model_name str: The name of the model to add.
+ # :param cluster_uuid str: ID of the cluster.
+ # :param controller: Controller object in which the model will be added
+ # :returns: The juju.model.Model object of the new model upon success or
+ # raises an exception.
+ # """
+
+ # self.log.debug(
+ # "Adding model '{}' to cluster_uuid '{}'".format(model_name, cluster_uuid)
+ # )
+ # model = None
+ # try:
+ # if self.juju_public_key is not None:
+ # model = await controller.add_model(
+ # model_name, config={"authorized-keys": self.juju_public_key}
+ # )
+ # else:
+ # model = await controller.add_model(model_name)
+ # except Exception as ex:
+ # self.log.debug(ex)
+ # self.log.debug("Caught exception: {}".format(ex))
+ # pass
+
+ # return model
+
+ # async def bootstrap(
+ # self, cloud_name: str, cluster_uuid: str, loadbalancer: bool
+ # ) -> bool:
+ # """Bootstrap a Kubernetes controller
+
+ # Bootstrap a Juju controller inside the Kubernetes cluster
+
+ # :param cloud_name str: The name of the cloud.
+ # :param cluster_uuid str: The UUID of the cluster to bootstrap.
+ # :param loadbalancer bool: If the controller should use loadbalancer or not.
+ # :returns: True upon success or raises an exception.
+ # """
+
+ # if not loadbalancer:
+ # cmd = [self.juju_command, "bootstrap", cloud_name, cluster_uuid]
+ # else:
+ # """
+ # For public clusters, specify that the controller service is using a
+ # LoadBalancer.
+ # """
+ # cmd = [
+ # self.juju_command,
+ # "bootstrap",
+ # cloud_name,
+ # cluster_uuid,
+ # "--config",
+ # "controller-service-type=loadbalancer",
+ # ]
+
+ # self.log.debug(
+ # "Bootstrapping controller {} in cloud {}".format(cluster_uuid, cloud_name)
+ # )
+
+ # process = await asyncio.create_subprocess_exec(
+ # *cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
+ # )
+
+ # _stdout, stderr = await process.communicate()
+
+ # return_code = process.returncode
+
+ # if return_code > 0:
+ # #
+ # if b"already exists" not in stderr:
+ # raise Exception(stderr)
+
+ # return True
+
+ # async def destroy_controller(self, cluster_uuid: str) -> bool:
+ # """Destroy a Kubernetes controller
+
+ # Destroy an existing Kubernetes controller.
+
+ # :param cluster_uuid str: The UUID of the cluster to bootstrap.
+ # :returns: True upon success or raises an exception.
+ # """
+ # cmd = [
+ # self.juju_command,
+ # "destroy-controller",
+ # "--destroy-all-models",
+ # "--destroy-storage",
+ # "-y",
+ # cluster_uuid,
+ # ]
+
+ # process = await asyncio.create_subprocess_exec(
+ # *cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
+ # )
+
+ # _stdout, stderr = await process.communicate()
+
+ # return_code = process.returncode
+
+ # if return_code > 0:
+ # #
+ # if "already exists" not in stderr:
+ # raise Exception(stderr)