X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Fimpl%2Foperation%2FDmiOperations.java;h=40a47ecf66821720f6b9aa0d5543d431d4c1ca0f;hb=bc742a1dbe39a3269abab9e62a9d489f460144b0;hp=63c4d49a9152cff308b96ad825443345ff5807ef;hpb=c584bf2729bb6eb9229aad9dbacc65beaa5dbc2f;p=cps.git diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operation/DmiOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operation/DmiOperations.java index 63c4d49a9..40a47ecf6 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operation/DmiOperations.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operation/DmiOperations.java @@ -22,7 +22,6 @@ package org.onap.cps.ncmp.api.impl.operation; import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.onap.cps.ncmp.api.impl.client.DmiRestClient; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; @@ -30,7 +29,6 @@ import org.springframework.stereotype.Component; @Component public class DmiOperations { - @Getter public enum DataStoreEnum { PASSTHROUGH_OPERATIONAL("ncmp-datastore:passthrough-operational"), @@ -49,10 +47,13 @@ public class DmiOperations { } private DmiRestClient dmiRestClient; - private static final String DMI_BASE_PATH = "/dmi/api"; - private static final String PARENT_CM_HANDLE_URI = - "/v1/ch/{cmHandle}/data/ds"; + private static final String DMI_API_PATH = "/dmi"; + private static final String DMI_CM_HANDLE_PATH = "/v1/ch/{cmHandle}"; + private static final String DMI_CM_HANDLE_DATASTORE_PATH = DMI_CM_HANDLE_PATH + "/data/ds"; private static final String URL_SEPARATOR = "/"; + private static final String RESOURCE_IDENTIFIER = "resourceIdentifier"; + private static final String OPTIONS_QUERY_KEY = "options"; + /** * Constructor for {@code DmiOperations}. This method also manipulates url properties. @@ -63,29 +64,60 @@ public class DmiOperations { this.dmiRestClient = dmiRestClient; } + /** + * Get resources from DMI. + * + * @param dmiServiceName dmi service name + * @param cmHandle cmHandle + * @param resourceName name of the resource(s) + * @return {@code ResponseEntity} response entity + */ + public ResponseEntity getResourceFromDmi(final String dmiServiceName, + final String cmHandle, + final String resourceName) { + final var dmiResourceDataUrl = getDmiResourceUrl(dmiServiceName, cmHandle, resourceName); + final var httpHeaders = new HttpHeaders(); + return dmiRestClient.postOperation(dmiResourceDataUrl, httpHeaders); + } + + /** + * Get resources from DMI for modules. + * + * @param dmiServiceName dmi service name + * @param jsonData module names and revisions as JSON + * @param cmHandle cmHandle + * @param resourceName name of the resource(s) + * @return {@code ResponseEntity} response entity + */ + public ResponseEntity getResourceFromDmiWithJsonData(final String dmiServiceName, + final String jsonData, + final String cmHandle, + final String resourceName) { + final String dmiResourceDataUrl = getDmiResourceUrl(dmiServiceName, cmHandle, resourceName); + return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonData, new HttpHeaders()); + } + /** * This method fetches the resource data from operational data store for given cm handle * identifier on given resource using dmi client. * - * @param dmiBasePath dmi base path - * @param cmHandle network resource identifier - * @param resourceId resource identifier - * @param fieldsQuery fields query - * @param depthQuery depth query - * @param acceptParam accept parameter - * @param jsonBody json body for put operation + * @param dmiServiceName dmi service name + * @param cmHandle network resource identifier + * @param resourceId resource identifier + * @param optionsParamInQuery options query + * @param acceptParamInHeader accept parameter + * @param jsonBody json body for put operation * @return {@code ResponseEntity} response entity */ - public ResponseEntity getResourceDataOperationalFromDmi(final String dmiBasePath, + public ResponseEntity getResourceDataOperationalFromDmi(final String dmiServiceName, final String cmHandle, final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final String acceptParam, + final String optionsParamInQuery, + final String acceptParamInHeader, final String jsonBody) { - final var dmiResourceDataUrl = getDmiResourceDataUrl(dmiBasePath, cmHandle, resourceId, - fieldsQuery, depthQuery, DataStoreEnum.PASSTHROUGH_OPERATIONAL); - final var httpHeaders = prepareHeader(acceptParam); + final var dmiResourceDataUrl = getDmiDatastoreUrl(dmiServiceName, cmHandle, resourceId, + optionsParamInQuery, DataStoreEnum.PASSTHROUGH_OPERATIONAL); + final var httpHeaders = prepareHeader(acceptParamInHeader); return dmiRestClient.putOperationWithJsonData(dmiResourceDataUrl, jsonBody, httpHeaders); } @@ -93,25 +125,23 @@ public class DmiOperations { * This method fetches the resource data from pass-through running data store for given cm handle * identifier on given resource using dmi client. * - * @param dmiBasePath dmi base path - * @param cmHandle network resource identifier - * @param resourceId resource identifier - * @param fieldsQuery fields query - * @param depthQuery depth query - * @param acceptParam accept parameter - * @param jsonBody json body for put operation + * @param dmiServiceName dmi service name + * @param cmHandle network resource identifier + * @param resourceId resource identifier + * @param optionsParamInQuery fields query + * @param acceptParamInHeader accept parameter + * @param jsonBody json body for put operation * @return {@code ResponseEntity} response entity */ - public ResponseEntity getResourceDataPassThroughRunningFromDmi(final String dmiBasePath, + public ResponseEntity getResourceDataPassThroughRunningFromDmi(final String dmiServiceName, final String cmHandle, final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final String acceptParam, + final String optionsParamInQuery, + final String acceptParamInHeader, final String jsonBody) { - final var dmiResourceDataUrl = getDmiResourceDataUrl(dmiBasePath, cmHandle, resourceId, - fieldsQuery, depthQuery, DataStoreEnum.PASSTHROUGH_RUNNING); - final var httpHeaders = prepareHeader(acceptParam); + final var dmiResourceDataUrl = getDmiDatastoreUrl(dmiServiceName, cmHandle, resourceId, + optionsParamInQuery, DataStoreEnum.PASSTHROUGH_RUNNING); + final var httpHeaders = prepareHeader(acceptParamInHeader); return dmiRestClient.putOperationWithJsonData(dmiResourceDataUrl, jsonBody, httpHeaders); } @@ -119,69 +149,81 @@ public class DmiOperations { * This method creates the resource data from pass-through running data store for given cm handle * identifier on given resource using dmi client. * - * @param dmiBasePath dmi base path - * @param cmHandle network resource identifier - * @param resourceId resource identifier - * @param jsonBody json body for put operation + * @param dmiServiceName dmi service name + * @param cmHandle network resource identifier + * @param resourceId resource identifier + * @param jsonBody json body for put operation * @return {@code ResponseEntity} response entity */ - public ResponseEntity createResourceDataPassThroughRunningFromDmi(final String dmiBasePath, + public ResponseEntity createResourceDataPassThroughRunningFromDmi(final String dmiServiceName, final String cmHandle, final String resourceId, final String jsonBody) { - final var stringBuilder = getStringBuilderForPassThroughRunningUrl(dmiBasePath, - cmHandle, resourceId, DataStoreEnum.PASSTHROUGH_RUNNING); + final var stringBuilder = getStringBuilderForPassThroughUrl(dmiServiceName, + cmHandle, resourceId, DataStoreEnum.PASSTHROUGH_RUNNING); return dmiRestClient.postOperationWithJsonData(stringBuilder.toString(), jsonBody, new HttpHeaders()); } - @NotNull - private String getDmiResourceDataUrl(final String dmiBasePath, - final String cmHandle, - final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final DataStoreEnum dataStoreEnum) { - final var stringBuilder = getStringBuilderForPassThroughRunningUrl(dmiBasePath, - cmHandle, resourceId, dataStoreEnum); - appendFieldsAndDepth(stringBuilder, fieldsQuery, depthQuery); + private String getDmiResourceUrl(final String dmiServiceName, + final String cmHandle, + final String resourceName) { + final var stringBuilder = new StringBuilder(dmiServiceName); + stringBuilder.append(DMI_API_PATH); + stringBuilder.append(DMI_CM_HANDLE_PATH.replace("{cmHandle}", cmHandle)); + stringBuilder.append(URL_SEPARATOR + resourceName); return stringBuilder.toString(); } - @NotNull - private StringBuilder getStringBuilderForPassThroughRunningUrl(final String dmiServiceName, - final String cmHandle, - final String resourceId, - final DataStoreEnum dataStoreEnum) { - final var stringBuilder = new StringBuilder(dmiServiceName); - stringBuilder.append(DMI_BASE_PATH); - stringBuilder.append(PARENT_CM_HANDLE_URI.replace("{cmHandle}", cmHandle)); + /** + * This method updates the resource data from pass-through running data store for the cm handle identifier on given + * resource using dmi client. + * + * @param dmiServiceName dmi service name + * @param cmHandle network resource identifier + * @param resourceId resource identifier + * @param jsonBody json body for put operation + * @return {@code ResponseEntity} response entity + */ + public ResponseEntity updateResourceDataPassThroughRunningFromDmi(final String dmiServiceName, + final String cmHandle, final String resourceId, final String jsonBody) { + final StringBuilder stringBuilder = + getStringBuilderForPassThroughUrl(dmiServiceName, cmHandle, resourceId, DataStoreEnum.PASSTHROUGH_RUNNING); + return dmiRestClient.postOperationWithJsonData(stringBuilder.toString(), jsonBody, new HttpHeaders()); + } + + private String getDmiDatastoreUrl(final String dmiServiceName, + final String cmHandle, + final String resourceId, + final String optionsParamInQuery, + final DataStoreEnum dataStoreEnum) { + final var stringBuilder = getStringBuilderForPassThroughUrl(dmiServiceName, + cmHandle, resourceId, dataStoreEnum); + appendOptionsQuery(stringBuilder, optionsParamInQuery); + return stringBuilder.toString(); + } + + private StringBuilder getStringBuilderForPassThroughUrl(final String dmiServiceName, + final String cmHandle, + final String resourceId, + final DataStoreEnum dataStoreEnum) { + final var stringBuilder = new StringBuilder(dmiServiceName); + stringBuilder.append(DMI_API_PATH); + stringBuilder.append(DMI_CM_HANDLE_DATASTORE_PATH.replace("{cmHandle}", cmHandle)); stringBuilder.append(URL_SEPARATOR + dataStoreEnum.getValue()); - stringBuilder.insert(stringBuilder.length(), URL_SEPARATOR + resourceId); + stringBuilder.append("?" + RESOURCE_IDENTIFIER + "=" + resourceId); return stringBuilder; } - private void appendFieldsAndDepth(final StringBuilder stringBuilder, - final String fieldsQuery, - final Integer depthQuery) { - final var doesFieldExists = (fieldsQuery != null && !fieldsQuery.isEmpty()); - if (doesFieldExists) { - stringBuilder.append("?").append("fields=").append(fieldsQuery); - } - if (depthQuery != null) { - if (doesFieldExists) { - stringBuilder.append("&"); - } else { - stringBuilder.append("?"); - } - stringBuilder.append("depth=").append(depthQuery); + private void appendOptionsQuery(final StringBuilder stringBuilder, + final String optionsParamInQuery) { + if (optionsParamInQuery != null) { + stringBuilder.append("&").append(OPTIONS_QUERY_KEY).append("=").append(optionsParamInQuery); } } private HttpHeaders prepareHeader(final String acceptParam) { final var httpHeaders = new HttpHeaders(); - if (acceptParam != null && !acceptParam.isEmpty()) { - httpHeaders.set(HttpHeaders.ACCEPT, acceptParam); - } + httpHeaders.set(HttpHeaders.ACCEPT, acceptParam); return httpHeaders; } }