aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java
diff options
context:
space:
mode:
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java')
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java188
1 files changed, 0 insertions, 188 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java
deleted file mode 100644
index 798f6de810..0000000000
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiModelOperations.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021-2024 Nordix Foundation
- * Modifications Copyright (C) 2022 Bell Canada
- * ================================================================================
- * 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.api.impl.operations;
-
-import static org.onap.cps.ncmp.api.impl.operations.RequiredDmiService.MODEL;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
-import org.onap.cps.ncmp.api.impl.config.NcmpConfiguration;
-import org.onap.cps.ncmp.api.impl.inventory.InventoryPersistence;
-import org.onap.cps.ncmp.api.impl.utils.DmiServiceUrlBuilder;
-import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
-import org.onap.cps.ncmp.api.models.YangResource;
-import org.onap.cps.spi.model.ModuleReference;
-import org.onap.cps.utils.JsonObjectMapper;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Component;
-
-/**
- * Operations class for DMI Model.
- */
-@Component
-public class DmiModelOperations extends DmiOperations {
-
- /**
- * Constructor for {@code DmiOperations}. This method also manipulates url properties.
- *
- * @param dmiRestClient {@code DmiRestClient}
- */
- public DmiModelOperations(final InventoryPersistence inventoryPersistence,
- final JsonObjectMapper jsonObjectMapper,
- final NcmpConfiguration.DmiProperties dmiProperties,
- final DmiRestClient dmiRestClient, final DmiServiceUrlBuilder dmiServiceUrlBuilder) {
- super(inventoryPersistence, jsonObjectMapper, dmiProperties, dmiRestClient, dmiServiceUrlBuilder);
- }
-
- /**
- * Retrieves module references.
- *
- * @param yangModelCmHandle the yang model cm handle
- * @return module references
- */
- public List<ModuleReference> getModuleReferences(final YangModelCmHandle yangModelCmHandle) {
- final DmiRequestBody dmiRequestBody = DmiRequestBody.builder()
- .moduleSetTag(yangModelCmHandle.getModuleSetTag()).build();
- dmiRequestBody.asDmiProperties(yangModelCmHandle.getDmiProperties());
- final ResponseEntity<Object> dmiFetchModulesResponseEntity = getResourceFromDmiWithJsonData(
- yangModelCmHandle.resolveDmiServiceName(MODEL),
- jsonObjectMapper.asJsonString(dmiRequestBody), yangModelCmHandle.getId(), "modules");
- return toModuleReferences((Map) dmiFetchModulesResponseEntity.getBody());
- }
-
- /**
- * Retrieve yang resources from dmi for any modules that CPS-NCMP hasn't cached before.
- *
- * @param yangModelCmHandle the yangModelCmHandle
- * @param newModuleReferences the unknown module references
- * @return yang resources as map of module name to yang(re)source
- */
- public Map<String, String> getNewYangResourcesFromDmi(final YangModelCmHandle yangModelCmHandle,
- final Collection<ModuleReference> newModuleReferences) {
- if (newModuleReferences.isEmpty()) {
- return Collections.emptyMap();
- }
- final String jsonWithDataAndDmiProperties = getRequestBodyToFetchYangResources(newModuleReferences,
- yangModelCmHandle.getDmiProperties(), yangModelCmHandle.getModuleSetTag());
- final ResponseEntity<Object> responseEntity = getResourceFromDmiWithJsonData(
- yangModelCmHandle.resolveDmiServiceName(MODEL),
- jsonWithDataAndDmiProperties,
- yangModelCmHandle.getId(),
- "moduleResources");
- return asModuleNameToYangResourceMap(responseEntity);
- }
-
- /**
- * Get resources from DMI for modules.
- *
- * @param dmiServiceName dmi service name
- * @param jsonRequestBody module names and revisions as JSON
- * @param cmHandle cmHandle
- * @param resourceName name of the resource(s)
- * @return {@code ResponseEntity} response entity
- */
- private ResponseEntity<Object> getResourceFromDmiWithJsonData(final String dmiServiceName,
- final String jsonRequestBody,
- final String cmHandle,
- final String resourceName) {
- final String dmiResourceDataUrl = getDmiResourceUrl(dmiServiceName, cmHandle, resourceName);
- return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonRequestBody,
- OperationType.READ, null);
- }
-
- private static String getRequestBodyToFetchYangResources(final Collection<ModuleReference> newModuleReferences,
- final List<YangModelCmHandle.Property> dmiProperties,
- final String moduleSetTag) {
- final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(newModuleReferences);
- final JsonObject data = new JsonObject();
- data.add("modules", moduleReferencesAsJson);
- final JsonObject jsonRequestObject = new JsonObject();
- if (!moduleSetTag.isEmpty()) {
- final JsonElement moduleSetTagAsJson = JsonParser.parseString(moduleSetTag);
- jsonRequestObject.add("moduleSetTag", moduleSetTagAsJson);
- }
- jsonRequestObject.add("data", data);
- jsonRequestObject.add("cmHandleProperties", toJsonObject(dmiProperties));
- return jsonRequestObject.toString();
- }
-
- private static JsonArray getModuleReferencesAsJson(final Collection<ModuleReference> unknownModuleReferences) {
- final JsonArray moduleReferences = new JsonArray();
-
- for (final ModuleReference moduleReference : unknownModuleReferences) {
- final JsonObject moduleReferenceAsJson = new JsonObject();
- moduleReferenceAsJson.addProperty("name", moduleReference.getModuleName());
- moduleReferenceAsJson.addProperty("revision", moduleReference.getRevision());
- moduleReferences.add(moduleReferenceAsJson);
- }
- return moduleReferences;
- }
-
- private static JsonObject toJsonObject(final List<YangModelCmHandle.Property>
- dmiProperties) {
- final JsonObject asJsonObject = new JsonObject();
- for (final YangModelCmHandle.Property additionalProperty : dmiProperties) {
- asJsonObject.addProperty(additionalProperty.getName(), additionalProperty.getValue());
- }
- return asJsonObject;
- }
-
- private List<ModuleReference> toModuleReferences(final Map<String, Object> dmiFetchModulesResponseAsMap) {
- final List<ModuleReference> moduleReferences = new ArrayList<>();
-
- if (dmiFetchModulesResponseAsMap != null) {
- final List<Object> moduleReferencesAsList = (List) dmiFetchModulesResponseAsMap.get("schemas");
- if (moduleReferencesAsList != null) {
- moduleReferencesAsList.forEach(moduleReferenceAsMap -> {
- final ModuleReference moduleReference =
- jsonObjectMapper.convertToValueType(moduleReferenceAsMap, ModuleReference.class);
- moduleReferences.add(moduleReference);
- });
- }
- }
- return moduleReferences;
- }
-
- private Map<String, String> asModuleNameToYangResourceMap(final ResponseEntity<Object> responseEntity) {
- final Map<String, String> yangResourcesModuleNameToContentMap = new HashMap<>();
- final List<Map<String, String>> yangResourcesAsList = (List) responseEntity.getBody();
-
- if (yangResourcesAsList != null) {
- yangResourcesAsList.forEach(yangResourceAsMap -> {
- final YangResource yangResource =
- jsonObjectMapper.convertToValueType(yangResourceAsMap, YangResource.class);
- yangResourcesModuleNameToContentMap.put(yangResource.getModuleName(),
- yangResource.getYangSource());
- });
- }
- return yangResourcesModuleNameToContentMap;
- }
-}