summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Rics.java5
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java12
-rwxr-xr-xdocs/architecture/architecture.rst33
-rwxr-xr-xdocs/consumedapis/consumedapis.rst18
-rw-r--r--docs/guide/developer-guide.rst49
-rw-r--r--docs/humaninterfaces/humaninterfaces.rst11
-rw-r--r--docs/index.rst7
-rwxr-xr-xdocs/media/o-ran-onap-integration.pngbin0 -> 218436 bytes
-rwxr-xr-xdocs/media/yaml_logo.pngbin0 -> 3477 bytes
-rw-r--r--docs/offeredapis/offeredapis.rst9
-rw-r--r--docs/offeredapis/swagger/pms-api.yaml842
-rw-r--r--docs/releasenotes/release-notes.rst (renamed from docs/release-notes.rst)0
12 files changed, 970 insertions, 16 deletions
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Rics.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Rics.java
index 75c16da1..b6ec7491 100644
--- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Rics.java
+++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Rics.java
@@ -27,6 +27,7 @@ import java.util.Optional;
import java.util.Vector;
import org.onap.ccsdk.oran.a1policymanagementservice.exceptions.ServiceException;
+import org.springframework.lang.Nullable;
/**
* Dynamic representation of all Rics in the system.
@@ -54,8 +55,8 @@ public class Rics {
return registeredRics.get(ricId);
}
- public synchronized void remove(String ricId) {
- registeredRics.remove(ricId);
+ public synchronized @Nullable Ric remove(String ricId) {
+ return registeredRics.remove(ricId);
}
public synchronized int size() {
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java
index 0fd16334..84cfe24a 100644
--- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java
+++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java
@@ -63,6 +63,7 @@ import org.springframework.stereotype.Component;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
+import reactor.util.annotation.Nullable;
/**
* Regularly refreshes the configuration from Consul or from a local
@@ -195,6 +196,14 @@ public class RefreshConfigTask {
return (filepath != null && (new File(filepath).exists()));
}
+ private void removePoliciciesInRic(@Nullable Ric ric) {
+ if (ric != null) {
+ RicSynchronizationTask synch =
+ new RicSynchronizationTask(this.a1ClientFactory, this.policyTypes, this.policies, this.services);
+ synch.run(ric);
+ }
+ }
+
private void handleUpdatedRicConfig(RicConfigUpdate updatedInfo) {
synchronized (this.rics) {
String ricId = updatedInfo.getRicConfig().ricId();
@@ -202,8 +211,9 @@ public class RefreshConfigTask {
if (event == RicConfigUpdate.Type.ADDED) {
addRic(updatedInfo.getRicConfig());
} else if (event == RicConfigUpdate.Type.REMOVED) {
- rics.remove(ricId);
+ Ric ric = rics.remove(ricId);
this.policies.removePoliciesForRic(ricId);
+ removePoliciciesInRic(ric);
} else if (event == RicConfigUpdate.Type.CHANGED) {
Ric ric = this.rics.get(ricId);
if (ric == null) {
diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst
new file mode 100755
index 00000000..3997950b
--- /dev/null
+++ b/docs/architecture/architecture.rst
@@ -0,0 +1,33 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+.. _architecture:
+
+
+Architecture
+============
+
+************
+Introduction
+************
+
+
+The CCSDK ORAN components provides handling of the O-RAN A1 interface.
+
+
+*********************************************
+Global NBI architecture for Frankfurt release
+*********************************************
+
+Following illustration provides a global view about Non-Real-Time-RIC architecture,
+integration with other ONAP components and API resource/operation provided.
+
+.. image:: ../media/o-ran-onap-integration.png
+ :width: 800pt
+
+
+***************
+Developer Guide
+***************
+
+Technical information about the ORAN components (dependencies, configuration, running & testing) could be found in :ref:`developer_guide`.
+
diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst
new file mode 100755
index 00000000..bcf7267e
--- /dev/null
+++ b/docs/consumedapis/consumedapis.rst
@@ -0,0 +1,18 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+
+Consumed APIs
+=============
+
+
+Policy Management Service application is interacting with one ONAP API.
+
+*******
+CBS API
+*******
+
+This API is used to get the dynamic configuration of the service, such as available Near-RT RICs.
+
+::
+
+ CBS_GET_ALL
diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst
index 18182543..b6d4ce88 100644
--- a/docs/guide/developer-guide.rst
+++ b/docs/guide/developer-guide.rst
@@ -2,23 +2,26 @@
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2020 Nordix Foundation.
+.. _developer_guide:
+
Developer Guide
===============
This document provides a quickstart for developers of the CCSDK ORAN parts.
-A1 Adapter
-++++++++++
+Source tree
++++++++++++
-TBD
+This application provides CCSDK Policy Management Service and A1 Adapter as main functional resources.
+Each resource is implemented independently in a package corresponding to its name.
-The A1 Adapter can be accessed over the REST API. See :ref:`offered_apis` for how to use the API.
+A1 Policy Management Service
+++++++++++++++++++++++++++++
+The CCSDK Policy Management Service (PMS) is a Java 11 web application built over Spring Framework.
+Using Spring Boot dependencies, it runs as a standalone application.
-A1 Policy Management
-++++++++++++++++++++
-
-The CCSDK Policy Management Service (PMS) provides a REST API for management of policices. It provides support for:
+PMS provides a REST API for management of policices. It provides support for:
* Supervision of clients (R-APPs) to eliminate stray policies in case of failure
* Consistency monitoring of the SMO view of policies and the actual situation in the RICs
@@ -31,8 +34,31 @@ The CCSDK Policy Management Service (PMS) provides a REST API for management of
The Policy Management Service can be accessed over the REST API. See :ref:`pms_api` for how to use the API.
+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 <https://github.com/spring-projects/spring-boot>`_
+- `Springfox <https://github.com/springfox/springfox>`_ Automated JSON API documentation for API's built with Spring
+- `Immutable <https://immutables.github.io/>`_ to generate simple, safe and consistent value objects
+- `JSON in Java <https://github.com/stleary/JSON-java>`_ to parse JSON documents into Java objects
+- `Apache Commons Net <https://github.com/apache/commons-net>`_ for network utilities and protocol implementations
+- `DCAE SDK <https://github.com/onap/dcaegen2-services-sdk>`_ to get configuration from CBS
+- `Lombok <https://github.com/rzwitserloot/lombok>`_ to generate code, such as getters and setters
+- `Awaitility <https://github.com/awaitility/awaitility>`_ to test asynchronous functionality
+
+Configuration
+-------------
+
+There are two configuration files for PMS, *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.
+
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:
oran/a1-policy-management/config/application.yaml
@@ -54,3 +80,10 @@ 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" o-ran-sc/nonrtric-policy-agent:2.1.0-SNAPSHOT`
+
+A1 Adapter
+++++++++++
+
+TBD
+
+The A1 Adapter can be accessed over the REST API. See :ref:`offered_apis` for how to use the API.
diff --git a/docs/humaninterfaces/humaninterfaces.rst b/docs/humaninterfaces/humaninterfaces.rst
new file mode 100644
index 00000000..ab7d421f
--- /dev/null
+++ b/docs/humaninterfaces/humaninterfaces.rst
@@ -0,0 +1,11 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+
+
+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 <https://gerrit.o-ran-sc.org/r/admin/repos/portal/nonrtric-controlpanel>`_.
+
+Any "Rest Client" application may be used (Postman, ...) to interact with the Policy Management Service application.
diff --git a/docs/index.rst b/docs/index.rst
index 65db2923..613ff566 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -10,6 +10,9 @@ ccsdk/oran
:maxdepth: 1
:caption: Contents:
- ./offeredapis/offeredapis.rst
+ ./architecture/architecture.rst
./guide/developer-guide.rst
- ./release-notes.rst
+ ./offeredapis/offeredapis.rst
+ ./consumedapis/consumedapis.rst
+ ./humaninterfaces/humaninterfaces.rst
+ ./releasenotes/release-notes.rst
diff --git a/docs/media/o-ran-onap-integration.png b/docs/media/o-ran-onap-integration.png
new file mode 100755
index 00000000..5c66ae62
--- /dev/null
+++ b/docs/media/o-ran-onap-integration.png
Binary files differ
diff --git a/docs/media/yaml_logo.png b/docs/media/yaml_logo.png
new file mode 100755
index 00000000..0492eb4b
--- /dev/null
+++ b/docs/media/yaml_logo.png
Binary files differ
diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst
index 7d32acb4..c3a7c95f 100644
--- a/docs/offeredapis/offeredapis.rst
+++ b/docs/offeredapis/offeredapis.rst
@@ -68,12 +68,15 @@ API Table
.. |swagger-icon| image:: ../media/swagger.png
:width: 40px
+.. |yaml-icon| image:: ../media/yaml_logo.png
+ :width: 40px
+
.. csv-table::
- :header: "API name", "|swagger-icon|"
- :widths: 10,5
+ :header: "API name", "|swagger-icon|", "|yaml-icon|"
+ :widths: 10,5, 5
- "PMS API", ":download:`link <./swagger/pms-api.json>`"
+ "PMS API", ":download:`link <./swagger/pms-api.json>`", ":download:`link <./swagger/pms-api.yaml>`"
.. _pms_api:
diff --git a/docs/offeredapis/swagger/pms-api.yaml b/docs/offeredapis/swagger/pms-api.yaml
new file mode 100644
index 00000000..ac10f4b6
--- /dev/null
+++ b/docs/offeredapis/swagger/pms-api.yaml
@@ -0,0 +1,842 @@
+openapi: 3.0.1
+info:
+ title: A1 Policy management service
+ description: 'The O-RAN Non-RT RIC PolicyAgent provides a REST API for management of policices. It provides support for: -Supervision of clients (R-APPs) to eliminate stray policies in case of failure -Consistency monitoring of the SMO view of policies and the actual situation in the RICs -Consistency monitoring of RIC capabilities (policy types) -Policy configuration. This includes: -One REST API towards all RICs in the network -Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. -Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC
+ of A1 policices.'
+ version: "1.0"
+servers:
+- url: https://localhost:8433/
+- url: http://localhost:8081/
+tags:
+- name: A1 Policy Management
+ description: Policy Controller
+- name: Health check
+ description: Status Controller
+- name: RIC Repository
+ description: Ric Repository Controller
+- name: Service registry and supervision
+ description: Service Controller
+paths:
+ /policies:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Query policies
+ operationId: getPoliciesUsingGET
+ parameters:
+ - name: ric
+ in: query
+ description: The name of the Near-RT RIC to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'ric1'
+ - name: service
+ in: query
+ description: The name of the service to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'controlpanel'
+ - name: type
+ in: query
+ description: The name of the policy type to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: '1'
+ responses:
+ 200:
+ description: Policies
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/PolicyInfo'
+ examples:
+ OSC:
+ $ref: '#/components/examples/Policies-OSC'
+ STD:
+ $ref: '#/components/examples/Policies-STD'
+ 404:
+ description: RIC or type not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: RIC not found
+ deprecated: false
+ /policy:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Returns a policy configuration
+ operationId: getPolicyUsingGET
+ parameters:
+ - name: id
+ in: query
+ description: The identity of the policy instance.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
+ responses:
+ 200:
+ description: Policy found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: object
+ examples:
+ OSC:
+ $ref: '#/components/examples/Policy-OSC'
+ STD:
+ $ref: '#/components/examples/Policy-STD'
+ 404:
+ description: Policy is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Could not find policy: e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
+ deprecated: false
+ put:
+ tags:
+ - A1 Policy Management
+ summary: Put a policy
+ operationId: putPolicyUsingPUT
+ parameters:
+ - name: id
+ in: query
+ description: The identity of the policy instance.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: '73428e58-1670-4972-8498-e7e8f1003631'
+ - name: ric
+ in: query
+ description: The name of the Near-RT RIC where the policy will be created.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'ric1'
+ - name: service
+ in: query
+ description: The name of the service creating the policy.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'Service1'
+ - name: transient
+ in: query
+ description: If the policy is transient or not (boolean defaulted to false).
+ A policy is transient if it will be forgotten when the service needs to
+ reconnect to the Near-RT RIC.
+ allowEmptyValue: false
+ schema:
+ type: boolean
+ default: false
+ example: false
+ - name: type
+ in: query
+ description: The name of the policy type. The policy type is mandatory for OSC A1 version and should not be provided for STD A1 version.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'STD_PolicyModelUnconstrained_0.2.0'
+ requestBody:
+ description: jsonBody
+ content:
+ application/json:
+ schema:
+ type: object
+ example:
+ scope:
+ qosId: "3"
+ ueId: "1"
+ statement:
+ priorityLevel: 1
+ required: true
+ responses:
+ 200:
+ description: Policy updated
+ 201:
+ description: Policy created
+ 404:
+ description: RIC or policy type is not found
+ 423:
+ description: RIC is not operational
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Ric is not operational, RIC name:ric1, state:UNAVAILABLE'
+ delete:
+ tags:
+ - A1 Policy Management
+ summary: Delete a policy
+ operationId: deletePolicyUsingDELETE
+ parameters:
+ - name: id
+ in: query
+ description: The identity of the policy instance.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: '73428e58-1670-4972-8498-e7e8f1003631'
+ responses:
+ 200:
+ description: OK
+ 204:
+ description: Policy deleted
+ 404:
+ description: Policy is not found
+ 423:
+ description: RIC is not operational
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Ric is not operational, RIC name:ric1,state:UNAVAILABLE'
+ deprecated: false
+ /policy_ids:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Query policies, only IDs returned
+ operationId: getPolicyIdsUsingGET
+ parameters:
+ - name: ric
+ in: query
+ description: The name of the Near-RT RIC to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'ric1'
+ - name: service
+ in: query
+ description: The name of the service to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'Service1'
+ - name: type
+ in: query
+ description: The name of the policy type to get policies for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: '1'
+ responses:
+ 200:
+ description: Policy ids
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ items:
+ type: string
+ examples:
+ OSC:
+ value:
+ - 73428e58-1670-4972-8498-e7e8f1003631
+ - 73428e58-1670-4972-8498-e7e8f100363e
+ STD:
+ value:
+ - 73428e58-1670-4972-8498-e7e8f1003632
+ - 73428e58-1670-4972-8498-e7e8f1003634
+ 404:
+ description: RIC or type not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: RIC not found
+ deprecated: false
+ /policy_schema:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Returns one policy type schema definition. Applicable only for OSC Version.
+ operationId: getPolicySchemaUsingGET
+ parameters:
+ - name: id
+ in: query
+ description: The identity of the policy type to get the definition for.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: '11'
+ responses:
+ 200:
+ description: Policy schema
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: object
+ examples:
+ OSC:
+ value:
+ $schema: http://json-schema.org/draft-07/schema#
+ description: QoS policy type
+ title: "1"
+ type: object
+ properties:
+ scope:
+ additionalProperties: false
+ type: object
+ properties:
+ qosId:
+ type: string
+ ueId:
+ type: string
+ required:
+ - ueId
+ - qosId
+ statement:
+ additionalProperties: false
+ type: object
+ properties:
+ priorityLevel:
+ type: number
+ required:
+ - priorityLevel
+ 404:
+ description: Type not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+ not find type: 11'
+ deprecated: false
+ /policy_schemas:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Returns policy type schema definitions
+ operationId: getPolicySchemasUsingGET
+ parameters:
+ - name: ric
+ in: query
+ description: The name of the Near-RT RIC to get the definitions for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: ric1
+ responses:
+ 200:
+ description: Policy schemas
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ items:
+ type: object
+ properties: {}
+ examples:
+ OSC:
+ value:
+ - $schema: http://json-schema.org/draft-07/schema#
+ description: QoS policy type
+ title: "1"
+ type: object
+ properties:
+ scope:
+ additionalProperties: false
+ type: object
+ properties:
+ qosId:
+ type: string
+ ueId:
+ type: string
+ required:
+ - ueId
+ - qosId
+ statement:
+ additionalProperties: false
+ type: object
+ properties:
+ priorityLevel:
+ type: number
+ required:
+ - priorityLevel
+ 404:
+ description: RIC is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+ not find ric: ric1'
+ deprecated: false
+ /policy_status:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Returns a policy status
+ operationId: getPolicyStatusUsingGET
+ parameters:
+ - name: id
+ in: query
+ description: The identity of the policy.
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 73428e58-1670-4972-8498-e7e8f100363q
+ responses:
+ 200:
+ description: Policy status
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: object
+ examples:
+ OSC:
+ value:
+ instance_status: NOT IN EFFECT
+ has_been_deleted: "false"
+ created_at: 07/20/2020, 17:15:39
+ STD:
+ value:
+ enforceStatus: UNDEFINED
+ 404:
+ description: Policy is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Could not find policy: 73428e58-1670-4972-8498-e7e8f100363q'
+ deprecated: false
+ /policy_types:
+ get:
+ tags:
+ - A1 Policy Management
+ summary: Query policy type names
+ operationId: getPolicyTypesUsingGET
+ parameters:
+ - name: ric
+ in: query
+ description: The name of the Near-RT RIC to get types for.
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'ric11'
+ responses:
+ 200:
+ description: Policy type names
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ items:
+ type: string
+ examples:
+ OSC:
+ value:
+ - "1"
+ 404:
+ description: RIC is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+ not find ric: ric11'
+ deprecated: false
+ /ric:
+ get:
+ tags:
+ - RIC Repository
+ summary: Returns the name of a RIC managing one Mananged Element
+ operationId: getRicUsingGET
+ parameters:
+ - name: managedElementId
+ in: query
+ description: The identity of the Managed Element
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'Node 1'
+ responses:
+ 200:
+ description: RIC is found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: ric1
+ 404:
+ description: RIC is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: No RIC found
+ deprecated: false
+ /rics:
+ get:
+ tags:
+ - RIC Repository
+ summary: Query Near-RT RIC information
+ operationId: getRicsUsingGET
+ parameters:
+ - name: policyType
+ in: query
+ description: The name of the policy type
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'STD_PolicyModelUnconstrained_0.2.0'
+ responses:
+ 200:
+ description: OK
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/RicInfo'
+ 404:
+ description: Policy type is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: Policy type not found
+ deprecated: false
+ /service:
+ put:
+ tags:
+ - Service registry and supervision
+ summary: Register a service
+ operationId: putServiceUsingPUT
+ requestBody:
+ description: registrationInfo
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ServiceRegistrationInfo'
+ required: true
+ responses:
+ 200:
+ description: Service updated
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: OK
+ 201:
+ description: Service created
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: OK
+ 400:
+ description: The ServiceRegistrationInfo is not accepted
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: Missing mandatory parameter 'serviceName'
+ 404:
+ description: Not Found
+ deprecated: false
+ x-codegen-request-body-name: registrationInfo
+ /services:
+ get:
+ tags:
+ - Service registry and supervision
+ summary: Returns service information
+ operationId: getServicesUsingGET
+ parameters:
+ - name: name
+ in: query
+ description: The name of the service
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'service1'
+ responses:
+ 200:
+ description: OK
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: array
+ example:
+ - serviceName: "service1"
+ keepAliveIntervalSeconds: 1000
+ timeSinceLastActivitySeconds: 7
+ callbackUrl: http://localhost:8080
+ items:
+ $ref: '#/components/schemas/ServiceStatus'
+ 404:
+ description: Service is not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: Service not found
+ deprecated: false
+ delete:
+ tags:
+ - Service registry and supervision
+ summary: Delete a service
+ operationId: deleteServiceUsingDELETE
+ parameters:
+ - name: name
+ in: query
+ description: The name of the service
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'service1'
+ responses:
+ 200:
+ description: OK
+ 204:
+ description: OK
+ 404:
+ description: Service not found
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Could not find service: service1'
+ deprecated: false
+ /services/keepalive:
+ put:
+ tags:
+ - Service registry and supervision
+ summary: Heartbeat from a serice
+ operationId: keepAliveServiceUsingPUT
+ parameters:
+ - name: name
+ in: query
+ description: The name of the service
+ required: true
+ allowEmptyValue: false
+ schema:
+ type: string
+ example: 'service1'
+ responses:
+ 200:
+ description: Service supervision timer refreshed, OK
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: OK
+ 201:
+ description: Created
+ 404:
+ description: The service is not found, needs re-registration
+ content:
+ text/plain;charset=ISO-8859-1:
+ schema:
+ type: string
+ example: 'Could not find service: service1'
+ deprecated: false
+ /status:
+ get:
+ tags:
+ - Health check
+ summary: Returns status and statistics of this service
+ operationId: getStatusUsingGET
+ responses:
+ 200:
+ description: Service is living
+ content:
+ '*/*':
+ schema:
+ type: string
+ example: alive
+ 404:
+ description: Not Found
+ deprecated: false
+components:
+ schemas:
+ PolicyInfo:
+ title: PolicyInfo
+ type: object
+ properties:
+ id:
+ type: string
+ description: identity of the policy
+ json:
+ type: object
+ properties: {}
+ description: the configuration of the policy
+ lastModified:
+ type: string
+ description: timestamp, last modification time
+ ric:
+ type: string
+ description: identity of the target Near-RT RIC
+ service:
+ type: string
+ description: the name of the service owning the policy
+ type:
+ type: string
+ description: name of the policy type
+ RicInfo:
+ title: RicInfo
+ type: object
+ properties:
+ managedElementIds:
+ type: array
+ description: O1 identities for managed entities
+ items:
+ type: string
+ policyTypes:
+ type: array
+ description: supported policy types
+ items:
+ type: string
+ ricName:
+ type: string
+ description: identity of the ric
+ state:
+ type: string
+ description: state info
+ example:
+ - ricName: ric1
+ managedElementIds:
+ - ME-1
+ - ME-2
+ policyTypes:
+ - '1'
+ state: AVAILABLE
+ - ricName: ric3
+ managedElementIds:
+ - ME-1
+ - ME-2
+ policyTypes:
+ - ''
+ state: AVAILABLE
+ - ricName: ric2
+ managedElementIds:
+ - ME-1
+ - ME-2
+ policyTypes: []
+ state: AVAILABLE
+ - ricName: ric4
+ managedElementIds:
+ - ME-1
+ - ME-2
+ policyTypes:
+ - ''
+ state: AVAILABLE
+ ServiceRegistrationInfo:
+ title: ServiceRegistrationInfo
+ required:
+ - serviceName
+ type: object
+ properties:
+ callbackUrl:
+ type: string
+ description: callback for notifying of RIC synchronization
+ keepAliveIntervalSeconds:
+ 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
+ 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.
+ format: int64
+ serviceName:
+ type: string
+ description: identity of the service
+ example:
+ callbackUrl: http://localhost:9080
+ keepAliveIntervalSeconds: 1000
+ serviceName: service1
+ ServiceStatus:
+ title: ServiceStatus
+ type: object
+ properties:
+ callbackUrl:
+ type: string
+ description: callback for notifying of RIC synchronization
+ keepAliveIntervalSeconds:
+ type: integer
+ description: policy keep alive timeout
+ format: int64
+ serviceName:
+ type: string
+ description: identity of the service
+ timeSinceLastActivitySeconds:
+ type: integer
+ description: time since last invocation by the service
+ format: int64
+ examples:
+ Policies-STD:
+ value:
+ - id: a986eb38-aac3-4897-bdf5-0333ea2bf730
+ type: ''
+ ric: ric3
+ json:
+ scope:
+ ueId: ue1
+ groupId: group1
+ sliceId: slice1
+ qosId: qos1
+ cellId: cell1
+ statement:
+ priorityLevel: 5
+ service: controlpanel
+ lastModified: '2020-07-22T12:21:48.157854Z'
+ Policies-OSC:
+ value:
+ - id: 73428e58-1670-4972-8498-e7e8f1003631
+ type: '1'
+ ric: ric1
+ json:
+ scope:
+ qosId: '36'
+ ueId: '1'
+ statement:
+ priorityLevel: 1
+ service: c
+ lastModified: '2020-07-20T17:16:18.244383Z'
+ - id: 73428e58-1670-4972-8498-e7e8f100363e
+ type: '1'
+ ric: ric1
+ json:
+ scope:
+ qosId: '34'
+ ueId: '1'
+ statement:
+ priorityLevel: 1
+ service: controlpanel
+ lastModified: '2020-07-20T17:15:39.320469Z'
+ Policy-STD:
+ value:
+ scope:
+ ueId: ue1
+ groupId: group1
+ sliceId: slice1
+ qosId: qos1
+ cellId: cell1
+ statement:
+ priorityLevel: 5
+ Policy-OSC:
+ value:
+ scope:
+ qosId: '36'
+ ueId: '1'
+ statement:
+ priorityLevel: 1 \ No newline at end of file
diff --git a/docs/release-notes.rst b/docs/releasenotes/release-notes.rst
index c46e7ad6..c46e7ad6 100644
--- a/docs/release-notes.rst
+++ b/docs/releasenotes/release-notes.rst