From 6b87e43900b61956ab23d965827fb1306f8db617 Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Mon, 16 Nov 2020 09:31:07 +0100 Subject: Add documentation Change-Id: Ie27c53fcb38ae75b9771a42dc7dec39f4a1fd672 Issue-ID: CCSDK-2966 Signed-off-by: elinuxhenrik --- a1-policy-management/api/api.yaml | 842 ---------------- a1-policy-management/api/api_generated.yaml | 1341 -------------------------- docs/.gitignore | 3 + docs/_static/css/ribbon.css | 63 ++ docs/_static/favicon.ico | Bin 0 -> 2102 bytes docs/_static/logo_onap_2017.png | Bin 0 -> 12278 bytes docs/architecture/architecture.rst | 33 + docs/conf.py | 34 + docs/conf.yaml | 7 + docs/consumedapis/consumedapis.rst | 18 + docs/guide/developer-guide.rst | 95 ++ docs/humaninterfaces/humaninterfaces.rst | 11 + docs/index.rst | 18 + docs/media/o-ran-onap-integration.png | Bin 0 -> 218436 bytes docs/media/oran_architecture.png | Bin 0 -> 23768 bytes docs/media/swagger.png | Bin 0 -> 3590 bytes docs/media/yaml_logo.png | Bin 0 -> 3477 bytes docs/offeredapis/offeredapis.rst | 83 ++ docs/offeredapis/swagger/a1-adapter-api.json | 378 ++++++++ docs/offeredapis/swagger/pms-api.json | 1259 ++++++++++++++++++++++++ docs/releasenotes/release-notes.rst | 66 ++ docs/requirements-docs.txt | 17 + docs/tox.ini | 22 + 23 files changed, 2107 insertions(+), 2183 deletions(-) delete mode 100644 a1-policy-management/api/api.yaml delete mode 100644 a1-policy-management/api/api_generated.yaml create mode 100644 docs/.gitignore create mode 100644 docs/_static/css/ribbon.css create mode 100644 docs/_static/favicon.ico create mode 100644 docs/_static/logo_onap_2017.png create mode 100644 docs/architecture/architecture.rst create mode 100644 docs/conf.py create mode 100644 docs/conf.yaml create mode 100644 docs/consumedapis/consumedapis.rst create mode 100644 docs/guide/developer-guide.rst create mode 100644 docs/humaninterfaces/humaninterfaces.rst create mode 100644 docs/index.rst create mode 100644 docs/media/o-ran-onap-integration.png create mode 100644 docs/media/oran_architecture.png create mode 100644 docs/media/swagger.png create mode 100644 docs/media/yaml_logo.png create mode 100644 docs/offeredapis/offeredapis.rst create mode 100644 docs/offeredapis/swagger/a1-adapter-api.json create mode 100644 docs/offeredapis/swagger/pms-api.json create mode 100644 docs/releasenotes/release-notes.rst create mode 100644 docs/requirements-docs.txt create mode 100644 docs/tox.ini diff --git a/a1-policy-management/api/api.yaml b/a1-policy-management/api/api.yaml deleted file mode 100644 index ac10f4b6..00000000 --- a/a1-policy-management/api/api.yaml +++ /dev/null @@ -1,842 +0,0 @@ -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/a1-policy-management/api/api_generated.yaml b/a1-policy-management/api/api_generated.yaml deleted file mode 100644 index fd7b3129..00000000 --- a/a1-policy-management/api/api_generated.yaml +++ /dev/null @@ -1,1341 +0,0 @@ -swagger: '2.0' -info: - description: |- - The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices. - It provides support for: - version: 1.1.0 - title: A1 Policy management service - contact: - name: Ericsson Software Technology - email: nonrtric@est.tech - x-api-id: 60f9a0e7-343f-43bf-9194-d8d65688d465 - x-audience: external-partner -host: 'localhost:8081' -basePath: / -tags: - - name: A1 Policy Management Version 1.0 - description: Policy Controller - - name: A1 Policy Management Version 2.0 (in progress) - description: Policy management -paths: - /policies: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Query policies - operationId: getPoliciesUsingGET_1 - produces: - - '*/*' - parameters: - - name: ric - in: query - description: The name of the Near-RT RIC to get policies for. - required: false - type: string - allowEmptyValue: false - - name: service - in: query - description: The name of the service to get policies for. - required: false - type: string - allowEmptyValue: false - - name: type - in: query - description: The name of the policy type to get policies for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policies - schema: - type: array - items: - $ref: '#/definitions/policy_info_v1' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC or type not found - schema: - type: string - deprecated: false - /policy: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns a policy configuration - operationId: getPolicyUsingGET_1 - produces: - - '*/*' - parameters: - - name: id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Policy found - schema: - type: object - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - deprecated: false - put: - tags: - - A1 Policy Management Version 1.0 - summary: Put a policy - operationId: putPolicyUsingPUT_1 - consumes: - - application/json - produces: - - '*/*' - parameters: - - name: id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - - in: body - name: jsonBody - description: jsonBody - required: true - schema: - type: object - - name: ric - in: query - description: The name of the Near-RT RIC where the policy will be created. - required: true - type: string - allowEmptyValue: false - - name: service - in: query - description: The name of the service creating the policy. - required: true - type: string - allowEmptyValue: false - - 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. - required: false - type: boolean - default: false - allowEmptyValue: false - x-example: false - - name: type - in: query - description: The name of the policy type. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy updated - '201': - description: Policy created - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC or policy type is not found - schema: - type: string - '423': - description: Near-RT RIC is not operational - schema: - type: string - deprecated: false - delete: - tags: - - A1 Policy Management Version 1.0 - summary: Delete a policy - operationId: deletePolicyUsingDELETE_1 - produces: - - '*/*' - parameters: - - name: id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Not used - '204': - description: Policy deleted - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - schema: - type: string - '423': - description: Near-RT RIC is not operational - schema: - type: string - deprecated: false - /policy_ids: - get: - tags: - - A1 Policy Management Version 1.0 - summary: 'Query policies, only policy identities returned' - operationId: getPolicyIdsUsingGET_1 - produces: - - '*/*' - parameters: - - name: ric - in: query - description: The name of the Near-RT RIC to get policies for. - required: false - type: string - allowEmptyValue: false - - name: service - in: query - description: The name of the service to get policies for. - required: false - type: string - allowEmptyValue: false - - name: type - in: query - description: The name of the policy type to get policies for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy identitiess - schema: - type: array - items: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC or type not found - schema: - type: string - deprecated: false - /policy_schema: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns one policy type schema definition - operationId: getPolicySchemaUsingGET - produces: - - '*/*' - parameters: - - name: id - in: query - description: The identity of the policy type to get the definition for. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Policy schema - schema: - type: object - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: The policy type is not found - schema: - type: string - deprecated: false - /policy_schemas: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns policy type schema definitions - operationId: getPolicySchemasUsingGET_1 - produces: - - '*/*' - parameters: - - name: ric - in: query - description: The name of the Near-RT RIC to get the definitions for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy schemas - schema: - type: array - items: - type: object - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - type: string - deprecated: false - /policy_status: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns a policy status - operationId: getPolicyStatusUsingGET_1 - produces: - - '*/*' - parameters: - - name: id - in: query - description: The identity of the policy. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Policy status - schema: - type: object - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - schema: - type: string - deprecated: false - /policy_types: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Query policy type names - operationId: getPolicyTypesUsingGET_1 - produces: - - '*/*' - parameters: - - name: ric - in: query - description: The name of the Near-RT RIC to get types for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy type names - schema: - type: array - items: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - type: string - deprecated: false - /ric: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns the name of a RIC managing one Mananged Element - operationId: getRicUsingGET - produces: - - '*/*' - parameters: - - name: managedElementId - in: query - description: The identity of the Managed Element - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Near-RT RIC is found - schema: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - type: string - deprecated: false - /rics: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Query Near-RT RIC information - operationId: getRicsUsingGET - produces: - - '*/*' - parameters: - - name: policyType - in: query - description: The name of the policy type - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: OK - schema: - type: array - items: - $ref: '#/definitions/ric_info_v1' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy type is not found - schema: - type: string - deprecated: false - /service: - put: - tags: - - A1 Policy Management Version 1.0 - summary: Register a service - operationId: putServiceUsingPUT_1 - consumes: - - application/json - produces: - - '*/*' - parameters: - - in: body - name: registrationInfo - description: registrationInfo - required: true - schema: - $ref: '#/definitions/service_registration_info_v1' - responses: - '200': - description: Service updated - schema: - type: string - '201': - description: Service created - schema: - type: string - '400': - description: The ServiceRegistrationInfo is not accepted - schema: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - deprecated: false - /services: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns service information - operationId: getServicesUsingGET_1 - produces: - - '*/*' - parameters: - - name: name - in: query - description: The name of the service - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: OK - schema: - type: array - items: - $ref: '#/definitions/service_status_v1' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Service is not found - schema: - type: string - deprecated: false - delete: - tags: - - A1 Policy Management Version 1.0 - summary: Delete a service - operationId: deleteServiceUsingDELETE_1 - produces: - - '*/*' - parameters: - - name: name - in: query - description: The name of the service - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: OK - schema: - type: string - '204': - description: Service deleted - schema: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Service not found - schema: - type: string - deprecated: false - /services/keepalive: - put: - tags: - - A1 Policy Management Version 1.0 - summary: Heartbeat from a serice - operationId: keepAliveServiceUsingPUT_1 - consumes: - - application/json - produces: - - '*/*' - parameters: - - name: name - in: query - description: The name of the service - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: 'Service supervision timer refreshed, OK' - schema: - type: string - '201': - description: Created - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: 'The service is not found, needs re-registration' - deprecated: false - /status: - get: - tags: - - A1 Policy Management Version 1.0 - summary: Returns status and statistics of this service - operationId: getStatusUsingGET_1 - produces: - - '*/*' - responses: - '200': - description: Service is living - schema: - type: string - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - deprecated: false - /v2/policies: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Query for existing A1 policies - description: 'Returns a list of A1 policies matching given search criteria.
If several query parameters are defined, the policies matching all conditions are returned.' - operationId: getPoliciesUsingGET - produces: - - application/json - parameters: - - name: policytype_id - in: query - description: The identity of the policy type to get policies for. - required: false - type: string - allowEmptyValue: false - - name: ric_id - in: query - description: The identity of the Near-RT RIC to get policies for. - required: false - type: string - allowEmptyValue: false - - name: service_id - in: query - description: The identity of the service to get policies for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policies - schema: - $ref: '#/definitions/policy_info_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: 'Near-RT RIC, policy type or service not found' - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/policy: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns a policy configuration - operationId: getPolicyUsingGET - produces: - - application/json - parameters: - - name: policy_id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Policy found - schema: - $ref: '#/definitions/json_object' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - put: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Create or update a policy - operationId: putPolicyUsingPUT - consumes: - - application/json - produces: - - application/json - parameters: - - in: body - name: jsonBody - description: jsonBody - required: true - schema: - type: object - - name: policy_id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - - name: policytype_id - in: query - description: The identity of the policy type. - required: false - type: string - allowEmptyValue: false - - name: ric_id - in: query - description: The identity of the Near-RT RIC where the policy will be created. - required: true - type: string - allowEmptyValue: false - - name: service_id - in: query - description: The identity of the service creating the policy. - required: true - type: string - allowEmptyValue: false - - name: transient - in: query - description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will not be recreated in the Near-RT RIC when it has been lost (for instance due to a restart) - required: false - type: boolean - default: false - allowEmptyValue: false - x-example: false - responses: - '200': - description: Policy updated - '201': - description: Policy created - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC or policy type is not found - schema: - $ref: '#/definitions/error_information' - '423': - description: Near-RT RIC is not operational - schema: - $ref: '#/definitions/error_information' - deprecated: false - delete: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Delete a policy - operationId: deletePolicyUsingDELETE - produces: - - '*/*' - parameters: - - name: policy_id - in: query - description: The identity of the policy instance. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Not used - '204': - description: Policy deleted - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - schema: - $ref: '#/definitions/error_information' - '423': - description: Near-RT RIC is not operational - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/policy-ids: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: 'Query policies, only policy identities are returned' - description: 'Returns a list of A1 policies matching given search criteria.
If several query parameters are defined, the policies matching all conditions are returned.' - operationId: getPolicyIdsUsingGET - produces: - - application/json - parameters: - - name: policytype_id - in: query - description: The identity of the policy type to get policies for. - required: false - type: string - allowEmptyValue: false - - name: ric_id - in: query - description: The identity of the Near-RT RIC to get policies for. - required: false - type: string - allowEmptyValue: false - - name: service_id - in: query - description: The identity of the service to get policies for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy identities - schema: - $ref: '#/definitions/policy_id_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC or type not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/policy-schemas: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns policy type schema definitions - operationId: getPolicySchemasUsingGET - produces: - - application/json - parameters: - - name: policytype_id - in: query - description: 'The identity of the policy type to get the definition for. When this parameter is given, max one schema will be returned' - required: true - type: string - allowEmptyValue: false - - name: ric_id - in: query - description: The identity of the Near-RT RIC to get the definitions for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy schemas - schema: - $ref: '#/definitions/policy_schema_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/policy-status: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns a policy status - operationId: getPolicyStatusUsingGET - produces: - - application/json - parameters: - - name: policy_id - in: query - description: The identity of the policy. - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Policy status - schema: - $ref: '#/definitions/json_object' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/policy-types: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Query policy type identities - operationId: getPolicyTypesUsingGET - produces: - - application/json - parameters: - - name: ric_id - in: query - description: The identity of the Near-RT RIC to get types for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Policy type IDs - schema: - $ref: '#/definitions/policy_type_id_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/ric: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns info for a 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). - operationId: getRicUsingGET_1 - produces: - - application/json - parameters: - - name: managed_element_id - in: query - description: 'The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.' - required: false - type: string - allowEmptyValue: false - - name: ric_id - in: query - description: The identity of a Near-RT RIC to get information for. - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: Near-RT RIC is found - schema: - $ref: '#/definitions/ric_info_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Near-RT RIC is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/rics: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Query Near-RT RIC information - description: The call returns all Near-RT RICs that supports a given policy type identity - operationId: getRicsUsingGET_1 - produces: - - application/json - parameters: - - name: policytype_id - in: query - description: 'The identity of a policy type. If given, all Near-RT RICs supporteing the policy type are returned' - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: OK - schema: - $ref: '#/definitions/ric_info_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Policy type is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/services: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns service information - description: Either information about a registered service with given identity or all registered services are returned. - operationId: getServicesUsingGET - produces: - - application/json - parameters: - - name: service_id - in: query - description: The identity of the service - required: false - type: string - allowEmptyValue: false - responses: - '200': - description: OK - schema: - $ref: '#/definitions/service_list_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Service is not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - put: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Register a service - description: 'Registering a service is needed to:' - operationId: putServiceUsingPUT - consumes: - - application/json - produces: - - '*/*' - parameters: - - in: body - name: registrationInfo - description: registrationInfo - required: true - schema: - $ref: '#/definitions/service_registration_info_v2' - responses: - '200': - description: Service updated - schema: - type: object - '201': - description: Service created - schema: - type: object - '400': - description: The ServiceRegistrationInfo is not accepted - schema: - $ref: '#/definitions/error_information' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - deprecated: false - delete: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Unregister a service - operationId: deleteServiceUsingDELETE - produces: - - '*/*' - parameters: - - name: service_id - in: query - description: The idenitity of the service - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: Not used - '204': - description: Service unregistered - schema: - type: object - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Service not found - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/services/keepalive: - put: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Heartbeat indicates that the service is running - operationId: keepAliveServiceUsingPUT - consumes: - - application/json - produces: - - '*/*' - parameters: - - name: service_id - in: query - description: The identity of the service - required: true - type: string - allowEmptyValue: false - responses: - '200': - description: 'Service supervision timer refreshed, OK' - schema: - type: object - '201': - description: Created - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: 'The service is not found, needs re-registration' - schema: - $ref: '#/definitions/error_information' - deprecated: false - /v2/status: - get: - tags: - - A1 Policy Management Version 2.0 (in progress) - summary: Returns status and statistics of this service - operationId: getStatusUsingGET - produces: - - application/json - responses: - '200': - description: Service is living - schema: - $ref: '#/definitions/status_info_v2' - '401': - description: Unauthorized - '403': - description: Forbidden - '404': - description: Not Found - deprecated: false -definitions: - Mono«ResponseEntity«object»»: - type: object - title: Mono«ResponseEntity«object»» - Mono«ResponseEntity«string»»: - type: object - title: Mono«ResponseEntity«string»» - error_information: - type: object - properties: - detail: - type: string - example: Policy type not found - description: ' A human-readable explanation specific to this occurrence of the problem.' - status: - type: integer - format: int32 - example: 503 - description: 'The HTTP status code generated by the origin server for this occurrence of the problem. ' - title: error_information - description: 'Problem as defined in https://tools.ietf.org/html/rfc7807' - json_object: - type: object - title: json_object - description: A JSON object defining the configuration of the policy. The schema is defined by the Policy Type. - policy_id_list_v2: - type: object - properties: - policy_ids: - type: array - description: Policy identities - items: - type: string - title: policy_id_list_v2 - description: A list of policy identities - policy_info_list_v2: - type: object - properties: - policies: - type: array - description: List of policy information - items: - $ref: '#/definitions/policy_info_v2' - title: policy_info_list_v2 - description: List of policy information - policy_info_v1: - type: object - properties: - id: - type: string - description: identity of the policy - json: - type: object - 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 - title: policy_info_v1 - policy_info_v2: - type: object - properties: - last_modified: - type: string - description: 'timestamp, last modification time' - policy_data: - type: object - description: the configuration of the policy - policy_id: - type: string - description: identity of the policy - policy_type_id: - type: string - description: name of the policy type - ric_id: - type: string - description: identity of the target Near-RT RIC - service_id: - type: string - description: the name of the service owning the policy - title: policy_info_v2 - description: Information for one A1-P Policy - policy_schema_list_v2: - type: object - properties: - policy_schemas: - type: array - description: 'Policy type json schemas. The schema is a json object following http://json-schema.org/draft-07/schema' - items: - type: object - title: policy_schema_list_v2 - description: Policy type json schemas - policy_type_id_list_v2: - type: object - properties: - policy_type_ids: - type: array - description: Policy type identities - items: - type: string - title: policy_type_id_list_v2 - description: Information about policy types - ric_info_list_v2: - type: object - properties: - rics: - type: array - description: List of Near-RT RIC information - items: - $ref: '#/definitions/ric_info_v2' - title: ric_info_list_v2 - description: List of Near-RT RIC information - ric_info_v1: - 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 Near-RT RIC - state: - type: string - description: state info - title: ric_info_v1 - ric_info_v2: - type: object - properties: - managed_element_ids: - type: array - description: O1 identities for managed entities - items: - type: string - policy_type_ids: - type: array - description: supported policy types - items: - type: string - ric_id: - type: string - description: identity of the Near-RT RIC - state: - type: string - description: |- - State for the Near-RT RIC, values: - UNAVAILABLE: The Near-RT RIC is not avialable, information may be inconsistent - AVAILABLE: The normal state. Policies can be configured. + - SYNCHRONIZING: The Policy Management Service is synchronizing the view of the Near-RT RIC. Policies cannot be configured. - CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the Near-RT RIC. Policies cannot be configured. - enum: - - UNAVAILABLE - - AVAILABLE - - SYNCHRONIZING - - CONSISTENCY_CHECK - title: ric_info_v2 - description: Information for a Near-RT RIC - service_list_v2: - type: object - properties: - service_list: - type: array - description: List of service information - items: - $ref: '#/definitions/service_status_v2' - title: service_list_v2 - description: List of service information - service_registration_info_v1: - type: object - properties: - callbackUrl: - type: string - description: callback for notifying of RIC synchronization - keepAliveIntervalSeconds: - type: integer - 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.' - serviceName: - type: string - title: service_registration_info_v1 - service_registration_info_v2: - type: object - required: - - service_id - properties: - callback_url: - type: string - description: callback for notifying of RIC synchronization - keep_alive_interval_seconds: - type: integer - 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.' - service_id: - type: string - description: identity of the service - title: service_registration_info_v2 - description: Information for one service - service_status_v1: - type: object - properties: - callbackUrl: - type: string - description: callback for notifying of RIC synchronization - keepAliveIntervalSeconds: - type: integer - format: int64 - description: policy keep alive timeout - serviceName: - type: string - description: identity of the service - timeSinceLastActivitySeconds: - type: integer - format: int64 - description: time since last invocation by the service - title: service_status_v1 - service_status_v2: - type: object - properties: - callback_url: - type: string - description: callback for notifying of RIC synchronization - keep_alive_interval_seconds: - type: integer - format: int64 - description: policy keep alive timeout - service_id: - type: string - description: identity of the service - time_since_last_activity_seconds: - type: integer - format: int64 - description: time since last invocation by the service - title: service_status_v2 - status_info_v2: - type: object - properties: - status: - type: string - description: status text - title: status_info_v2 - void: - type: object - title: void - description: Void/empty - diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..43ca5b67 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +/.tox +/_build/* +/__pycache__/* diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css new file mode 100644 index 00000000..6008cb1a --- /dev/null +++ b/docs/_static/css/ribbon.css @@ -0,0 +1,63 @@ +.ribbon { + z-index: 1000; + background-color: #a00; + overflow: hidden; + white-space: nowrap; + position: fixed; + top: 25px; + right: -50px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 10px #888; + -moz-box-shadow: 0 0 10px #888; + box-shadow: 0 0 10px #888; + +} + +.ribbon a { + border: 1px solid #faa; + color: #fff; + display: block; + font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin: 1px 0; + padding: 10px 50px; + text-align: center; + text-decoration: none; + text-shadow: 0 0 5px #444; + transition: 0.5s; +} + +.ribbon a:hover { + background: #c11; + color: #fff; +} + + +/* override table width restrictions */ +@media screen and (min-width: 767px) { + + .wy-table-responsive table td, .wy-table-responsive table th { + /* !important prevents the common CSS stylesheets from overriding + this as on RTD they are loaded after this stylesheet */ + white-space: normal !important; + } + + .wy-table-responsive { + overflow: visible !important; + } +} + +@media screen and (max-width: 767px) { + .wy-table-responsive table td { + white-space: nowrap; + } +} + +/* fix width of the screen */ + +.wy-nav-content { + max-width: none; +} diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 00000000..cb712ebd Binary files /dev/null and b/docs/_static/favicon.ico differ diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png new file mode 100644 index 00000000..5d064f43 Binary files /dev/null and b/docs/_static/logo_onap_2017.png differ diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst new file mode 100644 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/conf.py b/docs/conf.py new file mode 100644 index 00000000..29923a05 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,34 @@ +from docs_conf.conf import * + +branch = 'latest' +master_doc = 'index' + +linkcheck_ignore = [ + 'http://localhost', +] + +extensions = ['sphinx_tabs.tabs', 'sphinxcontrib.redoc',] + +redoc = [ + { + 'name': 'PMS API', + 'page': 'offeredapis/pms-api', + 'spec': './offeredapis/swagger/pms-api.json', + 'embed': True, + }, + { + 'name': 'A1 ADAPTER API', + 'page': 'offeredapis/a1-adapter-api', + 'spec': './offeredapis/swagger/a1-adapter-api.json', + 'embed': True, + } + ] + +redoc_uri = 'https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js' + +intersphinx_mapping = {} + +html_last_updated_fmt = '%d-%b-%y %H:%M' + +def setup(app): + app.add_css_file("css/ribbon.css") diff --git a/docs/conf.yaml b/docs/conf.yaml new file mode 100644 index 00000000..ab592813 --- /dev/null +++ b/docs/conf.yaml @@ -0,0 +1,7 @@ +--- +project_cfg: onap +project: onap + +# Change this to ReleaseBranchName to modify the header +default-version: latest +# diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst new file mode 100644 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 new file mode 100644 index 00000000..f067a3fa --- /dev/null +++ b/docs/guide/developer-guide.rst @@ -0,0 +1,95 @@ +.. 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. + +.. _developer_guide: + +Developer Guide +=============== + +This document provides a quickstart for developers of the CCSDK ORAN parts. + +Source tree ++++++++++++ + +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. + +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. + +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 + * 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. + +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 `_ +- `Springfox `_ Automated JSON API documentation for API's 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 +- `DCAE SDK `_ to get configuration from CBS +- `Lombok `_ to generate code, such as getters and setters +- `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 + +There is also Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing +(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 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" o-ran-sc/nonrtric-policy-agent:2.1.0-SNAPSHOT + +A1 Adapter (Internal) ++++++++++++++++++++++ + +The O-RAN A1 Adapter provides an internal REST CONF API for management of A1 policices, useful for test and verification. + +The A1 Adapter can be accessed over the REST CONF API. See :ref:`a1_adapter_api` 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 `_. + +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 new file mode 100644 index 00000000..613ff566 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2020 Nordix Foundation. +.. _master_index: + +ccsdk/oran +---------- + +.. toctree:: + :maxdepth: 1 + :caption: Contents: + + ./architecture/architecture.rst + ./guide/developer-guide.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 100644 index 00000000..5c66ae62 Binary files /dev/null and b/docs/media/o-ran-onap-integration.png differ diff --git a/docs/media/oran_architecture.png b/docs/media/oran_architecture.png new file mode 100644 index 00000000..3f99e090 Binary files /dev/null and b/docs/media/oran_architecture.png differ diff --git a/docs/media/swagger.png b/docs/media/swagger.png new file mode 100644 index 00000000..f5a9e0c0 Binary files /dev/null and b/docs/media/swagger.png differ diff --git a/docs/media/yaml_logo.png b/docs/media/yaml_logo.png new file mode 100644 index 00000000..0492eb4b Binary files /dev/null and b/docs/media/yaml_logo.png differ diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst new file mode 100644 index 00000000..14fb881a --- /dev/null +++ b/docs/offeredapis/offeredapis.rst @@ -0,0 +1,83 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 + International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2020 Nordix Foundation + +.. _offered_apis: + + +Offered APIs +============ + +Introduction +************ + +The north bound REST API of the Policy Management Service provides convenient methods to handle policies. + + +Global ORAN architecture +************************ + +Following illustration provides a global view about **ORAN** architecture, +integration with other ONAP components and API resource/operation provided. + +.. image:: ../media/oran_architecture.png + :width: 500pt + + +API Table +********* + +.. |swagger-icon| image:: ../media/swagger.png + :width: 40px + +.. csv-table:: + :header: "API name", "|swagger-icon|" + :widths: 10,5 + + "PMS API", ":download:`link <./swagger/pms-api.json>`" + "A1 ADAPTER API (Internal)", ":download:`link <./swagger/a1-adapter-api.json>`" + + +.. _pms_api: + +PMS API +....... +`PMS API <./pms-api.html>`_ + +.. _a1_adapter_api: + +A1 ADAPTER API +.............. +`A1 ADAPTER API (Internal) <./a1-adapter-api.html>`_ + + +API Version +*********** + +APIs are described with a state version with "v" following the API Name, +e.g.: ``v2/policy``. +The schema associated with a REST API must have its version number aligned +with that of the REST API. + +The version number has major, minor and revision numbers. E.g. v1.0.0 +The version number (without the revision number) is held in the URI. + +The major version number is incremented for an incompatible change. +The minor version number is incremented for a compatible change. +For minor modifications of the API, version numbering must not be updated, +provided the following backward compatibility rules are respected: + +- New elements in a data type must be optional (``minOccurs=0``) +- Changes in the cardinality of an attribute in a data type must be from + mandatory to optional or from lower to greater +- New attributes defined in an element must be optional (absence of + ``use="required"``). +- If new enumerated values are included, the former ones and its meaning must + be kept. +- If new operations are added, the existing operations must be kept +- New parameters added to existing operations must be optional and existing + parameters must be kept + +For major modifications of the API, not backward compatible and forcing client +implementations to be changed, the version number must be updated. diff --git a/docs/offeredapis/swagger/a1-adapter-api.json b/docs/offeredapis/swagger/a1-adapter-api.json new file mode 100644 index 00000000..12951279 --- /dev/null +++ b/docs/offeredapis/swagger/a1-adapter-api.json @@ -0,0 +1,378 @@ +{ + "apiVersion": "1.0.0", + "swagger": "2.0", + "basePath": "/", + "info": { + "x-audience": "external-partner", + "contact": { + "name": "Ericsson Software Technology", + "email": "nonrtric@est.tech" + }, + "description": "The O-RAN A1 Adapter provides an internal REST CONF API for management of A1 policices, 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!", + "title": "A1 Adapter", + "version": "1.1.0" + }, + "paths": { + "/restconf/operations/A1-ADAPTER-API:putA1Policy": {"post": { + "summary": "Create or update a policy", + "description": "Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html PUT /policy method should be used!", + "nickname": "putA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(putA1Policy)output"}, + "description": "Policy created/updated", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": {}, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(putA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/operations/A1-ADAPTER-API:getA1Policy": {"post": { + "summary": "Get policy configuration/s", + "description": "Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy method should be used!", + "nickname": "getA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1Policy)output"}, + "description": "Policy found", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "id": "Policy 1", + "json": { + "scope": { + "ueId": "UE1 ", + "cellId": "Cell 1" + }, + "qosObjectives": { + "gfbr": 319.5, + "mfbr": 782.75, + "priorityLevel": 268.5, + "pdb": 44.0 + }, + "qoeObjectives": { + "qoeScore": 329.0, + "initialBuffering": 27.75, + "reBuffFreq": 539.0, + "stallRatio": 343.0 + }, + "resources": [] + }, + "ownerServiceName": "Service 1", + "ric": "ric1", + "type": "STD_PolicyModelUnconstrained_0.2.0", + "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT" + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus": {"post": { + "summary": "Get a policy status", + "description": "Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-status method should be used!", + "nickname": "getA1PolicyStatus", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1PolicyStatus)output"}, + "description": "Policy status", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "enforceStatus": "UNDEFINED" + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1PolicyStatus)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:getA1PolicyType": {"post": { + "summary": "Get a policy type schema definition", + "description": "Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-types method should be used!", + "nickname": "getA1PolicyType", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1PolicyType)output"}, + "description": "Policy schema", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Example_QoETarget_1.0.0", + "description": "Example QoE Target policy type", + "type": "object", + "properties": { + "scope": { + "type": "object", + "properties": { + "ueId": { + "type": "string" + }, + "sliceId": { + "type": "string" + }, + "qosId": { + "type": "string" + }, + "cellId": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "ueId", + "sliceId" + ] + }, + "statement": { + "type": "object", + "properties": { + "qoeScore": { + "type": "number" + }, + "initialBuffering": { + "type": "number" + }, + "reBuffFreq": { + "type": "number" + }, + "stallRatio": { + "type": "number" + } + }, + "minProperties": 1, + "additionalProperties": false + } + } + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1PolicyType)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:deleteA1Policy": {"post": { + "summary": "Delete a policy", + "description": "Note! For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html DELETE /policy method should be used!", + "nickname": "deleteA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(deleteA1Policy)output"}, + "description": "Policy deleted", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": {}, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(deleteA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + } + }, + "models": { + "(putA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000" + }, + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body", + "example": { + "blocking_rate":20, + "enforce":true, + "trigger_threshold":10, + "window_length":10 + } + } + }, + "id": "(putA1Policy)input" + }, + "(putA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(putA1Policy)output" + }, + "(getA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://localhost:8081/policy?id=Policy 1" + } + }, + "id": "(getA1Policy)input" + }, + "(getA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "object" }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1Policy)output" + }, + "(getA1PolicyStatus)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000/status" + } + }, + "id": "(getA1PolicyStatus)input" + }, + "(getA1PolicyStatus)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1PolicyStatus)output" + }, + "(getA1PolicyType)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11" + } + }, + "id": "(getA1PolicyType)input" + }, + "(getA1PolicyType)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1PolicyType)output" + }, + "(deleteA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://localhost:8282/restconf/operations/A1-ADAPTER-API:deleteA1Policy" + } + }, + "id": "(deleteA1Policy)input" + }, + "(deleteA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(deleteA1Policy)output" + } + } +} \ No newline at end of file diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json new file mode 100644 index 00000000..1837e098 --- /dev/null +++ b/docs/offeredapis/swagger/pms-api.json @@ -0,0 +1,1259 @@ +{ + "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/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst new file mode 100644 index 00000000..c46e7ad6 --- /dev/null +++ b/docs/releasenotes/release-notes.rst @@ -0,0 +1,66 @@ +.. 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. + +============= +Release-Notes +============= + + +This document provides the release notes for the release of the different parts of the ORAN project. + +.. contents:: + :depth: 3 + :local: + + +Version history Policy Management Service +========================================= + ++------------+----------+------------+----------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++------------+----------+------------+----------------+ +| 2020-09-10 | 1.0.0 | Dan Timony | First version | +| | | | Guilin Release | ++------------+----------+------------+----------------+ + + +Summary +------- +First version. + + +Version history A1 Adapter +========================== + ++------------+----------+------------+----------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++------------+----------+------------+----------------+ +| 2019-09-10 | 1.0.0 | Dan Timony | First version | +| | | | Guilin Release | ++------------+----------+------------+----------------+ + + +Release Data +============ + +Guilin +------ ++-----------------------------+-----------------------------------------------------+ +| **Project** | CCSDK ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Repo/commit-ID** | ccsdk-oran/ec3829493c0b71c5e5908a430edd1e493504178e | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release designation** | Guilin | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Release date** | 2020-09-10 | +| | | ++-----------------------------+-----------------------------------------------------+ +| **Purpose of the delivery** | Introducing ORAN | +| | | ++-----------------------------+-----------------------------------------------------+ diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt new file mode 100644 index 00000000..aeda4ee2 --- /dev/null +++ b/docs/requirements-docs.txt @@ -0,0 +1,17 @@ +tox +Sphinx>=2,<4 +doc8 +docutils +setuptools +six +sphinx-tabs +sphinx_rtd_theme>=0.4.3 +sphinxcontrib-blockdiag +sphinxcontrib-needs>=0.2.3 +sphinxcontrib-nwdiag +sphinxcontrib-seqdiag +sphinxcontrib-swaggerdoc +sphinxcontrib-plantuml +sphinx_bootstrap_theme +sphinxcontrib-redoc +lfdocs-conf \ No newline at end of file diff --git a/docs/tox.ini b/docs/tox.ini new file mode 100644 index 00000000..edac8c35 --- /dev/null +++ b/docs/tox.ini @@ -0,0 +1,22 @@ +[tox] +minversion = 1.6 +envlist = docs, +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = -r{toxinidir}/requirements-docs.txt +commands = + sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html + echo "Generated docs available in {toxinidir}/_build/html" +whitelist_externals = + echo + git + sh + +[testenv:docs-linkcheck] +basepython = python3 +#deps = -r{toxinidir}/requirements-docs.txt +commands = echo "Link Checking not enforced" +#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck +whitelist_externals = echo -- cgit 1.2.3-korg