summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-rest
diff options
context:
space:
mode:
authorlukegleeson <luke.gleeson@est.tech>2022-07-11 10:55:53 +0100
committerlukegleeson <luke.gleeson@est.tech>2022-07-29 10:42:04 +0100
commit82a550f6b080cb50912d93f7b13ba0fc97a95470 (patch)
tree1bb3ca97c99e46c9b5a5654b2848038c37f20c4d /cps-ncmp-rest
parent054873c7c52bdb9fae718a0d7651d57b1a995dfc (diff)
Query CmHandles using CPS path
Added withCpsPath condition parameter Validated to prevent misuse and blocking of querying using private properties Updated OpenAPI with examples and links to documentation Moved methods related to cmHandle querying using cps path from InventoryPersistence to CmHandleQueries Renamed private method deleteSchemaSetAndListElementByCmHandleId to deleteCmHandleByCmHandleId Issue-ID: CPS-977 Change-Id: I83827215b7e58de74f8f62cd0140516d217d93f1 Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Diffstat (limited to 'cps-ncmp-rest')
-rw-r--r--cps-ncmp-rest/docs/openapi/components.yaml60
-rwxr-xr-xcps-ncmp-rest/docs/openapi/ncmp.yml26
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java2
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy2
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy2
5 files changed, 74 insertions, 18 deletions
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml
index 2cb9d894c0..14fd4d24d3 100644
--- a/cps-ncmp-rest/docs/openapi/components.yaml
+++ b/cps-ncmp-rest/docs/openapi/components.yaml
@@ -185,18 +185,7 @@ components:
type: object
$ref: '#/components/schemas/OldConditionProperties'
description: not necessary, it is just for backward compatibility
- example:
- cmHandleQueryParameters:
- - conditionName: hasAllModules
- conditionParameters:
- - { "moduleName": "my-module-1" }
- - { "moduleName": "my-module-2" }
- - { "moduleName": "my-module-3" }
- - conditionName: hasAllProperties
- conditionParameters:
- - { "Color": "yellow" }
- - { "Shape": "circle" }
- - { "Size": "small" }
+
ConditionProperties:
properties:
conditionName:
@@ -279,7 +268,7 @@ components:
sync-state:
type: object
properties:
- state:
+ syncState:
type: string
example: NONE_REQUESTED
lastSyncTime:
@@ -380,6 +369,51 @@ components:
- Philip Pullman
name: kids
+ allCmHandleQueryParameters:
+ value:
+ cmHandleQueryParameters:
+ - conditionName: hasAllModules
+ conditionParameters:
+ - { "moduleName": "my-module-1" }
+ - { "moduleName": "my-module-2" }
+ - { "moduleName": "my-module-3" }
+ - conditionName: hasAllProperties
+ conditionParameters:
+ - { "Color": "yellow" }
+ - { "Shape": "circle" }
+ - { "Size": "small" }
+ - conditionName: cmHandleWithCpsPath
+ conditionParameters:
+ - { "cpsPath": "//state[@cm-handle-state='ADVISED']" }
+ pubPropCmHandleQueryParameters:
+ value:
+ cmHandleQueryParameters:
+ - conditionName: hasAllProperties
+ conditionParameters:
+ - { "Color": "yellow" }
+ - { "Shape": "circle" }
+ - { "Size": "small" }
+ modulesCmHandleQueryParameters:
+ value:
+ cmHandleQueryParameters:
+ - conditionName: hasAllModules
+ conditionParameters:
+ - { "moduleName": "my-module-1" }
+ - { "moduleName": "my-module-2" }
+ - { "moduleName": "my-module-3" }
+ cpsPathCmHandleStateQueryParameters:
+ value:
+ cmHandleQueryParameters:
+ - conditionName: cmHandleWithCpsPath
+ conditionParameters:
+ - { "cpsPath": "//state[@cm-handle-state='LOCKED']" }
+ cpsPathCmHandleDataSyncQueryParameters:
+ value:
+ cmHandleQueryParameters:
+ - conditionName: cmHandleWithCpsPath
+ conditionParameters:
+ - { "cpsPath": "//state[@data-sync-enabled='true']" }
+
parameters:
cmHandleInPath:
name: cm-handle
diff --git a/cps-ncmp-rest/docs/openapi/ncmp.yml b/cps-ncmp-rest/docs/openapi/ncmp.yml
index aaf0d6a1ab..d7b383705f 100755
--- a/cps-ncmp-rest/docs/openapi/ncmp.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmp.yml
@@ -273,7 +273,7 @@ fetchModuleDefinitionsByCmHandle:
searchCmHandles:
post:
- description: Execute cm handle query search, to be included in the result a cm-handle must fulfill ALL the conditions listed here, if one of the given module names does not exists, return with an empty collection.
+ description: Execute cm handle query search and return a list of cm handle details. Any number of conditions can be applied. To be included in the result a cm-handle must fulfill ALL the conditions. An empty collection will be returned in the case that the cm handle does not match a condition. For more on cm handle query search please refer to <a href="RTD page to be created in separate task">cm handle query search Read the Docs</a>.<br/>By supplying a CPS Path it is possible to query on any data related to the cm handle. For more on CPS Path please refer to <a href="https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html">CPS Path Read the Docs</a>. The cm handle ancestor is automatically returned for this query.
tags:
- network-cm-proxy
summary: Execute cm handle search using the available conditions
@@ -284,6 +284,17 @@ searchCmHandles:
application/json:
schema:
$ref: 'components.yaml#/components/schemas/CmHandleQueryParameters'
+ examples:
+ Cm handle properties query:
+ $ref: 'components.yaml#/components/examples/pubPropCmHandleQueryParameters'
+ Cm handle modules query:
+ $ref: 'components.yaml#/components/examples/modulesCmHandleQueryParameters'
+ All cm handle query parameters:
+ $ref: 'components.yaml#/components/examples/allCmHandleQueryParameters'
+ Cm handle with CPS path state query:
+ $ref: 'components.yaml#/components/examples/cpsPathCmHandleStateQueryParameters'
+ Cm handle with data sync flag query:
+ $ref: 'components.yaml#/components/examples/cpsPathCmHandleDataSyncQueryParameters'
responses:
200:
description: OK
@@ -379,7 +390,7 @@ getCmHandleStateById:
searchCmHandleIds:
post:
- description: Execute cm handle query search, to be included in the result a cm-handle must fulfill ALL the conditions listed here, if one of the given module names does not exists, return with an empty collection.
+ description: Execute cm handle query search and return a list of cm handle ids. Any number of conditions can be applied. To be included in the result a cm-handle must fulfill ALL the conditions. An empty collection will be returned in the case that the cm handle does not match a condition. For more on cm handle query search please refer to <a href="RTD page to be created in separate task">cm handle query search Read the Docs</a>.<br/>By supplying a CPS Path it is possible to query on any data related to the cm handle. For more on CPS Path please refer to <a href="https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html">CPS Path Read the Docs</a>. The cm handle ancestor is automatically returned for this query.
tags:
- network-cm-proxy
summary: Execute cm handle query upon a given set of query parameters
@@ -390,6 +401,17 @@ searchCmHandleIds:
application/json:
schema:
$ref: 'components.yaml#/components/schemas/CmHandleQueryParameters'
+ examples:
+ Cm handle properties query:
+ $ref: 'components.yaml#/components/examples/pubPropCmHandleQueryParameters'
+ Cm handle modules query:
+ $ref: 'components.yaml#/components/examples/modulesCmHandleQueryParameters'
+ All cm handle query parameters:
+ $ref: 'components.yaml#/components/examples/allCmHandleQueryParameters'
+ Cm handle with CPS path state query:
+ $ref: 'components.yaml#/components/examples/cpsPathCmHandleStateQueryParameters'
+ Cm handle with data sync flag query:
+ $ref: 'components.yaml#/components/examples/cpsPathCmHandleDataSyncQueryParameters'
responses:
200:
description: OK
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
index 55b64ec760..097dd0af49 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
@@ -56,7 +56,7 @@ public interface CmHandleStateMapper {
if (compositeStateDataStore.getOperationalDataStore() != null) {
final SyncState operationalSyncState = new SyncState();
- operationalSyncState.setState(compositeStateDataStore.getOperationalDataStore()
+ operationalSyncState.setSyncState(compositeStateDataStore.getOperationalDataStore()
.getDataStoreSyncState().name());
operationalSyncState.setLastSyncTime(compositeStateDataStore.getOperationalDataStore().getLastSyncTime());
dataStores.setOperational(operationalSyncState);
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 23263c9aa8..06a7759be9 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
@@ -453,7 +453,7 @@ class NetworkCmProxyControllerSpec extends Specification {
'"dataSyncEnabled":false',
'"dataSyncState":',
'"operational":',
- '"state":"NONE_REQUESTED"',
+ '"syncState":"NONE_REQUESTED"',
'"lastSyncTime":"2022-12-31T20:30:40.000+0000"',
'"running":null'
]
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy
index 677cf66127..663b9d02a6 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy
@@ -56,7 +56,7 @@ class CmHandleStateMapperTest extends Specification {
assert result.lockReason.reason == 'LOCKED_MISBEHAVING'
assert result.lockReason.details == 'locked details'
assert result.cmHandleState == 'ADVISED'
- assert result.dataSyncState.operational.getState() != null
+ assert result.dataSyncState.operational.getSyncState() != null
}
def 'Internal to External Lock Reason Mapping of #scenario'() {