Feature 8720: Add scale support
Change-Id: Ie94521fb6a1ce0a765f9558de749f4f438cf8b93
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/n2vc/libjuju.py b/n2vc/libjuju.py
index 0bd917d..b0e1358 100644
--- a/n2vc/libjuju.py
+++ b/n2vc/libjuju.py
@@ -251,6 +251,7 @@
progress_timeout: float = None,
total_timeout: float = None,
series: str = "xenial",
+ wait: bool = True,
) -> (Machine, bool):
"""
Create machine
@@ -260,6 +261,8 @@
:param: db_dict: Dictionary with data of the DB to write the updates
:param: progress_timeout: Maximum time between two updates in the model
:param: total_timeout: Timeout for the entity to be active
+ :param: series: Series of the machine (xenial, bionic, focal, ...)
+ :param: wait: Wait until machine is ready
:return: (juju.machine.Machine, bool): Machine object and a boolean saying
if the machine is new or it already existed
@@ -311,14 +314,15 @@
machine.entity_id, model_name
)
)
- await JujuModelWatcher.wait_for(
- model=model,
- entity=machine,
- progress_timeout=progress_timeout,
- total_timeout=total_timeout,
- db_dict=db_dict,
- n2vc=self.n2vc,
- )
+ if wait:
+ await JujuModelWatcher.wait_for(
+ model=model,
+ entity=machine,
+ progress_timeout=progress_timeout,
+ total_timeout=total_timeout,
+ db_dict=db_dict,
+ n2vc=self.n2vc,
+ )
finally:
await self.disconnect_model(model)
await self.disconnect_controller(controller)
@@ -453,6 +457,7 @@
total_timeout: float = None,
config: dict = None,
series: str = None,
+ num_units: int = 1,
):
"""Deploy charm
@@ -465,6 +470,7 @@
:param: total_timeout: Timeout for the entity to be active
:param: config: Config for the charm
:param: series: Series of the charm
+ :param: num_units: Number of units
:return: (juju.application.Application): Juju application
"""
@@ -508,6 +514,11 @@
application_name, model_name
)
)
+ if num_units > 1:
+ for _ in range(num_units - 1):
+ m, _ = await self.create_machine(model_name, wait=False)
+ await application.add_unit(to=m.entity_id)
+
await JujuModelWatcher.wait_for(
model=model,
entity=application,
@@ -712,9 +723,7 @@
await self.disconnect_model(model)
await self.disconnect_controller(controller)
- async def destroy_model(
- self, model_name: str, total_timeout: float,
- ):
+ async def destroy_model(self, model_name: str, total_timeout: float):
"""
Destroy model
diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py
index 4545af2..75194aa 100644
--- a/n2vc/n2vc_juju_conn.py
+++ b/n2vc/n2vc_juju_conn.py
@@ -410,6 +410,7 @@
progress_timeout: float = None,
total_timeout: float = None,
config: dict = None,
+ num_units: int = 1,
):
self.log.info(
@@ -476,6 +477,7 @@
progress_timeout=progress_timeout,
total_timeout=total_timeout,
config=config,
+ num_units=num_units,
)
except Exception as e:
raise N2VCException(