summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcps-ncmp-rest/docs/openapi/ncmp.yml31
-rwxr-xr-xcps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java6
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy14
-rwxr-xr-xcps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java3
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java6
-rwxr-xr-xcps-service/src/main/java/org/onap/cps/api/impl/CpsAdminServiceImpl.java2
-rwxr-xr-xcps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java9
-rw-r--r--docs/cps-path.rst2
-rw-r--r--docs/deployment.rst6
-rwxr-xr-xdocs/design.rst2
-rw-r--r--docs/modeling.rst6
11 files changed, 72 insertions, 15 deletions
diff --git a/cps-ncmp-rest/docs/openapi/ncmp.yml b/cps-ncmp-rest/docs/openapi/ncmp.yml
index 9e3560a2f..611e84e01 100755
--- a/cps-ncmp-rest/docs/openapi/ncmp.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmp.yml
@@ -258,6 +258,37 @@ resourceDataForPassthroughRunning:
404:
$ref: 'components.yaml#/components/responses/NotFound'
+ put:
+ tags:
+ - network-cm-proxy
+ summary: Update resource data from pass-through running for a cm handle
+ description: Update resource data from pass-through running for the given cm handle
+ operationId: updateResourceDataRunningForCmHandle
+ parameters:
+ - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
+ - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
+ - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: string
+ application/yang-data+json:
+ schema:
+ type: string
+ responses:
+ 200:
+ $ref: 'components.yaml#/components/responses/Ok'
+ 400:
+ $ref: 'components.yaml#/components/responses/BadRequest'
+ 401:
+ $ref: 'components.yaml#/components/responses/Unauthorized'
+ 403:
+ $ref: 'components.yaml#/components/responses/Forbidden'
+ 404:
+ $ref: 'components.yaml#/components/responses/NotFound'
+
fetchModuleReferencesByCmHandle:
get:
description: fetch all module references (name and revision) for a given cm handle
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
index ca661b817..19b9a09da 100755
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
@@ -132,6 +132,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
return new ResponseEntity<>(HttpStatus.OK);
}
+ @Override
+ public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String cmHandle,
+ final String resourceIdentifier, final String requestBody, final String contentType) {
+ return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
+ }
+
/**
* Update Node Leaves.
* @deprecated This Method is no longer used as part of NCMP.
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
index a609cfacb..4066fd35e 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
@@ -281,5 +281,19 @@ class NetworkCmProxyControllerSpec extends Specification {
then: 'an empty cm handle identifier is returned'
response.contentAsString == '{"cmHandles":null}'
}
+
+ def 'Update resource data in passthrough-running datastore.' () {
+ given: 'update resource data url'
+ def updateUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
+ "?resourceIdentifier=parent/child"
+ when: 'update data resource request is performed'
+ def response = mvc.perform(
+ put(updateUrl)
+ .contentType(MediaType.APPLICATION_JSON_VALUE)
+ .accept(MediaType.APPLICATION_JSON_VALUE).content('some-request-body')
+ ).andReturn().response
+ then: 'the response status is not implemented'
+ response.status == HttpStatus.NOT_IMPLEMENTED.value()
+ }
}
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java
index e5df9c5ca..b1bd03c25 100755
--- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java
@@ -30,6 +30,7 @@ import javax.transaction.Transactional;
import org.onap.cps.spi.CpsAdminPersistenceService;
import org.onap.cps.spi.entities.AnchorEntity;
import org.onap.cps.spi.entities.DataspaceEntity;
+import org.onap.cps.spi.entities.YangResourceModuleReference;
import org.onap.cps.spi.exceptions.AlreadyDefinedException;
import org.onap.cps.spi.exceptions.ModuleNamesNotFoundException;
import org.onap.cps.spi.model.Anchor;
@@ -132,7 +133,7 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic
final Collection<String> inputModuleNames) {
final Collection<String> retrievedModuleNames =
yangResourceRepository.findAllModuleReferences(dataspaceName, inputModuleNames)
- .stream().map(module -> module.getModuleName())
+ .stream().map(YangResourceModuleReference::getModuleName)
.collect(Collectors.toList());
if (retrievedModuleNames.isEmpty()) {
dataspaceRepository.getByName(dataspaceName);
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
index 8dc6c2f69..c616c8fac 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
@@ -91,7 +91,8 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService
private static final Gson GSON = new GsonBuilder().create();
private static final String REG_EX_FOR_OPTIONAL_LIST_INDEX = "(\\[@[\\s\\S]+?]){0,1})";
- private static final String REG_EX_FOR_LIST_ELEMENT_KEY_PREDICATE = "\\[(\\@([^/]*?)){0,99}( and)*\\]$";
+ private static final Pattern REG_EX_PATTERN_FOR_LIST_ELEMENT_KEY_PREDICATE =
+ Pattern.compile("\\[(\\@([^\\/]{0,9999}))\\]$");
@Override
public void addChildDataNode(final String dataspaceName, final String anchorName, final String parentXpath,
@@ -361,8 +362,7 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService
final String parentNodeXpath = targetXpath.substring(0, targetXpath.lastIndexOf('/'));
final FragmentEntity parentFragmentEntity = getFragmentByXpath(dataspaceName, anchorName, parentNodeXpath);
final String lastXpathElement = targetXpath.substring(targetXpath.lastIndexOf('/'));
- final boolean isListElement = Pattern.compile(REG_EX_FOR_LIST_ELEMENT_KEY_PREDICATE)
- .matcher(lastXpathElement).find();
+ final boolean isListElement = REG_EX_PATTERN_FOR_LIST_ELEMENT_KEY_PREDICATE.matcher(lastXpathElement).find();
boolean targetExist;
if (isListElement) {
targetExist = deleteDataNode(parentFragmentEntity, targetXpath);
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsAdminServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsAdminServiceImpl.java
index 4640a0fb3..faff7b611 100755
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsAdminServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsAdminServiceImpl.java
@@ -64,6 +64,6 @@ public class CpsAdminServiceImpl implements CpsAdminService {
@Override
public Collection<String> queryAnchorNames(final String dataspaceName, final Collection<String> moduleNames) {
final Collection<Anchor> anchors = cpsAdminPersistenceService.queryAnchors(dataspaceName, moduleNames);
- return anchors.stream().map(anchor -> anchor.getName()).collect(Collectors.toList());
+ return anchors.stream().map(Anchor::getName).collect(Collectors.toList());
}
}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java
index b717a2b18..db10c88b9 100755
--- a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java
@@ -27,7 +27,7 @@ package org.onap.cps.spi.exceptions;
public class DataNodeNotFoundException extends DataValidationException {
private static final long serialVersionUID = 7786740001662205407L;
-
+ private static final String DATANODE_NOT_FOUND = "DataNode not found";
/**
* Constructor.
*
@@ -36,9 +36,10 @@ public class DataNodeNotFoundException extends DataValidationException {
* @param xpath datanode xpath
* @param additionalInformation additional information
*/
+
public DataNodeNotFoundException(final String dataspaceName, final String anchorName, final String xpath,
final String additionalInformation) {
- super("DataNode not found", String
+ super(DATANODE_NOT_FOUND, String
.format("DataNode with xpath %s was not found for anchor %s and dataspace %s, %s.", xpath,
anchorName, dataspaceName, additionalInformation));
}
@@ -51,7 +52,7 @@ public class DataNodeNotFoundException extends DataValidationException {
* @param xpath datanode xpath
*/
public DataNodeNotFoundException(final String dataspaceName, final String anchorName, final String xpath) {
- super("DataNode not found", String
+ super(DATANODE_NOT_FOUND, String
.format("DataNode with xpath %s was not found for anchor %s and dataspace %s.", xpath,
anchorName, dataspaceName));
}
@@ -63,7 +64,7 @@ public class DataNodeNotFoundException extends DataValidationException {
* @param anchorName the anchor name
*/
public DataNodeNotFoundException(final String dataspaceName, final String anchorName) {
- super("DataNode not found", String.format(
+ super(DATANODE_NOT_FOUND, String.format(
"DataNode not found for anchor %s and dataspace %s.", anchorName, dataspaceName));
}
}
diff --git a/docs/cps-path.rst b/docs/cps-path.rst
index 5834d68e1..bc46681d1 100644
--- a/docs/cps-path.rst
+++ b/docs/cps-path.rst
@@ -113,7 +113,7 @@ leaf-conditions
- ``/shops/bookstore/categories[@numberOfBooks=1]``
- ``//categories[@name="Kids"]``
- ``//categories[@name='Kids']``
- - ``//categories[@code=1]/book[@title='Dune' and price=5]``
+ - ``//categories[@code=1]/books/book[@title='Dune' and @price=5]``
**Limitations**
- Only the last list or container can be queried leaf values. Any ancestor list will have to be referenced by its key name-value pair(s).
diff --git a/docs/deployment.rst b/docs/deployment.rst
index b1839cbb8..2f68a64ee 100644
--- a/docs/deployment.rst
+++ b/docs/deployment.rst
@@ -177,7 +177,7 @@ exhaustive.
| | | |
| | If not defined, the password is generated when deploying the application. | |
| | | |
-| | See also :ref:`credentials_retrieval`. | |
+| | See also :ref:`cps_common_credentials_retrieval`. | |
+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
| config.dmiPluginUserName | User name used by cps-core to authenticate themselves for using ncmp-dmi-plugin service. | ``dmiuser`` |
+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
@@ -185,7 +185,7 @@ exhaustive.
| | | |
| | If not defined, the password is generated when deploying the application. | |
| | | |
-| | See also :ref:`credentials_retrieval`. | |
+| | See also :ref:`cps_common_credentials_retrieval`. | |
+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
| postgres.config.pgUserName | Internal user name used by cps-core to connect to its own database. | ``cps`` |
+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
@@ -193,7 +193,7 @@ exhaustive.
| | | |
| | If not defined, the password is generated when deploying the application. | |
| | | |
-| | See also :ref:`credentials_retrieval`. | |
+| | See also :ref:`cps_common_credentials_retrieval`. | |
+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
| postgres.config.pgDatabase | Database name used by cps-core | ``cpsdb`` |
| | | |
diff --git a/docs/design.rst b/docs/design.rst
index 02836c5f3..eb5f6b6e0 100755
--- a/docs/design.rst
+++ b/docs/design.rst
@@ -64,7 +64,7 @@ CPS Core uses API's from the following ONAP components
* DMI-Plugin: REST based interface which is used to provide integration
and allow the DMI registry API's have access to the corresponding NCMP API's within CPS Core.
- More information on the DMI-Plugins offered APIs can be found on the `DMI-Plugin's Design Page <https://docs.onap.org/projects/onap-cps-ncmp-dmi-plugin/en/latest/design.html>`_.
+ More information on the DMI-Plugins offered APIs can be found on the :ref:`DMI-Plugin's Design Page <onap-cps-ncmp-dmi-plugin:design>`.
CPS Path
========
diff --git a/docs/modeling.rst b/docs/modeling.rst
index 5504bf322..b750c6d5b 100644
--- a/docs/modeling.rst
+++ b/docs/modeling.rst
@@ -54,7 +54,11 @@ Data
Querying
-- **CPS Path** is used to query data nodes. The CPS Path is described in detail in :doc:`cps-path`.
+- **CPS Path** is used to query data nodes.
+.. toctree::
+ :maxdepth: 1
+
+ cps-path.rst
.. Below Label is used by documentation for other CPS components to link here, do not remove even if it gives a warning
.. _cps_ncmp_modelling: