Bug 1609 fix
[osm/N2VC.git] / n2vc / k8s_conn.py
index a3ad29a..89805b3 100644 (file)
@@ -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,45 @@ 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,
+        **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
+        """
+
+    @abc.abstractmethod
+    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
+
+        :return: Return application instance count
+        """
+
     @abc.abstractmethod
     async def rollback(
         self, cluster_uuid: str, kdu_instance: str, revision=0, db_dict: dict = None
@@ -312,6 +357,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 ##################################