From 577efb09a39282c608b53a3099b7edc95954f9c2 Mon Sep 17 00:00:00 2001 From: niamhcore Date: Wed, 11 Aug 2021 16:13:53 +0100 Subject: Transform module information from NetConf node to Generic format for NCMP Issue-ID: CPS-531 Signed-off-by: niamhcore Change-Id: I918be4db5066d92b23e25fc7fbc22d4535fafc8c --- .../onap/cps/ncmp/dmi/model/ModuleSchemaList.java | 36 +++++++++++++++++++ .../cps/ncmp/dmi/model/ModuleSchemaProperties.java | 40 ++++++++++++++++++++++ .../org/onap/cps/ncmp/dmi/model/ModuleSchemas.java | 34 ++++++++++++++++++ .../dmi/rest/controller/DmiRestController.java | 11 +++--- .../org/onap/cps/ncmp/dmi/service/DmiService.java | 3 +- .../onap/cps/ncmp/dmi/service/DmiServiceImpl.java | 39 +++++++++++++++++++-- 6 files changed, 155 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java create mode 100644 src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java create mode 100644 src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java new file mode 100644 index 00000000..1e7dcb0a --- /dev/null +++ b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java @@ -0,0 +1,36 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.dmi.model; + +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * ModuleSchemaList. + */ +@Getter +@Setter +public class ModuleSchemaList { + + private List schema; + +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java new file mode 100644 index 00000000..507758ad --- /dev/null +++ b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.dmi.model; + +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * ModuleSchemaProperties. + */ +@Getter +@Setter +public class ModuleSchemaProperties { + + private String identifier; + private String version; + private String format; + private String namespace; + private List location; + +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java new file mode 100644 index 00000000..1794dedf --- /dev/null +++ b/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java @@ -0,0 +1,34 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.dmi.model; + +import lombok.Getter; +import lombok.Setter; + +/** + * ModuleSchemas. + */ +@Getter +@Setter +public class ModuleSchemas { + + private ModuleSchemaList schemas; +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java index 969e08d3..3d49b78e 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java @@ -28,6 +28,7 @@ import lombok.extern.slf4j.Slf4j; import org.onap.cps.ncmp.dmi.model.CmHandles; import org.onap.cps.ncmp.dmi.model.ModuleReference; import org.onap.cps.ncmp.dmi.model.ModuleRequestParent; +import org.onap.cps.ncmp.dmi.model.ModuleSet; import org.onap.cps.ncmp.dmi.model.OperationalRequest; import org.onap.cps.ncmp.dmi.rest.api.DmiPluginApi; import org.onap.cps.ncmp.dmi.rest.api.DmiPluginInternalApi; @@ -52,10 +53,9 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { } @Override - public ResponseEntity getModulesForCmHandle(final String cmHandle) { - - final String modulesListAsJson = dmiService.getModulesForCmHandle(cmHandle); - return new ResponseEntity<>(modulesListAsJson, HttpStatus.OK); + public ResponseEntity getModulesForCmHandle(final String cmHandle) { + final var moduleSet = dmiService.getModulesForCmHandle(cmHandle); + return new ResponseEntity(moduleSet, HttpStatus.OK); } @Override @@ -118,6 +118,7 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { private List convertRestObjectToJavaApiObject(final ModuleRequestParent moduleRequestParent) { return objectMapper - .convertValue(moduleRequestParent.getData().getModules(), new TypeReference>() {}); + .convertValue(moduleRequestParent.getData().getModules(), new TypeReference>() { + }); } } \ No newline at end of file diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java index 528eb641..a7c94349 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java @@ -25,6 +25,7 @@ import java.util.Map; import javax.validation.constraints.NotNull; import org.onap.cps.ncmp.dmi.exception.DmiException; import org.onap.cps.ncmp.dmi.model.ModuleReference; +import org.onap.cps.ncmp.dmi.model.ModuleSet; /** * Interface for handling Dmi plugin Data. @@ -38,7 +39,7 @@ public interface DmiService { * @return {@code String} returns all modules * @throws DmiException can throw dmi exception */ - String getModulesForCmHandle(String cmHandle) throws DmiException; + ModuleSet getModulesForCmHandle(String cmHandle) throws DmiException; /** * This method used to register the given {@code CmHandles} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java index 32c8526c..94bd97d7 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java @@ -39,6 +39,10 @@ import org.onap.cps.ncmp.dmi.exception.ResourceDataNotFound; import org.onap.cps.ncmp.dmi.model.CmHandleOperation; import org.onap.cps.ncmp.dmi.model.CreatedCmHandle; import org.onap.cps.ncmp.dmi.model.ModuleReference; +import org.onap.cps.ncmp.dmi.model.ModuleSchemaProperties; +import org.onap.cps.ncmp.dmi.model.ModuleSchemas; +import org.onap.cps.ncmp.dmi.model.ModuleSet; +import org.onap.cps.ncmp.dmi.model.ModuleSetSchemas; import org.onap.cps.ncmp.dmi.service.client.NcmpRestClient; import org.onap.cps.ncmp.dmi.service.operation.SdncOperations; import org.springframework.http.HttpStatus; @@ -73,14 +77,15 @@ public class DmiServiceImpl implements DmiService { } @Override - public String getModulesForCmHandle(final String cmHandle) throws DmiException { + public ModuleSet getModulesForCmHandle(final String cmHandle) throws DmiException { final ResponseEntity responseEntity = sdncOperations.getModulesFromNode(cmHandle); if (responseEntity.getStatusCode() == HttpStatus.OK) { final String responseBody = responseEntity.getBody(); if (StringUtils.isEmpty(responseBody)) { throw new ModulesNotFoundException(cmHandle, "SDNC returned no modules for given cm-handle."); } - return responseBody; + final ModuleSet moduleSet = createModuleSchema(responseBody); + return moduleSet; } else { throw new DmiException("SDNC is not able to process request.", "response code : " + responseEntity.getStatusCode() + " message : " + responseEntity.getBody()); @@ -129,6 +134,36 @@ public class DmiServiceImpl implements DmiService { } } + private ModuleSet createModuleSchema(final String responseBody) { + final var moduleSchemas = convertModulesToNodeSchema(responseBody); + final List moduleSetSchemas = new ArrayList<>(); + for (final ModuleSchemaProperties schemaProperties : moduleSchemas.getSchemas().getSchema()) { + moduleSetSchemas.add(convertModulesToModuleSchemas(schemaProperties)); + } + final var moduleSet = new ModuleSet(); + moduleSet.setSchemas(moduleSetSchemas); + return moduleSet; + } + + private ModuleSetSchemas convertModulesToModuleSchemas(final ModuleSchemaProperties moduleSchemaProperties) { + final var moduleSetSchemas = new ModuleSetSchemas(); + moduleSetSchemas.setModuleName(moduleSchemaProperties.getIdentifier()); + moduleSetSchemas.setNamespace(moduleSchemaProperties.getNamespace()); + moduleSetSchemas.setRevision(moduleSchemaProperties.getVersion()); + return moduleSetSchemas; + } + + private ModuleSchemas convertModulesToNodeSchema(final String modulesListAsJson) { + try { + return objectMapper.readValue(modulesListAsJson, ModuleSchemas.class); + } catch (final JsonProcessingException e) { + log.error("JSON exception occurred when converting the following modules to node schema " + + "{}", modulesListAsJson); + throw new DmiException("Unable to process JSON.", + "JSON exception occurred when mapping modules.", e); + } + } + @Override public Object getResourceDataOperationalForCmHandle(final @NotNull String cmHandle, final @NotNull String resourceIdentifier, -- cgit 1.2.3-korg