Overview
Project Name | Enter the name of the project |
---|---|
Target Release Name | London |
Project Lifecycle State | Incubation |
Participating Companies | Deutsche Telecom , Ericsson, Wipro |
Scope
What is this release trying to address?
- Upgradability (CPS, NCMP)
- Version strategy to control Continuous Delivery (CPS and NCMP)
- Technical debt of NCMP data be handled by Liquibase in CPS
- Yang Module Upgrade
- backward compatible
- backward incompatible
- Data Transformation/Migration
- Drop (and resync)
- Version strategy to control Continuous Delivery (CPS and NCMP)
- Service Maturity CPS
- Delivery Pipelines
- Helm best practices (design rules)
- FOSS audit
- Service Maturity NCMP (TBC)
- Performance (CPS, NCMP)
- CPS Data read
- CPS Model-based query
- Registration algorithm change (using schemaSet hash)
- CM Handle Connectivity State
Notification ConfigurationModel basedInstance based
Query PropagationAmalgamate responsesCapability Exchange (during registration/updates)
Stretch Goals
- Forwarding non-passtrough
- data request
- notifications
- Cache Configuration
- Model based
- Instance based, container, leaf
- AAI integration
- Extend Read(query) access to cached data (datastore ncmp-datastores:operational)
- cpsPath support in NCMP
- field' and 'depth' RestConf-Like support in CPS (and NCMP)
- Extend CPS-Path (query) capabilities
- CPS Target Based Access Control (TBAC)
- Ownership of dataspaces using OAuth2
- NCMP Access Control
- Multiple Identifiers for Anchors (CM Handles)
Minimum Viable Product
N/A
Requirements
Priority legend | |||||
Preliminary | Planned for current ONAP Release | In Progress | Paused | Completed | De-scoped |
ONAP Best Practices (Global Requirements) and similar
ONAP Requirement | Notes | CPS- Jira(s) |
---|---|---|
Aiming for gold!
| ||
ONAP script might help us with common quality issues and save reviewing time |
CPS-temporal Requirements (TBC)
CPS-CORE / CPS-NCMP Requirements
Priority | London Requirement Jira | Component(s) | Description | Notes | Team & Work-Item Owner | Jira(s) |
---|---|---|---|---|---|---|
1 | CPS-NCMP | Registration Performance | NCMP shall register new cmhandles (to READY state) at a rate of 11 cmhandles/second (assumes no dmi-plugin delays, assumes 180 modules per cmhandle with 95% module overlap between cmhandles, assumes cache disabled). Treat this as a black box requirement. May mean underlying requirement to have multiple instances, memory requirement etc. Focus right now is 23.Q1 timeframe. | |||
2 | CPS-NCMP CPS-Core | Data Write/Read Performance | NCMP (read) Requirements
kieran mccarthy For this step we can focus on just returning just the cmhandlesIds. Anything further can be covered by another step. Note. This now overlaps with work be done with Wipro/Fujitsu, see CPS Performance Testing | Team 1 | ||
3 | CPS-NCMP | Support ncmp-datastores:operational for querying data (single CM handle, synchronous only) | See CPS-391 page for details about supported operations and combinations. | |||
4 | CPS-Core CPS-NCMP | DMI Audit |
| |||
5 | CPS-NCMP | [investigation/spec] CM data notifications from NCMP to applications including subscriptions | Includes definition of notification and payload format | kieran mccarthy | ||
6 | CPS-NCMP | Implementation of CM data notifications forwarded by NCMP from DMI to application | Implementing Data Notifications & Subscription Notifications on a US by US basis | Team 2 | Notifications
-
CPS-1385Getting issue details...
STATUS
-
CPS-1386Getting issue details...
STATUS
Subscriptions
-
CPS-1431Getting issue details...
STATUS
-
CPS-1392Getting issue details...
STATUS
-
CPS-1393Getting issue details...
STATUS
-
CPS-1394Getting issue details...
STATUS
| |
7 | CPS-NCMP | Support update of cached data through a message driven solution. Respond to VES Events from Devices in ONAP | Receive VES Event and transform it into a 'standard DMI→NCMP events (schema owned by NCMP) | Team 2 | ||
8 | CPS-NCMP (CPS-Core) | Deletion Performance / Delete CM Handles on criterion (TBC) | NCMP shall delete/remove cmhandles (to DELETING state) at a rate of 50 cmhandles/second with cache disabled (assumes no dmi-plugin delays, assumes 180 modules per cmhandle with 95% module overlap between cmhandles) Note: check with Gergely on priority as DELETING state will prevent user to act on cmhandle Note 2. This might need to be split into 'Delete on criterion ie. public/private property' and delete for 'internal/test use' performance | Team 1 | - CPS-1173Getting issue details... STATUS - CPS-1422Getting issue details... STATUS - CPS-1426Getting issue details... STATUS - CPS-1424Getting issue details... STATUS - CPS-1423Getting issue details... STATUS - CPS-1438Getting issue details... STATUS - CPS-1437Getting issue details... STATUS - CPS-1439Getting issue details... STATUS - CPS-1464Getting issue details... STATUS | |
9 | CPS-NCMP | Bulk Operations (Get, Query) | Allow bulk operations for NCMP (and/or) CPS REST Interfaces | Team 1 | ||
10 | CPS-NCMP | CM Handle Connectivity Freshness/Staleness | Need to model what staleness is (current CPS only has concept of model-sync state, nothing about connectivity) | |||
11 | CPS-Core / CPS-NCMP | Support for list as top level data node | Sub Team | |||
12 | CPS-Core / CPS-NCMP | Support for multiple top-elements from different modules in one CM handle/anchor | Sub Team | |||
13 | NCMP-CPS | Support NCMP-CPS upgrade | Currently only custom upgrade is supported. (upon request) Requirement: It shall be possible to upgrade NCMP-CPS from release N-1 to N (without requiring manual intervention/workarounds). N is defined as any release requested by ESH
Technical Debt to be addressed: Liquibase is used in CPS to manage data(upgrades) in CPS Study: Resolve technical debt (mixed data). NCMP Data upgrade. CPS Core need to support model upgrade so that NCMP can use it, | |||
14 | CPS-Core NCMP-CPS | Support multiple identifiers (alternatives for CM Handle ID) | ||||
15 | Support for 'Instance Identifier' | Should be possible to identify a cmhandle using multiple instance identifiers | ||||
16 | CPS-NCMP | Invoke YANG modelled action | Always on operational datastore. Supported for nmcp:passthrough-operational and if executed against ncmp:operational then it is always forwarded to dmi plugin. Is there another story for forwarding to be included as a dependency? Always run as async request. Is this dependent on CPS-1127 - see spin-off user stories table below this on. KMC : Can we deprioritize - this can be run against passthrough-operational for now. Just have to agree on the API / URL for the action to progress at this stage so that the passthrough-operational form is aligned with final operational form. | |||
17 | CPS-NCMP | Enhanced query support | Currently the passthrough has an 'fields' parameter to do a scoped query. Propose to support this in non-passthrough so it is promoted to a fully supported option, e.g. {ncmp-root}/ncmp/v1/ch/335ff/data/ds/ncmp-datastore:passthrough-operational? KMC : Do we support restconf like queries or xpath only? | |||
18 | Move above 8 | CPS_Core / CPS-NCMP | Update YANG schema-set for CM handle without removing and adding it | Cached data is not in scope. Need to specify orphan handling of YANG modules. Needed for node upgrade scenario. | ||
19 | CPS-NCMP | Retrieve single module resource | /v1/ch/{cm-handle}/modules/definitions/{moduleName} | |||
20 | CPS-Core / CPS-NCMP | Existing CPS-path based queries across all CM handles for cached data | Look to define the interface specification for this only. (but best way is to implement for operational/cached data to determine any output formatting issues) | |||
21 | CPS-Core / CPS-NCMP | Access control for public interfaces (NCMP, CPS-Core, DMI?) | KMC : What level of access control is there today - both on CPS and NCMP interfaces? | |||
22 | CPS-NCMP | Fine-grained cache configuration | ||||
23 | CPS-NCMP | Send notification for updated CM handle metadata (public CM handle properties or YANG modules) | ||||
24 | CPS-Core / CPS-NCMP | Support for HTTPS and authentication
| ||||
25 | TBC | CPS-NCMP | Support ncmp-datastores:running for reading data (single CM handle, synchronous only) | See CPS-391 page for details about supported operations and combinations. Note: There can be some overlap between work items for #5, #6, #11 and #12. | ||
26 | TBC | CPS-Core / CPS-NCMP | Support ncmp-datastores:running for writing data (single CM handle, synchronous only) | |||
27 | TBC | CPS-Core | Send notifications on write operation in ncmp-datastores:running for (single CM handle, synchronous only) | |||
28 | CPS-Core / CPS-NCMP | schema-set update for CM handle with cached data present | Need to address case with incompatible model changes. | |||
29 | (ONAP) E2E Slicing Use-Case | Support dynamic inventory changes (ONAP DMI Plugin) | React to events from AAI sent over DMaaP, in turn using Inventory API for updates. Possible in a generic way or it can also listen to similar events sent by SDN-R (as suggested by Ahila P) | |||
30 | CPS-NCMP | Automatic (optional) Data Sync | Metadata (per cmHandle) controls whether this will happen or not | |||
31 | CPS-NCMP | Invoke YANG modelled RPC |
Spin-off user stories, yet to be prioritized
Jira | Component(s) | Related Work Item | Description | Notes |
---|---|---|---|---|
CPS-NCMP | ||||
CPS-NCMP | ||||
CPS-NCMP | ||||
CPS-NCMP | ||||
CPS-NCMP | Investigation on the use of Liquibase to install NCMP artifacts | |||
CPS-NCMP | ||||
CPS | 7 (performance) | Add prefix for containers in different Modules in a PERFORMANT way | ||
CPS | 4 |
Functionalities
User Stories
Longer term roadmap
- CPS-Core will have extended query capabilities based on XPath expression.
- CPS-Core will enforce and control ownership of data it holds
- NCMP will be to able to 'detect' and sync xNF in the network
- Fine-cache cache control will determine what get cache for what xNF
- NCMP will support the query capabilities as CPS-Core and be extend with options similar to RESTConf's 'fields' and 'depth'
Release Deliverables
Indicate the outcome (Executable, Source Code, Library, API description, Tool, Documentation, Release Note, etc) of this release.
Deliverable Name | Deliverable Description |
---|---|
| Container running CPS and NCMP |
onap/cps-temporal | Container running CPS Temporal |
onap/ncmp-dmi-plugin | Container running OMAP DMI Plugin |
docs.onap.org/projects/onap-cps | CPS-NCMP Documentation for R12 (incl. offered APIs and release note) |
docs.onap.org/projects/onap-cps-ncmp-dmi-plugin | ONAP DMI-Plugin Documentation for R12 (incl. offered APIs and release note) |
docs.onap.org/projects/onap-cps-cps-temporal | CPS-Temporal Documentation for R12 (incl. offered APIs and release note) |
Sub-Components
- CPS-Core
- cps-service
- cps-rest
- cps-ri (reference implementation)
- NCMP
- cps-ncmp-service
- cps-ncmp-rest
- dmi-inventory
- Temporal DB
- DMI-Plugin
- DMI Data Access
- DMI Model Access
Architecture
High level architecture diagram
CPS is a new shared service in the ONAP Architecture:
Platform Maturity
See the centralized wiki page: London Release Platform Maturity
API Incoming Dependencies
No Incoming API changes required
API Outgoing Dependencies
API this project is delivering to other projects.
API Name | API Description | API Definition Date | API Delivery date | API Definition link (i.e.swagger) |
---|---|---|---|---|
CPS-E-01 | CPS Model LifeCycle CPS Data Write CPS Data Read | Swagger Sources (openapi.yaml) | ||
CPS-E-04 | Change notifications | |||
CPS-E-05 | xNF Data Access | Swagger Sources (openapi.yaml) | ||
CPS-E-06 | Temporal Data Access (no other component currently depends on this or plan to use it in Istanbul) | Swagger Sources (openapi.yml) |
Third Party Products Dependencies
Third Party Products mean products that are mandatory to provide services for your components.
Name | Description | CPS-Core | CPS-NCMP | CPS-Temporal |
---|---|---|---|---|
3PP Version | ||||
Docker | VM Container | 18 and above | 18 and above | 18 and above |
ODL Yang Tools | Yang model and Data Parser | 8.0.6 | 8.0.6 | N/A |
Postgres Docker image | VM container for Postgres | 14.1-alpine | 14.1-alpine | N/A |
onap/integration-java11 | Java Base image | 8.0.0 | 8.0.0 | 8.0.0 |
Swagger | OpenAPI library | 2.1.4 | 2.1.4 | springdoc-openapi-ui:1.5.9 |
SpringFox | OpenAPI library | 3.0.0 | 3.0.0 | 3.0.0 |
Hibernate types | Support for Postgres datatype JSONB | 2.10.0 | 2.10.0 | 2.10.0 |
Spring Boot | Application Framework | 2.6.14 | 2.6.14 | 2.6.9 |
Commons-lang3 | 3pp | 3.11 | 3.11 | 3.12.0 |
Antlr4-runtime | Language parser | 4.9.2 | 4.9.2 | N/A |
Liquibase | DB Schema (version) management | 4.14.0-nordix | 4.14.0-nordix | 4.14.0-nordix |
Hazelcast | Distributed Cache | 4.2.5 | N/A | N/A |
Testing and Integration Plans
- CPS has high level of built jUnit test (>97 on all components) which is enforced by our maven build scripts
- CPS has built in Persistence Layer test ie. test that integrate with real DB instance covering all use cases and are part of WoW
- CIST tests are part of CPS -Repo, see https://gerrit.onap.org/r/gitweb?p=cps.git;a=tree;f=csit;h=8505b66089f62b6431c1091edf820cbdbf4363d4;hb=HEAD
And executed automatically through the cps-review-verification-maven-master CI Job - E2E Integration with ONAP components was introduced in I-release and is now included in aforementioned CIST tests
Gaps
No gaps Identified
Known Defects and Issues
See dynamic Jira filter:
Risks
Risk identified related to scope-creep, see London Risk Table
Resources
Name | Code Contributor | Committer | Organization | Time Zones | CPS Daily Scrums* | |||
---|---|---|---|---|---|---|---|---|
Winter | Summer (DST) | Focus Team 1 | Focus Team 2 | DT Sub Team | ||||
Toine Siebelink (PTL) | Yes | Yes | Ericsson | GMT/UTC | IST/UTC+1 | X (SM) |
|
|
kieran mccarthy(stakeholder) | No | No | Ericsson | CET/UTC+1 | CEST/UTC+2 |
|
|
|
Peter Turcsanyi (stakeholder) | No | No | Ericsson | CET/UTC+1 | CEST/UTC+2 |
|
|
|
Csaba Kocsis (stakeholder) | No | No | Ericsson | CET/UTC+1 | CEST/UTC+2 |
|
|
|
Tony Finnerty (architect) | No | No | Ericsson | GMT/UTC | IST/UTC+1 |
|
|
|
No | No | Ericsson | GMT/UTC | IST/UTC+1 |
|
|
| |
Yes | No | Tech Mahindra | IST/UTC+5:30 | IST/UTC+5:30 |
|
| X | |
Yes | Yes | Ericsson | GMT/UTC | IST/UTC+1 |
| X |
| |
Yes | No | Ericsson | GMT/UTC | IST/UTC+1 |
| X |
| |
Yes | No | Ericsson | GMT/UTC | IST/UTC+1 | X |
|
| |
Yes | Yes | Ericsson | GMT/UTC | IST/UTC+1 |
| X (SM) |
| |
Yes | No | Ericsson | CET/UTC+1 | CEST/UTC+2 | X |
|
| |
Yes | Yes | Ericsson | GMT/UTC | IST/UTC+1 |
| X | X (SM) | |
Yes | No | Tech Mahindra | IST/UTC+5:30 | IST/UTC+5:30 |
|
| X | |
Yes | No | Tech Mahindra | IST/UTC+5:30 | IST/UTC+5:30 |
|
| X | |
Yes | No | Ericsson | GMT/UTC | IST/UTC+1 |
| X |
| |
Yes | Yes | Ericsson | GMT/UTC | IST/UTC+1 | X |
|
|
*The scrum attendance for each member is the current 'typical' attendance. Each team member can potentially attend any Scrum as needed
Release Milestone
The milestones are defined at the Release Planning and all the supporting project agreed to comply with these dates.
Team Internal Milestone
This section is optional and may be used to document internal milestones within a project team or multiple project teams. For instance, in the case the team has made agreement with other team to deliver some artifacts on a certain date that are not in the release milestone, it is recommended to provide these agreements and dates in this section.
Documentation, Training
See the following centralized wiki: London Documentation
Other Information
Vendor Neutral
If this project is coming from an existing proprietary codebase, ensure that all proprietary trademarks, logos, product names, etc. have been removed. All ONAP deliverables must comply with this rule and be agnostic of any proprietary symbols.
Free and Open Source Software
FOSS activities are critical to the delivery of the whole ONAP initiative. The information may not be fully available at Release Planning, however to avoid late refactoring, it is critical to accomplish this task as early as possible.
List all third party Free and Open Source Software used within the release and provide License type (BSD, MIT, Apache, GNU GPL,... ).
In the case non Apache License are found inform immediately the TSC and the Release Manager and document your reasoning on why you believe we can use a non Apache version 2 license.
Each project must edit its project table available at Project FOSS.
Charter Compliance
The project team comply with the ONAP Charter.