You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

  • Get the latest study information from Kieran Mccarthy <kieran.a.mccarthy@ericsson.com>
  • Create a Wiki page with a clear diagram showing NCM and DMI and its interfaces detailing the scope of THIS (and other) spike
  • Update V1 of the interface (communicate with E2E Slicing)
  • Detail CRUD operations
  • Detail Patch 
  • Include datastore options (pass-through) 
  • Agree on parameter names and use them consistently
  • Agree on JSON output format 
  • Resource 'path' can cover cps-paths, rest-conf path (for pass-through), and any proprietary paths
  • Only 'hint' at 
    • async options
    • bulk operations

A/C

  • Wiki page detailing points above
  • Share an agreement with the team
  • Present at community

Out of scope

  • actual YAML definitions (separate user story)


CPS-391 - Getting issue details... STATUS


Open Issues & Decisions


Description

Notes

Decision

1Will we use the wrapper on GET rest operations?

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


2In the URI will we distinguish between data and operations as part of the path?
3Parent data resource identifier can handle any path

4

Yml update with return types with examples of the payload



Principles

  1. Follow principles/patterns of RESTCONF RFC-8040
  2. Follow principles/patterns of yang-patch RFC-8072
  3. Follow principles/patterns of RESTCONF NMDA RFC-8527


RESTCONF/NETCONF relationship



NCMP URI

NCMP URI format to follow below pattern


<OP>    ncmp / <v{v-number}> / cm-handle /<cmhandle> /<data|operations|{ncmp-action}> /ds/{datastore} / <resource-path> ? <query>


URI
Mandatory or Optional
<OP>methodMandatory
ncmp /entryMandatory
<v{v-number}>versionMandatory
cm-handle /<cm-handle>cm-handleOptional
<data|operations|{ncmp-action}>request categoryMandatory
ds/{datastore}datastoreOptional
<resource-path>resourceOptional
<query>queryOptional



where:

<OP> : the HTTP method

<ncmp> : the ncmp root resource

<v{v-number}> : version of the ncmp interface <path> is the target resource URI <query> is the query

parameter list

<request-category> : yang data, rpc operation or a (non-modelled) ncmp api action


<datastore> : optional datastore

<cmhandle> : unique (string) identifier of a yang tree instance.

<resource-path> : the path expression identifying the resource that is being accessed by the operation. If this field is not present, then the target resource is the API itself.

<query> : the set of parameters associated with the RESTCONF message; see Section 3.4 of [RFC3986]. RESTCONF parameters have the

familiar form of "name=value" pairs. Most query parameters are optional to implement by the server and optional to use by the client. Each optional query parameter is identified by a URI



Datastores

New datastores are defined for ncmp to access the CPS 'intended' or 'operational' datastore.

Alternatively, the request can be sent directly to the 'device' itself (bypassing CPS datastores) using one of the 'passthrough-*' datastores options as below


The new ncmp datastores required for ONAP Release I include :

ncmp-datastores:running (RW)   Read/Write to the CPS "intended" store (with validation). Then do subsequent write on DMI interface with ds ietf-datastores:running.
ncmp-datastores:operational (RO)Read from the CPS "operational" store.
ncmp-datastores:passthrough-running (RW)Read/Write to/from the live devices ietf-datastores:running (no local ncmp validation)


Future datastores to be supported by NCMP include :

ncmp-datastores:passthrough-intented (RO) Read from the live devices ietf-datastores:intended ncmp-datastores:passthrough-operational (RO)  :  Read from the live devices ietf-datastores:operational
ncmp-datastores:passthrough-candidate (RW)Read from the live devices ietf-datastores:candidate

  

If datastore (ds/{datastore}) is omitted from URI AND the model/moduleSet is not available in NCMP, the datastore is defaulted to ncmp-datastores: passthrough-running

If datastore (ds/{datastore}) is omitted from URI AND the model/moduleSet exists, the datastore is defaulted to ncmp-datastores:running

Yang data resource actions and RPC operations are run directly on the 'device' meaning ncmp-datastores:passthrough-running is used for these request




Req/usecase

REST

Method

 URI / Payload

Header Parameters

Request/Response ExampleStatus
1

NCMP-CM-001-1

Get model (module set) for CMHandle

GET

{ncmp-root}/ncmp/v1/model/<handleId>


{ncmp-root}/ncmp/v1/model/cmhandle/<cm-handle>

Accept:
application/ yang- data+json

Scenario : Get the model data for CMHandle with id "335ff"
Method : GET
URI : {ncmp-root}/ncmp/v1/model/335ff
Header : Accept: application/yang-data+json

Response :

{
"test:bookstore":{
"bookstore-name": "Chapters",
"categories": [
{
"code": "01",
"name": "SciFi",
"books": [
{
"authors": [
"Iain M. Banks"
],
"lang": "en",
"price": "895",
"pub_year": "1994",
"title": "Feersum Endjinn"
},
{
"authors": [
"Ursula K. Le Guin",
"Joe Haldeman",
"Orson Scott Card",
"david Brin",
"Rober Silverberg",
"Dan Simmons",
"Greg Bear"
],
"lang": "en",
"price": "1099",
"pub_year": "1999",
"title": "Far Horizons"
}
]
},
{
"name": "kids",
"code": "02",
"books": [
{
"authors": [
"Philip Pullman"
],
"lang": "en",
"price": "699",
"pub_year": "1995",
"title": "The Golden Compass"
}
]
}
]
}
}


Under Review
2NCMP-CM-001-4
Create a data resource for a
cmhandle
POST

{ncmp-root}/ncmp/v1/cm-handle/<cmhandle>/ds/ncmp-datastores:passthrough-running/{parent-data-resource-identifier}
{
<new-yang-data-resource>
}


OR with datastores defaults


{ncmp-root}/ncmp/v1/cmhandle/<cm-hande>/{parent-data-resource-identifier}
{
<new-yang-data-resource>
}

Accept:
application/ yang- data+json

Scenario : Create a data resource of the bookstore model for the given cmhandle.

Method : POST

RI : {ncmp-root}/ncmp/v1/cm-handle/34l5k32/bookstore

Header : Accept: application/yang-data+json


Body:

{
"test:bookstore":{
"bookstore-name": "Chapters",
"categories": [
{
"code": "01",
"name": "SciFi",
}
]
}
}
Under Review
3NCMP-CM-001-5
Delete a data resource for a
cmHandle
DELETE

{ncmp-root}/ncmp/v1//ds/ncmp-datastores:passthrough-running/{data-resource-identifier}

OR with datastores defaults

{ncmp-root}/ncmp/v1/cmhandle// {parent-data-resource-identifier}

Accept:
application/ yang- data+json

Scenario : Delete categories=SciFi
Method : DELETE
URI : {ncmp-root}/ncmp/v1/cmhandle/<cm-handle>//categories[@name="SciFi"]


do we follow xpath syntax?


{adapter-root}??? 

Under Review
4NCMP-CM-001-3
Update a data resource for a
cmHandle
PATCH

{ncmp-root}/ncmp/v1/data//ds/ncmp-datastores:passthrough-running/{data-resource-identifier}

{
       <yang-data-sub-resource>
}

OR with datastores defaults


{ncmp-root}/ncmp/v1/cmhandle// {parent-data-resource-identifier} 

{
<yang-data-sub-resource>
}

Accept:
application/ yang- data+json

Scenario : Add a book to categories SciFi if it doesn't already exist
Method : PATCH
URI : {ncmp-root}/ncmp/v1/cm-handle/d32455f/bookstore/categories:name=SciFi

Header :
      Content-Type: application/yang-data+json

Body :

{
"categories"
: [
{
"code": "01",
"name": "SciFi",
"books": [
{
"authors": [
"Iain M. Banks"
],
"lang": "en",
"price": "895",
"pub_year": "1994",
"title": "Feersum Endjinn"
}
]
}
]
}
Under Review
5

NCMP-CM-001-8

Multiple edits under a target data
resource for a single cmHandle

PATCH

{ncmp-root}/ncmp/v1/cm-handle//ds /ncmp-datastores:passthrough-running/{data-resource-identifier}

{

yang-patch payload

}


OR using datastores defaults


{ncmp-root}/ncmp/v1/cm-handle//{data-resource-identifier}

{

yang-patch payload

}

Content-Type:
application/yang-patch+json

Scenario: Make multiple updates under the bookstore/categories data resource

Method : PATCH

URI : {ncmp-root}/ncmp/v1/cm-handle/32rf234/bookstore/categories

Header :
Content-Type: application/yang-patch+json


Body:

{
"ietf-restconf:yang-patch" : {
"patch-id" : "change-categories-names",
"edit" : [
{
"edit-id" : 1,
"operation" : "create",
"target" : "/bookstore/categories:code="01",
"value" : {
"/bookstore/categories:code" : {
"name" : "Biography"
}
}
},
{
"edit-id" : 2,
"operation" : "create",
"target" :"/bookstore/categories:code="02"",
"value" : {
"/bookstore/categories:code" : {
"name" : "Detective"
}
}
}
]
}


Response :
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:56:30 GMT
Content-Type: application/yang-patch+json
{
   "ietf-yang-patch:yang-patch-status" : {
    "patch-id" : "change-categories-names",
    "ok" : [null]
   }
}

Under Review
6





7





8





9





10





11





12





13





14





15





16





17










  • No labels