NCMP inventory cm handle search should support cps path query 11/138411/2
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Wed, 10 Jul 2024 11:51:31 +0000 (12:51 +0100)
committerSourabh Sourabh <sourabh.sourabh@est.tech>
Wed, 10 Jul 2024 12:52:20 +0000 (12:52 +0000)
- Added cps path query conditions for inventory search api

Issue-ID: CPS-2289
Change-Id: I0bcc9a45af65ad9d41c4d4cf79b35bfb95f50cff
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/ParameterizedCmHandleQueryServiceImpl.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/models/InventoryQueryConditions.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/ParameterizedCmHandleQueryServiceSpec.groovy
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/models/InventoryQueryConditionsSpec.groovy

index 4592245..34eeacc 100644 (file)
@@ -66,19 +66,20 @@ public class ParameterizedCmHandleQueryServiceImpl implements ParameterizedCmHan
     public Collection<String> queryCmHandleIds(
             final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
         return executeQueries(cmHandleQueryServiceParameters,
-            this::executeCpsPathQuery,
-            this::queryCmHandlesByPublicProperties,
-            this::executeModuleNameQuery,
+                this::executeCpsPathQuery,
+                this::queryCmHandlesByPublicProperties,
+                this::executeModuleNameQuery,
                 this::queryCmHandlesByTrustLevel);
     }
 
     @Override
     public Collection<String> queryCmHandleIdsForInventory(
-        final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
+            final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
         return executeQueries(cmHandleQueryServiceParameters,
-            this::queryCmHandlesByPublicProperties,
-            this::queryCmHandlesByPrivateProperties,
-            this::queryCmHandlesByDmiPlugin);
+                this::executeCpsPathQuery,
+                this::queryCmHandlesByPublicProperties,
+                this::queryCmHandlesByPrivateProperties,
+                this::queryCmHandlesByDmiPlugin);
     }
 
     @Override
index fce285b..e0b54d2 100644 (file)
@@ -32,7 +32,8 @@ public enum InventoryQueryConditions {
 
     HAS_ALL_PROPERTIES("hasAllProperties"),
     HAS_ALL_ADDITIONAL_PROPERTIES("hasAllAdditionalProperties"),
-    CM_HANDLE_WITH_DMI_PLUGIN("cmHandleWithDmiPlugin");
+    CM_HANDLE_WITH_DMI_PLUGIN("cmHandleWithDmiPlugin"),
+    WITH_CPS_PATH("cmHandleWithCpsPath");
 
     public static final List<String> ALL_CONDITION_NAMES = Arrays.stream(InventoryQueryConditions.values())
         .map(InventoryQueryConditions::getName).collect(Collectors.toList());
index dfd549e..013bace 100644 (file)
@@ -57,6 +57,19 @@ class ParameterizedCmHandleQueryServiceSpec extends Specification {
             assert result == ['some-cmhandle-id'] as Set
     }
 
+    def 'Query cm handle where  cps path itself is ancestor axis.'() {
+        given: 'a cmHandleWithCpsPath condition property'
+            def cmHandleQueryParameters = new CmHandleQueryServiceParameters()
+            def conditionProperties = createConditionProperties('cmHandleWithCpsPath', [['cpsPath' : '/some/cps/path']])
+            cmHandleQueryParameters.setCmHandleQueryParameters([conditionProperties])
+        and: 'the query get the cm handle data nodes excluding all descendants returns a datanode'
+            cmHandleQueries.queryCmHandleAncestorsByCpsPath('/some/cps/path', FetchDescendantsOption.OMIT_DESCENDANTS) >> [new DataNode(leaves: ['id':'some-cmhandle-id'])]
+        when: 'the query is executed for cm handle ids'
+            def result = objectUnderTest.queryCmHandleIdsForInventory(cmHandleQueryParameters)
+        then: 'the correct expected cm handles ids are returned'
+            assert result == ['some-cmhandle-id'] as Set
+    }
+
     def 'Cm handle ids query with error: #scenario.'() {
         given: 'a cmHandleWithCpsPath condition property'
             def cmHandleQueryParameters = new CmHandleQueryServiceParameters()
index 51c1f4b..2e71222 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START========================================================
- * Copyright (c) 2022 Nordix Foundation.
+ * Copyright (c) 2022-2024 Nordix Foundation.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 
 package org.onap.cps.ncmp.impl.inventory.models
 
-
 import spock.lang.Specification
 
 class InventoryQueryConditionsSpec extends Specification {
 
     def 'Inventory query condition names.'() {
-        expect: '3 conditions with the correct names'
-            assert InventoryQueryConditions.ALL_CONDITION_NAMES.size() == 3
+        expect: '4 conditions with the correct names'
+            assert InventoryQueryConditions.ALL_CONDITION_NAMES.size() == 4
             assert InventoryQueryConditions.ALL_CONDITION_NAMES.containsAll('hasAllProperties',
                                                                             'hasAllAdditionalProperties',
-                                                                            'cmHandleWithDmiPlugin')
+                                                                            'cmHandleWithDmiPlugin',
+                                                                            'cmHandleWithCpsPath')
     }
-
-
 }