Commit c7f865f4 authored by JorgeEcheva26's avatar JorgeEcheva26
Browse files

changes in onboarding and update of invokers and providers

parent 3a9006d3
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -81,11 +81,11 @@ OpenCAPIF SDK brings a set of functions to integrate with the 5G Core's function

| **3GPP CAPIF API**                                    | **OpenCAPIF SDK function**                                  | **Description**                                             |
|-------------------------------------------------------|-------------------------------------------------------------|-------------------------------------------------------------|
| /onboardedInvokers (POST)                             | [onboard_invoker()](./doc/sdk_full_documentation.md#invoker-onboarding)                                           | Registers a new invoker.                                    |
| /onboardedInvokers/{onboardingId} (PUT)               | [update_invoker()](./doc/sdk_full_documentation.md#update-and-offboard-invoker)                                          | Updates an existing invoker for a specific `onboardingId`.                                |
| /onboardedInvokers (POST)                             | [onboard_invoker(supp_features)](./doc/sdk_full_documentation.md#invoker-onboarding)                                           | Registers a new invoker.                                    |
| /onboardedInvokers/{onboardingId} (PUT)               | [update_invoker(supp_features)](./doc/sdk_full_documentation.md#update-and-offboard-invoker)                                          | Updates an existing invoker for a specific `onboardingId`.                                |
| /onboardedInvokers/{onboardingId} (DELETE)            | [offboard_invoker()](./doc/sdk_full_documentation.md#update-and-offboard-invoker)                                         | Deletes an invoker for a specific `onboardingId`.                                         |
| registrations (POST)                                  | [onboard_provider()](./doc/sdk_full_documentation.md#provider-onboarding)                                          | Registers a new service provider.                           |
| /registrations/{registrationId} (PUT)                 | [update_provider()](./doc/sdk_full_documentation.md#update-and-offboard-provider)                                           | Updates a service provider's registration for a specific `registrationId`.                  |
| registrations (POST)                                  | [onboard_provider(supp_features)](./doc/sdk_full_documentation.md#provider-onboarding)                                          | Registers a new service provider.                           |
| /registrations/{registrationId} (PUT)                 | [update_provider(supp_features)](./doc/sdk_full_documentation.md#update-and-offboard-provider)                                           | Updates a service provider's registration for a specific `registrationId`.                  |
| /registrations/{registrationId} (DELETE)              | [offboard_provider()](./doc/sdk_full_documentation.md#update-and-offboard-provider)                                         | Deletes a service provider's registration for a specific `registrationId`.                  |
| /allServiceAPIs (GET)                                 | [discover()](./doc/sdk_full_documentation.md#discover-process)                                                  | Retrieves a list of all available service APIs.             |
| /trustedInvokers (PUT//POST)                          | [get_tokens(supp_features)](./doc/sdk_full_documentation.md#discover-process)                                                  | Registers or updates trusted invokers.                      |
+15 −5
Original line number Diff line number Diff line
@@ -71,10 +71,12 @@ The provider_capif_ids variable stores the `provider_service_ids.json` content i
### Provider Onboarding

OpenCAPIF SDK references:
- **Function**: `onboard_provider()`
- **Function**: `onboard_provider(supp_features)`
- **Script**: `provider_capif_connector.py`

The SDK simplifies the onboarding process, allowing providers to register multiple APFs and AEFs. All APFs, AEFs, and AMF certificates are created and stored in `provider_service_ids.json`.
`supp_features` parameter is optional and it stands for communicating to the CCF the supported features.It's default value its 0.


![Provider_onboard](./images/flows-provider_onboard.jpg)

@@ -152,12 +154,14 @@ Retrieve information about all previously published services in `service_receive
### Update and Offboard Provider

OpenCAPIF SDK references:
- **Functions**: `update_provider()` and `offboard_provider()`
- **Functions**: `update_provider(supp_features)` and `offboard_provider()`
- **Scripts**: `provider_capif_connector_update.py` and `provider_capif_connector_offboarding.py`

`update_provider()`: The provider updates his features such as `APFs`, `AEFs`, etc...
`update_provider(supp_features)`: The provider updates his features such as `APFs`, `AEFs`, etc...
`offboard_provider()`: The provider offboards from CAPIF, this will cause the erase of the published APIs that were currently exposed. 

`supp_features` parameter is optional and it stands for communicating to the CCF the supported features.It's default value its 0.

The provider must be onboarded before using these features.

![Provider_update-offboard](./images/flows-provider_update_offboard.jpg)
@@ -278,11 +282,14 @@ The invoker_capif_details variable stores the `capif_api_security_context_detail
### Invoker onboarding

OpenCAPIF SDK references:
- **Function**: `onboard_invoker()`
- **Function**: `onboard_invoker(supp_features)`
- **Script**: `invoker_capif_connector.py`

The SDK streamlines the invoker onboarding process, storing the `api_invoker_id` in the `capif_api_security_context_details.json`.

`supp_features` parameter is optional and it stands for communicating to the CCF the supported features.It's default value its 0.


![Invoker_onboard](./images/flows-invoker_onboard.jpg)

### Service Discovery
@@ -327,11 +334,14 @@ It is mandatory to have obtained the [JWT token](#obtain-jwt-tokens) previously.
### Update and Offboard Invoker

OpenCAPIF SDK references:
- **Functions**: `update_invoker()` and `offboard_invoker()`
- **Functions**: `update_invoker(supp_features)` and `offboard_invoker()`
- **Scripts**: `invoker_capif_connector_update.py` and `invoker_capif_connector_offboarding.py`

Onboarding is required before utilizing these functions.

`supp_features` parameter is optional and it stands for communicating to the CCF the supported features.It's default value its 0.


![Invoker_update-offboard](./images/flows-invoker_update_offboard.jpg)

## Other Features
+5 −5
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ logging.basicConfig(

class capif_invoker_event_feature(capif_invoker_connector):

    def create_subscription(self, name, supp_features=0):
    def create_subscription(self, name, supp_features="0"):

        invoker_capif_details = self.invoker_capif_details

@@ -150,7 +150,7 @@ class capif_invoker_event_feature(capif_invoker_connector):
            self.logger.error("Subscription file not found at path: %s", path)
            return None, {"error": "Subscription file not found"}

    def update_subcription(self, name, supp_features=0):
    def update_subcription(self, name, supp_features="0"):
        invoker_capif_details = self.invoker_capif_details

        subscriberId = invoker_capif_details["api_invoker_id"]
@@ -209,7 +209,7 @@ class capif_invoker_event_feature(capif_invoker_connector):

class capif_provider_event_feature(capif_provider_connector):

    def create_subscription(self, name, id, supp_features=0):
    def create_subscription(self, name, id, supp_features="0"):

        subscriberId = id

@@ -345,7 +345,7 @@ class capif_provider_event_feature(capif_provider_connector):
            self.logger.error("Subscription file not found at path: %s", path)
            return None, {"error": "Subscription file not found"}

    def update_subcription(self, name, id, supp_features=0):
    def update_subcription(self, name, id, supp_features="0"):

        subscriberId = id

@@ -420,5 +420,5 @@ class capif_provider_event_feature(capif_provider_connector):
            self.logger.error("Subscription file not found at path: %s", path)
            return None, {"error": "Subscription file not found"}

    def patch_subcription(self, name, id, supp_features=0):
    def patch_subcription(self, name, id, supp_features="0"):
        self.update_subcription(self, name, id, supp_features)
+8 −8
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ class capif_invoker_connector:
            url = url + "/"
        return url

    def onboard_invoker(self) -> None:
    def onboard_invoker(self, supp_features="0") -> None:
        self.logger.info("Registering and onboarding Invoker")
        try:
            public_key = self.__create_private_and_public_keys()
@@ -184,7 +184,7 @@ class capif_invoker_connector:
            capif_discover_url = capif_postauth_info["ccf_discover_url"]
            capif_access_token = capif_postauth_info["access_token"]
            api_invoker_id = self.__onboard_invoker_and_create_certificate(
                public_key, capif_onboarding_url, capif_access_token
                public_key, capif_onboarding_url, capif_access_token, supp_features
            )
            self.__write_to_file(api_invoker_id, capif_discover_url)
            self.logger.info("Invoker registered and onboarded successfully")
@@ -322,7 +322,7 @@ class capif_invoker_connector:
            raise

    def __onboard_invoker_and_create_certificate(
        self, public_key, capif_onboarding_url, capif_access_token
        self, public_key, capif_onboarding_url, capif_access_token, supp_features
    ):
        self.logger.info(
            "Onboarding Invoker to CAPIF and creating signed certificate by giving our public key to CAPIF")
@@ -330,7 +330,7 @@ class capif_invoker_connector:
            url = self.capif_https_url + capif_onboarding_url
            payload_dict = {
                "notificationDestination": self.capif_callback_url,
                "supportedFeatures": f"{self.supported_features}",
                "supportedFeatures": supp_features,
                "apiInvokerInformation": self.csr_common_name,
                "websockNotifConfig": {
                    "requestWebsocketUri": True,
@@ -396,7 +396,7 @@ class capif_invoker_connector:
            self.logger.error(f"Error during writing to file: {e}")
            raise

    def update_invoker(self):
    def update_invoker(self,supp_features="0"):
        self.logger.info("Updating Invoker")
        try:

@@ -408,7 +408,7 @@ class capif_invoker_connector:
                public_key = file.read()

            self.__update_invoker_to_capif_and_create_the_signed_certificate(
                public_key, capif_onboarding_url, capif_access_token
                public_key, capif_onboarding_url, capif_access_token, supp_features
            )

            self.logger.info("Invoker updated successfully")
@@ -417,7 +417,7 @@ class capif_invoker_connector:
            raise

    def __update_invoker_to_capif_and_create_the_signed_certificate(
        self, public_key, capif_onboarding_url, capif_access_token
        self, public_key, capif_onboarding_url, capif_access_token, supp_features
    ):
        self.logger.info(
            "Updating Invoker to CAPIF and creating signed certificate by giving our public key to CAPIF")
@@ -433,7 +433,7 @@ class capif_invoker_connector:
            url = self.capif_https_url + capif_onboarding_url + "/" + invokerid
            payload_dict = {
                "notificationDestination": self.capif_callback_url,
                "supportedFeatures": f"{self.supported_features}",
                "supportedFeatures": supp_features,
                "apiInvokerInformation": self.csr_common_name,
                "websockNotifConfig": {
                    "requestWebsocketUri": True,
+1 −1
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@ class capif_logging_feature:
        if not self.api_id:
            raise ValueError(f"No ID was found for the API '{name}'.")

    def create_logs(self, aefId, jwt, supp_features=0):
    def create_logs(self, aefId, jwt, supp_features="0"):

        api_invoker_id = self._decrypt_jwt(jwt)

Loading