summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
diff options
context:
space:
mode:
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java')
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
new file mode 100644
index 000000000..b8336455c
--- /dev/null
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
@@ -0,0 +1,140 @@
+/*
+ * ============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.api.impl.operations;
+
+import static org.onap.cps.ncmp.api.impl.operations.DmiOperations.DataStoreEnum.PASSTHROUGH_RUNNING;
+import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum;
+import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.READ;
+import static org.onap.cps.ncmp.api.impl.operations.RequiredDmiService.DATA;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+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.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * Operations class for DMI data.
+ */
+@Component
+public class DmiDataOperations extends DmiOperations {
+
+ /**
+ * Constructor for {@code DmiOperations}. This method also manipulates url properties.
+ *
+ * @param dmiRestClient {@code DmiRestClient}
+ */
+ public DmiDataOperations(final PersistenceCmHandleRetriever cmHandlePropertiesRetriever,
+ final ObjectMapper objectMapper,
+ final NcmpConfiguration.DmiProperties dmiProperties,
+ final DmiRestClient dmiRestClient) {
+ super(cmHandlePropertiesRetriever, objectMapper, dmiProperties, dmiRestClient);
+ }
+
+ /**
+ * This method fetches the resource data from operational data store for given cm handle
+ * identifier on given resource using dmi client.
+ *
+ * @param cmHandle network resource identifier
+ * @param resourceId resource identifier
+ * @param optionsParamInQuery options query
+ * @param acceptParamInHeader accept parameter
+ * @param dataStore data store enum
+ * @return {@code ResponseEntity} response entity
+ */
+ public ResponseEntity<Object> getResourceDataFromDmi(final String cmHandle,
+ final String resourceId,
+ final String optionsParamInQuery,
+ final String acceptParamInHeader,
+ final DataStoreEnum dataStore) {
+ final PersistenceCmHandle persistenceCmHandle =
+ cmHandlePropertiesRetriever.retrieveCmHandleDmiServiceNameAndProperties(cmHandle);
+ final DmiRequestBody dmiRequestBody = DmiRequestBody.builder()
+ .operation(READ)
+ .build();
+ dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties());
+ final String jsonBody = getDmiRequestBodyAsString(dmiRequestBody);
+
+ final var dmiResourceDataUrl = getDmiDatastoreUrlWithOptions(
+ persistenceCmHandle.resolveDmiServiceName(DATA), cmHandle, resourceId,
+ optionsParamInQuery, dataStore);
+ final var httpHeaders = prepareHeader(acceptParamInHeader);
+ return dmiRestClient.putOperationWithJsonData(dmiResourceDataUrl, jsonBody, httpHeaders);
+ }
+
+ /**
+ * This method creates the resource data from pass-through running data store for given cm handle
+ * identifier on given resource using dmi client.
+ *
+ * @param cmHandle network resource identifier
+ * @param resourceId resource identifier
+ * @param operation operation enum
+ * @param requestData the request data
+ * @param dataType data type
+ * @return {@code ResponseEntity} response entity
+ */
+ public ResponseEntity<String> writeResourceDataPassThroughRunningFromDmi(final String cmHandle,
+ final String resourceId,
+ final OperationEnum operation,
+ final String requestData,
+ final String dataType) {
+ final PersistenceCmHandle persistenceCmHandle =
+ cmHandlePropertiesRetriever.retrieveCmHandleDmiServiceNameAndProperties(cmHandle);
+ final DmiRequestBody dmiRequestBody = DmiRequestBody.builder()
+ .operation(operation)
+ .data(requestData)
+ .dataType(dataType)
+ .build();
+ dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties());
+ final String jsonBody = getDmiRequestBodyAsString(dmiRequestBody);
+ final String dmiUrl =
+ getResourceInDataStoreUrl(persistenceCmHandle.resolveDmiServiceName(DATA),
+ cmHandle, resourceId, PASSTHROUGH_RUNNING);
+ return dmiRestClient.postOperationWithJsonData(dmiUrl, jsonBody, new HttpHeaders());
+ }
+
+ private String getResourceInDataStoreUrl(final String dmiServiceName,
+ final String cmHandle,
+ final String resourceId,
+ final DataStoreEnum dataStoreEnum) {
+ return getCmHandleUrl(dmiServiceName, cmHandle)
+ + "data"
+ + URL_SEPARATOR
+ + "ds"
+ + URL_SEPARATOR
+ + dataStoreEnum.getValue()
+ + "?resourceIdentifier="
+ + resourceId;
+ }
+
+ private String getDmiDatastoreUrlWithOptions(final String dmiServiceName,
+ final String cmHandle,
+ final String resourceId,
+ final String optionsParamInQuery,
+ final DataStoreEnum dataStoreEnum) {
+ final String resourceInDataStoreUrl = getResourceInDataStoreUrl(dmiServiceName,
+ cmHandle, resourceId, dataStoreEnum);
+ return appendOptionsQuery(resourceInDataStoreUrl, optionsParamInQuery);
+ }
+
+}