X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_juju_conn.py;h=3a2d9e31f403a7f2da678c02701166ddebf04e73;hp=e3ec17e295ee4f704edcec9dd6e14f15629e7295;hb=2962f3e7aba84b4584d2deac30d1c163f6441a03;hpb=e69aea9ff905a2cd9376ca1a6f2c1a345d78daca diff --git a/n2vc/k8s_juju_conn.py b/n2vc/k8s_juju_conn.py index e3ec17e..3a2d9e3 100644 --- a/n2vc/k8s_juju_conn.py +++ b/n2vc/k8s_juju_conn.py @@ -375,6 +375,66 @@ class K8sJujuConnector(K8sConnector): ) return True + async def scale( + self, + kdu_instance: str, + scale: int, + resource_name: str, + total_timeout: float = 1800, + **kwargs, + ) -> bool: + """Scale an application in a model + + :param: kdu_instance str: KDU instance name + :param: scale int: Scale to which to set this application + :param: resource_name str: Resource name (Application name) + :param: timeout float: The time, in seconds, to wait for the install + to finish + :param kwargs: Additional parameters + vca_id (str): VCA ID + + :return: If successful, returns True + """ + + try: + libjuju = await self._get_libjuju(kwargs.get("vca_id")) + await libjuju.scale_application( + model_name=kdu_instance, + application_name=resource_name, + scale=scale, + total_timeout=total_timeout + ) + except Exception as e: + error_msg = "Error scaling application {} in kdu instance {}: {}".format( + resource_name, kdu_instance, e) + self.log.error(error_msg) + raise K8sException(message=error_msg) + return True + + async def get_scale_count( + self, + resource_name: str, + kdu_instance: str, + **kwargs, + ) -> int: + """Get an application scale count + + :param: resource_name str: Resource name (Application name) + :param: kdu_instance str: KDU instance name + :param kwargs: Additional parameters + vca_id (str): VCA ID + :return: Return application instance count + """ + try: + libjuju = await self._get_libjuju(kwargs.get("vca_id")) + status = await libjuju.get_model_status(kdu_instance) + return len(status.applications[resource_name].units) + except Exception as e: + error_msg = "Error getting scale count from application {} in kdu instance {}: {}".format( + resource_name, kdu_instance, e) + self.log.error(error_msg) + raise K8sException(message=error_msg) + async def instances_list(self, cluster_uuid: str) -> list: """ returns a list of deployed releases in a cluster