diff options
author | lukegleeson <luke.gleeson@est.tech> | 2022-07-11 10:55:53 +0100 |
---|---|---|
committer | lukegleeson <luke.gleeson@est.tech> | 2022-07-29 10:42:04 +0100 |
commit | 82a550f6b080cb50912d93f7b13ba0fc97a95470 (patch) | |
tree | 1bb3ca97c99e46c9b5a5654b2848038c37f20c4d /cps-ncmp-rest | |
parent | 054873c7c52bdb9fae718a0d7651d57b1a995dfc (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')
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'() { |