/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2021-2022 Nordix Foundation
+ * Copyright (C) 2021-2023 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.
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.ArrayList;
+import java.util.Collection;
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.models.PersistenceCmHandle;
+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.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
*
* @param dmiRestClient {@code DmiRestClient}
*/
- public DmiModelOperations(final PersistenceCmHandleRetriever cmHandlePropertiesRetriever,
+ public DmiModelOperations(final InventoryPersistence inventoryPersistence,
final JsonObjectMapper jsonObjectMapper,
final NcmpConfiguration.DmiProperties dmiProperties,
- final DmiRestClient dmiRestClient) {
- super(cmHandlePropertiesRetriever, jsonObjectMapper, dmiProperties, dmiRestClient);
+ final DmiRestClient dmiRestClient, final DmiServiceUrlBuilder dmiServiceUrlBuilder) {
+ super(inventoryPersistence, jsonObjectMapper, dmiProperties, dmiRestClient, dmiServiceUrlBuilder);
}
/**
* Retrieves module references.
*
- * @param persistenceCmHandle the persistence cm handle
+ * @param yangModelCmHandle the yang model cm handle
* @return module references
*/
- public List<ModuleReference> getModuleReferences(final PersistenceCmHandle persistenceCmHandle) {
- final DmiRequestBody dmiRequestBody = DmiRequestBody.builder()
- .build();
- dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties());
+ public List<ModuleReference> getModuleReferences(final YangModelCmHandle yangModelCmHandle) {
+ final DmiRequestBody dmiRequestBody = DmiRequestBody.builder().build();
+ dmiRequestBody.asDmiProperties(yangModelCmHandle.getDmiProperties());
final ResponseEntity<Object> dmiFetchModulesResponseEntity = getResourceFromDmiWithJsonData(
- persistenceCmHandle.resolveDmiServiceName(MODEL),
- jsonObjectMapper.asJsonString(dmiRequestBody), persistenceCmHandle.getId(), "modules");
+ 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 persistenceCmHandle the persistenceCmHandle
- * @param unknownModuleReferences the unknown module references
+ * @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 PersistenceCmHandle persistenceCmHandle,
- final List<ModuleReference> unknownModuleReferences) {
- final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResources(
- unknownModuleReferences, persistenceCmHandle.getAdditionalProperties());
+ public Map<String, String> getNewYangResourcesFromDmi(final YangModelCmHandle yangModelCmHandle,
+ final Collection<ModuleReference> newModuleReferences) {
+ final String jsonWithDataAndDmiProperties = getRequestBodyToFetchYangResources(
+ newModuleReferences, yangModelCmHandle.getDmiProperties());
final ResponseEntity<Object> responseEntity = getResourceFromDmiWithJsonData(
- persistenceCmHandle.resolveDmiServiceName(MODEL),
- jsonDataWithDataAndCmHandleProperties,
- persistenceCmHandle.getId(),
+ yangModelCmHandle.resolveDmiServiceName(MODEL),
+ jsonWithDataAndDmiProperties,
+ yangModelCmHandle.getId(),
"moduleResources");
return asModuleNameToYangResourceMap(responseEntity);
}
* Get resources from DMI for modules.
*
* @param dmiServiceName dmi service name
- * @param jsonData module names and revisions as JSON
+ * @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 jsonData,
+ final String jsonRequestBody,
final String cmHandle,
final String resourceName) {
final String dmiResourceDataUrl = getDmiResourceUrl(dmiServiceName, cmHandle, resourceName);
- return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonData, new HttpHeaders());
+ return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonRequestBody,
+ OperationType.READ);
}
- private static String getRequestBodyToFetchYangResources(final List<ModuleReference> unknownModuleReferences,
- final List<PersistenceCmHandle.AdditionalProperty> cmHandleProperties) {
- final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
+ private static String getRequestBodyToFetchYangResources(final Collection<ModuleReference> newModuleReferences,
+ final List<YangModelCmHandle.Property> dmiProperties) {
+ final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(newModuleReferences);
final JsonObject data = new JsonObject();
data.add("modules", moduleReferencesAsJson);
final JsonObject jsonRequestObject = new JsonObject();
jsonRequestObject.add("data", data);
- jsonRequestObject.add("cmHandleProperties", toJsonObject(cmHandleProperties));
+ jsonRequestObject.add("cmHandleProperties", toJsonObject(dmiProperties));
return jsonRequestObject.toString();
}
- private static JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
+ private static JsonArray getModuleReferencesAsJson(final Collection<ModuleReference> unknownModuleReferences) {
final JsonArray moduleReferences = new JsonArray();
for (final ModuleReference moduleReference : unknownModuleReferences) {
return moduleReferences;
}
- private static JsonObject toJsonObject(final List<PersistenceCmHandle.AdditionalProperty> cmHandleProperties) {
+ private static JsonObject toJsonObject(final List<YangModelCmHandle.Property>
+ dmiProperties) {
final JsonObject asJsonObject = new JsonObject();
- for (final PersistenceCmHandle.AdditionalProperty additionalProperty : cmHandleProperties) {
+ for (final YangModelCmHandle.Property additionalProperty : dmiProperties) {
asJsonObject.addProperty(additionalProperty.getName(), additionalProperty.getValue());
}
return asJsonObject;