Create preliminary documentation for ONAP DMI-Plugin
Create Preliminary documentation for Istanbul release
of the DMI Plugin.
Added new plugins in POM to generate swagger doc for design page.
Added icons from Cps-Core, along with latest conf.py file from
http://gerrit.onap.org/r/doc
Issue-ID: CPS-625
Change-Id: I30582de9b07e93c1c2ecc18003ee6882994690d8
Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
Signed-off-by: shivasubedi <shiva.subedi@est.tech>
diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css
new file mode 100644
index 0000000..6008cb1
--- /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/dmi-plugin-modeling-concepts.png b/docs/_static/dmi-plugin-modeling-concepts.png
new file mode 100644
index 0000000..77817e4
--- /dev/null
+++ b/docs/_static/dmi-plugin-modeling-concepts.png
Binary files differ
diff --git a/docs/_static/dmi-plugin-r9-arch-diagram.PNG b/docs/_static/dmi-plugin-r9-arch-diagram.PNG
new file mode 100644
index 0000000..a791081
--- /dev/null
+++ b/docs/_static/dmi-plugin-r9-arch-diagram.PNG
Binary files differ
diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico
new file mode 100644
index 0000000..cb712eb
--- /dev/null
+++ b/docs/_static/favicon.ico
Binary files differ
diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png
new file mode 100644
index 0000000..5d064f4
--- /dev/null
+++ b/docs/_static/logo_onap_2017.png
Binary files differ
diff --git a/docs/architecture.rst b/docs/architecture.rst
new file mode 100644
index 0000000..6512576
--- /dev/null
+++ b/docs/architecture.rst
@@ -0,0 +1,40 @@
+.. 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
+.. _architecture:
+
+DMI Plugin Architecture
+#######################
+
+.. warning:: draft
+
+.. toctree::
+ :maxdepth: 1
+
+
+High Level Component Definition and Architectural Relationships
+===============================================================
+
+The DMI plugin provides a gateway for registration of CM Handles within CPS
+
+Project implementation proposal page describing scope is here:
+`CPS-390 Spike: Define and Agree DMI Plugin REST Interface <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+
+This page reflects the state for Istanbul-R9 release.
+
+.. image:: _static/dmi-plugin-r9-arch-diagram.PNG
+
+API definitions
+===============
+
+The DMI plugin provides following interfaces.
+
+.. list-table::
+ :header-rows: 0
+
+ * - Interface name
+ - Interface definition
+ - Interface capabilities
+ - Protocol
+
+The DMI plugin Basic Concepts are described in :doc:`modeling`.
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..3aaddd1
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,112 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021 Nordix Foundation
+# ================================================================================
+# 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=========================================================
+
+
+from docutils.parsers.rst import directives
+from docs_conf.conf import *
+
+branch = 'latest'
+doc_url = 'https://docs.onap.org/projects'
+master_doc = 'index'
+
+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',
+]
+
+
+html_last_updated_fmt = '%d-%b-%y %H:%M'
+
+
+def setup(app):
+ 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/conf.yaml b/docs/conf.yaml
new file mode 100644
index 0000000..8425e08
--- /dev/null
+++ b/docs/conf.yaml
@@ -0,0 +1,25 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021 Nordix Foundation
+# ================================================================================
+# 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=========================================================
+
+---
+project_cfg: onap
+project: onap
+
+# Change this to ReleaseBranchName to modify the header
+default-version: latest
+#
diff --git a/docs/deployment.rst b/docs/deployment.rst
new file mode 100644
index 0000000..0f53898
--- /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:
+
+
+DMI Plugin Deployment
+#####################
+
+.. warning:: draft
+
+.. toctree::
+ :maxdepth: 1
\ No newline at end of file
diff --git a/docs/design.rst b/docs/design.rst
new file mode 100644
index 0000000..e65c5ae
--- /dev/null
+++ b/docs/design.rst
@@ -0,0 +1,40 @@
+.. 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:
+
+
+DMI Plugin Design
+#################
+
+.. warning:: draft
+
+.. toctree::
+ :maxdepth: 1
+
+Offered APIs
+============
+
+The DMI Plugin supports the public APIs listed in the link below:
+
+:download:`DMI Rest OpenApi Specification <openapi/openapi.yml>`
+
+Exposed API
+-----------
+
+The standard for API definition in the RESTful API world is the OpenAPI Specification (OAS).
+The OAS 3, which is based on the original "Swagger Specification", is being widely used in API developments.
+
+Specification can be accessed using following URI:
+
+.. code-block:: bash
+
+ “http://<hostname>:<port>/v3/api-docs?group=dmi-plugin-docket”
+
+DMI Plugin CM Handles
+=====================
+
+Several DMI Plugin APIs use the cm-handle parameter.
+The DMI Plugin CM Handles are described in detail in :doc:`dmi-plugin-cm-handle`.
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..bc299ae
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,41 @@
+.. 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
+.. _dmi:
+
+.. THIS IS USED INTERNALLY IN CPS ONLY
+.. _dmi-framework-doc:
+
+DMI Plugin Documentation for the Istanbul-R9 Release
+----------------------------------------------------
+
+.. warning:: draft
+
+.. toctree::
+ :maxdepth: 1
+
+ overview.rst
+ architecture.rst
+ design.rst
+ modeling.rst
+ deployment.rst
+ release-notes.rst
+
+
+CPS-Core Documentation for the Istanbul-R9 Release
+---------------------------------------------------------
+
+.. toctree::
+ :maxdepth: 3
+
+* `CPS Core(placeholder) `_
+
+CPS-Temporal Documentation for the Istanbul-R9 Release
+------------------------------------------------------
+
+.. toctree::
+ :maxdepth: 1
+
+* `CPS Temporal(placeholder) `_
\ No newline at end of file
diff --git a/docs/modeling.rst b/docs/modeling.rst
new file mode 100644
index 0000000..63f25b7
--- /dev/null
+++ b/docs/modeling.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 (C) 2021 Nordix Foundation
+.. _modeling:
+
+DMI Plugin Modeling
+###################
+
+.. warning:: draft
+
+.. toctree::
+ :maxdepth: 1
+
+Basic Concepts
+==============
+
+.. image:: _static/dmi-plugin-modeling-concepts.png
+ :alt: Basic entities relationship
diff --git a/docs/openapi/openapi.yaml b/docs/openapi/openapi.yaml
new file mode 100644
index 0000000..082df22
--- /dev/null
+++ b/docs/openapi/openapi.yaml
@@ -0,0 +1,428 @@
+openapi: 3.0.1
+info:
+ title: NCMP DMI Plugin
+ description: Adds Data Model Inventory Registry capability for ONAP
+ version: 1.0.0
+servers:
+- url: //localhost:8088/
+tags:
+- name: dmi-plugin-internal
+ description: DMI plugin internal rest apis
+- name: dmi-plugin
+ description: DMI plugin rest apis
+paths:
+ /v1/ch/{cmHandle}/modules:
+ post:
+ tags:
+ - dmi-plugin
+ summary: Get all modules for cm handle
+ description: Get all modules for given cm handle
+ operationId: getModulesForCmHandle
+ parameters:
+ - name: cmHandle
+ in: path
+ description: The cm handle to fetch all the modules
+ required: true
+ style: simple
+ explode: false
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ModuleSet'
+ "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/inventory/cmHandles:
+ post:
+ tags:
+ - dmi-plugin-internal
+ summary: register given list of cm handles (internal use only)
+ description: register given list of cm handles (internal use only)
+ operationId: registerCmHandles
+ requestBody:
+ description: list of cm handles
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CmHandles'
+ required: true
+ responses:
+ "201":
+ description: Created
+ content:
+ text/plain:
+ schema:
+ type: string
+ "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-api-audience: component-internal
+ /v1/ch/{cmHandle}/moduleResources:
+ post:
+ tags:
+ - dmi-plugin
+ summary: Retrieve module resources
+ description: Retrieve module resources for one or more modules
+ operationId: retrieveModuleResources
+ parameters:
+ - name: cmHandle
+ 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
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DmiReadRequestBody'
+ 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'
+ /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}:
+ put:
+ tags:
+ - dmi-plugin
+ summary: Get resource data from passthrough-operational for cm handle
+ description: Get resource data from passthrough-operational for cm handle
+ operationId: getResourceDataOperationalForCmHandle
+ parameters:
+ - name: cmHandle
+ 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.
+ 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
+ requestBody:
+ description: Operational body
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DataAccessReadRequest'
+ 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'
+ /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}:
+ put:
+ tags:
+ - dmi-plugin
+ summary: Get resource data from passthrough-running for cm handle
+ description: Get resource data from passthrough-running for cm handle
+ operationId: getResourceDataPassthroughRunningForCmHandle
+ parameters:
+ - name: cmHandle
+ 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.
+ 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
+ requestBody:
+ description: Operational body
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DataAccessReadRequest'
+ 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'
+ post:
+ tags:
+ - dmi-plugin
+ summary: Write data for a cmHandle
+ description: Write data for a cmHandle using passthrough-running
+ operationId: writeDataByPassthroughRunningForCmHandle
+ parameters:
+ - name: cmHandle
+ 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
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DataAccessWriteRequest'
+ 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'
+components:
+ schemas:
+ ModuleSet:
+ type: object
+ properties:
+ schemas:
+ type: array
+ items:
+ $ref: '#/components/schemas/ModuleSet_schemas'
+ ErrorMessage:
+ title: Error
+ type: object
+ properties:
+ status:
+ type: string
+ message:
+ type: string
+ details:
+ type: string
+ CmHandles:
+ type: object
+ properties:
+ cmHandles:
+ type: array
+ items:
+ type: string
+ DmiReadRequestBody:
+ type: object
+ properties:
+ operation:
+ type: string
+ enum:
+ - read
+ data:
+ $ref: '#/components/schemas/DmiReadRequestBody_data'
+ cmHandleProperties:
+ type: object
+ additionalProperties:
+ type: string
+ example: system-001
+ DataAccessReadRequest:
+ type: object
+ properties:
+ operation:
+ type: string
+ enum:
+ - read
+ cmHandleProperties:
+ type: object
+ additionalProperties:
+ type: string
+ DataAccessWriteRequest:
+ type: object
+ properties:
+ operation:
+ type: string
+ enum:
+ - create
+ dataType:
+ type: string
+ data:
+ type: object
+ cmHandleProperties:
+ type: object
+ additionalProperties:
+ type: string
+ ModuleSet_schemas:
+ type: object
+ properties:
+ moduleName:
+ type: string
+ revision:
+ type: string
+ namespace:
+ type: string
+ DmiReadRequestBody_data_modules:
+ type: object
+ properties:
+ name:
+ type: string
+ revision:
+ type: string
+ DmiReadRequestBody_data:
+ type: object
+ properties:
+ modules:
+ type: array
+ items:
+ $ref: '#/components/schemas/DmiReadRequestBody_data_modules'
diff --git a/docs/overview.rst b/docs/overview.rst
new file mode 100644
index 0000000..c2e670c
--- /dev/null
+++ b/docs/overview.rst
@@ -0,0 +1,21 @@
+.. 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
+.. _overview:
+
+DMI Plugin Overview
+===================
+
+.. warning:: draft
+
+The DMI Plugin is used to allow the DMI API's access to the corresponding NCMP API's.
+
+DMI Plugin Interface
+--------------------
+
+Implementation Proposal: `DMI Plugin Interface <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+
+Contact Information
+-------------------
+
+onap-discuss@lists.onap.org
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
new file mode 100644
index 0000000..8e9a91a
--- /dev/null
+++ b/docs/release-notes.rst
@@ -0,0 +1,129 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
+.. _release_notes:
+
+
+
+========================
+DMI Plugin Release Notes
+========================
+
+.. warning:: draft
+
+.. contents::
+ :depth: 2
+..
+
+.. ========================
+.. * * * ISTANBUL * * *
+.. ========================
+
+Version: 1.0.0
+==============
+
+Abstract
+--------
+
+This document provides the release notes for Istanbul release.
+
+Release Data
+------------
+
++--------------------------------------+--------------------------------------------------------+
+| **CPS Project** | |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Docker images** | placeholder |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Release designation** | 1.0.0 Istanbul |
+| | |
++--------------------------------------+--------------------------------------------------------+
+| **Release date** | 2021-14-10 |
+| | |
++--------------------------------------+--------------------------------------------------------+
+
+Features
+--------
+* Implement plugin registration.
+* Retrieve data from cmHandles using ncmp-datastores passthorugh.
+* Retrieve Yang Resources from one or more modules of a CM Handle.
+
+.. _istanbul_deliverable:
+
+Deliverables
+------------
+
+Software Deliverables
+
+.. csv-table::
+ :header: "Repository", "SubModules", "Version & Docker Image (if applicable)"
+ :widths: auto
+
+ "cps/ncmp-dmi-plugin", "", "placeholder"
+
+Bug Fixes
+---------
+
+This document provides the release notes for Istanbul release.
+
+Summary
+-------
+
+Following DMI plugin components are available with default ONAP/DMI-plugin installation.
+
+
+ * Platform components
+
+ * Service components
+
+ * Additional resources that CPS utilizes deployed using ONAP common charts
+
+Below service components (mS) are available to be deployed on-demand.
+
+Under OOM (Kubernetes) all CPS component containers are deployed as Kubernetes Pods/Deployments/Services into Kubernetes cluster.
+
+Known Limitations, Issues and Workarounds
+-----------------------------------------
+
+*System Limitations*
+
+*Known Vulnerabilities*
+
+None
+
+*Workarounds*
+
+Security Notes
+--------------
+
+*Fixed Security Issues*
+
+*Known Security Issues*
+
+Test Results
+------------
+ * `Integration tests`
+
+References
+----------
+
+For more information on the ONAP Honolulu release, please see:
+
+#. `ONAP Home Page`_
+#. `ONAP Documentation`_
+#. `ONAP Release Downloads`_
+#. `ONAP Wiki Page`_
+
+
+.. _`ONAP Home Page`: https://www.onap.org
+.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Documentation`: https://docs.onap.org
+.. _`ONAP Release Downloads`: https://git.onap.org
+
+Quick Links:
+
+ - `Dmi Plugin implementation page <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+ - `Passing Badge information for CPS <https://bestpractices.coreinfrastructure.org/en/projects/4398>`_
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
new file mode 100644
index 0000000..b3188dd
--- /dev/null
+++ b/docs/requirements-docs.txt
@@ -0,0 +1,15 @@
+tox
+Sphinx
+doc8
+docutils
+setuptools
+six
+sphinx_rtd_theme>=0.4.3
+sphinxcontrib-blockdiag
+sphinxcontrib-needs>=0.2.3
+sphinxcontrib-nwdiag
+sphinxcontrib-seqdiag
+sphinxcontrib-swaggerdoc
+sphinxcontrib-plantuml
+sphinx_bootstrap_theme
+lfdocs-conf
diff --git a/docs/tox.ini b/docs/tox.ini
new file mode 100644
index 0000000..edac8c3
--- /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
diff --git a/pom.xml b/pom.xml
index 7204244..c63cc42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,108 @@
SPDX-License-Identifier: Apache-2.0
============LICENSE_END=========================================================
--->
+--><!DOCTYPE project [
+ <!ELEMENT project (modelVersion|parent|organization|groupId|artifactId|version|name|description|properties|dependencyManagement|dependencies|build|pluginManagement)*>
+ <!ATTLIST project
+ xmlns CDATA #REQUIRED
+ xmlns:xsi CDATA #REQUIRED
+ xsi:schemaLocation CDATA #REQUIRED>
+ <!ELEMENT modelVersion (#PCDATA)>
+ <!ELEMENT parent (groupId|artifactId|version|relativePath)*>
+ <!ELEMENT groupId (#PCDATA)>
+ <!ELEMENT artifactId (#PCDATA)>
+ <!ELEMENT version (#PCDATA)>
+ <!ELEMENT relativePath (#PCDATA)>
+ <!ELEMENT organization (name|url)*>
+ <!ELEMENT name (#PCDATA)>
+ <!ELEMENT url (#PCDATA)>
+ <!ELEMENT description (#PCDATA)>
+ <!ELEMENT properties (app|base.image|cps.version|image.tag|jacoco.minimum.coverage|maven.build.timestamp.format|project.build.sourceEncoding|image.name)*>
+ <!ELEMENT app (#PCDATA)>
+ <!ELEMENT base.image (#PCDATA)>
+ <!ELEMENT cps.version (#PCDATA)>
+ <!ELEMENT image.tag (#PCDATA)>
+ <!ELEMENT jacoco.minimum.coverage (#PCDATA)>
+ <!ELEMENT maven.build.timestamp.format (#PCDATA)>
+ <!ELEMENT project.build.sourceEncoding (#PCDATA)>
+ <!ELEMENT dependencyManagement (dependencies)*>
+ <!ELEMENT dependencies (dependency)*>
+ <!ELEMENT dependency (groupId|artifactId|version|type|scope|exclusions)*>
+ <!ELEMENT type (#PCDATA)>
+ <!ELEMENT scope (#PCDATA)>
+ <!ELEMENT exclusions (exclusion)*>
+ <!ELEMENT exclusion (groupId|artifactId)*>
+ <!ELEMENT build (resources|plugins|plugin)*>
+ <!ELEMENT resources (resource)*>
+ <!ELEMENT resource (directory|filtering|includes|targetPath)*>
+ <!ELEMENT directory (#PCDATA)>
+ <!ELEMENT filtering (#PCDATA)>
+ <!ELEMENT includes (include)*>
+ <!ELEMENT include (#PCDATA)>
+ <!ELEMENT targetPath (#PCDATA)>
+ <!ELEMENT plugins (plugin)*>
+ <!ELEMENT plugin (groupId|artifactId|version|executions|configuration|dependencies)*>
+ <!ELEMENT executions (execution)*>
+ <!ELEMENT execution (goals|configuration|id|phase)*>
+ <!ELEMENT goals (goal)*>
+ <!ELEMENT goal (#PCDATA)>
+ <!ELEMENT configuration (inputSpec|language|generateSupportingFiles|apiPackage|modelPackage|configOptions|argLine|includes|excludes|configLocation|includeResources|includeTestSourceDirectory|includeTestResources|sourceDirectories|consoleOutput|violationSeverity|failOnViolation|plugins|effort|threshold|failOnError|excludeFilterFile|xmlOutput|xmlOutputDirectory|dataFile|rules|dataFileIncludes|container|from|to)*>
+ <!ELEMENT inputSpec (#PCDATA)>
+ <!ELEMENT language (#PCDATA)>
+ <!ELEMENT generateSupportingFiles (#PCDATA)>
+ <!ELEMENT apiPackage (#PCDATA)>
+ <!ELEMENT modelPackage (#PCDATA)>
+ <!ELEMENT configOptions (sourceFolder|dateLibrary|interfaceOnly|useTags)*>
+ <!ELEMENT sourceFolder (#PCDATA)>
+ <!ELEMENT dateLibrary (#PCDATA)>
+ <!ELEMENT interfaceOnly (#PCDATA)>
+ <!ELEMENT useTags (#PCDATA)>
+ <!ELEMENT id (#PCDATA)>
+ <!ELEMENT phase (#PCDATA)>
+ <!ELEMENT argLine (#PCDATA)>
+ <!ELEMENT excludes (exclude)*>
+ <!ELEMENT exclude (#PCDATA)>
+ <!ELEMENT configLocation (#PCDATA)>
+ <!ELEMENT includeResources (#PCDATA)>
+ <!ELEMENT includeTestSourceDirectory (#PCDATA)>
+ <!ELEMENT includeTestResources (#PCDATA)>
+ <!ELEMENT sourceDirectories (sourceDirectory)*>
+ <!ELEMENT sourceDirectory (#PCDATA)>
+ <!ELEMENT consoleOutput (#PCDATA)>
+ <!ELEMENT violationSeverity (#PCDATA)>
+ <!ELEMENT failOnViolation (#PCDATA)>
+ <!ELEMENT effort (#PCDATA)>
+ <!ELEMENT threshold (#PCDATA)>
+ <!ELEMENT failOnError (#PCDATA)>
+ <!ELEMENT excludeFilterFile (#PCDATA)>
+ <!ELEMENT xmlOutput (#PCDATA)>
+ <!ELEMENT xmlOutputDirectory (#PCDATA)>
+ <!ELEMENT dataFile (#PCDATA)>
+ <!ELEMENT rules (rule)*>
+ <!ELEMENT rule (element|limits)*>
+ <!ELEMENT element (#PCDATA)>
+ <!ELEMENT limits (limit)*>
+ <!ELEMENT limit (counter|value|minimum)*>
+ <!ELEMENT counter (#PCDATA)>
+ <!ELEMENT value (#PCDATA)>
+ <!ELEMENT minimum (#PCDATA)>
+ <!ELEMENT dataFileIncludes (fileInclude)*>
+ <!ELEMENT fileInclude (#PCDATA)>
+ <!ELEMENT pluginManagement (plugins)*>
+ <!ELEMENT container (mainClass|creationTime)*>
+ <!ELEMENT mainClass (#PCDATA)>
+ <!ELEMENT creationTime (#PCDATA)>
+ <!ELEMENT from (image)*>
+ <!ELEMENT image (#PCDATA)>
+ <!ELEMENT to (tags|image)*>
+ <!ELEMENT tags (tag)*>
+ <!ELEMENT tag (#PCDATA)>
+ <!ELEMENT profiles (profile)*>
+ <!ELEMENT profile (id|activation|properties|build)*>
+ <!ELEMENT activation (activeByDefault)*>
+ <!ELEMENT activeByDefault (#PCDATA)>
+ <!ELEMENT image.name (#PCDATA)>
+ ]>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -177,6 +278,17 @@
</configOptions>
</configuration>
</execution>
+ <execution>
+ <id>openapi-yaml-gen</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <phase>compile</phase>
+ <configuration>
+ <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
+ <language>openapi-yaml</language>
+ </configuration>
+ </execution>
</executions>
</plugin>
<plugin>
@@ -414,6 +526,29 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.basedir}/docs/openapi/</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${project.basedir}/target/generated-sources/swagger/</directory>
+ <includes>
+ <include>openapi.yaml</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</pluginManagement>
</build>