From 96a9aafdff7813324bc8a8ba1e743683e251dde6 Mon Sep 17 00:00:00 2001 From: Jessica Wagantall Date: Tue, 1 Dec 2020 11:33:35 -0800 Subject: Migrate files from sli-plugins Migrate sli-plugins repo into new directory "plugins". Signed-off-by: Jessica Wagantall --- .../ccsdk/sli/plugins/restapicall/AuthType.java | 19 - .../onap/ccsdk/sli/plugins/restapicall/Format.java | 36 - .../ccsdk/sli/plugins/restapicall/HttpMethod.java | 43 - .../sli/plugins/restapicall/HttpResponse.java | 34 - .../ccsdk/sli/plugins/restapicall/JsonParser.java | 153 --- .../ccsdk/sli/plugins/restapicall/Parameters.java | 56 - .../sli/plugins/restapicall/PartnerDetails.java | 14 - .../sli/plugins/restapicall/RestapiCallNode.java | 1306 -------------------- .../sli/plugins/restapicall/RetryException.java | 30 - .../ccsdk/sli/plugins/restapicall/RetryPolicy.java | 64 - .../ccsdk/sli/plugins/restapicall/XmlJsonUtil.java | 518 -------- .../ccsdk/sli/plugins/restapicall/XmlParser.java | 180 --- .../blueprint/restapi-call-node-blueprint.xml | 16 - .../src/main/resources/actokentemplate.json | 4 - .../src/main/resources/default-ueb-message.json | 11 - .../src/main/resources/get-multicast-data.json | 13 - .../main/resources/l2-dci-connects-template.json | 11 - .../main/resources/l3-dci-connects-template.json | 14 - .../src/main/resources/l3smsitetemplate.json | 162 --- .../src/main/resources/l3smvpntemplate.json | 10 - .../src/main/resources/l3smvrftemplate.json | 14 - .../main/resources/northbound-api-template.json | 22 - .../src/main/resources/northbound-api-template.xml | 43 - .../blueprint/restapi-call-node-blueprint.xml | 16 - ...iguration-notification-northbound-template.json | 23 - .../src/main/resources/sptn-l3vpn-template.json | 159 --- .../update-vpe-data-with-apply-group.json | 32 - .../src/main/resources/vnf-information-update.json | 3 - .../src/main/resources/vpn-allocation-request.json | 15 - .../src/main/resources/vpn-information-update.json | 3 - ...service-configuration-information-template.json | 16 - .../resources/vrf-update-vlan-status-template.json | 12 - .../provider/src/main/resources/vrf-update.json | 56 - 33 files changed, 3108 deletions(-) delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/AuthType.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Format.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpMethod.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpResponse.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/JsonParser.java delete mode 100755 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Parameters.java delete mode 100755 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/PartnerDetails.java delete mode 100755 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryException.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryPolicy.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java delete mode 100644 restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java delete mode 100755 restapi-call-node/provider/src/main/resources/OSGI-INF/blueprint/restapi-call-node-blueprint.xml delete mode 100644 restapi-call-node/provider/src/main/resources/actokentemplate.json delete mode 100644 restapi-call-node/provider/src/main/resources/default-ueb-message.json delete mode 100644 restapi-call-node/provider/src/main/resources/get-multicast-data.json delete mode 100644 restapi-call-node/provider/src/main/resources/l2-dci-connects-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/l3-dci-connects-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/l3smsitetemplate.json delete mode 100644 restapi-call-node/provider/src/main/resources/l3smvpntemplate.json delete mode 100644 restapi-call-node/provider/src/main/resources/l3smvrftemplate.json delete mode 100644 restapi-call-node/provider/src/main/resources/northbound-api-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/northbound-api-template.xml delete mode 100755 restapi-call-node/provider/src/main/resources/org/opendaylight/blueprint/restapi-call-node-blueprint.xml delete mode 100644 restapi-call-node/provider/src/main/resources/service-configuration-notification-northbound-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/sptn-l3vpn-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/update-vpe-data-with-apply-group.json delete mode 100644 restapi-call-node/provider/src/main/resources/vnf-information-update.json delete mode 100644 restapi-call-node/provider/src/main/resources/vpn-allocation-request.json delete mode 100644 restapi-call-node/provider/src/main/resources/vpn-information-update.json delete mode 100644 restapi-call-node/provider/src/main/resources/vrf-service-configuration-information-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/vrf-update-vlan-status-template.json delete mode 100644 restapi-call-node/provider/src/main/resources/vrf-update.json (limited to 'restapi-call-node/provider/src/main') diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/AuthType.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/AuthType.java deleted file mode 100644 index 851dc9cc8..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/AuthType.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.onap.ccsdk.sli.plugins.restapicall; - -public enum AuthType { - NONE, BASIC, DIGEST, OAUTH, Unspecified; - - public static AuthType fromString(String s) { - if ("basic".equalsIgnoreCase(s)) - return BASIC; - if ("digest".equalsIgnoreCase(s)) - return DIGEST; - if ("oauth".equalsIgnoreCase(s)) - return OAUTH; - if ("none".equalsIgnoreCase(s)) - return NONE; - if ("unspecified".equalsIgnoreCase(s)) - return Unspecified; - throw new IllegalArgumentException("Invalid value for format: " + s); - } -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Format.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Format.java deleted file mode 100644 index 1578ee320..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Format.java +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -public enum Format { - JSON, XML, NONE; - - public static Format fromString(String s) { - if ("json".equalsIgnoreCase(s)) - return JSON; - if ("xml".equalsIgnoreCase(s)) - return XML; - if ("none".equalsIgnoreCase(s)) - return NONE; - throw new IllegalArgumentException("Invalid value for format: " + s); - } -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpMethod.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpMethod.java deleted file mode 100644 index b2f618a1c..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpMethod.java +++ /dev/null @@ -1,43 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright © 2018 IBM. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -public enum HttpMethod { - GET, POST, PUT, DELETE, PATCH; - - public static HttpMethod fromString(String s) { - if (s == null) - return null; - if (("get").equalsIgnoreCase(s)) - return GET; - if (("post").equalsIgnoreCase(s)) - return POST; - if (("put").equalsIgnoreCase(s)) - return PUT; - if (("delete").equalsIgnoreCase(s)) - return DELETE; - if (("patch").equalsIgnoreCase(s)) - return PATCH; - throw new IllegalArgumentException("Invalid value for HTTP Method: " + s); - } -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpResponse.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpResponse.java deleted file mode 100644 index 574089528..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/HttpResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import java.util.List; -import java.util.Map; -import javax.ws.rs.core.MultivaluedMap; - -public class HttpResponse { - public int code; - public String message; - public String body; - public MultivaluedMap headers; - public Map> headers2; -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/JsonParser.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/JsonParser.java deleted file mode 100644 index 60d43df7a..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/JsonParser.java +++ /dev/null @@ -1,153 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import org.apache.commons.lang3.StringUtils; -import org.codehaus.jettison.json.JSONArray; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static com.google.common.base.Preconditions.checkNotNull; - -public final class JsonParser { - - private static final Logger log = LoggerFactory.getLogger(JsonParser.class); - - private JsonParser() { - // Preventing instantiation of the same. - } - - - private static void handleJsonArray(String key, Map jArrayMap, JSONArray jsonArr) throws JSONException { - JSONObject jsonObj; - JSONArray subJsonArr; - boolean stripKey = false; - - for (int i = 0, length = jsonArr.length(); i < length; i++) { - if (stripKey) - key = key.substring(0, key.length()-3); - - subJsonArr = jsonArr.optJSONArray(i); - if (subJsonArr != null) { - key = StringUtils.trimToEmpty(key) + "[" + i + "]"; - jArrayMap.putIfAbsent(key + "_length", String.valueOf(subJsonArr.length())); - handleJsonArray(key, jArrayMap, subJsonArr); - stripKey = true; - continue; - } - - jsonObj = jsonArr.optJSONObject(i); - if (jsonObj != null) { - Iterator ii = jsonObj.keys(); - while (ii.hasNext()) { - String nodeKey = ii.next(); - String key1 = "[" + i + "]." + nodeKey; - String[] subKey = key1.split(":"); - if (subKey.length == 2) { - jArrayMap.putIfAbsent(subKey[1], jsonObj.get(nodeKey)); - } else { - jArrayMap.putIfAbsent(key1, jsonObj.get(nodeKey)); - } - } - } - else { - jArrayMap.putIfAbsent(StringUtils.trimToEmpty(key), jsonArr); - break; - } - } - } - - @SuppressWarnings("unchecked") - public static Map convertToProperties(String s) - throws SvcLogicException { - - checkNotNull(s, "Input should not be null."); - - try { - Map wm = new HashMap<>(); - JSONObject json; - JSONArray jsonArr; - //support top level list in json response - if (s.startsWith("[")) { - jsonArr = new JSONArray(s); - wm.put("_length", String.valueOf(jsonArr.length())); - handleJsonArray(null, wm, jsonArr); - } else { - json = new JSONObject(s); - Iterator ii = json.keys(); - while (ii.hasNext()) { - String key1 = ii.next(); - String[] subKey = key1.split(":"); - if (subKey.length == 2) { - wm.put(subKey[1], json.get(key1)); - } else { - wm.put(key1, json.get(key1)); - } - } - } - - Map mm = new HashMap<>(); - while (!wm.isEmpty()) { - for (String key : new ArrayList<>(wm.keySet())) { - Object o = wm.get(key); - wm.remove(key); - - if (o instanceof Boolean || o instanceof Number || o instanceof String) { - mm.put(key, o.toString()); - log.info("Added property: {} : {}", key, o.toString()); - } else if (o instanceof JSONObject) { - JSONObject jo = (JSONObject) o; - Iterator i = jo.keys(); - while (i.hasNext()) { - String key1 = i.next(); - String[] subKey = key1.split(":"); - if (subKey.length == 2) { - wm.put(key + "." + subKey[1], jo.get(key1)); - } else { - wm.put(key + "." + key1, jo.get(key1)); - } - } - } else if (o instanceof JSONArray) { - JSONArray ja = (JSONArray) o; - mm.put(key + "_length", String.valueOf(ja.length())); - log.info("Added property: {}_length: {}", key, ja.length()); - - for (int i = 0; i < ja.length(); i++) { - wm.put(key + '[' + i + ']', ja.get(i)); - } - } - } - } - return mm; - } catch (JSONException e) { - throw new SvcLogicException("Unable to convert JSON to properties" + e.getLocalizedMessage(), e); - } - } - -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Parameters.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Parameters.java deleted file mode 100755 index 9b542af91..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/Parameters.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import java.util.Set; - -public class Parameters { - public String templateFileName; - public String restapiUrl; - public String restapiUrlSuffix; - public String restapiUser; - public String restapiPassword; - public Format format; - public String contentType; - public HttpMethod httpMethod; - public String responsePrefix; - public Set listNameList; - public boolean skipSending; - public boolean convertResponse; - public String keyStoreFileName; - public String keyStorePassword; - public boolean ssl; - public String customHttpHeaders; - public String partner; - public Boolean dumpHeaders; - public String requestBody; - public String oAuthConsumerKey; - public String oAuthConsumerSecret; - public String oAuthSignatureMethod; - public String oAuthVersion; - public AuthType authtype; - public Boolean returnRequestPayload; - public String accept; - public boolean multipartFormData; - public String multipartFile; - public String targetEntity; -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/PartnerDetails.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/PartnerDetails.java deleted file mode 100755 index 1cd4b99bb..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/PartnerDetails.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.onap.ccsdk.sli.plugins.restapicall; - -public class PartnerDetails { - protected String username; - protected String password; - protected String url; - - public PartnerDetails(String username, String password, String url) { - this.username = username; - this.password = password; - this.url = url; - } - -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java deleted file mode 100755 index 3d7042493..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RestapiCallNode.java +++ /dev/null @@ -1,1306 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright © 2018 IBM. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import static java.lang.Boolean.valueOf; -import static javax.ws.rs.client.Entity.entity; -import static org.onap.ccsdk.sli.plugins.restapicall.AuthType.fromString; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.ProtocolException; -import java.net.SocketException; -import java.net.URI; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.KeyStore; -import java.util.ArrayList; -import java.util.Base64; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.ws.rs.ProcessingException; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.EntityTag; -import javax.ws.rs.core.Feature; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import org.apache.commons.lang3.StringUtils; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; -import org.glassfish.jersey.client.ClientProperties; -import org.glassfish.jersey.client.HttpUrlConnectorProvider; -import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; -import org.glassfish.jersey.client.oauth1.ConsumerCredentials; -import org.glassfish.jersey.client.oauth1.OAuth1ClientSupport; -import org.glassfish.jersey.media.multipart.MultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import org.onap.logging.filter.base.HttpURLConnectionMetricUtil; -import org.onap.logging.filter.base.MetricLogClientFilter; -import org.onap.logging.filter.base.ONAPComponents; -import org.onap.logging.ref.slf4j.ONAPLogConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.MDC; - -public class RestapiCallNode implements SvcLogicJavaPlugin { - - protected static final String PARTNERS_FILE_NAME = "partners.json"; - protected static final String UEB_PROPERTIES_FILE_NAME = "ueb.properties"; - protected static final String DEFAULT_PROPERTIES_DIR = "/opt/onap/ccsdk/data/properties"; - protected static final String PROPERTIES_DIR_KEY = "SDNC_CONFIG_DIR"; - protected static final int DEFAULT_HTTP_CONNECT_TIMEOUT_MS = 30000; // 30 seconds - protected static final int DEFAULT_HTTP_READ_TIMEOUT_MS = 600000; // 10 minutes - - private static final Logger log = LoggerFactory.getLogger(RestapiCallNode.class); - private String uebServers; - private String defaultUebTemplateFileName = "/opt/bvc/restapi/templates/default-ueb-message.json"; - - private String responseReceivedMessage = "Response received. Time: {}"; - private String responseHttpCodeMessage = "HTTP response code: {}"; - private String requestPostingException = "Exception while posting http request to client "; - protected static final String skipSendingMessage = "skipSending"; - protected static final String responsePrefix = "responsePrefix"; - protected static final String restapiUrlString = "restapiUrl"; - protected static final String restapiUserKey = "restapiUser"; - protected static final String restapiPasswordKey = "restapiPassword"; - protected Integer httpConnectTimeout; - protected Integer httpReadTimeout; - - protected HashMap partnerStore; - private static final Pattern retryPattern = Pattern.compile(".*,(http|https):.*"); - - public RestapiCallNode() { - String configDir = System.getProperty(PROPERTIES_DIR_KEY, DEFAULT_PROPERTIES_DIR); - try { - String jsonString = readFile(configDir + "/" + PARTNERS_FILE_NAME); - JSONObject partners = new JSONObject(jsonString); - partnerStore = new HashMap<>(); - loadPartners(partners); - log.info("Partners support enabled"); - } catch (Exception e) { - log.warn("Partners file could not be read, Partner support will not be enabled. " + e.getMessage()); - } - - try (FileInputStream in = new FileInputStream(configDir + "/" + UEB_PROPERTIES_FILE_NAME)) { - Properties props = new Properties(); - props.load(in); - uebServers = props.getProperty("servers"); - log.info("UEB support enabled"); - } catch (Exception e) { - log.warn("UEB properties could not be read, UEB support will not be enabled. " + e.getMessage()); - } - httpConnectTimeout = readOptionalInteger("HTTP_CONNECT_TIMEOUT_MS",DEFAULT_HTTP_CONNECT_TIMEOUT_MS); - httpReadTimeout = readOptionalInteger("HTTP_READ_TIMEOUT_MS",DEFAULT_HTTP_READ_TIMEOUT_MS); - } - - @SuppressWarnings("unchecked") - protected void loadPartners(JSONObject partners) { - Iterator keys = partners.keys(); - String partnerUserKey = "user"; - String partnerPasswordKey = "password"; - String partnerUrlKey = "url"; - - while (keys.hasNext()) { - String partnerKey = keys.next(); - try { - JSONObject partnerObject = (JSONObject) partners.get(partnerKey); - if (partnerObject.has(partnerUserKey) && partnerObject.has(partnerPasswordKey)) { - String url = null; - if (partnerObject.has(partnerUrlKey)) { - url = partnerObject.getString(partnerUrlKey); - } - String userName = partnerObject.getString(partnerUserKey); - String password = partnerObject.getString(partnerPasswordKey); - PartnerDetails details = new PartnerDetails(userName, getObfuscatedVal(password), url); - partnerStore.put(partnerKey, details); - log.info("mapped partner using partner key " + partnerKey); - } else { - log.info("Partner " + partnerKey + " is missing required keys, it won't be mapped"); - } - } catch (JSONException e) { - log.info("Couldn't map the partner using partner key " + partnerKey, e); - } - } - } - - /* Unobfuscate param value */ - private static String getObfuscatedVal(String paramValue) { - String resValue = paramValue; - if (paramValue != null && paramValue.startsWith("${") && paramValue.endsWith("}")) - { - String paramStr = paramValue.substring(2, paramValue.length()-1); - if (paramStr != null && paramStr.length() > 0) - { - String val = System.getenv(paramStr); - if (val != null && val.length() > 0) - { - resValue=val; - log.info("Obfuscated value RESET for param value:" + paramValue); - } - } - } - return resValue; - } - - /** - * Returns parameters from the parameter map. - * - * @param paramMap parameter map - * @param p parameters instance - * @return parameters filed instance - * @throws SvcLogicException when svc logic exception occurs - */ - public static Parameters getParameters(Map paramMap, Parameters p) throws SvcLogicException { - - p.templateFileName = parseParam(paramMap, "templateFileName", false, null); - p.requestBody = parseParam(paramMap, "requestBody", false, null); - p.restapiUrl = parseParam(paramMap, restapiUrlString, true, null); - p.restapiUrlSuffix = parseParam(paramMap, "restapiUrlSuffix", false, null); - if (p.restapiUrlSuffix != null) { - p.restapiUrl = p.restapiUrl + p.restapiUrlSuffix; - } - - p.restapiUrl = UriBuilder.fromUri(p.restapiUrl).toTemplate(); - validateUrl(p.restapiUrl); - - p.restapiUser = parseParam(paramMap, restapiUserKey, false, null); - p.restapiPassword = parseParam(paramMap, restapiPasswordKey, false, null); - p.oAuthConsumerKey = parseParam(paramMap, "oAuthConsumerKey", false, null); - p.oAuthConsumerSecret = parseParam(paramMap, "oAuthConsumerSecret", false, null); - p.oAuthSignatureMethod = parseParam(paramMap, "oAuthSignatureMethod", false, null); - p.oAuthVersion = parseParam(paramMap, "oAuthVersion", false, null); - p.contentType = parseParam(paramMap, "contentType", false, null); - p.format = Format.fromString(parseParam(paramMap, "format", false, "json")); - p.authtype = fromString(parseParam(paramMap, "authType", false, "unspecified")); - p.httpMethod = HttpMethod.fromString(parseParam(paramMap, "httpMethod", false, "post")); - p.responsePrefix = parseParam(paramMap, responsePrefix, false, null); - p.listNameList = getListNameList(paramMap); - String skipSendingStr = paramMap.get(skipSendingMessage); - p.skipSending = "true".equalsIgnoreCase(skipSendingStr); - p.convertResponse = valueOf(parseParam(paramMap, "convertResponse", false, "true")); - p.keyStoreFileName = parseParam(paramMap, "keyStoreFileName", false, null); - p.keyStorePassword = parseParam(paramMap, "keyStorePassword", false, null); - p.ssl = p.keyStoreFileName != null && p.keyStorePassword != null; - p.customHttpHeaders = parseParam(paramMap, "customHttpHeaders", false, null); - p.partner = parseParam(paramMap, "partner", false, null); - p.dumpHeaders = valueOf(parseParam(paramMap, "dumpHeaders", false, null)); - p.returnRequestPayload = valueOf(parseParam(paramMap, "returnRequestPayload", false, null)); - p.accept = parseParam(paramMap, "accept", false, null); - p.multipartFormData = valueOf(parseParam(paramMap, "multipartFormData", false, "false")); - p.multipartFile = parseParam(paramMap, "multipartFile", false, null); - p.targetEntity = parseParam(paramMap, "targetEntity", false, null); - return p; - } - - /** - * Validates the given URL in the parameters. - * - * @param restapiUrl rest api URL - * @throws SvcLogicException when URL validation fails - */ - private static void validateUrl(String restapiUrl) throws SvcLogicException { - if (containsMultipleUrls(restapiUrl)) { - String[] urls = getMultipleUrls(restapiUrl); - for (String url : urls) { - validateUrl(url); - } - } else { - try { - URI.create(restapiUrl); - } catch (IllegalArgumentException e) { - throw new SvcLogicException("Invalid input of url " + e.getLocalizedMessage(), e); - } - } - } - - /** - * Returns the list of list name. - * - * @param paramMap parameters map - * @return list of list name - */ - private static Set getListNameList(Map paramMap) { - Set ll = new HashSet<>(); - for (Map.Entry entry : paramMap.entrySet()) { - if (entry.getKey().startsWith("listName")) { - ll.add(entry.getValue()); - } - } - return ll; - } - - /** - * Parses the parameter string map of property, validates if required, assigns default value if - * present and returns the value. - * - * @param paramMap string param map - * @param name name of the property - * @param required if value required - * @param def default value - * @return value of the property - * @throws SvcLogicException if required parameter value is empty - */ - public static String parseParam(Map paramMap, String name, boolean required, String def) - throws SvcLogicException { - String s = paramMap.get(name); - - if (s == null || s.trim().length() == 0) { - if (!required) { - return def; - } - throw new SvcLogicException("Parameter " + name + " is required in RestapiCallNode"); - } - - s = s.trim(); - StringBuilder value = new StringBuilder(); - int i = 0; - int i1 = s.indexOf('%'); - while (i1 >= 0) { - int i2 = s.indexOf('%', i1 + 1); - if (i2 < 0) { - break; - } - - String varName = s.substring(i1 + 1, i2); - String varValue = System.getenv(varName); - if (varValue == null) { - varValue = "%" + varName + "%"; - } - - value.append(s.substring(i, i1)); - value.append(varValue); - - i = i2 + 1; - i1 = s.indexOf('%', i); - } - value.append(s.substring(i)); - - log.info("Parameter {}: [{}]", name, maskPassword(name, value)); - - return value.toString(); - } - - private static Object maskPassword(String name, Object value) { - String[] pwdNames = {"pwd", "passwd", "password", "Pwd", "Passwd", "Password"}; - for (String pwdName : pwdNames) { - if (name.contains(pwdName)) { - return "**********"; - } - } - return value; - } - - /** - * Allows Directed Graphs the ability to interact with REST APIs. - * - * @param paramMap HashMap of parameters passed by the DG to this function - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * vpn-information.vrf-details - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
parameterMandatory/Optionaldescriptionexample values
templateFileNameOptionalfull path to template file that can be used to build a request/sdncopt/bvc/restapi/templates/vnf_service-configuration-operation_minimal.json
restapiUrlMandatoryurl to send the request tohttps://sdncodl:8543/restconf/operations/L3VNF-API:create-update-vnf-request
restapiUserOptionaluser name to use for http basic authenticationsdnc_ws
restapiPasswordOptionalunencrypted password to use for http basic authenticationplain_password
oAuthConsumerKeyOptionalConsumer key to use for http oAuth authenticationplain_key
oAuthConsumerSecretOptionalConsumer secret to use for http oAuth authenticationplain_secret
oAuthSignatureMethodOptionalConsumer method to use for http oAuth authenticationmethod
oAuthVersionOptionalVersion http oAuth authenticationversion
contentTypeOptionalhttp content type to set in the http headerusually application/json or application/xml
formatOptionalshould match request body formatjson or xml
httpMethodOptionalhttp method to use when sending the requestget post put delete patch
responsePrefixOptionallocation the response will be written to in context memorytmp.restapi.result
listName[i]OptionalUsed for processing XML responses with repeating - * elements.
skipSendingOptionaltrue or false
convertResponseOptionalwhether the response should be convertedtrue or false
customHttpHeadersOptionala list additional http headers to be passed in, follow the format in the exampleX-CSI-MessageId=messageId,headerFieldName=headerFieldValue
dumpHeadersOptionalwhen true writes http header content to context memorytrue or false
partnerOptionalused to retrieve username, password and url if partner store existsaaf
returnRequestPayloadOptionalused to return payload built in the requesttrue or false
- * @param ctx Reference to context memory - * @throws SvcLogicException - * @since 11.0.2 - * @see String#split(String, int) - */ - public void sendRequest(Map paramMap, SvcLogicContext ctx) throws SvcLogicException { - sendRequest(paramMap, ctx, null); - } - - protected void sendRequest(Map paramMap, SvcLogicContext ctx, RetryPolicy retryPolicy) - throws SvcLogicException { - - HttpResponse r = new HttpResponse(); - try { - handlePartner(paramMap); - Parameters p = getParameters(paramMap, new Parameters()); - if(p.targetEntity != null && !p.targetEntity.isEmpty()) { - MDC.put(ONAPLogConstants.MDCs.TARGET_ENTITY, p.targetEntity); - } - if (containsMultipleUrls(p.restapiUrl) && retryPolicy == null) { - String[] urls = getMultipleUrls(p.restapiUrl); - retryPolicy = new RetryPolicy(urls, urls.length * 2); - p.restapiUrl = urls[0]; - } - String pp = p.responsePrefix != null ? p.responsePrefix + '.' : ""; - - String req = null; - if (p.templateFileName != null) { - String reqTemplate = readFile(p.templateFileName); - req = buildXmlJsonRequest(ctx, reqTemplate, p.format); - } else if (p.requestBody != null) { - req = p.requestBody; - } - r = sendHttpRequest(req, p); - setResponseStatus(ctx, p.responsePrefix, r); - - if (p.dumpHeaders && r.headers != null) { - for (Entry> a : r.headers.entrySet()) { - ctx.setAttribute(pp + "header." + a.getKey(), StringUtils.join(a.getValue(), ",")); - } - } - - if (p.returnRequestPayload && req != null) { - ctx.setAttribute(pp + "httpRequest", req); - } - - if (r.body != null && r.body.trim().length() > 0) { - ctx.setAttribute(pp + "httpResponse", r.body); - - if (p.convertResponse) { - Map mm = null; - if (p.format == Format.XML) { - mm = XmlParser.convertToProperties(r.body, p.listNameList); - } else if (p.format == Format.JSON) { - mm = JsonParser.convertToProperties(r.body); - } - - if (mm != null) { - for (Map.Entry entry : mm.entrySet()) { - ctx.setAttribute(pp + entry.getKey(), entry.getValue()); - } - } - } - } - } catch (SvcLogicException e) { - boolean shouldRetry = false; - if (e.getCause().getCause() instanceof SocketException) { - shouldRetry = true; - } - - log.error("Error sending the request: " + e.getMessage(), e); - String prefix = parseParam(paramMap, responsePrefix, false, null); - if (retryPolicy == null || !shouldRetry) { - setFailureResponseStatus(ctx, prefix, e.getMessage(), r); - } else { - log.debug(retryPolicy.getRetryMessage()); - try { - // calling getNextHostName increments the retry count so it should be called before shouldRetry - String retryString = retryPolicy.getNextHostName(); - if (retryPolicy.shouldRetry()) { - paramMap.put(restapiUrlString, retryString); - log.debug("retry attempt {} will use the retry url {}", retryPolicy.getRetryCount(), - retryString); - sendRequest(paramMap, ctx, retryPolicy); - } else { - log.debug("Maximum retries reached, won't attempt to retry. Calling setFailureResponseStatus."); - setFailureResponseStatus(ctx, prefix, e.getMessage(), r); - } - } catch (Exception ex) { - String retryErrorMessage = "Retry attempt " + retryPolicy.getRetryCount() - + "has failed with error message " + ex.getMessage(); - setFailureResponseStatus(ctx, prefix, retryErrorMessage, r); - } - } - } - - if (r != null && r.code >= 300) { - throw new SvcLogicException(String.valueOf(r.code) + ": " + r.message); - } - } - - protected void handlePartner(Map paramMap) { - String partner = paramMap.get("partner"); - if (partner != null && partner.length() > 0) { - PartnerDetails details = partnerStore.get(partner); - paramMap.put(restapiUserKey, details.username); - paramMap.put(restapiPasswordKey, details.password); - if (paramMap.get(restapiUrlString) == null) { - paramMap.put(restapiUrlString, details.url); - } - } - } - - protected String buildXmlJsonRequest(SvcLogicContext ctx, String template, Format format) throws SvcLogicException { - log.info("Building {} started", format); - long t1 = System.currentTimeMillis(); - String originalTemplate = template; - - template = expandRepeats(ctx, template, 1); - - Map mm = new HashMap<>(); - for (String s : ctx.getAttributeKeySet()) { - mm.put(s, ctx.getAttribute(s)); - } - - StringBuilder ss = new StringBuilder(); - int i = 0; - while (i < template.length()) { - int i1 = template.indexOf("${", i); - if (i1 < 0) { - ss.append(template.substring(i)); - break; - } - - int i2 = template.indexOf('}', i1 + 2); - if (i2 < 0) { - throw new SvcLogicException("Template error: Matching } not found"); - } - - String var1 = template.substring(i1 + 2, i2); - String value1 = format == Format.XML ? XmlJsonUtil.getXml(mm, var1) : XmlJsonUtil.getJson(mm, var1); - if (value1 == null || value1.trim().length() == 0) { - // delete the whole element (line) - int i3 = template.lastIndexOf('\n', i1); - if (i3 < 0) { - i3 = 0; - } - int i4 = template.indexOf('\n', i1); - if (i4 < 0) { - i4 = template.length(); - } - - if (i < i3) { - ss.append(template.substring(i, i3)); - } - i = i4; - } else { - ss.append(template.substring(i, i1)).append(value1); - i = i2 + 1; - } - } - - String req = format == Format.XML ? XmlJsonUtil.removeEmptyStructXml(ss.toString()) - : XmlJsonUtil.removeEmptyStructJson(originalTemplate, ss.toString()); - - if (format == Format.JSON) { - req = XmlJsonUtil.removeLastCommaJson(req); - } - - long t2 = System.currentTimeMillis(); - log.info("Building {} completed. Time: {}", format, t2 - t1); - - return req; - } - - protected String expandRepeats(SvcLogicContext ctx, String template, int level) throws SvcLogicException { - StringBuilder newTemplate = new StringBuilder(); - int k = 0; - while (k < template.length()) { - int i1 = template.indexOf("${repeat:", k); - if (i1 < 0) { - newTemplate.append(template.substring(k)); - break; - } - - int i2 = template.indexOf(':', i1 + 9); - if (i2 < 0) { - throw new SvcLogicException( - "Template error: Context variable name followed by : is required after repeat"); - } - - // Find the closing }, store in i3 - int nn = 1; - int i3 = -1; - int i = i2; - while (nn > 0 && i < template.length()) { - i3 = template.indexOf('}', i); - if (i3 < 0) { - throw new SvcLogicException("Template error: Matching } not found"); - } - int i32 = template.indexOf('{', i); - if (i32 >= 0 && i32 < i3) { - nn++; - i = i32 + 1; - } else { - nn--; - i = i3 + 1; - } - } - - String var1 = template.substring(i1 + 9, i2); - String value1 = ctx.getAttribute(var1); - log.info(" {}:{}", var1, value1); - int n = 0; - try { - n = Integer.parseInt(value1); - } catch (NumberFormatException e) { - log.info("value1 not set or not a number, n will remain set at zero"); - } - - newTemplate.append(template.substring(k, i1)); - - String rpt = template.substring(i2 + 1, i3); - - for (int ii = 0; ii < n; ii++) { - String ss = rpt.replaceAll("\\[\\$\\{" + level + "\\}\\]", "[" + ii + "]"); - if (ii == n - 1 && ss.trim().endsWith(",")) { - int i4 = ss.lastIndexOf(','); - if (i4 > 0) { - ss = ss.substring(0, i4) + ss.substring(i4 + 1); - } - } - newTemplate.append(ss); - } - - k = i3 + 1; - } - - if (k == 0) { - return newTemplate.toString(); - } - - return expandRepeats(ctx, newTemplate.toString(), level + 1); - } - - protected String readFile(String fileName) throws SvcLogicException { - try { - byte[] encoded = Files.readAllBytes(Paths.get(fileName)); - return new String(encoded, "UTF-8"); - } catch (IOException | SecurityException e) { - throw new SvcLogicException("Unable to read file " + fileName + e.getLocalizedMessage(), e); - } - } - - protected Client addAuthType(Client c, FileParam fp) throws SvcLogicException { - Parameters p = new Parameters(); - p.restapiUser = fp.user; - p.restapiPassword = fp.password; - p.oAuthConsumerKey = fp.oAuthConsumerKey; - p.oAuthVersion = fp.oAuthVersion; - p.oAuthConsumerSecret = fp.oAuthConsumerSecret; - p.oAuthSignatureMethod = fp.oAuthSignatureMethod; - p.authtype = fp.authtype; - return addAuthType(c, p); - } - - public Client addAuthType(Client client, Parameters p) throws SvcLogicException { - if (p.authtype == AuthType.Unspecified) { - if (p.restapiUser != null && p.restapiPassword != null) { - client.register(HttpAuthenticationFeature.basic(p.restapiUser, p.restapiPassword)); - } else if (p.oAuthConsumerKey != null && p.oAuthConsumerSecret != null && p.oAuthSignatureMethod != null) { - Feature oAuth1Feature = - OAuth1ClientSupport.builder(new ConsumerCredentials(p.oAuthConsumerKey, p.oAuthConsumerSecret)) - .version(p.oAuthVersion).signatureMethod(p.oAuthSignatureMethod).feature().build(); - client.register(oAuth1Feature); - - } - } else { - if (p.authtype == AuthType.DIGEST) { - if (p.restapiUser != null && p.restapiPassword != null) { - client.register(HttpAuthenticationFeature.digest(p.restapiUser, p.restapiPassword)); - } else { - throw new SvcLogicException( - "oAUTH authentication type selected but all restapiUser and restapiPassword " - + "parameters doesn't exist", - new Throwable()); - } - } else if (p.authtype == AuthType.BASIC) { - if (p.restapiUser != null && p.restapiPassword != null) { - client.register(HttpAuthenticationFeature.basic(p.restapiUser, p.restapiPassword)); - } else { - throw new SvcLogicException( - "oAUTH authentication type selected but all restapiUser and restapiPassword " - + "parameters doesn't exist", - new Throwable()); - } - } else if (p.authtype == AuthType.OAUTH) { - if (p.oAuthConsumerKey != null && p.oAuthConsumerSecret != null && p.oAuthSignatureMethod != null) { - Feature oAuth1Feature = OAuth1ClientSupport - .builder(new ConsumerCredentials(p.oAuthConsumerKey, p.oAuthConsumerSecret)) - .version(p.oAuthVersion).signatureMethod(p.oAuthSignatureMethod).feature().build(); - client.register(oAuth1Feature); - } else { - throw new SvcLogicException( - "oAUTH authentication type selected but all oAuthConsumerKey, oAuthConsumerSecret " - + "and oAuthSignatureMethod parameters doesn't exist", - new Throwable()); - } - } - } - return client; - } - - /** - * Receives the http response for the http request sent. - * - * @param request request msg - * @param p parameters - * @return HTTP response - * @throws SvcLogicException when sending http request fails - */ - public HttpResponse sendHttpRequest(String request, Parameters p) throws SvcLogicException { - - SSLContext ssl = null; - if (p.ssl && p.restapiUrl.startsWith("https")) { - ssl = createSSLContext(p); - } - Client client; - if (ssl != null) { - HttpsURLConnection.setDefaultSSLSocketFactory(ssl.getSocketFactory()); - client = ClientBuilder.newBuilder().sslContext(ssl).hostnameVerifier((s, sslSession) -> true).build(); - } else { - client = ClientBuilder.newBuilder().hostnameVerifier((s, sslSession) -> true).build(); - } - - setClientTimeouts(client); - // Needed to support additional HTTP methods such as PATCH - client.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true); - client.register(new MetricLogClientFilter()); - WebTarget webTarget = addAuthType(client, p).target(p.restapiUrl); - - long t1 = System.currentTimeMillis(); - - HttpResponse r = new HttpResponse(); - r.code = 200; - String accept = p.accept; - if (accept == null) { - accept = p.format == Format.XML ? "application/xml" : "application/json"; - } - - String contentType = p.contentType; - if (contentType == null) { - contentType = accept + ";charset=UTF-8"; - } - - if (!p.skipSending && !p.multipartFormData) { - - Invocation.Builder invocationBuilder = webTarget.request(contentType).accept(accept); - - if (p.format == Format.NONE) { - invocationBuilder.header("", ""); - } - - if (p.customHttpHeaders != null && p.customHttpHeaders.length() > 0) { - String[] keyValuePairs = p.customHttpHeaders.split(","); - for (String singlePair : keyValuePairs) { - int equalPosition = singlePair.indexOf('='); - invocationBuilder.header(singlePair.substring(0, equalPosition), - singlePair.substring(equalPosition + 1, singlePair.length())); - } - } - - invocationBuilder.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); - - Response response; - - try { - // When the HTTP operation has no body do not set the content-type - //setting content-type has caused errors with some servers when no body is present - if (request == null) { - response = invocationBuilder.method(p.httpMethod.toString()); - } else { - log.info("Sending request below to url " + p.restapiUrl); - log.info(request); - response = invocationBuilder.method(p.httpMethod.toString(), entity(request, contentType)); - } - } catch (ProcessingException | IllegalStateException e) { - throw new SvcLogicException(requestPostingException + e.getLocalizedMessage(), e); - } - - r.code = response.getStatus(); - r.headers = response.getStringHeaders(); - EntityTag etag = response.getEntityTag(); - if (etag != null) { - r.message = etag.getValue(); - } - if (response.hasEntity() && r.code != 204) { - r.body = response.readEntity(String.class); - } - } else if (!p.skipSending && p.multipartFormData) { - - WebTarget wt = client.register(MultiPartFeature.class).target(p.restapiUrl); - - MultiPart multiPart = new MultiPart(); - multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); - - FileDataBodyPart fileDataBodyPart = - new FileDataBodyPart("file", new File(p.multipartFile), MediaType.APPLICATION_OCTET_STREAM_TYPE); - multiPart.bodyPart(fileDataBodyPart); - - - Invocation.Builder invocationBuilder = wt.request(contentType).accept(accept); - - if (p.format == Format.NONE) { - invocationBuilder.header("", ""); - } - - if (p.customHttpHeaders != null && p.customHttpHeaders.length() > 0) { - String[] keyValuePairs = p.customHttpHeaders.split(","); - for (String singlePair : keyValuePairs) { - int equalPosition = singlePair.indexOf('='); - invocationBuilder.header(singlePair.substring(0, equalPosition), - singlePair.substring(equalPosition + 1, singlePair.length())); - } - } - - Response response; - - try { - response = - invocationBuilder.method(p.httpMethod.toString(), entity(multiPart, multiPart.getMediaType())); - } catch (ProcessingException | IllegalStateException e) { - throw new SvcLogicException(requestPostingException + e.getLocalizedMessage(), e); - } - - r.code = response.getStatus(); - r.headers = response.getStringHeaders(); - EntityTag etag = response.getEntityTag(); - if (etag != null) { - r.message = etag.getValue(); - } - if (response.hasEntity() && r.code != 204) { - r.body = response.readEntity(String.class); - } - - } - - long t2 = System.currentTimeMillis(); - log.info(responseReceivedMessage, t2 - t1); - log.info(responseHttpCodeMessage, r.code); - log.info("HTTP response message: {}", r.message); - logHeaders(r.headers); - log.info("HTTP response: {}", r.body); - - return r; - } - - protected SSLContext createSSLContext(Parameters p) { - try (FileInputStream in = new FileInputStream(p.keyStoreFileName)) { - HttpsURLConnection.setDefaultHostnameVerifier((string, ssls) -> true); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - KeyStore ks = KeyStore.getInstance("PKCS12"); - char[] pwd = p.keyStorePassword.toCharArray(); - ks.load(in, pwd); - kmf.init(ks, pwd); - SSLContext ctx = SSLContext.getInstance("TLS"); - ctx.init(kmf.getKeyManagers(), null, null); - return ctx; - } catch (Exception e) { - log.error("Error creating SSLContext: {}", e.getMessage(), e); - } - return null; - } - - protected void setFailureResponseStatus(SvcLogicContext ctx, String prefix, String errorMessage, - HttpResponse resp) { - resp.code = 500; - resp.message = errorMessage; - String pp = prefix != null ? prefix + '.' : ""; - ctx.setAttribute(pp + "response-code", String.valueOf(resp.code)); - ctx.setAttribute(pp + "response-message", resp.message); - } - - protected void setResponseStatus(SvcLogicContext ctx, String prefix, HttpResponse r) { - String pp = prefix != null ? prefix + '.' : ""; - ctx.setAttribute(pp + "response-code", String.valueOf(r.code)); - ctx.setAttribute(pp + "response-message", r.message); - } - - public void sendFile(Map paramMap, SvcLogicContext ctx) throws SvcLogicException { - HttpResponse r = null; - try { - FileParam p = getFileParameters(paramMap); - byte[] data = Files.readAllBytes(Paths.get(p.fileName)); - - r = sendHttpData(data, p); - - for (int i = 0; i < 10 && r.code == 301; i++) { - String newUrl = r.headers2.get("Location").get(0); - - log.info("Got response code 301. Sending same request to URL: " + newUrl); - - p.url = newUrl; - r = sendHttpData(data, p); - } - - setResponseStatus(ctx, p.responsePrefix, r); - - } catch (SvcLogicException | IOException e) { - log.error("Error sending the request: {}", e.getMessage(), e); - - r = new HttpResponse(); - r.code = 500; - r.message = e.getMessage(); - String prefix = parseParam(paramMap, responsePrefix, false, null); - setResponseStatus(ctx, prefix, r); - } - - if (r != null && r.code >= 300) { - throw new SvcLogicException(String.valueOf(r.code) + ": " + r.message); - } - } - - private FileParam getFileParameters(Map paramMap) throws SvcLogicException { - FileParam p = new FileParam(); - p.fileName = parseParam(paramMap, "fileName", true, null); - p.url = parseParam(paramMap, "url", true, null); - p.user = parseParam(paramMap, "user", false, null); - p.password = parseParam(paramMap, "password", false, null); - p.httpMethod = HttpMethod.fromString(parseParam(paramMap, "httpMethod", false, "post")); - p.responsePrefix = parseParam(paramMap, responsePrefix, false, null); - String skipSendingStr = paramMap.get(skipSendingMessage); - p.skipSending = "true".equalsIgnoreCase(skipSendingStr); - p.oAuthConsumerKey = parseParam(paramMap, "oAuthConsumerKey", false, null); - p.oAuthVersion = parseParam(paramMap, "oAuthVersion", false, null); - p.oAuthConsumerSecret = parseParam(paramMap, "oAuthConsumerSecret", false, null); - p.oAuthSignatureMethod = parseParam(paramMap, "oAuthSignatureMethod", false, null); - p.authtype = fromString(parseParam(paramMap, "authType", false, "unspecified")); - return p; - } - - public void postMessageOnUeb(Map paramMap, SvcLogicContext ctx) throws SvcLogicException { - HttpResponse r; - try { - UebParam p = getUebParameters(paramMap); - - String pp = p.responsePrefix != null ? p.responsePrefix + '.' : ""; - - String req; - - if (p.templateFileName == null) { - log.info("No template file name specified. Using default UEB template: {}", defaultUebTemplateFileName); - p.templateFileName = defaultUebTemplateFileName; - } - - String reqTemplate = readFile(p.templateFileName); - reqTemplate = reqTemplate.replaceAll("rootVarName", p.rootVarName); - req = buildXmlJsonRequest(ctx, reqTemplate, Format.JSON); - - r = postOnUeb(req, p); - setResponseStatus(ctx, p.responsePrefix, r); - if (r.body != null) { - ctx.setAttribute(pp + "httpResponse", r.body); - } - - } catch (SvcLogicException e) { - log.error("Error sending the request: {}", e.getMessage(), e); - - r = new HttpResponse(); - r.code = 500; - r.message = e.getMessage(); - String prefix = parseParam(paramMap, responsePrefix, false, null); - setResponseStatus(ctx, prefix, r); - } - - if (r.code >= 300) { - throw new SvcLogicException(String.valueOf(r.code) + ": " + r.message); - } - } - - protected HttpResponse sendHttpData(byte[] data, FileParam p) throws IOException { - URL url = new URL(p.url); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - - log.info("Connection: " + con.getClass().getName()); - - con.setRequestMethod(p.httpMethod.toString()); - con.setRequestProperty("Content-Type", "application/octet-stream"); - con.setRequestProperty("Accept", "*/*"); - con.setRequestProperty("Expect", "100-continue"); - con.setFixedLengthStreamingMode(data.length); - con.setInstanceFollowRedirects(false); - - if (p.user != null && p.password != null) { - String authString = p.user + ":" + p.password; - String authStringEnc = Base64.getEncoder().encodeToString(authString.getBytes()); - con.setRequestProperty("Authorization", "Basic " + authStringEnc); - } - - con.setDoInput(true); - con.setDoOutput(true); - - log.info("Sending file"); - long t1 = System.currentTimeMillis(); - - HttpResponse r = new HttpResponse(); - r.code = 200; - - if (!p.skipSending) { - HttpURLConnectionMetricUtil util = new HttpURLConnectionMetricUtil(); - util.logBefore(con, ONAPComponents.DMAAP); - - con.connect(); - - boolean continue100failed = false; - try { - OutputStream os = con.getOutputStream(); - os.write(data); - os.flush(); - os.close(); - } catch (ProtocolException e) { - continue100failed = true; - } - - r.code = con.getResponseCode(); - r.headers2 = con.getHeaderFields(); - - if (r.code != 204 && !continue100failed) { - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - in.close(); - - r.body = response.toString(); - } - - util.logAfter(con); - - con.disconnect(); - } - - long t2 = System.currentTimeMillis(); - log.info("Response received. Time: {}", t2 - t1); - log.info("HTTP response code: {}", r.code); - log.info("HTTP response message: {}", r.message); - logHeaders(r.headers2); - log.info("HTTP response: {}", r.body); - - return r; - } - - private UebParam getUebParameters(Map paramMap) throws SvcLogicException { - UebParam p = new UebParam(); - p.topic = parseParam(paramMap, "topic", true, null); - p.templateFileName = parseParam(paramMap, "templateFileName", false, null); - p.rootVarName = parseParam(paramMap, "rootVarName", false, null); - p.responsePrefix = parseParam(paramMap, responsePrefix, false, null); - String skipSendingStr = paramMap.get(skipSendingMessage); - p.skipSending = "true".equalsIgnoreCase(skipSendingStr); - return p; - } - - protected void logProperties(Map mm) { - List ll = new ArrayList<>(); - for (Object o : mm.keySet()) { - ll.add((String) o); - } - Collections.sort(ll); - - log.info("Properties:"); - for (String name : ll) { - log.info("--- {}:{}", name, String.valueOf(mm.get(name))); - } - } - - protected void logHeaders(MultivaluedMap mm) { - log.info("HTTP response headers:"); - - if (mm == null) { - return; - } - - List ll = new ArrayList<>(); - for (Object o : mm.keySet()) { - ll.add((String) o); - } - Collections.sort(ll); - - for (String name : ll) { - log.info("--- {}:{}", name, String.valueOf(mm.get(name))); - } - } - - private void logHeaders(Map> mm) { - if (mm == null || mm.isEmpty()) { - return; - } - - List ll = new ArrayList<>(); - for (String s : mm.keySet()) { - if (s != null) { - ll.add(s); - } - } - Collections.sort(ll); - - for (String name : ll) { - List v = mm.get(name); - log.info("--- {}:{}", name, String.valueOf(mm.get(name))); - log.info("--- " + name + ": " + (v.size() == 1 ? v.get(0) : v)); - } - } - - protected HttpResponse postOnUeb(String request, UebParam p) throws SvcLogicException { - String[] urls = uebServers.split(" "); - for (int i = 0; i < urls.length; i++) { - if (!urls[i].endsWith("/")) { - urls[i] += "/"; - } - urls[i] += "events/" + p.topic; - } - - Client client = ClientBuilder.newBuilder().build(); - setClientTimeouts(client); - WebTarget webTarget = client.target(urls[0]); - - log.info("UEB URL: {}", urls[0]); - log.info("Sending request:"); - log.info(request); - long t1 = System.currentTimeMillis(); - - HttpResponse r = new HttpResponse(); - r.code = 200; - - if (!p.skipSending) { - String tt = "application/json"; - String tt1 = tt + ";charset=UTF-8"; - - Response response; - Invocation.Builder invocationBuilder = webTarget.request(tt1).accept(tt); - - try { - response = invocationBuilder.post(Entity.entity(request, tt1)); - } catch (ProcessingException e) { - throw new SvcLogicException(requestPostingException + e.getLocalizedMessage(), e); - } - r.code = response.getStatus(); - r.headers = response.getStringHeaders(); - if (response.hasEntity()) { - r.body = response.readEntity(String.class); - } - } - - long t2 = System.currentTimeMillis(); - log.info(responseReceivedMessage, t2 - t1); - log.info(responseHttpCodeMessage, r.code); - logHeaders(r.headers); - log.info("HTTP response:\n {}", r.body); - - return r; - } - - public void setUebServers(String uebServers) { - this.uebServers = uebServers; - } - - public void setDefaultUebTemplateFileName(String defaultUebTemplateFileName) { - this.defaultUebTemplateFileName = defaultUebTemplateFileName; - } - - protected void setClientTimeouts(Client client) { - client.property(ClientProperties.CONNECT_TIMEOUT, httpConnectTimeout); - client.property(ClientProperties.READ_TIMEOUT, httpReadTimeout); - } - - protected Integer readOptionalInteger(String propertyName, Integer defaultValue) { - String stringValue = System.getProperty(propertyName); - if (stringValue != null && stringValue.length() > 0) { - try { - return Integer.valueOf(stringValue); - } catch (NumberFormatException e) { - log.warn("property " + propertyName + " had the value " + stringValue + " that could not be converted to an Integer, default " + defaultValue + " will be used instead", e); - } - } - return defaultValue; - } - - protected static String[] getMultipleUrls(String restapiUrl) { - List urls = new ArrayList<>(); - int start = 0; - for (int i = 0; i < restapiUrl.length(); i++) { - if (restapiUrl.charAt(i) == ',') { - if (i + 9 < restapiUrl.length()) { - String part = restapiUrl.substring(i + 1, i + 9); - if (part.equals("https://") || part.startsWith("http://")) { - urls.add(restapiUrl.substring(start, i)); - start = i + 1; - } - } - } else if (i == restapiUrl.length() - 1) { - urls.add(restapiUrl.substring(start, i + 1)); - } - } - String[] arr = new String[urls.size()]; - return urls.toArray(arr); - } - - protected static boolean containsMultipleUrls(String restapiUrl) { - Matcher m = retryPattern.matcher(restapiUrl); - return m.matches(); - } - - private static class FileParam { - - public String fileName; - public String url; - public String user; - public String password; - public HttpMethod httpMethod; - public String responsePrefix; - public boolean skipSending; - public String oAuthConsumerKey; - public String oAuthConsumerSecret; - public String oAuthSignatureMethod; - public String oAuthVersion; - public AuthType authtype; - } - - private static class UebParam { - - public String topic; - public String templateFileName; - public String rootVarName; - public String responsePrefix; - public boolean skipSending; - } -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryException.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryException.java deleted file mode 100644 index 03078c652..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryException.java +++ /dev/null @@ -1,30 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -public class RetryException extends Exception { - - public RetryException(String message) { - super(message); - } - -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryPolicy.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryPolicy.java deleted file mode 100644 index 8d5143be3..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/RetryPolicy.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright © 2018 IBM - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -public class RetryPolicy { - private String[] hostnames; - private Integer maximumRetries; - private int position; - private int retryCount; - - public RetryPolicy(String[] hostnames, Integer maximumRetries) { - this.hostnames = hostnames; - this.maximumRetries = maximumRetries; - this.position = 0; - this.retryCount = 0; - - } - - public Integer getMaximumRetries() { - return maximumRetries; - } - - public int getRetryCount() { - return retryCount; - } - - public Boolean shouldRetry() { - return retryCount < maximumRetries + 1; - } - - public String getRetryMessage() { - return retryCount + " retry attempts were made out of " + maximumRetries + " maximum retry attempts."; - } - - public String getNextHostName() throws RetryException { - retryCount++; - position++; - if (position > hostnames.length - 1) { - position = 0; - } - return hostnames[position]; - } - -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java deleted file mode 100644 index 9870221d7..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlJsonUtil.java +++ /dev/null @@ -1,518 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.commons.text.StringEscapeUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class XmlJsonUtil { - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(XmlJsonUtil.class); - - private XmlJsonUtil() { - // Preventing instantiation of the same. - } - - public static String getXml(Map varmap, String var) { - boolean escape = true; - if (var.startsWith("'")) { - var = var.substring(1); - escape = false; - } - - Object o = createStructure(varmap, var); - return generateXml(o, 0, escape); - } - - public static String getJson(Map varmap, String var) { - boolean escape = true; - if (var.startsWith("'")) { - var = var.substring(1); - escape = false; - } - - boolean quotes = true; - if (var.startsWith("\"")) { - var = var.substring(1); - quotes = false; - } - - Object o = createStructure(varmap, var); - return generateJson(o, escape, quotes); - } - - private static Object createStructure(Map flatmap, String var) { - if (flatmap.containsKey(var)) { - return flatmap.get(var); - } - - Map mm = new HashMap<>(); - List ll = new ArrayList<>(); - - for (Map.Entry e : flatmap.entrySet()) { - String key = e.getKey(); - String value = e.getValue(); - - if (key.endsWith("_length") || key.endsWith("].key")) { - continue; - } - - if (value == null || value.trim().isEmpty()) { - continue; - } - - if (key.startsWith(var + "[")) { - String newKey = key.substring(var.length()); - set(ll, newKey, value); - } else if (var == null || var.isEmpty()) { - set(mm, key, value); - } else if (key.startsWith(var + ".")) { - String newKey = key.substring(var.length() + 1); - set(mm, newKey, value); - } - } - - if (!mm.isEmpty()) { - return mm; - } - if (!ll.isEmpty()) { - return ll; - } - return null; - } - - @SuppressWarnings("unchecked") - public static void set(Object struct, String compositeKey, Object value) { - if (struct == null) { - throw new IllegalArgumentException("Null argument: struct"); - } - - if (compositeKey == null || compositeKey.length() == 0) { - throw new IllegalArgumentException("Null or empty argument: compositeKey"); - } - - if (value == null) { - return; - } - - List keys = splitCompositeKey(compositeKey); - Object currentValue = struct; - String currentKey = ""; - - for (int i = 0; i < keys.size() - 1; i++) { - Object key = keys.get(i); - - if (key instanceof Integer) { - if (!(currentValue instanceof List)) { - throw new IllegalArgumentException("Cannot resolve: " + compositeKey + ": References list '" + currentKey + "', but '" + currentKey + "' is not a list"); - } - - Integer keyi = (Integer) key; - List currentValueL = (List) currentValue; - int size = currentValueL.size(); - - if (keyi >= size) { - for (int k = 0; k < keyi - size + 1; k++) { - currentValueL.add(null); - } - } - - Object newValue = currentValueL.get(keyi); - if (newValue == null) { - Object nextKey = keys.get(i + 1); - if (nextKey instanceof Integer) { - newValue = new ArrayList<>(); - } else { - newValue = new HashMap<>(); - } - currentValueL.set(keyi, newValue); - } - - currentValue = newValue; - currentKey += "[" + key + "]"; - - } else { - if (!(currentValue instanceof Map)) { - throw new IllegalArgumentException("Cannot resolve: " + compositeKey + ": References map '" + currentKey + "', but '" + currentKey + "' is not a map"); - } - - Object newValue = ((Map) currentValue).get(key); - if (newValue == null) { - Object nextKey = keys.get(i + 1); - if (nextKey instanceof Integer) { - newValue = new ArrayList<>(); - } else { - newValue = new HashMap<>(); - } - ((Map) currentValue).put((String) key, newValue); - } - - currentValue = newValue; - currentKey += "." + key; - } - } - - Object key = keys.get(keys.size() - 1); - if (key instanceof Integer) { - if (!(currentValue instanceof List)) { - throw new IllegalArgumentException("Cannot resolve: " + compositeKey + ": References list '" + currentKey + "', but '" + currentKey + "' is not a list"); - } - - Integer keyi = (Integer) key; - List currentValueL = (List) currentValue; - int size = currentValueL.size(); - - if (keyi >= size) { - for (int k = 0; k < keyi - size + 1; k++) { - currentValueL.add(null); - } - } - - currentValueL.set(keyi, value); - - } else { - if (!(currentValue instanceof Map)) { - throw new IllegalArgumentException("Cannot resolve: " + compositeKey + ": References map '" + currentKey + "', but '" + currentKey + "' is not a map"); - } - - ((Map) currentValue).put((String) key, value); - } - } - - private static List splitCompositeKey(String compositeKey) { - if (compositeKey == null) { - return Collections.emptyList(); - } - - String[] ss = compositeKey.split("\\."); - List ll = new ArrayList<>(); - for (String s : ss) { - if (s.length() == 0) { - continue; - } - - int i1 = s.indexOf('['); - if (i1 < 0) { - ll.add(s); - } else { - if (!s.endsWith("]")) { - throw new IllegalArgumentException("Invalid composite key: " + compositeKey + ": No matching ] found"); - } - - String s1 = s.substring(0, i1); - if (s1.length() > 0) { - ll.add(s1); - } - - String s2 = s.substring(i1 + 1, s.length() - 1); - try { - int n = Integer.parseInt(s2); - if (n < 0) { - throw new IllegalArgumentException("Invalid composite key: " + compositeKey + ": Index must be >= 0: " + n); - } - - ll.add(n); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("Invalid composite key: " + compositeKey + ": Index not a number: " + s2); - } - } - } - - return ll; - } - - @SuppressWarnings("unchecked") - private static String generateXml(Object o, int indent, boolean escape) { - if (o == null) { - return null; - } - - if (o instanceof String) { - return escape ? StringEscapeUtils.escapeXml10((String) o) : (String) o; - }; - - if (o instanceof Map) { - StringBuilder ss = new StringBuilder(); - Map mm = (Map) o; - for (Map.Entry entry : mm.entrySet()) { - Object v = entry.getValue(); - String key = entry.getKey(); - if (v instanceof String) { - String s = escape ? StringEscapeUtils.escapeXml10((String) v) : (String) v; - ss.append(pad(indent)).append('<').append(key).append('>'); - ss.append(s); - ss.append("').append('\n'); - } else if (v instanceof Map) { - ss.append(pad(indent)).append('<').append(key).append('>').append('\n'); - ss.append(generateXml(v, indent + 1, escape)); - ss.append(pad(indent)).append("').append('\n'); - } else if (v instanceof List) { - List ll = (List) v; - for (Object o1 : ll) { - ss.append(pad(indent)).append('<').append(key).append('>').append('\n'); - ss.append(generateXml(o1, indent + 1, escape)); - ss.append(pad(indent)).append("').append('\n'); - } - } - } - return ss.toString(); - } - - return null; - } - private static String generateJson(Object o, boolean escape, boolean quotes) { - if (o == null) { - return null; - } - if (o instanceof String && ((String) o).length() == 0) { - return null; - } - - StringBuilder ss = new StringBuilder(); - generateJson(ss, o, 0, false, escape, quotes); - return ss.toString(); - } - - @SuppressWarnings("unchecked") - private static void generateJson(StringBuilder ss, Object o, int indent, boolean padFirst, boolean escape, boolean quotes) { - if (o instanceof String) { - String s = escape ? StringEscapeUtils.escapeJson((String) o) : (String) o; - if (padFirst) { - ss.append(pad(indent)); - } - if (quotes) { - ss.append('"').append(s).append('"'); - } else { - ss.append(s); - } - return; - } - - if (o instanceof Map) { - Map mm = (Map) o; - - if (padFirst) { - ss.append(pad(indent)); - } - ss.append("{\n"); - - boolean first = true; - for (Map.Entry entry : mm.entrySet()) { - if (!first) { - ss.append(",\n"); - } - first = false; - Object v = entry.getValue(); - String key = entry.getKey(); - ss.append(pad(indent + 1)).append('"').append(key).append("\": "); - generateJson(ss, v, indent + 1, false, escape, true); - } - - ss.append("\n"); - ss.append(pad(indent)).append('}'); - - return; - } - - if (o instanceof List) { - List ll = (List) o; - - if (padFirst) { - ss.append(pad(indent)); - } - ss.append("[\n"); - - boolean first = true; - for (Object o1 : ll) { - if (!first) { - ss.append(",\n"); - } - first = false; - - generateJson(ss, o1, indent + 1, true, escape, quotes); - } - - ss.append("\n"); - ss.append(pad(indent)).append(']'); - } - } - - public static String removeLastCommaJson(String s) { - StringBuilder sb = new StringBuilder(); - int k = 0; - int start = 0; - while (k < s.length()) { - int i11 = s.indexOf('}', k); - int i12 = s.indexOf(']', k); - int i1 = -1; - if (i11 < 0) { - i1 = i12; - } else if (i12 < 0) { - i1 = i11; - } else { - i1 = i11 < i12 ? i11 : i12; - } - if (i1 < 0) { - break; - } - - int i2 = s.lastIndexOf(',', i1); - if (i2 < 0) { - k = i1 + 1; - continue; - } - - String between = s.substring(i2 + 1, i1); - if (between.trim().length() > 0) { - k = i1 + 1; - continue; - } - - sb.append(s.substring(start, i2)); - start = i2 + 1; - k = i1 + 1; - } - - sb.append(s.substring(start, s.length())); - - return sb.toString(); - } - - public static String removeEmptyStructJson(String template, String s) { - int k = 0; - while (k < s.length()) { - boolean curly = true; - int i11 = s.indexOf('{', k); - int i12 = s.indexOf('[', k); - int i1 = -1; - if (i11 < 0) { - i1 = i12; - curly = false; - } else if (i12 < 0) { - i1 = i11; - } else if (i11 < i12) { - i1 = i11; - } else { - i1 = i12; - curly = false; - } - - if (i1 >= 0) { - int i2 = curly ? s.indexOf('}', i1) : s.indexOf(']', i1); - if (i2 > 0) { - String value = s.substring(i1 + 1, i2); - if (value.trim().length() == 0) { - int i4 = s.lastIndexOf('\n', i1); - if (i4 < 0) { - i4 = 0; - } - int i5 = s.indexOf('\n', i2); - if (i5 < 0) { - i5 = s.length(); - } - - - /*If template mandates empty construct to be present, those should not be removed.*/ - if (template != null && template.contains(s.substring(i4))) { - k = i1 + 1; - } else { - s = s.substring(0, i4) + s.substring(i5); - k = 0; - } - } else { - k = i1 + 1; - } - } else { - break; - } - } else { - break; - } - } - - return s; - } - - public static String removeEmptyStructXml(String s) { - int k = 0; - while (k < s.length()) { - int i1 = s.indexOf('<', k); - if (i1 < 0 || i1 == s.length() - 1) { - break; - } - - char c1 = s.charAt(i1 + 1); - if (c1 == '?' || c1 == '!') { - k = i1 + 2; - continue; - } - - int i2 = s.indexOf('>', i1); - if (i2 < 0) { - k = i1 + 1; - continue; - } - - String closingTag = " 0) { - k = i2 + 1; - continue; - } - - int i4 = s.lastIndexOf('\n', i1); - if (i4 < 0) { - i4 = 0; - } - int i5 = s.indexOf('\n', i3); - if (i5 < 0) { - i5 = s.length(); - } - - s = s.substring(0, i4) + s.substring(i5); - k = 0; - } - - return s; - } - - private static String pad(int n) { - StringBuilder s = new StringBuilder(); - for (int i = 0; i < n; i++) { - s.append(Character.toString('\t')); - } - return s.toString(); - } -} diff --git a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java b/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java deleted file mode 100644 index 42e9e57ad..000000000 --- a/restapi-call-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/restapicall/XmlParser.java +++ /dev/null @@ -1,180 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright © 2018 IBM - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.restapicall; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.XMLConstants; - -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.XMLReader; - -public final class XmlParser { - - private static final Logger log = LoggerFactory.getLogger(XmlParser.class); - - private XmlParser() { - // Preventing instantiation of the same. - } - - public static Map convertToProperties(String s, Set listNameList) - throws SvcLogicException { - - checkNotNull(s, "Input should not be null."); - - Handler handler = new Handler(listNameList); - try { - SAXParserFactory spf = SAXParserFactory.newInstance(); - spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - spf.setFeature("http://xml.org/sax/features/external-general-entities", false); - spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - InputStream in = new ByteArrayInputStream(s.getBytes()); - SAXParser saxParser = spf.newSAXParser(); - saxParser.parse(in, handler); - - } catch (ParserConfigurationException | IOException | SAXException | NumberFormatException e) { - throw new SvcLogicException("Unable to convert XML to properties" + e.getLocalizedMessage(), e); - } - return handler.getProperties(); - } - - private static class Handler extends DefaultHandler { - - private Set listNameList; - - private Map properties = new HashMap<>(); - - StringBuilder currentName = new StringBuilder(); - StringBuilder currentValue = new StringBuilder(); - - public Handler(Set listNameList) { - super(); - this.listNameList = listNameList; - if (this.listNameList == null) - this.listNameList = new HashSet<>(); - } - - public Map getProperties() { - return properties; - } - - @Override - public void startElement(String uri, String localName, String qName, Attributes attributes) - throws SAXException { - super.startElement(uri, localName, qName, attributes); - - String name = localName; - if (name == null || name.trim().length() == 0) - name = qName; - int i2 = name.indexOf(':'); - if (i2 >= 0) - name = name.substring(i2 + 1); - - if (currentName.length() > 0) - currentName.append(Character.toString('.')); - currentName.append(name); - - String listName = removeIndexes(currentName.toString()); - - if (listNameList.contains(listName)) { - String n = currentName.toString() + "_length"; - int len = getInt(properties, n); - properties.put(n, String.valueOf(len + 1)); - currentName.append("[").append(len).append("]"); - } - } - - @Override - public void endElement(String uri, String localName, String qName) throws SAXException { - super.endElement(uri, localName, qName); - - String name = localName; - if (name == null || name.trim().length() == 0) - name = qName; - int i2 = name.indexOf(':'); - if (i2 >= 0) - name = name.substring(i2 + 1); - - String s = currentValue.toString().trim(); - if (s.length() > 0) { - properties.put(currentName.toString(), s); - - log.info("Added property: {} : {}", currentName, s); - currentValue = new StringBuilder(); - } - - int i1 = currentName.lastIndexOf("." + name); - if (i1 <= 0) - currentName = new StringBuilder(); - else - currentName = new StringBuilder(currentName.substring(0, i1)); - } - - @Override - public void characters(char[] ch, int start, int length) throws SAXException { - super.characters(ch, start, length); - - String value = new String(ch, start, length); - currentValue.append(value); - } - - private static int getInt(Map mm, String name) { - String s = mm.get(name); - if (s == null) - return 0; - return Integer.parseInt(s); - } - - private String removeIndexes(String currentName) { - StringBuilder b = new StringBuilder(); - boolean add = true; - for (int i = 0; i < currentName.length(); i++) { - char c = currentName.charAt(i); - if (c == '[') - add = false; - else if (c == ']') - add = true; - else if (add) - b.append(Character.toString(c)); - } - return b.toString(); - } - } -} diff --git a/restapi-call-node/provider/src/main/resources/OSGI-INF/blueprint/restapi-call-node-blueprint.xml b/restapi-call-node/provider/src/main/resources/OSGI-INF/blueprint/restapi-call-node-blueprint.xml deleted file mode 100755 index 390bb0a35..000000000 --- a/restapi-call-node/provider/src/main/resources/OSGI-INF/blueprint/restapi-call-node-blueprint.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode - - - - \ No newline at end of file diff --git a/restapi-call-node/provider/src/main/resources/actokentemplate.json b/restapi-call-node/provider/src/main/resources/actokentemplate.json deleted file mode 100644 index 02e62400f..000000000 --- a/restapi-call-node/provider/src/main/resources/actokentemplate.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "userName": ${prop.sdncRestApi.thirdpartySdnc.user}, - "password": ${prop.sdncRestApi.thirdpartySdnc.password} -} diff --git a/restapi-call-node/provider/src/main/resources/default-ueb-message.json b/restapi-call-node/provider/src/main/resources/default-ueb-message.json deleted file mode 100644 index 484d872f5..000000000 --- a/restapi-call-node/provider/src/main/resources/default-ueb-message.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "event":{ - "header":{ - "eventSource":"sdn-c" - }, - "body": - -${rootVarName} - - } -} diff --git a/restapi-call-node/provider/src/main/resources/get-multicast-data.json b/restapi-call-node/provider/src/main/resources/get-multicast-data.json deleted file mode 100644 index 3b9997f64..000000000 --- a/restapi-call-node/provider/src/main/resources/get-multicast-data.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "input": { - "sdnc-request-header": { - "svc-request-id": ${connection-details-notification-input.configuration-response-common.svc-request-id}, - "svc-action": "updatemulticastvpn" - }, - "service-information": { - "service-type": "AVPN", - "service-instance-id": ${tmp.ete-vpn-key} - } - } -} - diff --git a/restapi-call-node/provider/src/main/resources/l2-dci-connects-template.json b/restapi-call-node/provider/src/main/resources/l2-dci-connects-template.json deleted file mode 100644 index e0896bbaa..000000000 --- a/restapi-call-node/provider/src/main/resources/l2-dci-connects-template.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "l2-dci-connect": { - "id": ${prop.dci-connects.id}, - "name": ${prop.dci-connects.name}, - "description": ${prop.dci-connects.description}, - "network_id": ${prop.dci-connects.local_networks[0]}, - "evpn_irts": ${prop.dci-connects.evpn_irts}, - "evpn_erts": ${prop.dci-connects.evpn_erts}, - "vni": ${prop.dci-connects.vni} - } -} diff --git a/restapi-call-node/provider/src/main/resources/l3-dci-connects-template.json b/restapi-call-node/provider/src/main/resources/l3-dci-connects-template.json deleted file mode 100644 index 41df794fd..000000000 --- a/restapi-call-node/provider/src/main/resources/l3-dci-connects-template.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "l3-dci-connect": { - "id": ${prop.dci-connects.id}, - "name": ${prop.dci-connects.name}, - "description": ${prop.dci-connects.description}, - "router_id": ${prop.dci-connects.router_id}, - "firewall_enable": false, - "local_networks": ${prop.dci-connects.local_networks}, - "local_network_all": false, - "evpn_irts": ${prop.dci-connects.evpn_irts}, - "evpn_erts": ${prop.dci-connects.evpn_erts}, - "l3_vni": ${prop.dci-connects.vni} - } -} diff --git a/restapi-call-node/provider/src/main/resources/l3smsitetemplate.json b/restapi-call-node/provider/src/main/resources/l3smsitetemplate.json deleted file mode 100644 index 8f8156698..000000000 --- a/restapi-call-node/provider/src/main/resources/l3smsitetemplate.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "site":[ - { - "site-id": ${prop.l3vpn.site1_name}, - "vpn-policies": { - "vpn-policy": [ - { - "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id}, - "entries": [ - { - "id": ${prop.l3vpn.entry1-id}, - "vpn": { - "vpn-id": ${prop.l3vpn.name}, - "site-role": "huawei-ac-net-l3vpn-svc:any-to-any-role" - } - } - ] - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": ${prop.l3vpn.sna1_name}, - "bearer": { - "appointed-access": { - "ne-id": ${prop.l3vpn.pe1_id}, - "ltp-id": ${prop.l3vpn.ac1_id}, - "vlan": { - "type": "huawei-ac-net-l3vpn-svc:vlan-dot1q", - "vlan-id": ${prop.l3vpn.sna1_svlan} - } - } - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "huawei-ac-net-l3vpn-svc:static-address", - "addresses": { - "provider-address": ${prop.l3vpn.ac1-peer-ip}, - "customer-address": ${prop.l3vpn.ac1-ip}, - "mask": "24" - } - } - }, - "service": { - "mtu": "1500" - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": ${prop.l3vpn.ac1_protocol}, - "static": { - "cascaded-lan-prefixes": [ - { - "ipv4-lan-prefixes": [ - { - "ip-prefix": ${prop.l3vpn.sna1-route.ip-prefix}, - "next-hop": ${prop.l3vpn.sna1-route.next-hop} - } - ] - } - ] - } - "bgp": { - "peers": [ - { - "peer-ip": ${prop.l3vpn.peer1-ip}, - "remote-as": ${prop.l3vpn.ac1_protocol_bgp_as} - } - ] - } - } - } - ] - }, - "vpn-attachment": { - "vpn-policy-id": ${prop.l3vpn.name} - } - } - ] - }, - { - "site-id": ${prop.l3vpn.site2_name}, - "vpn-policies": { - "vpn-policy": [ - { - "vpn-policy-id": ${prop.l3vpn.vpn-policy2-id}, - "entries": [ - { - "id": ${prop.l3vpn.entry2-id}, - "vpn": { - "vpn-id": ${prop.l3vpn.name}, - "site-role": "huawei-ac-net-l3vpn-svc:any-to-any-role" - } - } - ] - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": ${prop.l3vpn.sna2_name}, - "bearer": { - "appointed-access": { - "ne-id": ${prop.l3vpn.pe2_id}, - "ltp-id": ${prop.l3vpn.ac2_id}, - "vlan": { - "type": "huawei-ac-net-l3vpn-svc:vlan-dot1q", - "vlan-id": ${prop.l3vpn.sna2_svlan} - } - } - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "huawei-ac-net-l3vpn-svc:static-address", - "addresses": { - "provider-address": ${prop.l3vpn.ac2-peer-ip}, - "customer-address": ${prop.l3vpn.ac2-ip}, - "mask": "24" - } - } - }, - "service": { - "mtu": "1500" - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": ${prop.l3vpn.ac2_protocol}, - "static": { - "cascaded-lan-prefixes": [ - { - "ipv4-lan-prefixes": [ - { - "ip-prefix": ${prop.l3vpn.sna2-route.ip-prefix}, - "next-hop": ${prop.l3vpn.sna2-route.next-hop} - } - ] - } - ] - } - "bgp": { - "peers": [ - { - "peer-ip": ${prop.l3vpn.peer2-ip}, - "remote-as": ${prop.l3vpn.ac2_protocol_bgp_as} - } - ] - } - } - ] - }, - "vpn-attachment": { - "vpn-policy-id": ${prop.l3vpn.name} - } - } - ] - } - ] -} - diff --git a/restapi-call-node/provider/src/main/resources/l3smvpntemplate.json b/restapi-call-node/provider/src/main/resources/l3smvpntemplate.json deleted file mode 100644 index 30f30a24f..000000000 --- a/restapi-call-node/provider/src/main/resources/l3smvpntemplate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "vpn-service": [ - { - "vpn-id": ${prop.l3vpn.name}, - "customer-name": "huawei", - "vpn-service-topology": ${prop.l3vpn.topology}, - "route-exchange-policy": "huawei-ac-net-l3vpn-svc:vpnv4-way" - } - ] -} diff --git a/restapi-call-node/provider/src/main/resources/l3smvrftemplate.json b/restapi-call-node/provider/src/main/resources/l3smvrftemplate.json deleted file mode 100644 index 52359a7fd..000000000 --- a/restapi-call-node/provider/src/main/resources/l3smvrftemplate.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "vrf-attribute": [ - { - "vrf-attribute-id": ${prop.l3vpn.vrf1-id}, - "ne-id": ${prop.l3vpn.pe1_id}, - "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id} - }, - { - "vrf-attribute-id": ${prop.l3vpn.vrf2-id}, - "ne-id": ${prop.l3vpn.pe2_id}, - "vpn-policy-id": ${prop.l3vpn.vpn-policy2-id} - } - ] -} diff --git a/restapi-call-node/provider/src/main/resources/northbound-api-template.json b/restapi-call-node/provider/src/main/resources/northbound-api-template.json deleted file mode 100644 index f185c8f5d..000000000 --- a/restapi-call-node/provider/src/main/resources/northbound-api-template.json +++ /dev/null @@ -1,22 +0,0 @@ -{ -"input": - { - "sdnc-request-header":{ - "svc-request-id": ${service-topology-operation-input.sdnc-request-header.svc-request-id}, - "svc-notification-url": ${service-topology-operation-input.sdnc-request-header.svc-notification-url} - }, - "request-information":{ - "request-id": ${service-topology-operation-input.request-information.request-id}, - "request-action": ${service-topology-operation-input.request-information.request-action}, - "request-sub-action": ${service-topology-operation-input.request-information.request-sub-action}, - "source": ${service-topology-operation-input.request-information.source}, - "notification-url": ${service-topology-operation-input.request-information.notification-url} - }, - "service-information":{ - "service-type": ${service-topology-operation-input.service-information.service-type}, - "service-instance-id": ${service-topology-operation-input.service-information.service-instance-id}, - "subscriber-name": ${service-topology-operation-input.service-information.subscriber-name}, - "subscriber-global-id": ${service-topology-operation-input.service-information.subscriber-global-id} - } -} - diff --git a/restapi-call-node/provider/src/main/resources/northbound-api-template.xml b/restapi-call-node/provider/src/main/resources/northbound-api-template.xml deleted file mode 100644 index aea0625c1..000000000 --- a/restapi-call-node/provider/src/main/resources/northbound-api-template.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - <${northbound-Container}> - - ${service-topology-operation-input.request-information.notification-url} - ${service-topology-operation-input.request-information.request-action} - ${service-topology-operation-input.request-information.request-id} - ${service-topology-operation-input.request-information.request-sub-action} - ${service-topology-operation-input.request-information.source} - - - ${service-topology-operation-input.sdnc-request-header.svc-notification-url} - ${service-topology-operation-input.sdnc-request-header.svc-request-id} - - - ${service-topology-operation-input.service-information.service-instance-id} - ${service-topology-operation-input.service-information.service-type} - ${service-topology-operation-input.service-information.subscriber-global-id} - ${service-topology-operation-input.service-information.subscriber-name} - - ${'northbound-anyData} - - diff --git a/restapi-call-node/provider/src/main/resources/org/opendaylight/blueprint/restapi-call-node-blueprint.xml b/restapi-call-node/provider/src/main/resources/org/opendaylight/blueprint/restapi-call-node-blueprint.xml deleted file mode 100755 index 390bb0a35..000000000 --- a/restapi-call-node/provider/src/main/resources/org/opendaylight/blueprint/restapi-call-node-blueprint.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode - - - - \ No newline at end of file diff --git a/restapi-call-node/provider/src/main/resources/service-configuration-notification-northbound-template.json b/restapi-call-node/provider/src/main/resources/service-configuration-notification-northbound-template.json deleted file mode 100644 index c64661720..000000000 --- a/restapi-call-node/provider/src/main/resources/service-configuration-notification-northbound-template.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "input": { - "svc-request-id": ${service-configuration-notification-input.svc-request-id}, - "response-code": ${service-configuration-notification-input.response-code}, - "response-message": ${service-configuration-notification-input.response-message}, - "ack-final-indicator": ${service-configuration-notification-input.ack-final-indicator}, - "service-information": { - "service-type": ${service-data.service-information.service-type}, - "service-instance-id": ${service-data.service-information.service-instance-id}, - "subscriber-name": ${service-data.service-information.subscriber-name}, - "subscriber-global-id": ${service-data.service-information.subscriber-global-id} - }, - "response-parameters": [ - ${repeat:service-configuration-notification-input.response-parameters_length: - { - "sequence-number": ${service-configuration-notification-input.response-parameters[${1}].sequence-number}, - "tag-name": ${service-configuration-notification-input.response-parameters[${1}].tag-name}, - "tag-value": ${service-configuration-notification-input.response-parameters[${1}].tag-value} - } - } - ] - } -} diff --git a/restapi-call-node/provider/src/main/resources/sptn-l3vpn-template.json b/restapi-call-node/provider/src/main/resources/sptn-l3vpn-template.json deleted file mode 100644 index e850cb9a0..000000000 --- a/restapi-call-node/provider/src/main/resources/sptn-l3vpn-template.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "snc-l3vpn": { - "-xmlns": "urn:chinamobile:l3vpn", - "operate-status": "operate-up", - "traffic-class": "BE", - "acs": { - "l3-acs": [ - { - "id": "0", - "ne-id": ${prop.l3vpn.pe1_id}, - "ltp-id": ${prop.l3vpn.ac1_id}, - "ip-addr": ${prop.l3vpn.ac1_ip.value}, - "ip-mask": ${prop.l3vpn.ac1_ip.mask}, - "access-type": "Sub-interface", - "vlan": ${prop.l3vpn.ac1_svlan}, - "qos": { - "belonged-id": ${prop.l3vpn.ac1_id}, - "tunnel-mode": "pipeline", - "cac-mode": "1", - "convg-mode": "0", - "traffic-adj-mode": "0", - "a2z-policing": "1", - "z2a-policing": "1", - "a2z-cir": "5000", - "z2a-cir": "5000", - "a2z-pir": "1000000", - "z2a-pir": "1000000", - "a2z-cbs": "1024", - "z2a-cbs": "1024", - "a2z-pbs": "1024", - "z2a-pbs": "1024", - "a2z-color-mode": "0", - "z2a-color-mode": "0", - "traffic-class": "CS7" - }, - "protocol-list": { - "protocols": { - "protocol-type": "static", - "static-route-list": { - "static-routes": [ - { - "id": "0", - "dest-ip": ${prop.l3vpn.ac1_peer_ip.value}, - "dest-mask": ${prop.l3vpn.ac1_peer_ip.mask}, - "route-type": "direct-route", - "out-inf": ${prop.l3vpn.ac1_id}, - "route-weight": "3", - "route-status": "up" - } - ] - } - } - } - }, - { - "id": "1", - "ne-id": ${prop.l3vpn.pe2_id}, - "ltp-id": ${prop.l3vpn.ac2_id}, - "ip-addr": ${prop.l3vpn.ac2_ip.value}, - "ip-mask": ${prop.l3vpn.ac2_ip.mask}, - "access-type": "Sub-interface", - "vlan": ${prop.l3vpn.ac1_svlan}, - "qos": { - "belonged-id": ${prop.l3vpn.ac2_id}, - "tunnel-mode": "pipeline", - "cac-mode": "1", - "convg-mode": "0", - "traffic-adj-mode": "0", - "a2z-policing": "1", - "z2a-policing": "1", - "a2z-cir": "5000", - "z2a-cir": "5000", - "a2z-pir": "1000000", - "z2a-pir": "1000000", - "a2z-cbs": "1024", - "z2a-cbs": "1024", - "a2z-pbs": "1024", - "z2a-pbs": "1024", - "a2z-color-mode": "0", - "z2a-color-mode": "0", - "traffic-class": "CS7" - }, - "protocol-list": { - "protocols": { - "protocol-type": "static", - "static-route-list": { - "static-routes": [ - { - "id": "0", - "dest-ip": ${prop.l3vpn.ac2_peer_ip.value}, - "dest-mask": ${prop.l3vpn.ac2_peer_ip.mask}, - "route-type": "direct-route", - "out-inf": ${prop.l3vpn.ac2_id}, - "route-weight": "4", - "route-status": "up" - } - ] - } - } - } - } - ] - }, - "user-label": ${prop.l3vpn.name}, - "topo-mode": "any-to-any", - "admin-status": "admin-up", - "tunnel-create-policy": { - "user-label": "tunnel", - "tenant-id": "tunnel", - "direction": "bidirection", - "type": "1", - "admin-status": "admin-up", - "qos": { - "tunnel-mode": "pipeline", - "cac-mode": "1", - "convg-mode": "0", - "traffic-adj-mode": "0", - "a2z-policing": "0", - "a2z-cir": "500", - "a2z-pir": "1000000", - "a2z-cbs": "1024", - "a2z-pbs": "1024", - "a2z-color-mode": "0", - "z2a-policing": "0", - "z2a-cir": "500", - "z2a-pir": "1000000", - "z2a-cbs": "1024", - "z2a-pbs": "1024", - "z2a-color-mode": "0", - "traffic-class": "CS7" - }, - "snc-switch": { - "layer-rate": "LSP", - "linear-protection-type": "path-protection-1-to-1", - "linear-protection-protocol": "APS", - "switch-mode": "double-end-switch", - "revertive-mode": "revertive", - "wtr": "60", - "hold-off-time": "0", - "reroute-revertive-mode": "revertive", - "reroute-wtr": "50" - }, - "lsp-oam": { - "cc-allow": "true", - "cc-exp": "CS7", - "cc-interval": "3.3", - "lm-mode": "preactive", - "dm-mode": "preactive", - "meps": { - "mep": [ - { "id": "1" }, - { "id": "2" } - ] - } - } - } - } -} - diff --git a/restapi-call-node/provider/src/main/resources/update-vpe-data-with-apply-group.json b/restapi-call-node/provider/src/main/resources/update-vpe-data-with-apply-group.json deleted file mode 100644 index 979857521..000000000 --- a/restapi-call-node/provider/src/main/resources/update-vpe-data-with-apply-group.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "vrf-export-details": [ - ${repeat:restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.VrfExport_length: - { - "vrf-export": ${restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.VrfExport[${1}]} - } - } - ], - "vrf-import-details": [ - ${repeat:restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.VrfImport_length: - { - "vrf-import": ${restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.VrfImport[${1}]} - } - } - ], - "apply-group-template": [ - ${repeat:restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.ApplyGroup_length: - { - "apply-group": ${restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.ApplyGroup[${1}].ApplyGroup} - } - } - ], - "community-list": [ - ${repeat:restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.CommunityList_length: - { - "member": ${restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.CommunityList[${1}].member}, - "name": ${restapi-result.ApplyGroupResponse.ApplyGroupResponseData[0].VrfDetails.CommunityList[${1}].name} - } - } - ] -} - diff --git a/restapi-call-node/provider/src/main/resources/vnf-information-update.json b/restapi-call-node/provider/src/main/resources/vnf-information-update.json deleted file mode 100644 index d554624c7..000000000 --- a/restapi-call-node/provider/src/main/resources/vnf-information-update.json +++ /dev/null @@ -1,3 +0,0 @@ -{ -"generic-vnf-service" :${vnf-service.generic-vnf-service} -} diff --git a/restapi-call-node/provider/src/main/resources/vpn-allocation-request.json b/restapi-call-node/provider/src/main/resources/vpn-allocation-request.json deleted file mode 100644 index 7a689bd5c..000000000 --- a/restapi-call-node/provider/src/main/resources/vpn-allocation-request.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "AllocateVpnResourcesRequest": { - "message-id": "${service-data.oper-status.modify-timestamp}", - "service-instance-id": "${service-data.service-information.service-instance-id}", - "vrf-request-type": { - "vpn-id": "${service-data.avpn-logicalchannel-information.vpn-id}", - "vpn-service": "${service-data.service-information.service-type}", - "e2e-vpn-id": "${service-data.avpn-logicalchannel-information.e2e-vpn-id}", - "vpe-name": "${service-data.avpn-logicalchannel-information.evc-endpoint-information.vpe-name}", - "asn": "${service-data.avpn-logicalchannel-information.carrier-asn}", - "route-group-name": "${service-data.avpn-logicalchannel-information.bgp-options.neighbor-address-information.route-group-name}", - "hub-or-spoke": "${service-data.avpn-logicalchannel-information.hub-or-spoke}" - } - } -} diff --git a/restapi-call-node/provider/src/main/resources/vpn-information-update.json b/restapi-call-node/provider/src/main/resources/vpn-information-update.json deleted file mode 100644 index 3ac16e291..000000000 --- a/restapi-call-node/provider/src/main/resources/vpn-information-update.json +++ /dev/null @@ -1,3 +0,0 @@ -{ -"vpn-information" :${vpe-vpn-service.vpn-information} -} diff --git a/restapi-call-node/provider/src/main/resources/vrf-service-configuration-information-template.json b/restapi-call-node/provider/src/main/resources/vrf-service-configuration-information-template.json deleted file mode 100644 index c6defb405..000000000 --- a/restapi-call-node/provider/src/main/resources/vrf-service-configuration-information-template.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "input": { - - "e2e-vpn-key": ${service-data.avpn-logicalchannel-information.e2e-vpn-id}, - "logical-channel-id": ${service-data.service-information.service-instance-id}, - "vpe-name": ${service-data.avpn-logicalchannel-information.evc-endpoint-information.vpe-name}, - "rpc-action": ${tmp.rpc-action}, - - "vpn-information": ${vpe-vpn-service.vpn-information}, - "vrf-details": ${vpe-vpn-service.vpn-information.vrf-details}, - "vrf-vlan-resources": { - "logical-channel-id": ${service-data.service-information.service-instance-id}, - "logical-channel-status": ${tmp.logical-channel-status} - } - } -} diff --git a/restapi-call-node/provider/src/main/resources/vrf-update-vlan-status-template.json b/restapi-call-node/provider/src/main/resources/vrf-update-vlan-status-template.json deleted file mode 100644 index f6381256f..000000000 --- a/restapi-call-node/provider/src/main/resources/vrf-update-vlan-status-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "input": { - "e2e-vpn-key": ${service-data.avpn-logicalchannel-information.e2e-vpn-id}, - "logical-channel-id": ${service-data.service-information.service-instance-id}, - "vpe-name": ${service-data.avpn-logicalchannel-information.evc-endpoint-information.vpe-name}, - "rpc-action": ${tmp.rpc-action}, - "vrf-vlan-resources": { - "logical-channel-id": ${service-data.service-information.service-instance-id}, - "logical-channel-status": ${tmp.logical-channel-status} - } - } -} diff --git a/restapi-call-node/provider/src/main/resources/vrf-update.json b/restapi-call-node/provider/src/main/resources/vrf-update.json deleted file mode 100644 index cdaef4d82..000000000 --- a/restapi-call-node/provider/src/main/resources/vrf-update.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "vpn-vame": ${allocate-vpn-resource-notification-input.vpn-data[0].vpn-name}, - "vpn-id": ${allocate-vpn-resource-notification-input.vpn-data[0].vpn-id}, - "vrf-details": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].vrf-information_length: - { - "vrf-export-details": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vrf-export-details_length: - { - "vrf-export": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vrf-export-details[${2}].vrf-export} - } - } - ], - "vrf-name": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vrf-name}, - "vpe-name": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vpe-name}, - "vrf-import-details": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vrf-import-details_length: - { - "vrf-import": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].vrf-import-details[${2}].vrf-import} - } - } - ], - "apply-group-template": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].apply-group-template_length: - { - "apply-group": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].apply-group-template[${2}].apply-group} - } - } - ], - "community-list": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].community-list_length: - { - "member": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].community-list[${2}].name}, - "name": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].community-list[${2}].member} - } - } - ], - "router-distinguisher": ${allocate-vpn-resource-notification-input.vpn-data[0].vrf-information[${1}].router-distinguisher} - } - } - ], - "spoke-routes": { - "route-target": ${allocate-vpn-resource-notification-input.vpn-data[0].spoke-route-target.route-target} - }, - - "route-target-details": [ - ${repeat:allocate-vpn-resource-notification-input.vpn-data[0].route-target-details_length: - { - "route-target": ${allocate-vpn-resource-notification-input.vpn-data[0].route-target-details[${1}].route-target}, - "route-target-type": ${allocate-vpn-resource-notification-input.vpn-data[0].route-target-details[${1}].route-target-type} - } - } - ], - - "e2e-vpn-key": ${allocate-vpn-resource-notification-input.vpn-data[0].e2e-vpn-id} -} -- cgit 1.2.3-korg