X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Fimpl%2Foperation%2FDmiOperations.java;h=40a47ecf66821720f6b9aa0d5543d431d4c1ca0f;hb=a84a4aa84fd22af9b89424d776a18a98d7515bd2;hp=2b13d165f2e2e51c6708681216a5e595d706d5ed;hpb=5aba6667d330835fa3661ffba0d88f88029da446;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 2b13d165f..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,28 +29,31 @@ import org.springframework.stereotype.Component; @Component public class DmiOperations { - @Getter - public enum PassThroughEnum { - OPERATIONAL("/ncmp-datastore:passthrough-operational/"), - RUNNING("/ncmp-datastore:passthrough-running/"); + public enum DataStoreEnum { + PASSTHROUGH_OPERATIONAL("ncmp-datastore:passthrough-operational"), + PASSTHROUGH_RUNNING("ncmp-datastore:passthrough-running"); private String value; - PassThroughEnum(final String value) { + DataStoreEnum(final String value) { this.value = value; } @Override @JsonValue public String toString() { - return String.valueOf(value); + return value; } } private DmiRestClient dmiRestClient; - private static final String PARENT_CM_HANDLE_URI = - "/v1/ch/{cmHandle}/data/ds"; - private final int indexCmHandleInUri; + 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. @@ -60,96 +62,168 @@ public class DmiOperations { */ public DmiOperations(final DmiRestClient dmiRestClient) { this.dmiRestClient = dmiRestClient; - indexCmHandleInUri = PARENT_CM_HANDLE_URI.indexOf("{cmHandle}"); + } + + /** + * 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 getResouceDataOperationalFromDmi(final String dmiBasePath, - final String cmHandle, - final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final String acceptParam, - final String jsonBody) { - final var builder = getDmiResourceDataUrl(dmiBasePath, cmHandle, resourceId, - fieldsQuery, depthQuery, PassThroughEnum.OPERATIONAL); - final var httpHeaders = prepareHeader(acceptParam); - return dmiRestClient.putOperationWithJsonData(builder.toString(), jsonBody, httpHeaders); + public ResponseEntity getResourceDataOperationalFromDmi(final String dmiServiceName, + final String cmHandle, + final String resourceId, + final String optionsParamInQuery, + final String acceptParamInHeader, + final String jsonBody) { + final var dmiResourceDataUrl = getDmiDatastoreUrl(dmiServiceName, cmHandle, resourceId, + optionsParamInQuery, DataStoreEnum.PASSTHROUGH_OPERATIONAL); + final var httpHeaders = prepareHeader(acceptParamInHeader); + return dmiRestClient.putOperationWithJsonData(dmiResourceDataUrl, jsonBody, httpHeaders); } /** * 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 dmiServiceName, + final String cmHandle, + final String resourceId, + final String optionsParamInQuery, + final String acceptParamInHeader, + final String jsonBody) { + final var dmiResourceDataUrl = getDmiDatastoreUrl(dmiServiceName, cmHandle, resourceId, + optionsParamInQuery, DataStoreEnum.PASSTHROUGH_RUNNING); + 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 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 getResouceDataPassThroughRunningFromDmi(final String dmiBasePath, - final String cmHandle, - final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final String acceptParam, - final String jsonBody) { - final var builder = getDmiResourceDataUrl(dmiBasePath, cmHandle, resourceId, - fieldsQuery, depthQuery, PassThroughEnum.RUNNING); - final var httpHeaders = prepareHeader(acceptParam); - return dmiRestClient.putOperationWithJsonData(builder.toString(), jsonBody, httpHeaders); + public ResponseEntity createResourceDataPassThroughRunningFromDmi(final String dmiServiceName, + final String cmHandle, + final String resourceId, + final String jsonBody) { + final var stringBuilder = getStringBuilderForPassThroughUrl(dmiServiceName, + cmHandle, resourceId, DataStoreEnum.PASSTHROUGH_RUNNING); + return dmiRestClient.postOperationWithJsonData(stringBuilder.toString(), jsonBody, new HttpHeaders()); } - @NotNull - private StringBuilder getDmiResourceDataUrl(final String dmiBasePath, - final String cmHandle, - final String resourceId, - final String fieldsQuery, - final Integer depthQuery, - final PassThroughEnum passThrough) { - final var builder = new StringBuilder(PARENT_CM_HANDLE_URI.replace("{cmHandle}", cmHandle)); - builder.append(passThrough.getValue()); - builder.insert(builder.length(), resourceId); - appendFieldsAndDepth(fieldsQuery, depthQuery, builder); - builder.insert(0, dmiBasePath); - return builder; + 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(); } - private void appendFieldsAndDepth(final String fieldsQuery, final Integer depthQuery, final StringBuilder builder) { - final var doesFieldExists = (fieldsQuery != null && !fieldsQuery.isEmpty()); - if (doesFieldExists) { - builder.append("?").append("fields=").append(fieldsQuery); - } - if (depthQuery != null) { - if (!doesFieldExists) { - builder.append("?"); - } else { - builder.append("&"); - } - builder.append("depth=").append(depthQuery); + /** + * 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.append("?" + RESOURCE_IDENTIFIER + "=" + resourceId); + return stringBuilder; + } + + 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; } }