From 04280e2f93bbf30e8654c411bb1e107d275c22bb Mon Sep 17 00:00:00 2001 From: "halil.cakal" Date: Tue, 23 Jan 2024 10:05:36 +0000 Subject: Extend API: Get Module Definitions - add query parameters: module-name and revision to OpenAPI - extend the controller method to hande the new parameters - add the new method stack to the service layer - extend the SQL query to support the new parameters - add unit and integration testwares Issue-ID: CPS-1135 Change-Id: I089ad2ad71effb58ac0ba809e9f441d6cdb59c4f Signed-off-by: halil.cakal --- .../main/java/org/onap/cps/api/CpsModuleService.java | 14 +++++++++++++- .../org/onap/cps/api/impl/CpsModuleServiceImpl.java | 11 ++++++++++- .../org/onap/cps/spi/CpsModulePersistenceService.java | 14 +++++++++++++- .../onap/cps/api/impl/CpsModuleServiceImplSpec.groovy | 18 ++++++++++++++---- 4 files changed, 50 insertions(+), 7 deletions(-) (limited to 'cps-service/src') diff --git a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java index 2928464461..bdd361458e 100644 --- a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java +++ b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2023 Nordix Foundation + * Copyright (C) 2020-2024 Nordix Foundation * Modifications Copyright (C) 2020-2021 Pantheon.tech * Modifications Copyright (C) 2022 TechMahindra Ltd. * ================================================================================ @@ -133,6 +133,18 @@ public interface CpsModuleService { */ Collection getModuleDefinitionsByAnchorName(String dataspaceName, String anchorName); + /** + * Retrieve module definitions for the given parameters. + * + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @param moduleName module name + * @param moduleRevision the revision of the module + * @return a collection of module definitions (moduleName, revision, yang resource content) + */ + Collection getModuleDefinitionsByAnchorAndModule(String dataspaceName, String anchorName, + String moduleName, String moduleRevision); + /** * Identify previously unknown Yang Resource module references. * The system will ignore the namespace of all module references. diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java index 61a4e623af..0f9eb3c64f 100644 --- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java +++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2023 Nordix Foundation + * Copyright (C) 2020-2024 Nordix Foundation * Modifications Copyright (C) 2020-2021 Pantheon.tech * Modifications Copyright (C) 2022 Bell Canada * Modifications Copyright (C) 2022 TechMahindra Ltd @@ -155,6 +155,15 @@ public class CpsModuleServiceImpl implements CpsModuleService { return cpsModulePersistenceService.getYangResourceDefinitions(dataspaceName, anchorName); } + @Override + public Collection getModuleDefinitionsByAnchorAndModule(final String dataspaceName, + final String anchorName, + final String moduleName, + final String moduleRevision) { + return cpsModulePersistenceService.getYangResourceDefinitionsByAnchorAndModule(dataspaceName, anchorName, + moduleName, moduleRevision); + } + @Override public Collection identifyNewModuleReferences( final Collection moduleReferencesToCheck) { diff --git a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java index aaca2ee5b5..eeaaa47991 100755 --- a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java +++ b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2023 Nordix Foundation + * Copyright (C) 2020-2024 Nordix Foundation * Modifications Copyright (C) 2020-2022 Bell Canada. * Modifications Copyright (C) 2022 TechMahindra Ltd. * ================================================================================ @@ -125,6 +125,18 @@ public interface CpsModulePersistenceService { */ Collection getYangResourceDefinitions(String dataspaceName, String anchorName); + /** + * Get YANG resource definitions for the given parameters. + * + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @param moduleName module name + * @param moduleRevision the revision of the module + * @return a collection of module definitions (moduleName, revision and yang resource content) + */ + Collection getYangResourceDefinitionsByAnchorAndModule(String dataspaceName, String anchorName, + String moduleName, String moduleRevision); + /** * Remove unused Yang Resource Modules. */ diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy index d909e27abf..0bad0de6ac 100644 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2023 Nordix Foundation + * Copyright (C) 2020-2024 Nordix Foundation * Modifications Copyright (C) 2020-2021 Pantheon.tech * Modifications Copyright (C) 2020-2022 Bell Canada. * Modifications Copyright (C) 2022 TechMahindra Ltd. @@ -238,15 +238,25 @@ class CpsModuleServiceImplSpec extends Specification { 1 * mockCpsModulePersistenceService.identifyNewModuleReferences(moduleReferencesToCheck) } - def 'Getting module definitions.'() { - given: 'the module persistence service returns a collection of module definitions' + def 'Getting module definitions with module name'() { + given: 'module persistence service returns module definitions for module name' + def moduleDefinitionsFromPersistenceService = [ new ModuleDefinition('name', 'revision', 'content' ) ] + mockCpsModulePersistenceService.getYangResourceDefinitionsByAnchorAndModule('some-dataspace-name', 'some-anchor-name', 'some-module', '2024-01-01') >> moduleDefinitionsFromPersistenceService + when: 'get module definitions method is called with anchor and module name' + def result = objectUnderTest.getModuleDefinitionsByAnchorAndModule('some-dataspace-name', 'some-anchor-name', 'some-module', '2024-01-01') + then: 'the result is the same collection returned by the persistence service' + assert result == moduleDefinitionsFromPersistenceService + } + + def 'Getting module definitions with anchor name'() { + given: 'the module persistence service returns module definitions for cm handle id' def moduleDefinitionsFromPersistenceService = [ new ModuleDefinition('name', 'revision', 'content' ) ] mockCpsModulePersistenceService.getYangResourceDefinitions('some-dataspace-name', 'some-anchor-name') >> moduleDefinitionsFromPersistenceService when: 'get module definitions method is called with a valid dataspace and anchor name' def result = objectUnderTest.getModuleDefinitionsByAnchorName('some-dataspace-name', 'some-anchor-name') then: 'the result is the same collection returned by the persistence service' assert result == moduleDefinitionsFromPersistenceService - and: 'the CpsValidator is called on the dataspaceName and schemaSetName' + and: 'cps validator is called on the dataspace and anchor name' 1 * mockCpsValidator.validateNameCharacters('some-dataspace-name', 'some-anchor-name') } -- cgit 1.2.3-korg