diff options
Diffstat (limited to 'src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java')
-rw-r--r-- | src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java | 102 |
1 files changed, 93 insertions, 9 deletions
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java b/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java index 0d1c3438..358da590 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java @@ -20,19 +20,23 @@ package org.onap.cps.ncmp.dmi.service.operation; +import java.util.LinkedList; +import java.util.List; +import org.apache.groovy.parser.antlr4.util.StringUtils; +import org.jetbrains.annotations.NotNull; import org.onap.cps.ncmp.dmi.config.DmiConfiguration.SdncProperties; import org.onap.cps.ncmp.dmi.service.client.SdncRestconfClient; +import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @Component public class SdncOperations { - private static final String TOPOLOGY_URL_TEMPLATE_DATA = - "/rests/data/network-topology:network-topology/topology={topologyId}"; + "/rests/data/network-topology:network-topology/topology={topologyId}"; private static final String TOPOLOGY_URL_TEMPLATE_OPERATIONAL = - "/rests/operations/network-topology:network-topology/topology={topologyId}"; + "/rests/operations/network-topology:network-topology/topology={topologyId}"; private static final String MOUNT_URL_TEMPLATE = "/node={nodeId}/yang-ext:mount"; private static final String GET_SCHEMA_URL = "/ietf-netconf-monitoring:netconf-state/schemas"; private static final String GET_SCHEMA_SOURCES_URL = "/ietf-netconf-monitoring:get-schema"; @@ -52,7 +56,7 @@ public class SdncOperations { this.sdncProperties = sdncProperties; this.sdncRestconfClient = sdncRestconfClient; topologyUrlOperational = - TOPOLOGY_URL_TEMPLATE_OPERATIONAL.replace("{topologyId}", this.sdncProperties.getTopologyId()); + TOPOLOGY_URL_TEMPLATE_OPERATIONAL.replace("{topologyId}", this.sdncProperties.getTopologyId()); topologyUrlData = TOPOLOGY_URL_TEMPLATE_DATA.replace("{topologyId}", this.sdncProperties.getTopologyId()); } @@ -79,11 +83,52 @@ public class SdncOperations { return sdncRestconfClient.postOperationWithJsonData(getYangResourceUrl, moduleProperties); } + /** + * This method fetches the resource data for given node identifier on given resource + * using sdnc client. + * + * @param nodeId network resource identifier + * @param resourceId resource identifier + * @param fieldsValue fields query + * @param depthValue depth query + * @param acceptParam accept parameter + * @return {@code ResponseEntity} response entity + */ + public ResponseEntity<String> getResouceDataForOperational(final String nodeId, + final String resourceId, + final String fieldsValue, + final Integer depthValue, + final String acceptParam) { + final String getResourceDataUrl = prepareResourceDataUrl(nodeId, + resourceId, + getQueryList(fieldsValue, depthValue, "content=all")); + final HttpHeaders httpHeaders = new HttpHeaders(); + if (!StringUtils.isEmpty(acceptParam)) { + httpHeaders.set(HttpHeaders.ACCEPT, acceptParam); + } + return sdncRestconfClient.getOperation(getResourceDataUrl, httpHeaders); + } + + @NotNull + private List<String> getQueryList(final String fieldsValue, final Integer depthValue, final String contentQuery) { + final List<String> queryList = new LinkedList<>(); + if (!StringUtils.isEmpty(fieldsValue)) { + queryList.add("fields=" + fieldsValue); + } + if (depthValue != null) { + queryList.add("depth=" + depthValue); + } + if (!StringUtils.isEmpty(contentQuery)) { + queryList.add(contentQuery); + } + return queryList; + } + + + @NotNull private String prepareGetSchemaUrl(final String nodeId) { - final var topologyMountUrl = topologyUrlData + MOUNT_URL_TEMPLATE; - final String topologyMountUrlWithNodeId = topologyMountUrl.replace("{nodeId}", nodeId); - final String resourceUrl = topologyMountUrlWithNodeId.concat(GET_SCHEMA_URL); - return resourceUrl; + final var getSchemaUrl = addResource(addTopologyDataUrlwithNode(nodeId), GET_SCHEMA_URL); + return getSchemaUrl; } private String prepareGetOperationSchemaUrl(final String nodeId) { @@ -91,4 +136,43 @@ public class SdncOperations { final var topologyMountUrlWithNodeId = topologyMountUrl.replace("{nodeId}", nodeId); return topologyMountUrlWithNodeId.concat(GET_SCHEMA_SOURCES_URL); } -} + + @NotNull + private String prepareResourceDataUrl(final String nodeId, + final String resourceId, + final List<String> queryList) { + final var resourceDataUrl = addQuery(addResource(addTopologyDataUrlwithNode(nodeId), resourceId), queryList); + return resourceDataUrl; + } + + @NotNull + private String addResource(final String url, final String resourceId) { + if (resourceId.startsWith("/")) { + return url.concat(resourceId); + } else { + return url.concat("/" + resourceId); + } + } + + @NotNull + private String addQuery(final String url, final List<String> queryList) { + if (queryList.isEmpty()) { + return url; + } + final StringBuilder urlBuilder = new StringBuilder(url); + urlBuilder.append("?"); + urlBuilder.append(queryList.get(0)); + for (int i = 1; i < queryList.size(); i++) { + urlBuilder.append("&"); + urlBuilder.append(queryList.get(i)); + } + return urlBuilder.toString(); + } + + @NotNull + private String addTopologyDataUrlwithNode(final String nodeId) { + final String topologyMountUrl = topologyUrlData + MOUNT_URL_TEMPLATE; + return topologyMountUrl.replace("{nodeId}", nodeId); + } + +}
\ No newline at end of file |