Versions Compared

Key

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

...

optional depending on the data being persisted or notYes will be supported


Description

Notes

Decision

1Priority of async calls
In Istanbul, async calls are required only in pass-through cases. NCMP does not have to handle these requests 
2Will we use the data node wrapper on GET rest operations?

Currently, we wrap the response of GET operations using the data node wrapper.

we should mainly support yang-data/json

controlled by "accept-header"

3In the URI will we distinguish between data and operations (RFC calls) as part of the path?

This only applies to pass-through

yes, we will distinguish between data and operation

4Which query parameters will NCMP support?

Parent data resource identifier can handle any path using the same query parameter 

  1. cpsPath
  2. RESTConf Path (pass-through)
  3. Proprietary Path (pass-through)
5

Yml should include return types and examples of the payload


Legacy and new API documentation needs to include output examples.

Task created, see 

Jira
serverONAP JIRA
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-401

6camel case or dash in URI

We will use a dash for param names e.g. cm-handle (although it has since been agreed we use 'ch' in this particular case)

See no.3 https://restfulapi.net/resource-naming/

7Insert /resource-path in front of the resource path to prevent ambiguous paths<OP>/ncmp/<v{v-number}>/ch/<cm-handle>/<data|operations|{ncmp-operation}>/ds/{datastore}/[rp:]{resource-path}?{query}Optionally insert the resource path ('rp:') if it clashes with the current
8Granularity of update scenarios (and priority)
  1. Add child and its descendants (supported in cps core)
  2. Add all list elements (supported in cps core)
  3. Replace child and its descendants (supported in cps core)
  4. Replace all list elements (pending in cps core)
  5. Update single leaf (new)
  6. Add list entry (new)

Priority is pass-through only so it depends on the RETSConf protocol that is supported.

In Jakarta or if required by other projects more fine-grained 'operation' datastore update options can be implemented

9Fallback option for datastore in release I
Yes, Istanbul will choose datastore based on presence of data (assuming model is always there)
10fields is a rest conf option, investigate is it fully supported by onap
Supported in pass-through for ONAP DMI plugin but depending on the support by the actual target. The intention is to increase support 'fields' in future requirements following RFC-8040 for operational datastore etc.
11Agree on URI syntax 

Proposed syntax by CPS team 

<OP>/ncmp/<v{v-number}>/ch/<cm-handle>/<data|operations|{ncmp-operation}>/ds/{datastore}/[rp:]{resource-path}?{query}

review completed and proposed URI agreed 
12Will we combine query capabilities with update capabilities?
We have decided not to combine query capabilities with update capabilities
13Description of header limitations

HTTP Header Limitations
Some servers put size limitations on HTTP headers, making them unsuitable for storing cmHandle information.

LIMITATION NOTE: server implementations put size limits on the headers meaning header contents should be designed carefully :
Apache - 8K
Nginx - 4K-8K
IIS - 8K-16K
Tomcat - 8K – 48K

14Will NCMP support paths for pass-through:running

The plugin will not do transformation or validation of paths in the case of pass-through:running

15Specification of path per cm handle
DMI Plugin can take cps paths or resconf paths and it needs to specify that per cm handle when cm handle is created
16What is the default path for NCMP
In NCMP default will always be cps path and depending on the adapter we can change it as needed per cm handle
17Fields parameter for ncmp/operational?
The fields parameter is ignored in ncmp/operational (in istanbul release)
18Is specifying the datastore mandatory?
Datastore is mandatory in Istanbul release
19Register a DMI plugin with NCMP
DMI plugin is a part of cm handle registration. The rest endpoint on NCMP can be multiple calls
20Retrieve list of modules (names) for a cmHandle
Retrieve a list of module names for cm handle - this will be used by ncmp to get the models. - assuming ncmp model discovery is complete and it is stored in cps core, this will come from cached information
21Where will sync be implemented?
Implement sync in the dmi plugin and then have ncmp be able to pass on the request. This is not a bulk operation
22Config-true only support (filter out config-false data)Currently 'ncmp-datastores:operational' will include (and return) config-false dataFuture release could support additional flag or a ' ncmp-datastores:running' to filter out config-false data
23Enable NCMP to convert cpsPath to mutliple options(RESTConf, netConf, leave as cpsPath)When other DMI-Plugins are realized they might need a different conversion then the default from cspPath to RESTConf. This could be configured by using a known property for each cm-handle No required in Istanbul. But DB model can easily be updated to cater for this when needed
24Datastore conversion in NCMP or DMI-Plugin
DMI-Plugin will know best how to convert. This will also reduce future impacts on NCMP for new options.
25What datastore/s (name/s) is/are supported by NCMP to referred to the cached data. 'Operational' or 'running''operational' would imply RO and config=false data is included. 'To also support 'running' using the same data a filter would have to be appliedncmp-datastore:operational wil be used for the data in the cache which wil include config + non-config data 
26Consider fallback option when user specifies ncmp/operational but dat is NOT synced
NCMP will forward requests for un-synced cmHandles to the DMI Plugin
(Including required transformation of resource path etc.)


RESTCONF/NETCONF relationship

...

1ncmp-datastores:operational (RO / config=true/false)Read from the CPS "operational" store (cached)config true and config false data
2ncmp-datastores:passthrough-running (RW / config=true)*Read/Write to/from the live devices ietf-datastores:running (no local ncmp validation)config-true data only
3ncmp-datastores:passthrough-operational (RO / config=true/false)*
config true and config false data

...

4ncmp-datastores:running (RW / config=true/false)   


Future datastores to be supported by NCMP might include :

ncmp-datastores:passthrough-operational (RO)
1ncmp-datastores:running (RW / config=true/false)   Read/Write to the CPS "intended" store (with validation).config-true data only, see decision #23passthrough-intented (RO)Read from the live 2ncmp-datastores:passthrough-intented (RO)Read from the live devices ietf-datastores:intended?3Read from the live devices ietf-datastores:operationalconfig true and config false data

  

If datastore (ds/{datastore}) is omitted from URI, the datastore from cmhandle is used

...

Excerpt

Datastore, paths and format combinations

NCMP/CPS-Core needs to remove DataNode wrappingcm-handle known properties to resource-path format towards DMI-Plug

StateInputBehaviorDataNotes
#Data-Sync DatatStore parametersparameter

Expected resource-path

format

accept-header

fields

(filter)

Data Source

included dataNodes

1OnNot SpecifiedcpsPathapplication/yang-data+jsonignoredRead from cache
output: application/yang-data+json
CPS-CoreYesN/ANot supportedN/AN/A
2OnNot SpecifiedcpsPathapplication/jsonIgnoredRead from cache
output: application/json
CPS-CoreYesN/ANot supportedN/AN/A
3Off

Not Specified*Need to be confirmed, see open issue #9 & #18

cpsPathapplication/yang-data+jsonDMI-PluginDepends on chosen default option for datastore

N/A

Not supported

N/AN/A


4OffNot SpecifiedcpsPathN/AN/AN/ANot supportedN/AN/ANOT Supported (there are NO DataNode objects in CPS to output as JSON)
5OffNot Specifiedother then cpsPathN/AN/AN/ANot supportedN/AN/ANot supported Since NCMP can only convert cpsPaths
6On | Offpassthrough-operational*

NCMP does not parse*

NCMP does not parsedepends on DMI-Plugin
(supported in ONAP)

Resolve DMI plugin

Forward request to plugin

Output received response
DMI-Pluginconfig +
non-config

The DMI plugin may error if the RP or accept header are not supported.

The DMI plugin may forward the request without processing too.
7On | Offpassthrough-runningNCMP does not parseNCMP does not parsedepends on DMI-Plugin
(supported in ONAP)

Resolve DMI plugin

Forward request to plugin

Output received response
DMI-Pluginconfig-only
8Onncmp/operational*cpsPathapplication/yang-data+jsonIgnored

Read from cache

output: application/yang-data+json

CPS-Coreconfig +
non-config
NCMP/CPS-Core needs to remove DataNode wrapping

9Onncmp/operational*cpsPathapplication/jsonIgnored

Read from cache

output: application/json

CPS-Coreconfig +
non-config

10Offncmp/operational*cpsPathapplication/yang-data+jsondepends on DMI-Plugin
(supported in ONAP)

Resolve DMI plugin

Convert cpsPath to RESTConfPath

Forward request to plugin | Read from DMI plugin

Output application/yang-data+json

DMI-Plugin

config +
non-config

*
11On | Offncmp/runningcpsPathapplication/yang-data+jsondepends on DMI-Plugin
(supported in ONAP)

Resolve DMI plugin

Convert cpsPath to RESTConfPath

Forward request to plugin | Read from DMI plugin

Output application/yang-data+json

DMI-Pluginconfig-only

*'Operation;' or 'running'  see open issue #25



Works Items for above.

#DescriptionComponentEnables
1Forward request from NCMP to CPS-CoreNCMP8,9
2Forward request from NCMP to DMI-PluginNCMP6,7
3Convert json (dataNode) to yang-data+jsonCPS-Core/NCMP8
4Convert cpsPath to RESTConf PathNCMP10,11,12
5NOT SupportedN/A1,2,3,4,5


...