Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The purpose of the page is to have content for review with the ARCHCOM before the end of July 2020

Table of Contents

:

  1. Design the Model Driven CPS PoC
    Jira Legacy
    serverSystem Jira
    serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
    keyREQ-384
  2. Start the design of a stand-alone CPS
  3. Engage with the CPS community on the design of the stand-alone CPS
  4. Review with the ARCHCOM to ensure broad ONAP community awareness and agreed direction

Table of Contents
maxLevel3

PoC Overview Diagram

Topic Areas

Topic AreaDescription

MODEL DRIVEN SCHEMA: Relates to Design time activities. SDC operation. Distribution of the CSAR and the Model-driven Schema coming from Design time

UPDATE: Takes incoming Standards Defined VES event from DCAE (PNF) and is published on DMAAP

SYNCHRONIZATION: C&PS synchronizes to A&AI, which allows it to get the latest view of what is in A&AI and align it with the C&PS data records.

SERVICE PROVIDER INTERFACE: The C&PS interface to the DBMS

C&PS API: The API that allows other micro-services and other components to access C&PS DB with CRUD operations.

Scope

TODO

  •  Select a YANG model for PoC. Needs to be simple, yet drive validation and upgrade. Ideally will have multiple objects/attributes to associate different CPS behavior

Base scope

  • Read/write persisted Configuration Management data:
    • defined by xNF (simple YANG model), published as YANG
  • Models deployed @ runtime with no ONAP platform impacts or LCM events
  • Show the benefits in terms of constraint validation, access and upgrade

...

  • Automating the ingestion of models from SDC or controller (unless we get to it in the stretch target). The model LCM interface will be exercised manually during the PoC.
  • Syncing with A&AI. The PoC will work on a fixed topology

High Level Design

Context of CPS

Drawio
bordertrue
diagramNameCPS Context
simpleViewerfalse
widthlinksauto
tbstyletop
lboxtrue
diagramWidth781
revision3

...

C4 diagram of main components

Logical view of the CPS as a project

Drawio
Include Page
width
bordertrue
diagramNameCPS Major participants
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth811
revision1

Key sequences/flows

Interfaces

Initial draft specification REST & Java

Behavior

Initial sata structure specification, REST & Java

Issues decisions and assumptions1181
revision16

Participant NameFunctional purposePoC handling
YANG Model parserConverts YANG models into java objectsRequired
YANG Data parserConverts data compliant with a YANG model into java primitives, assists the CPS coreRequired
Model storeKeeps a local cache of the structures and relationships (generated from the YANG models) required by the CPSRequired
SDC Model loaderSubscribes to DMaaP for CSAR publication. Parses and extracts the models from the CSAR and gives them to the xNF Model Data ProxyNot required
Topology syncDoes initial sync and maintains an up to date view of the active topology state. Informs the mirror service of any changesNot required
xNF Model Data ProxyEncapsulation of all model and data access that relates to xNFNot required
xNF Proxy Data accessREST interface that provides access to xNF dataNot required
CPS CoreProvides validation of and access to data. Is agnostic to the DB technology and schemaRequired
CPS Data accessProvides REST CRUD access to the dataRequired
CPS notificationProvides a DMaaP notification in the event that (1) data is changed and (2) it has been tagged/marked for notifcationRequired for stretch
PostgreSQL pluginMaps the java primitive representation of the YANG data objects to their DB technology (PostgreSQL) and schema specifics (SQL)Required
PostgreSQLDatabase Management System for current dataRequired
Temporal [Stack]Placeholder for logical components representing the temporal handling of dataNot required
Temporal DBDatabase Management System for temporal dataNot required

The blue software encapsulates the handling of models and data related to xNF (mirrored data). This implementation is not required to prove the model driven aspects of the CPS.

The pink software encapsulates the integration with other data stores. This is being taken by the temporal DB PoC. This PoC needs to provide a feed of change notifications for any joint demonstrations. Configuring the parts of the model that will emit change notifications is part of the stretch goal.

Data lake and access control

The CPS will make it possible to share data across components. This is beneficial where it is expensive to source data or access latency is a concern.

The ability to share data raises concerns w.r.t. uncontrolled coupling between components. This makes system maintenance difficult.

The CPS will provide a balance between these competing needs.

For more discussion, see: Common information model, Data lake and Access control

Solution

To be useful to an application, data must be accessible and possible to interpret.

Access is provided by the CPS. Access may be qualified as read only or write.

The ability to interpret data requires access to the model that defines the structure and constraints of the data.

Consider the following scenario.

image2020-7-21_16-46-16.pngImage Added

Svc A and Svc B are considered to own their data, A and B respecively.

Data A and Data B are stored in a Common Data Service (e.g. DBMS). This is important, but not relevant to this discussion.

Data A and Data B may represent multiple instances of the same model – for example there may be multiple instances of the same xNF in the scope of the ONAP system, each would need to be in a separate tree, all compliant to the same model.

Svc C would like to access Data A and Data B, without going through the public interfaces exposed by Svc A and Svc B.

Svc C must petition Svc A and Svc B for access rights (this may be a design or run-time activity) to their data.

Once access has be provided by the owners (Svc A and Svc B) Svc C may use this permission to access data directly.

Svc C cannot completely interpret the data without access to the models. The model is the responsibility of the owning service, and is provided to Svc C together with the permission and any relevant instances of data trees.

This is also the case for the CPS. It cannot persist or validate data without access to the model. It is the responsibility of the data owner to provide the model to the CPS prior to data access.

The run-time aspect of the granting of permission has some potential to also address some race conditions.

The key benefits are: (1) Data lake use cases are enabled; (2) Coupling between components at the level of 'shared' data are explicitly declared/published.

PoC implemetaion

The PoC will start with a compatible subset of the above implementation. Nothing in the PoC implementation will preclude the development of the above solution.

image2020-7-21_16-40-28.pngImage Added

All access to data will be via the owning service.

Model handling

Below a simplified view of model handling artifacts and their relationships.

Model artefactsImage Added

The run-time artifacts are shaded (orange). A typical simplified flow:

  • A document representing xNF data is given to the CPS.
  • It will parse (and validate) the document,
  • Map data to the generic DB schema and store data.

In order for this to work:

  • The document must be compliant to an xNF schema model. This schema model describes the structure of the data and any constraints that need to be checked to ensure integrity.
  • The xNF schema model must be written in YANG. This language describes syntax and capabilities (basic concepts).
  • A Yang parser is required to interpret documents compliant with the YANG language. The parser is dependent on the language.
  • To store data in a DBMS, typically a schema is required. This is denoted above as, 'Generic schema model'.
  • Obviously the xNF schema model and the Generic schema model are not the same. Therefor a mapping is required. Depending on how simple/generic/abstract the generic schema model, the mapping may be coupled with either the language or the xNF schema model. One of the aims of the PoC is to be agnostic to the xNF model at run-time, thus the mapping is made to the YANG language.
  • To support multiple container run-times (Java, Python, Go, Rust, ...) for the CPS, the mapping is described in a 'Language Capability Map'.
  • The model mapper depends on the language capability map and the Yang parser (in particular the java representation of the language features).

Model ingestion

Model ingestion is subject to a design discussion. See below. This section will be updated when that discussion has been concluded and a decision made.

Note that for the purposes of the PoC, model ingestion will be via a model life-cycle REST interface.

Model upgrade

T.B.D. See Upgrade of models for discussion and decision

Backward compatibility

See decision for more information. Compatibility will be provided by either a dedicated component, or ONAP applications depending on legacy interfaces will be updated. This will depend on resources.

Detailed design

Key sequences/flows

Add a model

Drawio
bordertrue
diagramNameAddModel
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth701
revision2

Store data (including validation)

Drawio
bordertrue
diagramNameStore data
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth1221
revision2

Read data

Reading data is very similar to storing data. The uuid of the model instance is assumed. Validation is not needed. Queries will need to be processed and mapped to DB technology specifics.

Upgrade a model

T.B.D. Needs to wait until upgrade behavior is specified.

Adapt change notification behavior as described in model

T.B.D. Show how the model spec is used to control interactions between CPS Core and CPS Notification

Interfaces

Style and payload structure

The payload will be represented as Generic objects/documents. For more reasoning and discussion, see Data Representation

In java, the CPSDataObject will be a 'glorified' map -- not a basic map, but one level more concrete (in terms of abstractions). I.e. at the language level
The sample java code below illustrates ubiquitous use of the CPSDataObject.

Code Block
languagejava
public class CPSDataObject extends Map {...}

CPSDataObject tree = cps.getTree(obj, level, filter)
List<CPSDataObject> refs = cps.getRefs(obj)
CPSDataObject parent = cps.getParent(obj)
List<CPSDataObject> children = cps.getChildren(obj)

Filters will be encoded as XPath expressions.

YANG <-> Java type mapping will be inherited from the selection of YANG parser

For REST, the payload will be a document complying to a generic JSON schema.

The style of the interface will be such that access methods are associated with the CPS. Data is provided as context. For more reasoning and discussion, see Interface style.

The pseudo Java code below illustrates this style by showing how complementary relationships could be navigated.

Code Block
languagejava
CPSDataObject cpsRootObject = CPS.getRootObject(uuid_to_identify_inventory_item);
System.out.println(cpsRootObject);
List<CPSDataObject> kids = CPS.getChildren(cpsRootObject);
for (CPSDataObject kid: kids) {
	System.out.println(CPS.getParent(kid));
}
REST payload structure
Java payload structure
Access methods
NameInterfaceDescriptionParametersReturn
Add modelCPS-E-01Add a YANG model to the CPS so that compliant data may be stored & retrieved
  • YANG model
Some identifier
Remove modelCPS-E-01Mark a model for removal, and remove when no data remains that relies on the model
  • Model identifier
Success/Number of model instances still using model
Upgrade modelCPS-E-01T.B.D
  • YANG model
  • Model identifier
-
Create model instanceCPS-E-02Prepare the underlying DB for the storage of data compliant to the model.
  • Model identifier
  • Instance unique identifier
Model instance identifier
Delete model instanceCPS-E-02Remove the data and any artifacts from the underlying DB
  • Instance unique identifier
Success/Failure
Create dataCPS-E-02[Validate &] Store data compliant to a model
  • Instance unique identifier
  • Data structure/document
Success/Failure
Replace dataCPS-E-02[Validate &] Store data compliant to a model in place of existing data
  • Instance unique identifier
  • Data structure/document
Success/Failure
Update dataCPS-E-02[Validate &] Update data that is (1) compliant to a model and (2) already stored
  • Instance unique identifier
  • Data structure/document
Success/Failure
Delete dataCPS-E-02Remove data from a model instance
  • Instance unique identifier
  • Data structure/document
Success/Failure
Data change notificationCPS-E-03Notify interested parties that data (marked as interesting by the model) has been modified
  • Instance unique identifier
  • Data structure/document
  • Previous data structure/document
-
Service Provider Interface (SPI)

T.B.D. An internal interface that defines how the CPS Core will interact with the DBMS. The design of the SPI will be informed by agreed CPS behavior and minimum requirements for the DBMS.

The SPI is required to ensure that different DB technologies can be used in different deployments.

Behavior

T.B.D.: Eventual consistency; Data integrity guarantees; Fast failure; Progress; Cancellation;

REST

Will be specified as part of the PoC execution, and updated/referenced from here

This will follow REST rules and guidelines as defined by ONAP documentation (TODO: add link)

Java

Will be specified as part of the PoC execution, and updated/referenced from here

Decision reference

Issues decisions and assumptions