X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_conn.py;h=ef4f5f2a8635cd853a97f4ac83c7bc315b174134;hp=89805b3211fdef9f0998a9b22121aee261d53078;hb=7e887b22fdc176021b215c3b83a052276fdbeefc;hpb=82b591ceed704c798ead2d9104085a08e75b511b diff --git a/n2vc/k8s_conn.py b/n2vc/k8s_conn.py index 89805b3..ef4f5f2 100644 --- a/n2vc/k8s_conn.py +++ b/n2vc/k8s_conn.py @@ -22,6 +22,7 @@ import abc import asyncio +from typing import Union import time from n2vc.loggable import Loggable @@ -78,7 +79,14 @@ class K8sConnector(abc.ABC, Loggable): @abc.abstractmethod async def repo_add( - self, cluster_uuid: str, name: str, url: str, repo_type: str = "chart" + self, + cluster_uuid: str, + name: str, + url: str, + repo_type: str = "chart", + cert: str = None, + user: str = None, + password: str = None, ): """ Add a new repository to OSM database @@ -215,19 +223,30 @@ class K8sConnector(abc.ABC, Loggable): scale: int, resource_name: str, total_timeout: float = 1800, + cluster_uuid: str = None, + kdu_model: str = None, + atomic: bool = True, + db_dict: dict = None, **kwargs, ) -> bool: - """ - Scales an application in KDU instance. - - :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 - - :return: If successful, returns True + """Scale a resource in a KDU instance. + + Args: + kdu_instance: KDU instance name + scale: Scale to which to set the resource + resource_name: Resource name + total_timeout: The time, in seconds, to wait for the install + to finish + cluster_uuid: The UUID of the cluster + kdu_model: The chart/bundle reference + atomic: if set, upgrade process rolls back changes made in case of failed upgrade. + The --wait flag will be set automatically if --atomic is used + db_dict: Dictionary for any additional data + kwargs: Additional parameters + vca_id (str): VCA ID + + Returns: + True if successful, False otherwise """ @abc.abstractmethod @@ -235,16 +254,23 @@ class K8sConnector(abc.ABC, Loggable): self, resource_name: str, kdu_instance: str, + cluster_uuid: str, + kdu_model: str, + timeout: float = 300, **kwargs, ) -> int: - """ - Get an application scale count. + """Get a resource scale count in a KDU instance. - :param: resource_name str: Resource name (Application name) - :param: kdu_instance str: KDU instance name - :param kwargs: Additional parameters + Args: + resource_name: Resource name + kdu_instance: KDU instance name + cluster_uuid: The UUID of the cluster + kdu_model: chart/bundle reference + timeout: The time, in seconds, to wait + kwargs: Additional parameters - :return: Return application instance count + Returns: + Resource instance count """ @abc.abstractmethod @@ -333,7 +359,9 @@ class K8sConnector(abc.ABC, Loggable): """ @abc.abstractmethod - async def status_kdu(self, cluster_uuid: str, kdu_instance: str) -> str: + async def status_kdu( + self, cluster_uuid: str, kdu_instance: str, yaml_format: str + ) -> Union[str, dict]: """ This call would retrieve tha current state of a given KDU instance. It would be would allow to retrieve the _composition_ (i.e. K8s objects) and _specific @@ -342,6 +370,8 @@ class K8sConnector(abc.ABC, Loggable): :param cluster_uuid: UUID of a K8s cluster known by OSM :param kdu_instance: unique name for the KDU instance + :param yaml_format: if the return shall be returned as an YAML string or as a + dictionary :return: If successful, it will return the following vector of arguments: - K8s `namespace` in the cluster where the KDU lives - `state` of the KDU instance. It can be: