Support Alternate-id for CPS-E05 module search 44/138844/7
authorseanbeirne <sean.beirne@est.tech>
Mon, 26 Aug 2024 09:48:20 +0000 (10:48 +0100)
committerPriyank Maheshwari <priyank.maheshwari@est.tech>
Wed, 4 Sep 2024 08:32:12 +0000 (08:32 +0000)
Issue-ID: CPS-2370
Change-Id: I0ca3a1df232ad9fd9f76695cd6ea21d36919130d
Signed-off-by: seanbeirne <sean.beirne@est.tech>
cps-ncmp-rest/docs/openapi/ncmp.yml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy

index c12b1c4..32942a4 100755 (executable)
@@ -264,7 +264,7 @@ fetchModuleReferencesByCmHandle:
     summary: Fetch all module references (name and revision) for a given cm handle
     operationId: getModuleReferencesByCmHandle
     parameters:
-      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
+      - $ref: 'components.yaml#/components/parameters/cmHandleReferenceInPath'
     responses:
       200:
         description: OK
index b98d8c3..9dc227a 100755 (executable)
@@ -365,12 +365,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
     /**
      * Return module references for a cm handle.
      *
-     * @param cmHandle the cm handle
+     * @param cmHandleReference cm handle or alternate id identifier
      * @return module references for cm handle. Namespace will be always blank because restConf does not include this.
      */
-    public ResponseEntity<List<RestModuleReference>> getModuleReferencesByCmHandle(final String cmHandle) {
+    public ResponseEntity<List<RestModuleReference>> getModuleReferencesByCmHandle(final String cmHandleReference) {
         final List<RestModuleReference> restModuleReferences =
-            networkCmProxyInventoryFacade.getYangResourcesModuleReferences(cmHandle).stream()
+            networkCmProxyInventoryFacade.getYangResourcesModuleReferences(cmHandleReference).stream()
                         .map(ncmpRestInputMapper::toRestModuleReference)
                         .collect(Collectors.toList());
         return new ResponseEntity<>(restModuleReferences, HttpStatus.OK);
index cd3c00c..5db6e96 100644 (file)
@@ -101,12 +101,13 @@ public class NetworkCmProxyInventoryFacade {
 
 
     /**
-     * Retrieve module references for the given cm handle.
+     * Retrieve module references for the given cm handle reference.
      *
-     * @param cmHandleId cm handle identifier
+     * @param cmHandleReference cm handle or alternate id identifier
      * @return a collection of modules names and revisions
      */
-    public Collection<ModuleReference> getYangResourcesModuleReferences(final String cmHandleId) {
+    public Collection<ModuleReference> getYangResourcesModuleReferences(final String cmHandleReference) {
+        final String cmHandleId = alternateIdMatcher.getCmHandleId(cmHandleReference);
         return inventoryPersistence.getYangResourcesModuleReferences(cmHandleId);
     }
 
index 3352c26..be2bf87 100644 (file)
@@ -51,7 +51,6 @@ class NetworkCmProxyInventoryFacadeSpec extends Specification {
     def mockTrustLevelManager = Mock(TrustLevelManager)
     def mockAlternateIdMatcher = Mock(AlternateIdMatcher)
     def objectUnderTest = new NetworkCmProxyInventoryFacade(mockCmHandleRegistrationService, mockCmHandleQueryService, mockParameterizedCmHandleQueryService, mockInventoryPersistence, spiedJsonObjectMapper, mockTrustLevelManager, mockAlternateIdMatcher)
-    def trustLevelPerCmHandle = [:]
 
     def 'Update DMI Registration'() {
         given: 'an (updated) dmi plugin registration'
@@ -90,11 +89,17 @@ class NetworkCmProxyInventoryFacadeSpec extends Specification {
             assert result.containsAll('cm-handle-1','cm-handle-2')
     }
 
-    def 'Getting Yang Resources.'() {
+    def 'Getting Yang Resources for a given #scenario'() {
         when: 'yang resources is called'
-            objectUnderTest.getYangResourcesModuleReferences('some-cm-handle')
-        then: 'CPS module services is invoked for the correct dataspace and cm handle'
+            objectUnderTest.getYangResourcesModuleReferences(cmHandleRef)
+        then: 'alternate id matcher is called'
+            mockAlternateIdMatcher.getCmHandleId(cmHandleRef) >> 'some-cm-handle'
+        and: 'CPS module services is invoked for the correct cm handle'
             1 * mockInventoryPersistence.getYangResourcesModuleReferences('some-cm-handle')
+        where: 'following cm handle reference is used'
+            scenario                              | cmHandleRef
+            'Cm Handle Reference as cm handle-id' | 'some-cm-handle'
+            'Cm Handle Reference as alternate-id' | 'some-alternate-id'
     }
 
     def 'Get a cm handle.'() {