$ref: 'components.yaml#/components/responses/Unauthorized'
403:
$ref: 'components.yaml#/components/responses/Forbidden'
+ 404:
+ $ref: 'components.yaml#/components/responses/NotFound'
+
+fetchModuleReferencesByCmHandle:
+ get:
+ description: fetch all module references (name and revision) for a given cm handle
+ tags:
+ - network-cm-proxy
+ summary: Fetch all module references (name and revision) for a given cm handle
+ operationId: getModuleReferencesByCmHandle
+ parameters:
+ - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
+ responses:
+ 200:
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: string
+ example: [{"moduleName": "nc-notifications", "revision": "2008-07-14"}]
+ $ref: 'components.yaml#/components/responses/Ok'
+ 400:
+ $ref: 'components.yaml#/components/responses/BadRequest'
+ 401:
+ $ref: 'components.yaml#/components/responses/Unauthorized'
+ 403:
+ $ref: 'components.yaml#/components/responses/Forbidden'
404:
$ref: 'components.yaml#/components/responses/NotFound'
\ No newline at end of file
$ref: 'ncmproxy.yml#/getResourceDataForPassthroughOperational'
/v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}:
- $ref: 'ncmproxy.yml#/resourceDataForPassthroughRunning'
\ No newline at end of file
+ $ref: 'ncmproxy.yml#/resourceDataForPassthroughRunning'
+
+ /v1/ch/{cm-handle}/modules:
+ $ref: 'ncmproxy.yml#/fetchModuleReferencesByCmHandle'
\ No newline at end of file
import org.onap.cps.ncmp.rest.model.RestDmiPluginRegistration;
import org.onap.cps.spi.FetchDescendantsOption;
import org.onap.cps.spi.model.DataNode;
+import org.onap.cps.spi.model.ModuleReference;
import org.onap.cps.utils.DataMapUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
return new ResponseEntity<>(HttpStatus.CREATED);
}
+ @Override
+ public ResponseEntity<Object> getModuleReferencesByCmHandle(final String cmHandle) {
+ final Collection<ModuleReference>
+ moduleReferences = networkCmProxyDataService.getYangResourcesModuleReferences(cmHandle);
+ return new ResponseEntity<>(new Gson().toJson(moduleReferences), HttpStatus.OK);
+ }
+
private DmiPluginRegistration convertRestObjectToJavaApiObject(
final RestDmiPluginRegistration restDmiPluginRegistration) {
return objectMapper.convertValue(restDmiPluginRegistration, DmiPluginRegistration.class);
package org.onap.cps.ncmp.rest.controller
+import org.onap.cps.spi.model.ModuleReference
+
import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS
import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
and: 'resource is created'
response.status == HttpStatus.CREATED.value()
}
+
+ def 'Get module references for the given dataspace and cm handle.' () {
+ given: 'get module references url'
+ def getUrl = "$ncmpBasePathV1/ch/some-cmhandle/modules"
+ when: 'get module resource request is performed'
+ def response =mvc.perform(get(getUrl)).andReturn().response
+ then: 'ncmp service method to get yang resource module references is called'
+ mockNetworkCmProxyDataService.getYangResourcesModuleReferences('some-cmhandle')
+ >> [new ModuleReference(moduleName: 'some-name1',revision: 'some-revision1')]
+ and: 'response contains an array with the module name and revision'
+ response.getContentAsString() == '[{"moduleName":"some-name1","revision":"some-revision1"}]'
+ and: 'response returns an OK http code'
+ response.status == HttpStatus.OK.value()
+ }
}
import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
import org.onap.cps.spi.FetchDescendantsOption;
import org.onap.cps.spi.model.DataNode;
+import org.onap.cps.spi.model.ModuleReference;
/*
* Datastore interface for handling CPS data.
@NotNull String resourceIdentifier,
@NotNull Object requestBody,
String contentType);
+
+ /**
+ * Retrieve module references for the given cm handle.
+ *
+ * @param cmHandle cm handle
+ * @return a collection of modules names and revisions
+ */
+ Collection<ModuleReference> getYangResourcesModuleReferences(@NotNull String cmHandle);
}
handleResponseForPost(responseEntity);
}
+ @Override
+ public Collection<ModuleReference> getYangResourcesModuleReferences(final String cmHandle) {
+ return cpsModuleService.getYangResourcesModuleReferences(NF_PROXY_DATASPACE_NAME, cmHandle);
+ }
+
private DataNode fetchDataNodeFromDmiRegistryForCmHandle(final String cmHandle) {
final String xpathForDmiRegistryToFetchCmHandle = "/dmi-registry/cm-handles[@id='" + cmHandle + "']";
return cpsDataService.getDataNode(NCMP_DATASPACE_NAME,
final List<ModuleReference> moduleReferencesFromDmiForCmHandle =
getModuleReferences(modulesForCmHandle);
final var knownModuleReferencesInCps =
- cpsModuleService.getAllYangResourceModuleReferences(NF_PROXY_DATASPACE_NAME);
+ cpsModuleService.getYangResourceModuleReferences(NF_PROXY_DATASPACE_NAME);
final List<ModuleReference> existingModuleReferences = new ArrayList<>();
for (final ModuleReference moduleReferenceFromDmiForCmHandle :
moduleReferencesFromDmiForCmHandle) {
def knownModule1 = new ModuleReference('module1', '1')
def knownOtherModule = new ModuleReference('some other module', 'some revision')
and: 'CPS-Core returns list of known modules'
- mockCpsModuleService.getAllYangResourceModuleReferences(_) >> [knownModule1, knownOtherModule]
+ mockCpsModuleService.getYangResourceModuleReferences(_) >> [knownModule1, knownOtherModule]
and: 'DMI-Plugin returns resource(s) for "new" module(s)'
def moduleResources = new ResponseEntity<String>(sdncReponseBody, HttpStatus.OK)
mockDmiOperations.getResourceFromDmi(_, cmHandleForModelSync.getId(), 'moduleResources') >> moduleResources
}
@Override
- public Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName) {
+ public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName) {
final Set<YangResourceModuleReference> yangResourceModuleReferenceList =
yangResourceRepository.findAllModuleReferences(dataspaceName);
return yangResourceModuleReferenceList.stream().map(CpsModulePersistenceServiceImpl::toModuleReference)
}
@Override
- public Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName,
+ public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName,
final String anchorName) {
final Set<YangResourceModuleReference> yangResourceModuleReferenceList =
yangResourceRepository
given: 'a dataspace name'
def dataspaceName = 'DATASPACE-002'
when: 'all yang resources module references are retrieved for the given dataspace name'
- def result = objectUnderTest.getAllYangResourceModuleReferences(dataspaceName)
+ def result = objectUnderTest.getYangResourceModuleReferences(dataspaceName)
then: 'the correct resources are returned'
result.sort() == [new ModuleReference(moduleName: 'MODULE-NAME-005', revision: 'REVISION-002'),
new ModuleReference(moduleName: 'MODULE-NAME-006', revision: 'REVISION-006')]
def dataspaceName = 'DATASPACE-001'
def anchorName = 'ANCHOR1'
when: 'all yang resources module references are retrieved for the given anchor'
- def result = objectUnderTest.getAllYangResourceModuleReferences(dataspaceName, anchorName)
+ def result = objectUnderTest.getYangResourceModuleReferences(dataspaceName, anchorName)
then: 'the correct module names and revisions are returned'
result.sort() == [new ModuleReference(moduleName: null, revision: null), new ModuleReference(moduleName: 'MODULE-NAME-002', revision: 'REVISION-002'),
new ModuleReference(moduleName: 'MODULE-NAME-003', revision: 'REVISION-002'),
@NonNull CascadeDeleteAllowed cascadeDeleteAllowed);
/**
- * Retrieve all modules and revisions known by CPS for all Yang Resources.
+ * Retrieve module references for the given dataspace name.
*
* @param dataspaceName dataspace name
* @return a list of ModuleReference objects
*/
- Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName);
+ Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName);
+
+ /**
+ * Retrieve module references for the given dataspace name and anchor name.
+ *
+ * @param dataspaceName dataspace name
+ * @param anchorName anchor name
+ * @return a list of ModuleReference objects
+ */
+ Collection<ModuleReference> getYangResourcesModuleReferences(String dataspaceName, String anchorName);
}
}
@Override
- public Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName) {
- return cpsModulePersistenceService.getAllYangResourceModuleReferences(dataspaceName);
+ public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName) {
+ return cpsModulePersistenceService.getYangResourceModuleReferences(dataspaceName);
}
+ @Override
+ public Collection<ModuleReference> getYangResourcesModuleReferences(final String dataspaceName,
+ final String anchorName) {
+ return cpsModulePersistenceService.getYangResourceModuleReferences(dataspaceName, anchorName);
+ }
}
@NonNull String anchorName);
/**
- * Returns all YANG resources module references for the given dataspace name.
+ * Returns YANG resources module references for the given dataspace name.
*
* @param dataspaceName dataspace name
* @return Collection of all YANG resources module information in the database
*/
- Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName);
+ Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName);
/**
- * Get all YANG resource module references for the given anchor name and dataspace name.
+ * Get YANG resource module references for the given anchor name and dataspace name.
*
* @param dataspaceName dataspace name
* @param anchorName anchor name
* @return a collection of module names and revisions
*/
- Collection<ModuleReference> getAllYangResourceModuleReferences(final String dataspaceName,
- final String anchorName);
+ Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName, String anchorName);
}
import org.onap.cps.spi.CpsModulePersistenceService
import org.onap.cps.spi.exceptions.ModelValidationException
import org.onap.cps.spi.model.ExtendedModuleReference
+import org.onap.cps.spi.model.ModuleReference
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
def 'Get all yang resources module references.'(){
given: 'an already present module reference'
def moduleReferences = [new ExtendedModuleReference()]
- mockModuleStoreService.getAllYangResourceModuleReferences('someDataspaceName') >> moduleReferences
+ mockModuleStoreService.getYangResourceModuleReferences('someDataspaceName') >> moduleReferences
expect: 'the list provided by persistence service is returned as result'
- objectUnderTest.getAllYangResourceModuleReferences('someDataspaceName') == moduleReferences
+ objectUnderTest.getYangResourceModuleReferences('someDataspaceName') == moduleReferences
+ }
+
+
+ def 'Get all yang resources module references for the given dataspace name and anchor name.'(){
+ given: 'the module store service service returns a list module references'
+ def moduleReferences = [new ModuleReference()]
+ mockModuleStoreService.getYangResourceModuleReferences('someDataspaceName', 'someAnchorName') >> moduleReferences
+ expect: 'the list provided by persistence service is returned as result'
+ objectUnderTest.getYangResourcesModuleReferences('someDataspaceName', 'someAnchorName') == moduleReferences
}
}