diff options
Diffstat (limited to 'docs')
-rw-r--r--[-rwxr-xr-x] | docs/api/swagger/cps/openapi.yaml (renamed from docs/api/swagger/openapi.yml) | 971 | ||||
-rw-r--r-- | docs/api/swagger/ncmp/openapi.yaml | 659 | ||||
-rw-r--r-- | docs/architecture.rst | 10 | ||||
-rwxr-xr-x | docs/conf.py | 87 | ||||
-rw-r--r-- | docs/cps-path.rst | 3 | ||||
-rw-r--r-- | docs/deployment.rst | 15 | ||||
-rwxr-xr-x | docs/design.rst | 7 | ||||
-rwxr-xr-x | docs/index.rst | 18 | ||||
-rw-r--r-- | docs/modeling.rst | 2 | ||||
-rw-r--r-- | docs/overview.rst | 7 | ||||
-rwxr-xr-x | docs/release-notes.rst | 130 |
11 files changed, 1483 insertions, 426 deletions
diff --git a/docs/api/swagger/openapi.yml b/docs/api/swagger/cps/openapi.yaml index 4d64b01b85..fb219eb652 100755..100644 --- a/docs/api/swagger/openapi.yml +++ b/docs/api/swagger/cps/openapi.yaml @@ -1,822 +1,920 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2021 Nordix Foundation -# Modifications Copyright (C) 2021 Bell Canada. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= - openapi: 3.0.1 info: title: ONAP Open API v3 Configuration Persistence Service description: Configuration Persistence Service is a Model Driven Generic Database - version: 1.0.0 contact: name: ONAP - url: 'https://onap.readthedocs.io' + url: https://onap.readthedocs.io email: onap-discuss@lists.onap.org license: name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0' - x-planned-retirement-date: '202212' + url: http://www.apache.org/licenses/LICENSE-2.0 + version: 1.0.0 + x-planned-retirement-date: "202212" x-component: Modeling x-logo: url: cps_logo.png servers: - - url: '//localhost:8088' +- url: /cps/api tags: - - name: cps-admin - description: cps Admin - - name: cps-data - description: cps Data +- name: cps-admin + description: cps Admin +- name: cps-data + description: cps Data paths: /v1/dataspaces: post: - description: Create a new dataspace tags: - - cps-admin + - cps-admin summary: Create a dataspace + description: Create a new dataspace operationId: createDataspace parameters: - - name: dataspace-name - in: query - description: dataspace-name - required: true - schema: - type: string + - name: dataspace-name + in: query + description: dataspace-name + required: true + schema: + type: string responses: - '201': + "201": description: Created content: text/plain: schema: type: string - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}': - delete: - description: Delete the given dataspace - DRAFT - tags: - - cps-admin - summary: Delete a dataspace - operationId: deleteDataspace - parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - '204': - description: No Content - content: {} - '400': - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/anchors': + /v1/dataspaces/{dataspace-name}/anchors: get: - description: 'Read all anchors, given a dataspace' tags: - - cps-admin + - cps-admin summary: Get anchors + description: "Read all anchors, given a dataspace" operationId: getAnchors parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string responses: - '200': + "200": description: OK content: application/json: schema: - type: object - '400': + type: array + items: + $ref: '#/components/schemas/AnchorDetails' + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': + "404": description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' post: - description: Create a new anchor in the given dataspace tags: - - cps-admin + - cps-admin summary: Create an anchor + description: Create a new anchor in the given dataspace operationId: createAnchor parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: schema-set-name - in: query - description: schema-set-name - required: true - schema: - type: string - - name: anchor-name - in: query - description: anchor-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: schema-set-name + in: query + description: schema-set-name + required: true + schema: + type: string + - name: anchor-name + in: query + description: anchor-name + required: true + schema: + type: string responses: - '201': + "201": description: Created content: text/plain: schema: type: string - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}': + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}: get: - description: Read an anchor given an anchor name and a dataspace tags: - - cps-admin + - cps-admin summary: Get an anchor + description: Read an anchor given an anchor name and a dataspace operationId: getAnchor parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string responses: - '200': + "200": description: OK content: application/json: schema: - type: object - '400': + $ref: '#/components/schemas/AnchorDetails' + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': + "404": description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' delete: - description: Delete an anchor given an anchor name and a dataspace - DRAFT tags: - - cps-admin + - cps-admin summary: Delete an anchor + description: Delete an anchor given an anchor name and a dataspace operationId: deleteAnchor parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string responses: - '200': - description: OK - content: - application/json: - schema: - type: object - '204': + "204": description: No Content content: {} - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/schema-sets': + /v1/dataspaces/{dataspace-name}/schema-sets: post: - description: Create a new schema set in the given dataspace tags: - - cps-admin + - cps-admin summary: Create a schema set + description: Create a new schema set in the given dataspace operationId: createSchemaSet parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: schema-set-name - in: query - description: schema-set-name - required: true - schema: - type: string - requestBody: + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: schema-set-name + in: query + description: schema-set-name required: true + schema: + type: string + requestBody: content: multipart/form-data: schema: - type: object - required: - - file - properties: - file: - type: string - description: multipartFile - format: binary - example: 'http://example.com/examples/example.yang' + $ref: '#/components/schemas/MultipartFile' + required: true responses: - '201': + "201": description: Created content: text/plain: schema: type: string - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}': + /v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}: get: - description: Read a schema set given a schema set name and a dataspace tags: - - cps-admin + - cps-admin summary: Get a schema set + description: Read a schema set given a schema set name and a dataspace operationId: getSchemaSet parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: schema-set-name - in: path - description: schema-set-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: schema-set-name + in: path + description: schema-set-name + required: true + schema: + type: string responses: - '200': + "200": description: OK content: application/json: schema: - type: object - '400': + $ref: '#/components/schemas/SchemaSetDetails' + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': + "404": description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' delete: - description: Delete a schema set given a schema set name and a dataspace tags: - - cps-admin + - cps-admin summary: Delete a schema set + description: Delete a schema set given a schema set name and a dataspace operationId: deleteSchemaSet parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: schema-set-name - in: path - description: schema-set-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: schema-set-name + in: path + description: schema-set-name + required: true + schema: + type: string responses: - '204': + "204": description: No Content content: {} - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '409': + "409": description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node': + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node: get: - description: >- - Get a node with an option to retrieve all the children for a given - anchor and dataspace tags: - - cps-data + - cps-data summary: Get a node + description: Get a node with an option to retrieve all the children for a given + anchor and dataspace operationId: getNodeByDataspaceAndAnchor parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string - - name: xpath - in: query - description: xpath - required: false - schema: - type: string - default: / - - name: include-descendants - in: query - description: include-descendants - required: false - schema: - type: boolean - default: false + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + - name: include-descendants + in: query + description: include-descendants + required: false + schema: + type: boolean + default: false responses: - '200': + "200": description: OK content: application/json: schema: type: object - '400': + example: + child: my_child + leafList: "leafListElement1, leafListElement2" + leaf: my_leaf + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': + "404": description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' x-codegen-request-body-name: xpath - '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes': + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes: + put: + tags: + - cps-data + summary: Replace a node with descendants + description: "Replace a node with descendants for a given dataspace, anchor\ + \ and a parent node xpath" + operationId: replaceNode + parameters: + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + requestBody: + content: + application/json: + schema: + type: string + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + example: + key: value + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' post: - description: Create a node for a given anchor and dataspace tags: - - cps-data + - cps-data summary: Create a node + description: Create a node for a given anchor and dataspace operationId: createNode parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string - requestBody: + - name: dataspace-name + in: path + description: dataspace-name required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + requestBody: content: application/json: schema: type: string + required: true responses: - '201': + "201": description: Created content: text/plain: schema: type: string - '400': + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' patch: - description: >- - Update a data node leaves for a given dataspace and anchor and a parent - node xpath tags: - - cps-data + - cps-data summary: Update node leaves + description: Update a data node leaves for a given dataspace and anchor and + a parent node xpath operationId: updateNodeLeaves parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string - - name: xpath - in: query - description: xpath - required: false - schema: - type: string - default: / - requestBody: + - name: dataspace-name + in: path + description: dataspace-name required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + requestBody: content: application/json: schema: type: string + required: true responses: - '200': + "200": description: OK content: application/json: schema: type: object - '400': + example: + key: value + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes: put: - description: >- - Replace a node with descendants for a given dataspace, anchor and a - parent node xpath tags: - - cps-data - summary: Replace a node with descendants - operationId: replaceNode + - cps-data + summary: Replace list-node child element(s) under existing parent node + description: Replace list-node child elements under existing node for a given + anchor and dataspace + operationId: replaceListNodeElements parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string - - name: xpath - in: query - description: xpath - required: false - schema: - type: string - default: / - requestBody: + - name: dataspace-name + in: path + description: dataspace-name required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: true + schema: + type: string + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + requestBody: content: application/json: schema: type: string + required: true responses: - '200': - description: OK + "200": + description: Created content: - application/json: + text/plain: schema: - type: object - '400': + type: string + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '/v1/dataspaces/{dataspace-name}/nodes': - get: - description: >- - Get all nodes for a given dataspace using an xpath or schema node - identifier - DRAFT + post: tags: - - cps-data - summary: Get nodes - operationId: getNodesByDataspace + - cps-data + summary: Add list-node child element(s) under existing parent node + description: Add list-node child elements to existing node for a given anchor + and dataspace + operationId: addListNodeElements parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: true + schema: + type: string + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + requestBody: + content: + application/json: + schema: + type: string + required: true responses: - '200': - description: OK + "201": + description: Created content: - application/json: + text/plain: schema: - type: object - '400': + type: string + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': - description: The specified resource was not found + delete: + tags: + - cps-data + summary: Delete list-node child element(s) under existing parent node + description: Delete list-node child elements under existing node for a given + anchor and dataspace + operationId: deleteListNodeElements + parameters: + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: true + schema: + type: string + - name: observed-timestamp + in: query + description: observed-timestamp + required: false + schema: + type: string + example: 2021-03-21T00:10:34.030-0100 + responses: + "204": + description: No Content + content: {} + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - x-codegen-request-body-name: requestBody - '/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query': + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query: get: - description: Query data nodes for the given dataspace and anchor using CPS path tags: - - cps-query + - cps-query summary: Query data nodes + description: Query data nodes for the given dataspace and anchor using CPS path operationId: getNodesByDataspaceAndAnchorAndCpsPath parameters: - - name: dataspace-name - in: path - description: dataspace-name - required: true - schema: - type: string - - name: anchor-name - in: path - description: anchor-name - required: true - schema: - type: string - - name: cps-path - in: query - description: cps-path - required: false - schema: - type: string - default: / - - name: include-descendants - in: query - description: include-descendants - required: false - schema: - type: boolean - default: false + - name: dataspace-name + in: path + description: dataspace-name + required: true + schema: + type: string + - name: anchor-name + in: path + description: anchor-name + required: true + schema: + type: string + - name: cps-path + in: query + description: cps-path + required: false + schema: + type: string + default: / + - name: include-descendants + in: query + description: include-descendants + required: false + schema: + type: boolean + default: false responses: - '200': + "200": description: OK content: application/json: schema: type: object - '400': + example: + key: value + "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '401': + "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '403': + "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' - '404': + "404": description: The specified resource was not found content: application/json: @@ -826,15 +924,64 @@ paths: components: schemas: ErrorMessage: - type: object title: Error + type: object properties: status: type: string - example: 400 + example: "400" message: type: string example: Dataspace not found details: type: string example: Dataspace with name D1 does not exist. + AnchorDetails: + title: Anchor details by anchor Name + type: object + properties: + name: + type: string + example: my_anchor + dataspaceName: + type: string + example: my_dataspace + schemaSetName: + type: string + example: my_schema_set + MultipartFile: + required: + - file + type: object + properties: + file: + type: string + description: multipartFile + format: binary + SchemaSetDetails: + title: Schema set details by dataspace and schemasetName + type: object + properties: + dataspaceName: + type: string + example: my_dataspace + moduleReferences: + type: array + items: + $ref: '#/components/schemas/ModuleReferences' + name: + type: string + example: my_schema_set + ModuleReferences: + title: Module reference object + type: object + properties: + name: + type: string + example: module_reference_name + namespace: + type: string + example: module_reference_namespace + revision: + type: string + example: module_reference_revision diff --git a/docs/api/swagger/ncmp/openapi.yaml b/docs/api/swagger/ncmp/openapi.yaml new file mode 100644 index 0000000000..0edce20c17 --- /dev/null +++ b/docs/api/swagger/ncmp/openapi.yaml @@ -0,0 +1,659 @@ +openapi: 3.0.1 +info: + title: NCMP to CPS Proxy API + description: NCMP to CPS Proxy API + version: "1.0" +servers: +- url: /ncmp +paths: + /v1/cm-handles/{cm-handle}/node: + get: + tags: + - network-cm-proxy + summary: Get a node given a cm Handle and xpath + description: Get a node with an option to retrieve all the children for a given + cm Handle + operationId: getNodeByCmHandleAndXpath + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + - name: include-descendants + in: query + description: include-descendants + required: false + schema: + type: boolean + default: false + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + /v1/cm-handles/{cm-handle}/list-node: + post: + tags: + - network-cm-proxy + summary: Add list-node child element(s) + description: Add one or more list-node child elements under existing node for + the given CM Handle + operationId: addListNodeElements + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: string + required: true + responses: + "201": + description: Created + content: {} + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + /v1/cm-handles/{cm-handle}/nodes/query: + get: + tags: + - network-cm-proxy + summary: Query data nodes + description: Query nodes for the given cps path and cm Handle + operationId: queryNodesByCmHandleAndCpsPath + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: cps-path + in: query + description: cps-path + required: false + schema: + type: string + default: / + - name: include-descendants + in: query + description: include-descendants + required: false + schema: + type: boolean + default: false + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + /v1/cm-handles/{cm-handle}/nodes: + put: + tags: + - network-cm-proxy + summary: Replace a node with descendants + description: Replace a node with descendants for the given cps path and cm Handle + operationId: replaceNode + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + requestBody: + content: + application/json: + schema: + type: string + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + post: + tags: + - network-cm-proxy + summary: Create a node with descendants + description: Create a node with descendants for the given CM Handle; top level + or under existing node (requires xpath) + operationId: createNode + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + requestBody: + content: + application/json: + schema: + type: string + required: true + responses: + "201": + description: Created + content: {} + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + patch: + tags: + - network-cm-proxy + summary: Update node leaves + description: Update node leaves for the given cps path and cm Handle + operationId: updateNodeLeaves + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: xpath + in: query + description: xpath + required: false + schema: + type: string + default: / + requestBody: + content: + application/json: + schema: + type: string + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + deprecated: true + /v1/ch: + post: + tags: + - network-cm-proxy + summary: DMI notifies NCMP of new CM Handles + description: "Register a DMI Plugin with any new, updated or removed CM Handles." + operationId: updateDmiPluginRegistration + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RestDmiPluginRegistration' + required: true + responses: + "201": + description: Created + content: {} + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}: + get: + tags: + - network-cm-proxy + summary: Get resource data from pass-through operational for cm handle + description: Get resource data from pass-through operational for given cm handle + operationId: getResourceDataOperationalForCmHandle + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + - name: Accept + in: header + description: "Accept parameter for response, if accept parameter is null,\ + \ that means client can accept any format." + required: false + schema: + type: string + enum: + - application/json + - application/yang-data+json + - name: fields + in: query + description: Fields parameter to filter resource + required: false + schema: + type: string + - name: depth + in: query + description: Depth parameter for response + required: false + schema: + minimum: 1 + type: integer + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}: + get: + tags: + - network-cm-proxy + summary: Get resource data from pass-through running for cm handle + description: Get resource data from pass-through running for given cm handle + operationId: getResourceDataRunningForCmHandle + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + - name: Accept + in: header + description: "Accept parameter for response, if accept parameter is null,\ + \ that means client can accept any format." + required: false + schema: + type: string + enum: + - application/json + - application/yang-data+json + - name: fields + in: query + description: Fields parameter to filter resource + required: false + schema: + type: string + - name: depth + in: query + description: Depth parameter for response + required: false + schema: + minimum: 1 + type: integer + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + post: + tags: + - network-cm-proxy + summary: create resource data from pass-through running for cm handle + description: create resource data from pass-through running for given cm handle + operationId: createResourceDataRunningForCmHandle + parameters: + - name: cm-handle + in: path + description: "The identifier for a network function, network element, subnetwork\ + \ or any other cm object by managed Network CM Proxy" + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + - name: Content-Type + in: header + description: "Content parameter for request, if content parameter is null,\ + \ default value is application/json." + required: false + schema: + type: string + default: application/json + requestBody: + content: + application/json: + schema: + type: object + application/yang-data+json: + schema: + type: object + required: true + responses: + "201": + description: Created + content: {} + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "404": + description: The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' +components: + schemas: + ErrorMessage: + title: Error + type: object + properties: + status: + type: string + message: + type: string + details: + type: string + RestDmiPluginRegistration: + type: object + properties: + dmiPlugin: + type: string + example: onap-dmi-plugin + createdCmHandles: + type: array + items: + $ref: '#/components/schemas/RestCmHandle' + updatedCmHandles: + type: array + items: + $ref: '#/components/schemas/RestCmHandle' + removedCmHandles: + type: array + items: + type: string + RestCmHandle: + required: + - cmHandle + type: object + properties: + cmHandle: + type: string + example: cmHandle123 + cmHandleProperties: + $ref: '#/components/schemas/RestCmHandleAdditionalProperties' + RestCmHandleAdditionalProperties: + type: object + additionalProperties: + type: string + example: system-001 diff --git a/docs/architecture.rst b/docs/architecture.rst index 51acf66f0e..b703cfa535 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -6,6 +6,8 @@ CPS Architecture ################ +.. warning:: draft + .. toctree:: :maxdepth: 1 @@ -16,10 +18,12 @@ High Level Component Definition and Architectural Relationships The Configuration Persistence Service (CPS) provides storage for run-time configuration and operational parameters that need to be used by ONAP. -In this release the CPS is a stand-alone component. Project page describing eventual scope and ambition is here: -`Configuration Persistence Service Project <https://wiki.onap.org/display/DW/Configuration+Persistence+Service+Project>`_ +In this release CPS is no longer a stand alone component and is released along with Cps-Temporal and the NCMP-DMI Plugin. + +Project page describing eventual scope and ambition is here: +`Configuration Persistence Service Project <https://wiki.onap.org/display/DW/Configuration+Persistence+Service+Project>`_ -This page reflects the state for Honolulu-R8 release. +This page reflects the state for Istanbul-R9 release. .. image:: _static/cps-r8-arch-diagram.png diff --git a/docs/conf.py b/docs/conf.py index 1a9a5475aa..3aaddd194f 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,24 +16,97 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= + +from docutils.parsers.rst import directives from docs_conf.conf import * branch = 'latest' +doc_url = 'https://docs.onap.org/projects' master_doc = 'index' -extensions = [ - 'sphinx.ext.autosectionlabel', - 'sphinxcontrib.swaggerdoc' - ] + +intersphinx_mapping = {} + +# Latest (change to branch) +intersphinx_mapping['onap-cps'] = ('{}/onap-cps/en/%s'.format(doc_url) % branch, None) linkcheck_ignore = [ 'http://localhost', + 'https://example.com', + 'about:config', + # this URL is not directly reachable and must be configured in the system hosts file. + 'https://portal.api.simpledemo.onap.org:30225/ONAPPORTAL/login.htm', + # anchor issues + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#.*', + 'https://docs.linuxfoundation.org/docs/communitybridge/easycla/contributors/contribute-to-a-gerrit-project#.*', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_robot.html#docs-robot', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#docs-usecases-release', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases.html#docs-usecases', + 'https://docs.onap.org/projects/onap-integration/en/latest/usecases/release_non_functional_requirements.html#release-non-functional-requirements', ] -intersphinx_mapping = {} html_last_updated_fmt = '%d-%b-%y %H:%M' -autosectionlabel_maxdepth = 2 def setup(app): - app.add_stylesheet("css/ribbon.css") + app.add_css_file("css/ribbon.css") + + +needs_extra_options = { + "target": directives.unchanged, + "keyword": directives.unchanged, + "introduced": directives.unchanged, + "updated": directives.unchanged, + "impacts": directives.unchanged, + "validation_mode": directives.unchanged, + "validated_by": directives.unchanged, + "test": directives.unchanged, + "test_case": directives.unchanged, + "test_file": directives.unchanged, + "notes": directives.unchanged, +} + +needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+" +needs_id_required = True +needs_title_optional = True + +needs_template_collapse = """ +.. _{{id}}: + +{% if hide == false -%} +.. role:: needs_tag +.. role:: needs_status +.. role:: needs_type +.. role:: needs_id +.. role:: needs_title + +.. rst-class:: need +.. rst-class:: need_{{type_name}} + +.. container:: need + + `{{id}}` - {{content|indent(4)}} + + .. container:: toggle + + .. container:: header + + Details + +{% if status and status|upper != "NONE" and not hide_status %} | status: :needs_status:`{{status}}`{% endif %} +{% if tags and not hide_tags %} | tags: :needs_tag:`{{tags|join("` :needs_tag:`")}}`{% endif %} +{% if keyword %} | keyword: `{{keyword}}` {% endif %} +{% if target %} | target: `{{target}}` {% endif %} +{% if introduced %} | introduced: `{{introduced}}` {% endif %} +{% if updated %} | updated: `{{updated}}` {% endif %} +{% if impacts %} | impacts: `{{impacts}}` {% endif %} +{% if validation_mode %} | validation mode: `{{validation_mode}}` {% endif %} +{% if validated_by %} | validated by: `{{validated_by}}` {% endif %} +{% if test %} | test: `{{test}}` {% endif %} +{% if test_case %} | test case: {{test_case}} {% endif %} +{% if test_file %} | test file: `{{test_file}}` {% endif %} +{% if notes %} | notes: `{{notes}}` {% endif %} + | children: :need_incoming:`{{id}}` + | parents: :need_outgoing:`{{id}}` +{% endif -%} +""" diff --git a/docs/cps-path.rst b/docs/cps-path.rst index 0271d07e1d..cb26548de2 100644 --- a/docs/cps-path.rst +++ b/docs/cps-path.rst @@ -1,5 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING .. _design: @@ -8,6 +9,8 @@ CPS Path ######## +.. warning:: draft + .. toctree:: :maxdepth: 1 diff --git a/docs/deployment.rst b/docs/deployment.rst new file mode 100644 index 0000000000..d538cbbfee --- /dev/null +++ b/docs/deployment.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _deployment: + + +CPS Deployment +############## + +.. warning:: draft + +.. toctree:: + :maxdepth: 1
\ No newline at end of file diff --git a/docs/design.rst b/docs/design.rst index c7691ae35c..f9f12de432 100755 --- a/docs/design.rst +++ b/docs/design.rst @@ -1,5 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING .. _design: @@ -8,6 +9,8 @@ CPS Design ########## +.. warning:: draft + .. toctree:: :maxdepth: 1 @@ -16,7 +19,9 @@ Offered APIs CPS supports the public APIs listed in the link below: -:download:`OpenApi Specification <api/swagger/openapi.yml>` +:download:`CPS Rest OpenApi Specification <api/swagger/cps/openapi.yaml>` + +:download:`CPS NCMP RestOpenApi Specification <api/swagger/ncmp/openapi.yaml>` Exposed API ----------- diff --git a/docs/index.rst b/docs/index.rst index 57ab3b9b05..ec2ec5dd88 100755 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,5 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING .. _master_index: @@ -7,8 +8,10 @@ .. THIS IS USED INTERNALLY IN CPS ONLY .. _cps-framework-doc: -CPS Documentation for the Honolulu-R8 Release ---------------------------------------------- +CPS-Core Documentation +---------------------- + +.. warning:: draft .. toctree:: :maxdepth: 1 @@ -17,5 +20,16 @@ CPS Documentation for the Honolulu-R8 Release architecture.rst design.rst modeling.rst + deployment.rst cps-path.rst release-notes.rst + +ONAP DMI Plugin Documentation +----------------------------- + +* `DMI Plugin(placeholder) `_ + +CPS-Temporal Documentation +-------------------------- + +* `CPS Temporal(placeholder) `_
\ No newline at end of file diff --git a/docs/modeling.rst b/docs/modeling.rst index 6b15abcfa3..4e46e71b7a 100644 --- a/docs/modeling.rst +++ b/docs/modeling.rst @@ -6,6 +6,8 @@ CPS Modeling ############ +.. warning:: draft + .. toctree:: :maxdepth: 1 diff --git a/docs/overview.rst b/docs/overview.rst index 776e179482..b1f4755b66 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -1,11 +1,13 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. Copyright (C) 2021 Pantheon.tech +.. Copyright (C) 2021 Pantheon.tech, Nordix Foundation .. _overview: CPS Overview ============ +.. warning:: draft + The Configuration Persistence Service (CPS) is a platform component that is designed to serve as a data repository for runtime data that needs persistence. @@ -36,3 +38,6 @@ Contact Information ------------------- onap-discuss@lists.onap.org + +Meeting details `Join <https://zoom.us/j/836561560?pwd=TTZNcFhXTWYxMmZ4SlgzcVZZQXluUT09>`_ +`Agenda <https://wiki.onap.org/pages/viewpage.action?pageId=111117075>`_ diff --git a/docs/release-notes.rst b/docs/release-notes.rst index f213c7e4de..797a11cf5f 100755 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -1,5 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING .. _release_notes: @@ -10,11 +11,140 @@ CPS Release Notes ================= +.. warning:: draft + .. contents:: :depth: 2 .. +.. ======================== +.. * * * ISTANBUL * * * +.. ======================== + +Version: 2.0.0 +============== + +Abstract +-------- + +This document provides the release notes for Istanbul release. + +Release Data +------------ + ++--------------------------------------+--------------------------------------------------------+ +| **CPS Project** | | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Docker images** | onap/cps-and-ncmp:2.0.0 | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Release designation** | 2.0.0 Istanbul | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Release date** | 2021-14-10 | +| | | ++--------------------------------------+--------------------------------------------------------+ + +Features +-------- +* Register DMI Plugins with NCMP for CM Handle registrations. +* Update, Create and Remove CM Handles. +* Add support for retrieving and writing CM Handle data through NCMP datastores. +* Automatic retrieval and caching of model information for CM Handles within NCMP. + +.. _istanbul_deliverable: + +Deliverables +------------ + +Software Deliverables + +.. csv-table:: + :header: "Repository", "SubModules", "Version & Docker Image (if applicable)" + :widths: auto + + "cps", "", "onap/cps-and-ncmp-proxy:2.0.0" + +Bug Fixes +--------- + + - `CPS-316 <https://jira.onap.org/browse/CPS-316>`_ Xpath cannot be created for augmentation data node + - `CPS-336 <https://jira.onap.org/browse/CPS-336>`_ Ends-with functionality in cpsPath does not conform with standard xPath behavior + - `CPS-367 <https://jira.onap.org/browse/CPS-367>`_ Get descendent does not support xpaths that end in list values + - `CPS-377 <https://jira.onap.org/browse/CPS-377>`_ Init ran model validation is failing, error details are not provided + - `CPS-422 <https://jira.onap.org/browse/CPS-422>`_ REST 404 response returned instead of 400 for POST/PUT/PATCH request types + - `CPS-450 <https://jira.onap.org/browse/CPS-450>`_ Datanode query using full path to node causes NPE + - `CPS-466 <https://jira.onap.org/browse/CPS-466>`_ Concurrent requests to create schema sets for the same yang model are not supported + - `CPS-479 <https://jira.onap.org/browse/CPS-479>`_ Get Nodes API does not always return the object from the root + - `CPS-501 <https://jira.onap.org/browse/CPS-501>`_ Put DataNode API has missing transaction and error handling for concurrency issues + - `CPS-504 <https://jira.onap.org/browse/CPS-504>`_ Checkstyle rules are not enforced for cps-ncmp-dmi-plugin + - `CPS-515 <https://jira.onap.org/browse/CPS-515>`_ Maven build is not failing when test containers are not able to run + - `CPS-520 <https://jira.onap.org/browse/CPS-520>`_ Fix docker profile in cps-temporal and cps-ncmp-dmi-plugin + - `CPS-524 <https://jira.onap.org/browse/CPS-524>`_ Issue with CPSData API to add an item to an existing list node + - `CPS-560 <https://jira.onap.org/browse/CPS-560>`_ Response from cps query using text() contains escape characters + - `CPS-566 <https://jira.onap.org/browse/CPS-566>`_ Can't access grandparent node through ancestor axis + - `CPS-586 <https://jira.onap.org/browse/CPS-586>`_ App username and password environment variables are missing from temporal docker compose + +This document provides the release notes for Istanbul release. + +Summary +------- + +Following CPS components are available with default ONAP/CPS installation. + + + * Platform components + + - CPS (Helm charts) + + * Service components + + - CPS Core and NCMP + - CPS Temporal + - DMI Plugin + + * Additional resources that CPS utilizes deployed using ONAP common charts + + - Postgres Database + + +Below service components (mS) are available to be deployed on-demand. + - CPS-TBDMT + + +Under OOM (Kubernetes) all CPS component containers are deployed as Kubernetes Pods/Deployments/Services into Kubernetes cluster. + +Known Limitations, Issues and Workarounds +----------------------------------------- + - `CPS-524 <https://jira.onap.org/browse/CPS-524>`_ Issue with CPSData API to add an item to an existing list node + +*System Limitations* + +Limitations to the amount of child nodes that can be added to the fix above. The current limit is 3. + +*Known Vulnerabilities* + +None + +*Workarounds* + +Add recursive method to save list node data to loop through all corresponding child nodes. + +Security Notes +-------------- + +*Fixed Security Issues* + + - `CPS-249 <https://jira.onap.org/browse/CPS-249>`_ Exception stack trace is exposed + - `CPS-581 <https://jira.onap.org/browse/CPS-581>`_ Remove security vulnerabilities + +*Known Security Issues* + +Test Results +------------ + * `Integration tests` .. ======================== .. * * * HONOLULU * * * |