From 55dc654964942aa67c48f09b0ba56059be8e923b Mon Sep 17 00:00:00 2001 From: Ruslan Kashapov Date: Tue, 2 Mar 2021 16:48:41 +0200 Subject: [PATCH] Docs: overview, architecture, design, modeling Issue-ID: CPS-268 Change-Id: I31480a9a6186af0ddedae4f0eca06a744a2e2d64 Signed-off-by: Ruslan Kashapov --- .gitignore | 5 ++- docs/_static/cps-modeling-concepts.png | Bin 0 -> 53884 bytes docs/_static/cps-r8-arch-diagram.png | Bin 0 -> 62879 bytes docs/architecture.rst | 65 +++++++++++++++++++++++++++++++-- docs/{offeredapis.rst => design.rst} | 22 +++++------ docs/index.rst | 14 +++++-- docs/modeling.rst | 47 ++++++++++++++++++++++++ docs/overview.rst | 38 +++++++++++++++++++ 8 files changed, 171 insertions(+), 20 deletions(-) create mode 100644 docs/_static/cps-modeling-concepts.png create mode 100644 docs/_static/cps-r8-arch-diagram.png rename docs/{offeredapis.rst => design.rst} (80%) create mode 100644 docs/modeling.rst create mode 100644 docs/overview.rst diff --git a/.gitignore b/.gitignore index f197492474..8fff710922 100755 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,7 @@ tmp/ /.tox /_build/* -/__pycache__/* \ No newline at end of file +/__pycache__/* + +/docs/docs/ +/docs/.vscode/ \ No newline at end of file diff --git a/docs/_static/cps-modeling-concepts.png b/docs/_static/cps-modeling-concepts.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fd9f089e9a0c02d274a43e808efede4542d763 GIT binary patch literal 53884 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 literal 0 HcmV?d00001 diff --git a/docs/_static/cps-r8-arch-diagram.png b/docs/_static/cps-r8-arch-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a90a6ea169697499bb3b3d8c5a8263018aa58f GIT binary patch literal 62879 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

MZ|$0WUK|}CmswPHxB&Eu3fQr0M(jPitO}fZ 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 T`z*`f0)C3JsxlQ|^Y{M)nn7VJ literal 0 HcmV?d00001 diff --git a/docs/architecture.rst b/docs/architecture.rst index c613e4ff95..51acf66f0e 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -1,5 +1,64 @@ -.. Copyright (C) 2021 Nordix Foundation +.. 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, Pantheon.tech .. _architecture: -CPS in ONAP Architecture --------------------------- \ No newline at end of file +CPS Architecture +################ + +.. toctree:: + :maxdepth: 1 + + +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 `_ + +This page reflects the state for Honolulu-R8 release. + +.. image:: _static/cps-r8-arch-diagram.png + +API definitions +=============== + +Configuration Persistence Service provides following interfaces. + +.. list-table:: + :header-rows: 1 + + * - Interface name + - Interface definition + - Interface capabilities + - Protocol + * - CPS-E-01 + - Administrative Data Management + - - create/delete dataspace + - create/delete schema set + - create/delete anchor + - REST + * - CPS-E-02 + - Generic Data Access + - - create data node + - read data node by xpath with or without descendants + - update data node by xpath with or without descendants + - REST + * - CPS-E-03 + - Generic Data Search + - - query data nodes by xpath prefix and attribute value + - REST + * - CPS-E-04 + - Change Notification + - *Not available in Honolulu-R8* + - *N/A* + * - CPS-E-05 + - xNF Data Access + - - read xNF data + - query xNF data + - REST + +The CPS Basic Concepts are described in :doc:`modeling`. diff --git a/docs/offeredapis.rst b/docs/design.rst similarity index 80% rename from docs/offeredapis.rst rename to docs/design.rst index 1f11905a4e..4f1bf1ee13 100755 --- a/docs/offeredapis.rst +++ b/docs/design.rst @@ -2,32 +2,30 @@ .. http://creativecommons.org/licenses/by/4.0 .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING -.. _offeredapis: +.. _design: -CPS Offered APIs -================ +CPS Design +########## + +.. toctree:: + :maxdepth: 1 + +Offered APIs +============ CPS supports the public APIs listed in the link below: :download:`OpenApi Specification ` -.. toctree:: - :maxdepth: 1 - 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 accesed locally at : +Specification can be accessed using following URI: .. code-block:: bash “http://:/v3/api-docs?group=cps-docket” - -Contact Information -------------------- - -onap-discuss@lists.onap.org \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index a7c1b93df6..f389a6768c 100755 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,17 +1,23 @@ .. 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 .. _master_index: .. THIS IS USED INTERNALLY IN CPS ONLY .. _cps-framework-doc: -CPS Documentation Repository ------------------------------ +CPS Documentation for the Honolulu-R8 Release +--------------------------------------------- .. toctree:: :maxdepth: 1 - architecure.rst - offeredapis.rst + overview.rst + architecture.rst + design.rst + modeling.rst + deployment.rst + user-guide.rst release-notes.rst diff --git a/docs/modeling.rst b/docs/modeling.rst new file mode 100644 index 0000000000..74ee8ec86a --- /dev/null +++ b/docs/modeling.rst @@ -0,0 +1,47 @@ +.. 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 +.. _modeling: + +CPS Modeling +############ + +.. toctree:: + :maxdepth: 1 + +Basic Concepts +============== + +.. image:: _static/cps-modeling-concepts.png + :alt: Basic entities relationship + +Administrative entities + +- **Dataspace** is a primary logical separation of data. + + Any application can define its own dataspace to store the model(s) and data it owns. + Dataspace is uniquely identified by it's name. + +- **Schema Set** describes a data model(s). + + Schema Set holds reference(s) to single or multiple YANG modules. Schema Set belongs to dataspace + and uniquely identified by its name (within its own dataspace). Same YANG resources (source files) can be + referenced by multiple schema sets from different dataspaces. + +- **Anchor** identifies the unique data set (data record) within a dataspace + + Anchor always references a schema set within same dataspace which describes a data model of associated data. + Multiple anchors may reference same schema set. Anchor is uniquely identified by its name (within own dataspace). + +Data + +- **Data Node** represents a data fragment. + + Each data node can have zero or more descendants and together they form a data instance tree. + The data node tree belongs to an anchor. + + Data node is representing a data fragment described in a YANG model as a *container* and/or a *list*. + The data described as a *leaf* and/or a *leaf-list* are stored within a parent data node. + + The data node position within a tree is uniquely identified by the node's unique **xpath** which can be used + for partial data query. diff --git a/docs/overview.rst b/docs/overview.rst new file mode 100644 index 0000000000..776e179482 --- /dev/null +++ b/docs/overview.rst @@ -0,0 +1,38 @@ +.. 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 +.. _overview: + +CPS Overview +============ + +The Configuration Persistence Service (CPS) is a platform component that is designed to serve as a +data repository for runtime data that needs persistence. + +Types of data that is stored: + +- **Configuration Parameters** + + These are configuration parameters that are used by xNFs during installation & commissioning. Configuration + parameters are typically used before the xNF has been brought up or is operational. For example, a 5G Network + configuration parameter for a PNFs that sets the mechanical tilt which is a configuration setting upon + installation. + +- **Operational Parameters** + + This operational information could be either an actual state or configuration of a network service or device. + These are parameters that are derived, discovered, computed that are used by xNFs during run time AFTER the + xNF becomes operational i.e. AFTER it has "booted up", been installed or configured. For example, in 5G Network, + 5G PNFs may need to adjust a tower electrical antenna tilt. These operational parameters are Exo-inventory + information, meaning it is information that doesn't belong in A&AI. In principle, some parameters might be both + configuration and operational parameters depending on how they are used. + +CPS Project +----------- + +Wiki: `Configuration Persistence Service Project `_ + +Contact Information +------------------- + +onap-discuss@lists.onap.org -- 2.16.6