From 069b469a3990f30b3a0012f3d9fde535ebf3149f Mon Sep 17 00:00:00 2001 From: JohnKeeney Date: Thu, 12 May 2022 22:15:14 +0100 Subject: [PATCH] Documentation updates Updated RTD documentation, and fixed some typos in java files conatining annotations used to generate OpenAPI (json, yaml, html) specs & docs. Issue-ID: CCSDK-3616 Change-Id: Iefa905f4c0f13cb013872d4858232695fc107927 Signed-off-by: JohnKeeney --- a1-policy-management/api/pms-api.json | 12 +- a1-policy-management/api/pms-api.yaml | 30 ++--- .../a1policymanagementservice/SwaggerConfig.java | 10 +- .../controllers/v2/PolicyTypeInfo.java | 2 +- .../controllers/v2/RicRepositoryController.java | 4 +- .../controllers/v2/ServiceController.java | 2 +- .../controllers/v2/ServiceRegistrationInfo.java | 8 +- .../controllers/v2/RappSimulatorController.java | 2 +- docs/architecture/architecture.rst | 8 +- docs/consumedapis/consumedapis.rst | 13 +- docs/guide/developer-guide.rst | 75 +++++++----- docs/humaninterfaces/humaninterfaces.rst | 4 +- docs/index.rst | 2 +- docs/media/ONAP-A1ControllerArchitecture.png | Bin 79142 -> 75211 bytes docs/offeredapis/offeredapis.rst | 4 +- docs/offeredapis/swagger/a1-adapter-api.yaml | 2 +- docs/offeredapis/swagger/pms-api.json | 12 +- docs/offeredapis/swagger/pms-api.yaml | 30 ++--- docs/releasenotes/release-notes.rst | 136 ++++++++++++++++++++- 19 files changed, 251 insertions(+), 105 deletions(-) diff --git a/a1-policy-management/api/pms-api.json b/a1-policy-management/api/pms-api.json index 2b8fb739..9fc8e7bb 100644 --- a/a1-policy-management/api/pms-api.json +++ b/a1-policy-management/api/pms-api.json @@ -79,7 +79,7 @@ }, "keep_alive_interval_seconds": { "format": "int64", - "description": "keep alive interval for the service. This is a heartbeat supervision of the service, which in regular intevals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, it is considered unavailble. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision.", + "description": "keep alive interval for the service. This is a heartbeat supervision of the service, which in regular intervals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, it is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision.", "type": "integer" } } @@ -144,7 +144,7 @@ "description": "Policy type", "type": "object", "properties": {"policy_schema": { - "description": "Policy type json scema. The schema is a json object following http://json-schema.org/draft-07/schema", + "description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema", "type": "object" }} }, @@ -335,7 +335,7 @@ }}, "/a1-policy/v2/rics/ric": {"get": { "summary": "Returns info for one Near-RT RIC", - "description": "Either a Near-RT RIC identity or a Mananged Element identity can be specified.
The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", + "description": "Either a Near-RT RIC identity or a Managed Element identity can be specified.
The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", "operationId": "getRic", "responses": { "200": { @@ -559,7 +559,7 @@ }, "/a1-policy/v2/services/{service_id}/keepalive": {"put": { "summary": "Heartbeat indicates that the service is running", - "description": "A registerred service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service will be deregisterred and all its policies are removed.", + "description": "A registered service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service will be deregistered and all its policies are removed.", "operationId": "keepAliveService", "responses": { "200": { @@ -798,7 +798,7 @@ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}}, "required": true }, - "description": "The URL to this call is registerred at Service registration.", + "description": "The URL to this call is registered at Service registration.", "operationId": "serviceCallback", "responses": {"200": { "description": "OK", @@ -867,7 +867,7 @@ "name": "Copyright (C) 2020-2022 Nordix Foundation. Licensed under the Apache License.", "url": "http://www.apache.org/licenses/LICENSE-2.0" }, - "description": "

General<\/h2>

The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices.
The main tasks of the service are:<\/p>

  • A1 Policy creation, modification and deletion.<\/li>
  • Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li>
  • Maintaining a view of supported Near-RT RIC policy types<\/li>
  • Supervision of using services (R-APPs). When a service is unavailble, its policies are removed.<\/li><\/ul>

    APIs provided by the service<\/h2>

    A1 Policy Management<\/h3>

    This is an API for management of A1 Policies.<\/p>

    • A1 Policy retrieval, creation, modification and deletion.<\/li>
    • Retrieval of supported A1 Policy types for a Near-RT RIC<\/li>
    • Retrieval of status for existing A1 policies<\/li><\/ul>

      Management of configuration<\/h3>

      API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p>

      Callbacks<\/h3>

      These are endpoints that are invoked by this service. The callbacks are registerred in this service at service registration.<\/p>

      NearRT-RIC Repository<\/h3>

      This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p>

      Health Check<\/h3>

      API used for supervision of the PMS component.<\/p>

      Service Registry and Supervision<\/h3>

      API used for registerring services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registerred service and will automatically remove policies for unavailable services.<\/p>", + "description": "

      General<\/h2>

      The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies.
      The main tasks of the service are:<\/p>

      • A1 Policy creation, modification and deletion.<\/li>
      • Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li>
      • Maintaining a view of supported Near-RT RIC policy types<\/li>
      • Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.<\/li><\/ul>

        APIs provided by the service<\/h2>

        A1 Policy Management<\/h3>

        This is an API for management of A1 Policies.<\/p>

        • A1 Policy retrieval, creation, modification and deletion.<\/li>
        • Retrieval of supported A1 Policy types for a Near-RT RIC<\/li>
        • Retrieval of status for existing A1 policies<\/li><\/ul>

          Management of configuration<\/h3>

          API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p>

          Callbacks<\/h3>

          These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.<\/p>

          NearRT-RIC Repository<\/h3>

          This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p>

          Health Check<\/h3>

          API used for supervision of the PMS component.<\/p>

          Service Registry and Supervision<\/h3>

          API used for registering services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registered service and will automatically remove policies for unavailable services.<\/p>", "title": "A1 Policy management service", "version": "1.1.0" }, diff --git a/a1-policy-management/api/pms-api.yaml b/a1-policy-management/api/pms-api.yaml index 958ec0d4..3fd496bd 100644 --- a/a1-policy-management/api/pms-api.yaml +++ b/a1-policy-management/api/pms-api.yaml @@ -2,23 +2,23 @@ openapi: 3.0.1 info: title: A1 Policy management service description:

          General

          The O-RAN Non-RT RIC Policy Management Service provides - a REST API for management of A1 policices.
          The main tasks of the service - are:

          • A1 Policy creation, modification and deletion.
          • Monitoring - and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs
          • Maintaining + a REST API for management of A1 policies.
            The main tasks of the service are:

            • A1 + Policy creation, modification and deletion.
            • Monitoring and maintaining + consistency of the SMO view of A1 policies and the Near-RT RICs
            • Maintaining a view of supported Near-RT RIC policy types
            • Supervision of using services - (R-APPs). When a service is unavailble, its policies are removed.

            APIs + (R-APPs). When a service is unavailable, its policies are removed.

          APIs provided by the service

          A1 Policy Management

          This is an API for management of A1 Policies.

          • A1 Policy retrieval, creation, modification and deletion.
          • Retrieval of supported A1 Policy types for a Near-RT RIC
          • Retrieval of status for existing A1 policies

          Management of configuration

          API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.

          Callbacks

          These are endpoints - that are invoked by this service. The callbacks are registerred in this service + that are invoked by this service. The callbacks are registered in this service at service registration.

          NearRT-RIC Repository

          This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.

          Health Check

          API used for supervision of the PMS component.

          Service - Registry and Supervision

          API used for registerring services that uses PMS. - Each A1 policy is owned by a service. PMS can supervise each registerred service + Registry and Supervision

        API used for registering services that uses PMS. + Each A1 policy is owned by a service. PMS can supervise each registered service and will automatically remove policies for unavailable services.

        license: name: Copyright (C) 2020-2022 Nordix Foundation. Licensed under the Apache License. @@ -152,8 +152,8 @@ paths: tags: - NearRT-RIC Repository summary: Returns info for one Near-RT RIC - description: Either a Near-RT RIC identity or a Mananged Element identity can - be specified.
        The intention with Mananged Element identity is the ID used + description: Either a Near-RT RIC identity or a Managed Element identity can + be specified.
        The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU). operationId: getRic parameters: @@ -434,9 +434,9 @@ paths: tags: - Service Registry and Supervision summary: Heartbeat indicates that the service is running - description: A registerred service must call this in regular intervals to indicate + description: A registered service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service - will be deregisterred and all its policies are removed. + will be deregistered and all its policies are removed. operationId: keepAliveService parameters: - name: service_id @@ -742,7 +742,7 @@ paths: tags: - Callbacks summary: Callback for Near-RT RIC status - description: The URL to this call is registerred at Service registration. + description: The URL to this call is registered at Service registration. operationId: serviceCallback requestBody: content: @@ -897,9 +897,9 @@ components: keep_alive_interval_seconds: type: integer description: keep alive interval for the service. This is a heartbeat supervision - of the service, which in regular intevals must invoke a 'keepalive' REST + of the service, which in regular intervals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, - it is considered unavailble. An unavailable service will be automatically + it is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision. format: int64 @@ -955,7 +955,7 @@ components: properties: policy_schema: type: object - description: Policy type json scema. The schema is a json object following + description: Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema description: Policy type policytype_id_list_v2: diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java index b262af07..774b2363 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/SwaggerConfig.java @@ -52,15 +52,15 @@ public class SwaggerConfig { private static final String H3 = "

        "; private static final String H3_END = "

        "; - public static final String API_TITLE = "A1 Policy management service"; + public static final String API_TITLE = "A1 Policy Management Service"; static final String DESCRIPTION = "

        General

        " + // - "

        The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices.
        The main tasks of the service are:

        " + "

        The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies.
        The main tasks of the service are:

        " + // "
          " + // "
        • A1 Policy creation, modification and deletion.
        • " + // "
        • Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs
        • " + // "
        • Maintaining a view of supported Near-RT RIC policy types
        • " + // - "
        • Supervision of using services (R-APPs). When a service is unavailble, its policies are removed.
        • " + // + "
        • Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.
        • " + // "
        " + // "

        APIs provided by the service

        " + // H3 + PolicyController.API_NAME + H3_END + // @@ -75,14 +75,14 @@ public class SwaggerConfig { "

        API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.

        " + // H3 + Consts.V2_API_SERVICE_CALLBACKS_NAME + H3_END + // - "

        These are endpoints that are invoked by this service. The callbacks are registerred in this service at service registration.

        " + "

        These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.

        " + // H3 + RicRepositoryController.API_NAME + H3_END + // "

        This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.

        " + H3 + StatusController.API_NAME + H3_END + // "

        API used for supervision of the PMS component.

        " + // H3 + ServiceController.API_NAME + H3_END + // - "

        API used for registerring services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registerred service and will automatically remove policies for unavailable services.

        "; + "

        API used for registering services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registered service and will automatically remove policies for unavailable services.

        "; public static final String VERSION = "1.1.0"; } diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java index 7449e94d..b619e44b 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java @@ -33,7 +33,7 @@ import org.immutables.gson.Gson; @Schema(name = "policytype_v2", description = "Policy type") public class PolicyTypeInfo { - @Schema(description = "Policy type json scema. The schema is a json object following http://json-schema.org/draft-07/schema") + @Schema(description = "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema") @SerializedName("policy_schema") @JsonProperty("policy_schema") public final Object schema; diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java index def388ac..9e2644ad 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java @@ -68,8 +68,8 @@ public class RicRepositoryController { private static final String GET_RIC_BRIEF = "Returns info for one Near-RT RIC"; private static final String GET_RIC_DETAILS = - "Either a Near-RT RIC identity or a Mananged Element identity can be specified.
        " // - + "The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU)."; + "Either a Near-RT RIC identity or a Managed Element identity can be specified.
        " // + + "The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU)."; /** * Example: http://localhost:8081/v2/rics/ric?managed_element_id=kista_1 diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceController.java index 7f342150..faa152ca 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceController.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceController.java @@ -178,7 +178,7 @@ public class ServiceController { } @Operation(summary = "Heartbeat indicates that the service is running", - description = "A registerred service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service will be deregisterred and all its policies are removed.") + description = "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)") @ApiResponses(value = { // @ApiResponse(responseCode = "200", description = "Service supervision timer refreshed, OK"), // @ApiResponse(responseCode = "404", description = "The service is not found, needs re-registration", diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceRegistrationInfo.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceRegistrationInfo.java index 16f1f163..17277c9a 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceRegistrationInfo.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceRegistrationInfo.java @@ -36,11 +36,11 @@ public class ServiceRegistrationInfo { @JsonProperty("service_id") public String serviceId = ""; - @Schema(description = "keep alive interval for the service. This is a heartbeat supervision of the service, " - + "which in regular intevals must invoke a 'keepalive' REST call. " - + "When a service does not invoke this call within the given time, it is considered unavailble. " + @Schema(description = "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. " + + "If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. " + + "When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. " + "An unavailable service will be automatically deregistered and its policies will be deleted. " - + "Value 0 means no timeout supervision.") + + "Value 0 means timeout supervision is disabled.") @SerializedName("keep_alive_interval_seconds") @JsonProperty("keep_alive_interval_seconds") public long keepAliveIntervalSeconds = 0; diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java index d9c724fc..371bd959 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java @@ -78,7 +78,7 @@ public class RappSimulatorController { @Getter private TestResults testResults = new TestResults(); - private static final String CALLBACK_DESCRIPTION = "The URL to this call is registerred at Service registration."; + private static final String CALLBACK_DESCRIPTION = "The URL to this call is registered at Service registration."; @PostMapping(path = SERVICE_CALLBACK_URL, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Callback for Near-RT RIC status", description = CALLBACK_DESCRIPTION) diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst index 1e0f0691..a9facd53 100755 --- a/docs/architecture/architecture.rst +++ b/docs/architecture/architecture.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2021 Nordix Foundation +.. Copyright 2022 Nordix Foundation .. _architecture: @@ -16,9 +16,9 @@ The CCSDK ORAN components add support for handling "A1 Policies" as defined for The O-RAN A1 interface is defined by the `O-RAN Alliance `_ -********************************************* -Architecture for ONAP Honolulu release -********************************************* +******************* +Architecture Review +******************* This picture provides a overview of ONAP's A1 Controller architecture, integration with other ONAP components and API resource/operation provided. diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst index b572bc49..b7c42a97 100755 --- a/docs/consumedapis/consumedapis.rst +++ b/docs/consumedapis/consumedapis.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2021 Nordix Foundation +.. Copyright 2022 Nordix Foundation Consumed APIs ============= @@ -9,18 +9,21 @@ Policy Management Service application is interacting with two ONAP APIs and the ********* -DMAAP API +DMaaP API ********* The A1 Policy Management Service API can also be accessed using *ONAP DMaaP*. To support this the `DMaaP Message Router API `_ is used. ***************************************** -O-RAN A1 interface for A1 Policies (A1-P) +O-RAN A1 Interface for A1 Policies (A1-P) ***************************************** Southbound, the ONAP A1 Policy functions communicate with *near-RT-RIC* RAN functions using the **A1** interface, as defined by the `O-RAN Alliance `_ The *A1 Interface - Application Protocol Specification (A1-AP)* describe this interface. The specification can be viewed from the `O-RAN Alliance `_ website. - -An opensource implementation of a `near-RT-RIC `_ is available from `O-RAN Software Community `_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (A1-OSC). +The **Jakarta** ONAP A1 Policy functions implement the *A1 Policy* parts (*A1-P*) of A1-AP versions *v1.1*, *v2.0* and *v3.0* + +An opensource implementation of a `near-RT-RIC `_ is available from the `O-RAN Software Community `_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (A1-OSC). + +An opensource implementation of an `A1 Simulator `_ is also available from the `O-RAN Software Community `_. It supports all versions of A1-AP. diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index 29c9f91d..866f6212 100644 --- a/docs/guide/developer-guide.rst +++ b/docs/guide/developer-guide.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2021 Nordix Foundation. +.. Copyright (C) 2022 Nordix Foundation. .. _developer_guide: @@ -13,7 +13,7 @@ Source tree +++++++++++ This provides CCSDK with "A1 Policy Management Service" and "A1 Adapter" functions. -Each resource is implemented independently in a package corresponding to its name. +Each resource is implemented independently in a sub-directory corresponding to its name. A1 Policy Management Service ++++++++++++++++++++++++++++ @@ -34,7 +34,7 @@ A1 Policy Management Service provides a REST API for management of policies. It The Policy Management Service can be accessed over the REST API, and with an equivalent interface using DMaaP. See :ref:`pms_api` for more information about the API. -The configured A1 policies are stored presistently to survive a service restart. +The configured A1 policies are stored persistently to survive a service restart. Dependencies ------------ @@ -42,19 +42,28 @@ Dependencies This project uses various frameworks which are managed with Maven dependency management tool (see *pom.xml* file at root level) : +- Swagger annotations +- `Spring Framework `_ +- `Springfox `_ Automated JSON API documentation for APIs built with Spring +- `Immutable `_ to generate simple, safe and consistent value objects +- `JSON in Java `_ to parse JSON documents into Java objects +- `Apache Commons Net `_ for network utilities and protocol implementations +- `Lombok `_ to generate code, such as getters and setters +- `Awaitility `_ to test asynchronous functionality + To get a complete list of all dependencies, use command "mvn dependency:tree". Configuration ------------- There are two configuration files for A1 Policy Management Service, *config/application_configuration.json* and *config/application.yaml* -The first one contains configuration of data needed by the application, such as which Near-RT RICs -that are available. The second contains logging and security configurations. +The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, controller, or DMaaP topic to use. +The second (*config/application.yaml*) contains logging and security configurations. -For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki `_ +For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki `_ -Static configuration (application.yaml) ---------------------------------------- +Static configuration - Settings that cannot be changed at runtime (*application.yaml*) +-------------------------------------------------------------------------------------- The file *./config/application.yaml* is read by the application at startup. It provides the following configurable features: @@ -67,18 +76,27 @@ The file *./config/application.yaml* is read by the application at startup. It p * SSL parameters for setting up using of key store and trust store databases. * Usage of HTTP(S) Proxy; if configured, the proxy will be used for southbound access to the NearRT-RICs - * logging; setting of of which information that is logged. + * logging; setting for which information is logged. + * auth-token; optional authorization token to use for REST call. * filepath; the local path to a file used for dynamic configuration (if used). See next chapter. For details about the parameters in this file, see documentation in the file. -Dynamic configuration ---------------------- - -The component has configuration that can be updated in runtime. This configuration is loaded from a file (accessible from the container). The configuration is re-read and refreshed at regular intervals. This file based configuration can be updated or read via the REST API, See :ref:`pms_api`. +Dynamic configuration - Settings that can be changed at runtime (*application_configuration.json* or REST or ConfigMap) +------------------------------------------------------------------------------------------------------------------------------- +The component has configuration that can be updated in runtime. This configuration can either be loaded from a file (accessible from the container), or from a CBS/Consul database (Cloudify), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals. The configuration includes: + * Optional Controller configuration, e.g. an SDNC instance (with A1-Adapter) + * One entry for each near-RT-RIC, which includes: + + * The base URL of the near-RT-RIC + * A optional list of O1 identifiers that near-RT-RIC is controlling. An application can query this service which near-RT-RIC should be addressed for which component (e.g. cells, sectors, locations, etc.) . + * An optional reference to the controller to use, or excluded if the near-RT-RIC should be accessed directly from the A1 Policy Management Service. + + * Optional configuration for using of DMaaP. There can be one stream for requests to the component and an other stream for responses. + * Controller configuration, which includes information on how to access the a1-adapter * One entry for each NearRT-RIC, which includes: @@ -86,40 +104,34 @@ The configuration includes: * A list of O1 identifiers that the NearRT RIC is controlling. An application can query this service which NearRT RIC should be addressed for controlling (for instance) a given Cell. * An optional reference to the controller to use, or excluded if the NearRT-RIC can be accessed directly from this component. - * Optional configuration for using of DMAAP. There can be one stream for requests to the component and an other stream for responses. + * Optional configuration for using of DMaaP. There can be one stream for requests to the component and an other stream for responses. For details about the syntax of the file, there is an example in source code repository */config/application_configuration.json*. This file is also included in the docker container */opt/app/policy-agent/data/application_configuration.json_example*. -Configuration of certs ----------------------- - -The Policy Management Service uses the default keystore and truststore that are built into the container. The paths and -passwords for these stores are located in a yaml file: :: +Configuring certificates +------------------------ - oran/a1-policy-management/config/application.yaml +The A1 Policy Management Service uses the default keystore and truststore that are built into the container. The paths and +passwords for these stores are located in a yaml file, with an example is provided in the source code repository *a1-policy-management/config/application.yaml* There is also Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing -(ApplicationTest.java). +(*ApplicationTest.java*). -The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the "volumes" -field of docker-compose or docker run command. - -Assuming that the keystore, truststore, and application.yaml files are located in the same directory as docker-compose, +The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the the docker "volumes" +command for docker-compose or docker run command. Assuming that the keystore, truststore, and application.yaml files are located in the same directory as docker-compose, the volumes field should have these entries: :: `volumes:` `- ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro` - `- ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro` - `- ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro` The target paths in the container should not be modified. Example docker run command for mounting new files (assuming they are located in the current directory): :: - docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" onap/ccsdk-oran-a1policymanagementservice:1.2.0-SNAPSHOT + docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" onap/ccsdk-oran-a1policymanagementservice:1.4.0-SNAPSHOT A1 Adapter (Internal) +++++++++++++++++++++ @@ -132,8 +144,11 @@ Configuration of HTTP Proxy --------------------------- In order to configure a HTTP Proxy for southbound connections: - * Modify file: odlsli/src/main/properties/a1-adapter-api-dg.properties in CCSDK/distribution - * Variable a1Mediator.proxy.url must contain Proxy URL + * Modify file: *odlsli/src/main/properties/a1-adapter-api-dg.properties*. This file is found in CCSDK/distribution for SDNC. + * In a running container this file is found at */opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties* + * Variable a1Mediator.proxy.url must contain the full Proxy URL + +After this configuration has been changed the A1 adapter needs to be either rebuilt, or restarted if the configuration is changed inside a container, or re-read by the container if externally accessible (e.g. K8s ConfigMap). diff --git a/docs/humaninterfaces/humaninterfaces.rst b/docs/humaninterfaces/humaninterfaces.rst index 9f1ea579..be271b43 100644 --- a/docs/humaninterfaces/humaninterfaces.rst +++ b/docs/humaninterfaces/humaninterfaces.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright 2021 Nordix Foundation +.. Copyright 2022 Nordix Foundation Human Interfaces @@ -8,4 +8,4 @@ Human Interfaces The NON-RT RIC Control Panel in O-RAN-SC can be used to interact with the Policy Management Service. See `NON-RT RIC Control Panel repo `_ from the `O-RAN-SC NONRTRIC Project `_. -Any "Rest Client" application may be used (Postman, ...) to interact with the Policy Management Service application via the :ref:`pms_api` +Any "REST Client" application may be used (Postman, ...) to interact with the Policy Management Service application via the :ref:`pms_api` diff --git a/docs/index.rst b/docs/index.rst index 613ff566..c5be7965 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright 2020 Nordix Foundation. +.. Copyright 2022 Nordix Foundation. .. _master_index: ccsdk/oran diff --git a/docs/media/ONAP-A1ControllerArchitecture.png b/docs/media/ONAP-A1ControllerArchitecture.png index ded44fbc884cb143b97da2c864dd56bb055053f2..2d521ef285e4bff93a2f81ab4a11f53fb38bf841 100644 GIT binary patch literal 75211 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 ~ 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 IApeDe%NI-cb>n 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 JA{k@9{|65?+Q9$- literal 79142 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 diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst index 1ef7dd0c..28f00835 100644 --- a/docs/offeredapis/offeredapis.rst +++ b/docs/offeredapis/offeredapis.rst @@ -1,7 +1,7 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright 2020 Nordix Foundation +.. Copyright 2022 Nordix Foundation .. _offered_apis: @@ -12,7 +12,7 @@ Offered APIs Introduction ------------ -The north bound REST API of the A1 Policy Management Service provides convenient methods to handle policies. +The north-bound REST API of the A1 Policy Management Service provides convenient methods to handle A1 policies. Overall architecture for O-RAN A1 Policy functions diff --git a/docs/offeredapis/swagger/a1-adapter-api.yaml b/docs/offeredapis/swagger/a1-adapter-api.yaml index 1db84156..65e1ebf5 100644 --- a/docs/offeredapis/swagger/a1-adapter-api.yaml +++ b/docs/offeredapis/swagger/a1-adapter-api.yaml @@ -8,7 +8,7 @@ info: email: nonrtric@est.tech description: >- The O-RAN A1 Adapter provides an internal REST API for management of A1 - policices, useful for test and verification. Note! For production, + policies, useful for test and verification. Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html should be used! diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json index 2b8fb739..9fc8e7bb 100644 --- a/docs/offeredapis/swagger/pms-api.json +++ b/docs/offeredapis/swagger/pms-api.json @@ -79,7 +79,7 @@ }, "keep_alive_interval_seconds": { "format": "int64", - "description": "keep alive interval for the service. This is a heartbeat supervision of the service, which in regular intevals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, it is considered unavailble. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision.", + "description": "keep alive interval for the service. This is a heartbeat supervision of the service, which in regular intervals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, it is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision.", "type": "integer" } } @@ -144,7 +144,7 @@ "description": "Policy type", "type": "object", "properties": {"policy_schema": { - "description": "Policy type json scema. The schema is a json object following http://json-schema.org/draft-07/schema", + "description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema", "type": "object" }} }, @@ -335,7 +335,7 @@ }}, "/a1-policy/v2/rics/ric": {"get": { "summary": "Returns info for one Near-RT RIC", - "description": "Either a Near-RT RIC identity or a Mananged Element identity can be specified.
        The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", + "description": "Either a Near-RT RIC identity or a Managed Element identity can be specified.
        The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", "operationId": "getRic", "responses": { "200": { @@ -559,7 +559,7 @@ }, "/a1-policy/v2/services/{service_id}/keepalive": {"put": { "summary": "Heartbeat indicates that the service is running", - "description": "A registerred service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service will be deregisterred and all its policies are removed.", + "description": "A registered service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service will be deregistered and all its policies are removed.", "operationId": "keepAliveService", "responses": { "200": { @@ -798,7 +798,7 @@ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}}, "required": true }, - "description": "The URL to this call is registerred at Service registration.", + "description": "The URL to this call is registered at Service registration.", "operationId": "serviceCallback", "responses": {"200": { "description": "OK", @@ -867,7 +867,7 @@ "name": "Copyright (C) 2020-2022 Nordix Foundation. Licensed under the Apache License.", "url": "http://www.apache.org/licenses/LICENSE-2.0" }, - "description": "

        General<\/h2>

        The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices.
        The main tasks of the service are:<\/p>

        • A1 Policy creation, modification and deletion.<\/li>
        • Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li>
        • Maintaining a view of supported Near-RT RIC policy types<\/li>
        • Supervision of using services (R-APPs). When a service is unavailble, its policies are removed.<\/li><\/ul>

          APIs provided by the service<\/h2>

          A1 Policy Management<\/h3>

          This is an API for management of A1 Policies.<\/p>

          • A1 Policy retrieval, creation, modification and deletion.<\/li>
          • Retrieval of supported A1 Policy types for a Near-RT RIC<\/li>
          • Retrieval of status for existing A1 policies<\/li><\/ul>

            Management of configuration<\/h3>

            API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p>

            Callbacks<\/h3>

            These are endpoints that are invoked by this service. The callbacks are registerred in this service at service registration.<\/p>

            NearRT-RIC Repository<\/h3>

            This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p>

            Health Check<\/h3>

            API used for supervision of the PMS component.<\/p>

            Service Registry and Supervision<\/h3>

            API used for registerring services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registerred service and will automatically remove policies for unavailable services.<\/p>", + "description": "

            General<\/h2>

            The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies.
            The main tasks of the service are:<\/p>

            • A1 Policy creation, modification and deletion.<\/li>
            • Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li>
            • Maintaining a view of supported Near-RT RIC policy types<\/li>
            • Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.<\/li><\/ul>

              APIs provided by the service<\/h2>

              A1 Policy Management<\/h3>

              This is an API for management of A1 Policies.<\/p>

              • A1 Policy retrieval, creation, modification and deletion.<\/li>
              • Retrieval of supported A1 Policy types for a Near-RT RIC<\/li>
              • Retrieval of status for existing A1 policies<\/li><\/ul>

                Management of configuration<\/h3>

                API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p>

                Callbacks<\/h3>

                These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.<\/p>

                NearRT-RIC Repository<\/h3>

                This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p>

                Health Check<\/h3>

                API used for supervision of the PMS component.<\/p>

                Service Registry and Supervision<\/h3>

                API used for registering services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registered service and will automatically remove policies for unavailable services.<\/p>", "title": "A1 Policy management service", "version": "1.1.0" }, diff --git a/docs/offeredapis/swagger/pms-api.yaml b/docs/offeredapis/swagger/pms-api.yaml index 958ec0d4..3fd496bd 100644 --- a/docs/offeredapis/swagger/pms-api.yaml +++ b/docs/offeredapis/swagger/pms-api.yaml @@ -2,23 +2,23 @@ openapi: 3.0.1 info: title: A1 Policy management service description:

                General

                The O-RAN Non-RT RIC Policy Management Service provides - a REST API for management of A1 policices.
                The main tasks of the service - are:

                • A1 Policy creation, modification and deletion.
                • Monitoring - and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs
                • Maintaining + a REST API for management of A1 policies.
                  The main tasks of the service are:

                  • A1 + Policy creation, modification and deletion.
                  • Monitoring and maintaining + consistency of the SMO view of A1 policies and the Near-RT RICs
                  • Maintaining a view of supported Near-RT RIC policy types
                  • Supervision of using services - (R-APPs). When a service is unavailble, its policies are removed.

                  APIs + (R-APPs). When a service is unavailable, its policies are removed.

                APIs provided by the service

                A1 Policy Management

                This is an API for management of A1 Policies.

                • A1 Policy retrieval, creation, modification and deletion.
                • Retrieval of supported A1 Policy types for a Near-RT RIC
                • Retrieval of status for existing A1 policies

                Management of configuration

                API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.

                Callbacks

                These are endpoints - that are invoked by this service. The callbacks are registerred in this service + that are invoked by this service. The callbacks are registered in this service at service registration.

                NearRT-RIC Repository

                This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.

                Health Check

                API used for supervision of the PMS component.

                Service - Registry and Supervision

                API used for registerring services that uses PMS. - Each A1 policy is owned by a service. PMS can supervise each registerred service + Registry and Supervision

              API used for registering services that uses PMS. + Each A1 policy is owned by a service. PMS can supervise each registered service and will automatically remove policies for unavailable services.

              license: name: Copyright (C) 2020-2022 Nordix Foundation. Licensed under the Apache License. @@ -152,8 +152,8 @@ paths: tags: - NearRT-RIC Repository summary: Returns info for one Near-RT RIC - description: Either a Near-RT RIC identity or a Mananged Element identity can - be specified.
              The intention with Mananged Element identity is the ID used + description: Either a Near-RT RIC identity or a Managed Element identity can + be specified.
              The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU). operationId: getRic parameters: @@ -434,9 +434,9 @@ paths: tags: - Service Registry and Supervision summary: Heartbeat indicates that the service is running - description: A registerred service must call this in regular intervals to indicate + description: A registered service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that the service - will be deregisterred and all its policies are removed. + will be deregistered and all its policies are removed. operationId: keepAliveService parameters: - name: service_id @@ -742,7 +742,7 @@ paths: tags: - Callbacks summary: Callback for Near-RT RIC status - description: The URL to this call is registerred at Service registration. + description: The URL to this call is registered at Service registration. operationId: serviceCallback requestBody: content: @@ -897,9 +897,9 @@ components: keep_alive_interval_seconds: type: integer description: keep alive interval for the service. This is a heartbeat supervision - of the service, which in regular intevals must invoke a 'keepalive' REST + of the service, which in regular intervals must invoke a 'keepalive' REST call. When a service does not invoke this call within the given time, - it is considered unavailble. An unavailable service will be automatically + it is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision. format: int64 @@ -955,7 +955,7 @@ components: properties: policy_schema: type: object - description: Policy type json scema. The schema is a json object following + description: Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema description: Policy type policytype_id_list_v2: diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst index 5a3eec01..5450e15f 100644 --- a/docs/releasenotes/release-notes.rst +++ b/docs/releasenotes/release-notes.rst @@ -1,7 +1,7 @@ .. This work is licensed under a Creative Commons Attribution .. 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2020 Nordix Foundation. +.. Copyright (C) 2022 Nordix Foundation. .. _release_notes: ============= @@ -37,6 +37,24 @@ Version history Policy Management Service | 2021-02-23 | 1.1.1 | Dan Timoney | M3 version, | | | | | Honolulu Release | +------------+----------+-------------+-------------------+ +| 2021-03-25 | 1.1.2 | Dan Timoney | RC0 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-04-05 | 1.1.3 | Dan Timoney | RC1 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-04-19 | 1.1.4 | Dan Timoney | RC2 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-05-10 | 1.1.5 | Dan Timoney | Final version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-09-02 | 1.2.0 | Dan Timoney | M3 version, | +| | | | Istanbul Release | ++------------+----------+-------------+-------------------+ +| 2021-09-16 | 1.2.1 | Dan Timoney | M4 version, | +| | | | Istanbul Release | ++------------+----------+-------------+-------------------+ | 2021-08-31 | 1.2.0 | Dan Timoney | RC1 version, | | | | | Istanbul Release | +------------+----------+-------------+-------------------+ @@ -66,6 +84,21 @@ Version history A1 Adapter | 2021-02-23 | 1.1.1 | Dan Timoney | M3 version, | | | | | Honolulu Release | +------------+----------+-------------+-------------------+ +| 2021-03-25 | 1.1.2 | Dan Timoney | RC0 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-04-05 | 1.1.3 | Dan Timoney | RC1 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-04-19 | 1.1.4 | Dan Timoney | RC2 version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-05-10 | 1.1.5 | Dan Timoney | Final version, | +| | | | Honolulu Release | ++------------+----------+-------------+-------------------+ +| 2021-09-02 | 1.2.0 | Dan Timoney | M3 version, | +| | | | Istanbul Release | ++------------+----------+-------------+-------------------+ | 2021-08-31 | 1.2.0 | Dan Timoney | RC1 version, | | | | | Istanbul Release | +------------+----------+-------------+-------------------+ @@ -171,22 +204,117 @@ Honolulu, M3 | | | +-----------------------------+-----------------------------------------------------+ -Istanbul, RC1 +Honolulu, RC0 +------------- ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/e9e8fda7dc7facf288d1652152ceb358977c1006 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Honolulu | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2021-03-25 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements in ORAN, RC0 version | +| | | ++-----------------------------+-----------------------------------------------------+ + +Honolulu, RC1 +------------- ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/a17d643fcee3240c98bf3e101c1eac5a2b53119a | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Honolulu | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2021-04-05 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements in ORAN, RC1 version | +| | | ++-----------------------------+-----------------------------------------------------+ + +Honolulu, RC2 ------------- +-----------------------------+-----------------------------------------------------+ | **Project** | CCSDK ORAN | | | | +-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/b4f33c2d6fef60df2e48d81e2f7cdbf6a66cb30d | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Honolulu | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2021-04-19 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements in ORAN, RC2 version | +| | | ++-----------------------------+-----------------------------------------------------+ + +Honolulu, Final version +----------------------- ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/9f99c19662c8190ad821144f3f4406c60d48025c | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Honolulu | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2021-05-10 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements in ORAN, Final version | +| | | ++-----------------------------+-----------------------------------------------------+ + +Istanbul, M3 +------------ ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ | **Repo/commit-ID** | ccsdk-oran/8a70f00cc986df657ddd3ab92f449f9e1690cf62 | | | | +-----------------------------+-----------------------------------------------------+ | **Release designation** | Istanbul | | | | +-----------------------------+-----------------------------------------------------+ -| **Release date** | 2021-08-31 | +| **Release date** | 2021-09-02 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Improvements in ORAN, M3 version | +| | | ++-----------------------------+-----------------------------------------------------+ + +Istanbul, M4 +------------ ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/9241d1d555884ba2d28eab9ed692f50a660ba2a5 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Istanbul | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2021-09-16 | | | | +-----------------------------+-----------------------------------------------------+ -| **Purpose of the delivery** | Persistent storage, RC1 version | +| **Purpose of the delivery** | Improvements in ORAN, M4 version | | | | +-----------------------------+-----------------------------------------------------+ -- 2.16.6