summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java
diff options
context:
space:
mode:
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.java102
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