X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-rest%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Frest%2Fcontroller%2FNetworkCmProxyController.java;h=449a4344dd5bba1621dbfda29e3b6097c7ce4b2f;hb=bc742a1dbe39a3269abab9e62a9d489f460144b0;hp=0a1a6419e7a92a7b9b48d23768b7f358f2fea558;hpb=f3798ee9857edb45243d540606ceac21df1215ab;p=cps.git diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java index 0a1a6419e..449a4344d 100755 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java @@ -3,6 +3,7 @@ * Copyright (C) 2021 Pantheon.tech * Modifications (C) 2021 Nordix Foundation * Modification Copyright (C) 2021 highstreet technologies GmbH + * Modifications (C) 2021 Bell Canada * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,17 +22,25 @@ package org.onap.cps.ncmp.rest.controller; - -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; import org.onap.cps.ncmp.api.NetworkCmProxyDataService; -import org.onap.cps.ncmp.api.models.DmiPluginRegistration; import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi; -import org.onap.cps.ncmp.rest.model.RestDmiPluginRegistration; +import org.onap.cps.ncmp.rest.model.CmHandleProperties; +import org.onap.cps.ncmp.rest.model.CmHandleProperty; +import org.onap.cps.ncmp.rest.model.CmHandles; +import org.onap.cps.ncmp.rest.model.ConditionProperties; +import org.onap.cps.ncmp.rest.model.Conditions; +import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject; +import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray; import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.model.DataNode; import org.onap.cps.spi.model.ModuleReference; @@ -41,6 +50,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Slf4j @RestController @RequestMapping("${rest.api.ncmp-base-path}") public class NetworkCmProxyController implements NetworkCmProxyApi { @@ -49,17 +59,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { private final NetworkCmProxyDataService networkCmProxyDataService; - private final ObjectMapper objectMapper; - /** * Constructor Injection for Dependencies. * @param networkCmProxyDataService Data Service Interface - * @param objectMapper Object Mapper */ - public NetworkCmProxyController(final NetworkCmProxyDataService networkCmProxyDataService, - final ObjectMapper objectMapper) { + public NetworkCmProxyController(final NetworkCmProxyDataService networkCmProxyDataService) { this.networkCmProxyDataService = networkCmProxyDataService; - this.objectMapper = objectMapper; } /** @@ -100,19 +105,6 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK); } - /** - * Update DMI Plugin Registration (used for first registration also). - * @param restDmiPluginRegistration the registration data - */ - @Override - public ResponseEntity updateDmiPluginRegistration( - final @Valid RestDmiPluginRegistration restDmiPluginRegistration) { - final DmiPluginRegistration dmiPluginRegistration = - convertRestObjectToJavaApiObject(restDmiPluginRegistration); - networkCmProxyDataService.updateDmiRegistrationAndSyncModule(dmiPluginRegistration); - return new ResponseEntity<>(HttpStatus.CREATED); - } - /** * Query Data Nodes. * @deprecated This Method is no longer used as part of NCMP. @@ -140,6 +132,14 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(HttpStatus.OK); } + @Override + public ResponseEntity updateResourceDataRunningForCmHandle(final String resourceIdentifier, + final String cmHandle, final String requestBody, final String contentType) { + networkCmProxyDataService.updateResourceDataPassThroughRunningForCmHandle(cmHandle, + resourceIdentifier, requestBody, contentType); + return new ResponseEntity<>(HttpStatus.OK); + } + /** * Update Node Leaves. * @deprecated This Method is no longer used as part of NCMP. @@ -157,22 +157,19 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { * * @param cmHandle cm handle identifier * @param resourceIdentifier resource identifier - * @param accept accept header parameter - * @param fields fields query parameter - * @param depth depth query parameter + * @param acceptParamInHeader accept header parameter + * @param optionsParamInQuery options query parameter * @return {@code ResponseEntity} response from dmi plugin */ @Override public ResponseEntity getResourceDataOperationalForCmHandle(final String cmHandle, - final String resourceIdentifier, - final String accept, - final String fields, - final Integer depth) { + final @NotNull @Valid String resourceIdentifier, + final String acceptParamInHeader, + final @Valid String optionsParamInQuery) { final Object responseObject = networkCmProxyDataService.getResourceDataOperationalForCmHandle(cmHandle, resourceIdentifier, - accept, - fields, - depth); + acceptParamInHeader, + optionsParamInQuery); return ResponseEntity.ok(responseObject); } @@ -181,22 +178,19 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { * * @param cmHandle cm handle identifier * @param resourceIdentifier resource identifier - * @param accept accept header parameter - * @param fields fields query parameter - * @param depth depth query parameter + * @param acceptParamInHeader accept header parameter + * @param optionsParamInQuery options query parameter * @return {@code ResponseEntity} response from dmi plugin */ @Override public ResponseEntity getResourceDataRunningForCmHandle(final String cmHandle, - final String resourceIdentifier, - final String accept, - final String fields, - final Integer depth) { + final @NotNull @Valid String resourceIdentifier, + final String acceptParamInHeader, + final @Valid String optionsParamInQuery) { final Object responseObject = networkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle(cmHandle, resourceIdentifier, - accept, - fields, - depth); + acceptParamInHeader, + optionsParamInQuery); return ResponseEntity.ok(responseObject); } @@ -220,6 +214,15 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(HttpStatus.CREATED); } + @Override + public ResponseEntity executeCmHandleSearch(final Conditions conditions) { + final List conditionProperties = + conditions.getConditions().stream().collect(Collectors.toList()); + final CmHandles cmHandles = new CmHandles(); + cmHandles.setCmHandles(toCmHandleProperties(processConditions(conditionProperties))); + return ResponseEntity.ok(cmHandles); + } + @Override public ResponseEntity getModuleReferencesByCmHandle(final String cmHandle) { final Collection @@ -227,9 +230,40 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(new Gson().toJson(moduleReferences), HttpStatus.OK); } - private DmiPluginRegistration convertRestObjectToJavaApiObject( - final RestDmiPluginRegistration restDmiPluginRegistration) { - return objectMapper.convertValue(restDmiPluginRegistration, DmiPluginRegistration.class); + private Collection processConditions(final List conditionProperties) { + for (final ConditionProperties conditionProperty : conditionProperties) { + if (conditionProperty.getName().equals("hasAllModules")) { + return executeCmHandleSearchesForModuleNames(conditionProperty); + } else { + log.warn("Unrecognized condition name {}.", conditionProperty.getName()); + } + } + log.warn("No valid conditions found {}.", conditionProperties); + return Collections.emptyList(); + } + + private Collection executeCmHandleSearchesForModuleNames(final ConditionProperties conditionProperties) { + return networkCmProxyDataService + .executeCmHandleHasAllModulesSearch(getModuleNames(conditionProperties.getConditionParameters())); } + private Collection getModuleNames(final ModuleNamesAsJsonArray moduleNamesAsJsonArray) { + final Collection moduleNames = new ArrayList<>(moduleNamesAsJsonArray.size()); + for (final ModuleNameAsJsonObject moduleNameAsJsonObject : moduleNamesAsJsonArray) { + moduleNames.add(moduleNameAsJsonObject.getModuleName()); + } + return moduleNames; + } + + private CmHandleProperties toCmHandleProperties(final Collection cmHandleIdentifiers) { + final CmHandleProperties cmHandleProperties = new CmHandleProperties(); + for (final String cmHandleIdentifier : cmHandleIdentifiers) { + final CmHandleProperty cmHandleProperty = new CmHandleProperty(); + cmHandleProperty.setCmHandleId(cmHandleIdentifier); + cmHandleProperties.add(cmHandleProperty); + } + return cmHandleProperties; + } + + }