Commit 13f8bd89 authored by Cesar Cajas's avatar Cesar Cajas
Browse files

Merge branch 'feature/add-oran-i2cat' into 'main'

Feature/add oran i2cat

See merge request !192
parents 9571aca3 3cfbee84
Loading
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -61,6 +61,14 @@ Open source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge
| i2CAT O-RAN controller     | WIP  |


### O-RAN Platforms

| Platform         | Status  | CAMARA QoD |
|------------------|---------|------------|
| i2CAT RIC & NEF  |    ✅   |    ✅     |
| Juniper          |    ❌   |    ❌     |


---

## How to Use
@@ -166,6 +174,15 @@ API ->> SDK: network_client.create_qos_session(QOS_SESSION_REQUEST)
SDK ->> NEF: Equivalent endpoint
NEF ->> 5GS: QoS session creation
```
<<<<<<< HEAD
---

## Roadmap for Open SDK 2nd release

- [ ] Add support to GSMA OPG.02 TFs
- [x] Include JUNIPER O-RAN adapter
=======
>>>>>>> main

---

+11 −13
Original line number Diff line number Diff line
@@ -5,23 +5,21 @@ 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:
    adapter_specs = {
        "edgecloud": {
            "client_name": "kubernetes",
            "base_url": "http://IP:PORT",
        },
        "network": {
            "client_name": "open5gs",
            "base_url": "http://IP:PORT",
            "scs_as_id": "id_example",
        },
        "oran": {
            "client_name": "i2cat_ric",
            "base_url": "http://127.0.0.1:30000",
            "scs_as_id": "scs-test",
        }
    }

    adapters = sdkclient.create_adapters_from(adapter_specs)
    edgecloud_client = adapters.get("edgecloud")
    network_client = adapters.get("network")
    # edgecloud_client = adapters.get("edgecloud")
    # network_client = adapters.get("network")
    oran_client = adapters.get("oran")

    print("EdgeCloud client ready to be used:", edgecloud_client)
    print("Network client ready to be used:", network_client)
    # print("EdgeCloud client ready to be used:", edgecloud_client)
    # print("Network client ready to be used:", network_client)
    print("Oran client ready to be used:", oran_client)

    # Examples:
    # EdgeCloud
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "sunrise6g-opensdk"
version = "1.0.18"
version = "1.0.19"
description = "Open source SDK to abstract CAMARA/GSMA Transformation Functions (TFs) for Edge Cloud platforms, 5G network cores and Open RAN solutions."
keywords = [
  "Federation",
+18 −3
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ from sunrise6g_opensdk.network.adapters.open5gcore.client import (
from sunrise6g_opensdk.network.adapters.open5gs.client import (
    NetworkManager as Open5GSClient,
)
from sunrise6g_opensdk.oran.adapters.i2cat_ric.client import (
    OranManager as OranManageri2CAT,
)


def _edgecloud_adapters_factory(client_name: str, base_url: str, **kwargs):
@@ -64,15 +67,27 @@ def _network_adapters_factory(client_name: str, base_url: str, **kwargs):
        )


# def _oran_adapters_factory(client_name: str, base_url: str):
#     # TODO
def _oran_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 adapters.")
    scs_as_id = kwargs.pop("scs_as_id")

    oran_factory = {
        "i2cat_ric": lambda url, scs_id, **kw: OranManageri2CAT(
            base_url=url, scs_as_id=scs_id, **kw
        ),
    }
    try:
        return oran_factory[client_name](base_url, scs_as_id, **kwargs)
    except KeyError:
        raise ValueError(f"Invalid Oran client '{client_name}'. Available: {list(oran_factory)}")


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

    @classmethod
Loading