X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_conn.py;h=55b340ac60d8fd853ab152509f6a8d919e3dd9ae;hp=a3ad29aa3529d01a1545274c133e29d8d9bfbaf0;hb=ed0ff05f09f276c753e5aa5439a3a1252b6a07e4;hpb=f52cb7cfeb4e24febe7c66af3d5bb275a50d7f99 diff --git a/n2vc/k8s_conn.py b/n2vc/k8s_conn.py index a3ad29a..55b340a 100644 --- a/n2vc/k8s_conn.py +++ b/n2vc/k8s_conn.py @@ -34,6 +34,10 @@ class K8sConnector(abc.ABC, Loggable): #################################################################################### """ + @staticmethod + def generate_kdu_instance_name(**kwargs): + raise NotImplementedError("Method not implemented") + def __init__(self, db: object, log: object = None, on_update_db=None): """ @@ -136,6 +140,7 @@ class K8sConnector(abc.ABC, Loggable): self, cluster_uuid: str, kdu_model: str, + kdu_instance: str, atomic: bool = True, timeout: float = 300, params: dict = None, @@ -154,6 +159,7 @@ class K8sConnector(abc.ABC, Loggable): - a name of chart/bundle available via the repos known by OSM - a path to a packaged chart/bundle - a path to an unpacked chart/bundle directory or a URL + :param kdu_instance: Kdu instance name :param atomic: If set, installation process purges chart/bundle on fail, also will wait until all the K8s objects are active :param timeout: Time in seconds to wait for the install of the chart/bundle @@ -202,6 +208,63 @@ class K8sConnector(abc.ABC, Loggable): :return: reference to the new revision number of the KDU instance """ + @abc.abstractmethod + async def scale( + self, + kdu_instance: str, + 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: + """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 + async def get_scale_count( + self, + resource_name: str, + kdu_instance: str, + cluster_uuid: str, + kdu_model: str, + timeout: float = 300, + **kwargs, + ) -> int: + """Get a resource scale count in a KDU instance. + + 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 + + Returns: + Resource instance count + """ + @abc.abstractmethod async def rollback( self, cluster_uuid: str, kdu_instance: str, revision=0, db_dict: dict = None @@ -312,6 +375,46 @@ class K8sConnector(abc.ABC, Loggable): """ + @abc.abstractmethod + async def get_services( + self, cluster_uuid: str, kdu_instance: str, namespace: str + ) -> list: + """ + Returns a list of services defined for the specified kdu instance. + + :param cluster_uuid: UUID of a K8s cluster known by OSM + :param kdu_instance: unique name for the KDU instance + :param namespace: K8s namespace used by the KDU instance + :return: If successful, it will return a list of services, Each service + can have the following data: + - `name` of the service + - `type` type of service in the k8 cluster + - `ports` List of ports offered by the service, for each port includes at least + name, port, protocol + - `cluster_ip` Internal ip to be used inside k8s cluster + - `external_ip` List of external ips (in case they are available) + """ + + @abc.abstractmethod + async def get_service( + self, cluster_uuid: str, service_name: str, namespace: str = None + ) -> object: + """ + Obtains the data of the specified service in the k8cluster. + + :param cluster_uuid: UUID of a K8s cluster known by OSM + :param service_name: name of the K8s service in the specified namespace + :param namespace: K8s namespace used by the KDU instance + :return: If successful, it will return a list of services, Each service can have + the following data: + - `name` of the service + - `type` type of service in the k8 cluster + - `ports` List of ports offered by the service, for each port includes at least + name, port, protocol + - `cluster_ip` Internal ip to be used inside k8s cluster + - `external_ip` List of external ips (in case they are available) + """ + """ #################################################################################### ################################### P R I V A T E ##################################