Commit 5e1aa3b2 authored by Adrian Pino's avatar Adrian Pino
Browse files

Update clients folder to adapters. Rename NetworkManagementInterface

Rename NetworkManagementInterface to BaseNetworkClient
parent c996de15
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -4,9 +4,9 @@ from sunrise6g_opensdk.common.sdk import Sdk as sdkclient # For developers

def main():
    # The module that imports the SDK package, must specify which adapters will be used:
    client_specs = {
    adapter_specs = {
        "edgecloud": {
            "client_name": "i2edge",
            "client_name": "kubernetes",
            "base_url": "http://IP:PORT",
        },
        "network": {
@@ -16,9 +16,9 @@ def main():
        },
    }

    clients = sdkclient.create_clients_from(client_specs)
    edgecloud_client = clients.get("edgecloud")
    network_client = clients.get("network")
    adapters = sdkclient.create_adapters_from(adapter_specs)
    edgecloud_client = adapters.get("edgecloud")
    network_client = adapters.get("network")

    print("EdgeCloud client ready to be used:", edgecloud_client)
    print("Network client ready to be used:", network_client)
+19 −16
Original line number Diff line number Diff line
@@ -8,28 +8,31 @@
# Contributors:
#   - Adrián Pino Martínez (adrian.pino@i2cat.net)
##
from sunrise6g_opensdk.edgecloud.clients.aeros.client import (

from sunrise6g_opensdk.edgecloud.adapters.aeros.client import (
    EdgeApplicationManager as AerosClient,
)
from sunrise6g_opensdk.edgecloud.clients.i2edge.client import (
from sunrise6g_opensdk.edgecloud.adapters.i2edge.client import (
    EdgeApplicationManager as I2EdgeClient,
)
from sunrise6g_opensdk.network.clients.oai.client import NetworkManager as OaiCoreClient
from sunrise6g_opensdk.network.clients.open5gcore.client import (
from sunrise6g_opensdk.network.adapters.oai.client import (
    NetworkManager as OaiCoreClient,
)
from sunrise6g_opensdk.network.adapters.open5gcore.client import (
    NetworkManager as Open5GCoreClient,
)
from sunrise6g_opensdk.network.clients.open5gs.client import (
from sunrise6g_opensdk.network.adapters.open5gs.client import (
    NetworkManager as Open5GSClient,
)

# from sunrise6g_opensdk.edgecloud.clients.piedge.client import EdgeApplicationManager as PiEdgeClient
# from sunrise6g_opensdk.edgecloud.adapters.kubernetes.client import EdgeApplicationManager as kubernetesClient


def _edgecloud_factory(client_name: str, base_url: str, **kwargs):
def _edgecloud_adapters_factory(client_name: str, base_url: str, **kwargs):
    edge_cloud_factory = {
        "aeros": lambda url, **kw: AerosClient(base_url=url, **kw),
        "i2edge": lambda url: I2EdgeClient(base_url=url),
        # "piedge": lambda url: PiEdgeClient(base_url=url), Uncomment when import issues are solved
        # "kubernetes": lambda url: kubernetesClient(base_url=url), Uncomment when import issues are solved
    }
    try:
        return edge_cloud_factory[client_name](base_url, **kwargs)
@@ -39,9 +42,9 @@ def _edgecloud_factory(client_name: str, base_url: str, **kwargs):
        )


def _network_factory(client_name: str, base_url: str, **kwargs):
def _network_adapters_factory(client_name: str, base_url: str, **kwargs):
    if "scs_as_id" not in kwargs:
        raise ValueError("Missing required 'scs_as_id' for network clients.")
        raise ValueError("Missing required 'scs_as_id' for network adapters.")
    scs_as_id = kwargs.pop("scs_as_id")

    network_factory = {
@@ -63,19 +66,19 @@ def _network_factory(client_name: str, base_url: str, **kwargs):
        )


# def _oran_factory(client_name: str, base_url: str):
# def _oran_adapters_factory(client_name: str, base_url: str):
#     # TODO


class SdkFactory:
class AdaptersFactory:
    _domain_factories = {
        "edgecloud": _edgecloud_factory,
        "network": _network_factory,
        # "oran": _oran_factory,
        "edgecloud": _edgecloud_adapters_factory,
        "network": _network_adapters_factory,
        # "oran": _oran_adapters_factory,
    }

    @classmethod
    def instantiate_and_retrieve_clients(
    def instantiate_and_retrieve_adapters(
        cls, domain: str, client_name: str, base_url: str, **kwargs
    ):
        try:
+15 −20
Original line number Diff line number Diff line
@@ -10,20 +10,20 @@
##
from typing import Dict

from sunrise6g_opensdk.common.sdk_factory import SdkFactory
from sunrise6g_opensdk.common.adapters_factory import AdaptersFactory


class Sdk:
    @staticmethod
    def create_clients_from(
        client_specs: Dict[str, Dict[str, str]],
    def create_adapters_from(
        adapter_specs: Dict[str, Dict[str, str]],
    ) -> Dict[str, object]:
        """
        Create and return a dictionary of instantiated edgecloud/network/oran clients
        Create and return a dictionary of instantiated edgecloud/network/oran adapters
        based on the provided specifications.

        Args:
            client_specs (dict): A dictionary where each key is the client's domain (e.g., 'edgecloud', 'network'),
            adapter_specs (dict): A dictionary where each key is the client's domain (e.g., 'edgecloud', 'network'),
                                 and each value is a dictionary containing:
                                 - 'client_name' (str): The specific name of the client (e.g., 'i2edge', 'open5gs').
                                 - 'base_url' (str): The base URL for the client's API.
@@ -33,10 +33,11 @@ class Sdk:
            dict: A dictionary where keys are the 'client_name' (str) and values are
                  the instantiated client objects.

        Example:
        # TODO: Update it
        # Example:
            >>> from src.common.universal_client_catalog import UniversalCatalogClient
            >>>
            >>> client_specs_example = {
            >>> adapter_specs_example = {
            >>>     'edgecloud': {
            >>>         'client_name': 'i2edge',
            >>>         'base_url': 'http://ip_edge_cloud:port',
@@ -49,28 +50,22 @@ class Sdk:
            >>>     }
            >>> }
            >>>
            >>> clients = UniversalCatalogClient.create_clients(client_specs_example)
            >>> edgecloud_client = clients.get("edgecloud")
            >>> network_client = clients.get("network")
            >>>
            >>> edgecloud_client.get_edge_cloud_zones()
            >>> network_client.get_qod_session(session_id="example_session_id")
        """
        sdk_client = SdkFactory()
        clients = {}
        sdk_client = AdaptersFactory()
        adapters = {}

        for domain, config in client_specs.items():
        for domain, config in adapter_specs.items():
            client_name = config["client_name"]
            base_url = config["base_url"]

            # Support of additional paramaters for specific clients
            # Support of additional paramaters for specific adapters
            kwargs = {
                k: v for k, v in config.items() if k not in ("client_name", "base_url")
            }

            client = sdk_client.instantiate_and_retrieve_clients(
            client = sdk_client.instantiate_and_retrieve_adapters(
                domain, client_name, base_url, **kwargs
            )
            clients[domain] = client
            adapters[domain] = client

        return clients
        return adapters
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ aerOS client
    and an access token for authentication.
"""

from sunrise6g_opensdk.edgecloud.clients.aeros import config
from sunrise6g_opensdk.edgecloud.adapters.aeros import config
from sunrise6g_opensdk.logger import setup_logger

logger = setup_logger(__name__, is_debug=True, file_name=config.LOG_FILE)
Loading