OSMENG-992 - Implement create model activity
An exception is raised if model already exists
Change-Id: Id76f5f8162a1c051a8c03815a3ebedc9f5a73b4e
Signed-off-by: Patricia Reinoso <patricia.reinoso@canonical.com>
diff --git a/n2vc/temporal_libjuju.py b/n2vc/temporal_libjuju.py
index c13d244..a043ba0 100644
--- a/n2vc/temporal_libjuju.py
+++ b/n2vc/temporal_libjuju.py
@@ -17,10 +17,14 @@
from typing import List
from juju.controller import Controller
-from juju.errors import JujuAPIError, JujuError
+from juju.errors import JujuError
from juju.model import Model
-from n2vc.exceptions import JujuApplicationExists, JujuControllerFailedConnecting
+from n2vc.exceptions import (
+ JujuApplicationExists,
+ JujuControllerFailedConnecting,
+ JujuModelAlreadyExists,
+)
@dataclass
@@ -74,24 +78,21 @@
await model.disconnect()
async def add_model(self, model_name: str):
+ """Exception is raised if model_name already exists"""
model = None
controller = None
try:
controller = await self.get_controller()
if await self.model_exists(model_name, controller=controller):
- return
+ raise JujuModelAlreadyExists(
+ "Cannot create model {}".format(model_name)
+ )
self.logger.debug("Creating model {}".format(model_name))
model = await controller.add_model(
model_name,
- # config=self.vca_connection.data.model_config,
cloud_name=self.connection_info.cloud_name,
credential_name=self.connection_info.cloud_credentials,
)
- except JujuAPIError as e:
- if "already exists" in e.message:
- pass
- else:
- raise e
finally:
await self.disconnect_model(model)
await self.disconnect_controller(controller)