Changes to get properties from southbound propfile 87/40387/3
authorGeorge, Lina (lg941u) <lg941u@att.com>
Fri, 30 Mar 2018 16:16:21 +0000 (12:16 -0400)
committerSkip Wonnell <skip@att.com>
Fri, 30 Mar 2018 18:35:20 +0000 (13:35 -0500)
Issue-ID: APPC-816
Change-Id: If08eb895526ba3998faf059be9b9c595b0f82b4d
Signed-off-by: George, Lina (lg941u) <lg941u@att.com>
appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/executorImpl/RestExecutor.java
appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/ResourceUriExtractor.java
appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java
appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java
appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/ResourceUriExtractorTest.java
appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/TestRestServiceNode.java
appc-config/appc-flow-controller/provider/src/test/resources/appc_southbound.properties [new file with mode: 0644]

index d18f2a3..45c0021 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017-18 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -15,9 +15,7 @@
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
+ * * ============LICENSE_END=========================================================
  */
 package org.onap.appc.flow.controller.executorImpl;
 
@@ -51,7 +49,7 @@ public class RestExecutor implements FlowExecutorInterface {
     private static final EELFLogger log = EELFManager.getInstance().getLogger(RestExecutor.class);
 
     @Override
-    public Map<String, String> execute(Transaction transaction, SvcLogicContext ctx) throws Exception{
+    public Map<String, String> execute(Transaction transaction, SvcLogicContext ctx) throws Exception {
         log.info("Configuring Rest Operation....." + transaction.toString());
         Map<String, String> outputMessage = new HashMap<>();
         Client client = null;
@@ -61,35 +59,29 @@ public class RestExecutor implements FlowExecutorInterface {
             SSLContext sslContext = SSLContext.getInstance("SSL");
             sslContext.init(null, new javax.net.ssl.TrustManager[] {new SecureRestClientTrustManager()}, null);
             DefaultClientConfig defaultClientConfig = new DefaultClientConfig();
-            defaultClientConfig.getProperties().put(
-                    HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
+            defaultClientConfig.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
                     new HTTPSProperties(getHostnameVerifier(), sslContext));
             client = createClient(defaultClientConfig);
-            client.addFilter(new HTTPBasicAuthFilter(transaction.getuId(), transaction.getPswd()));
+            if ((transaction.getuId() != null) && (transaction.getPswd() != null)) {
+                client.addFilter(new HTTPBasicAuthFilter(transaction.getuId(), transaction.getPswd()));
+            }
             WebResource webResource = client.resource(new URI(transaction.getExecutionEndPoint()));
             webResource.setProperty("Content-Type", "application/json;charset=UTF-8");
 
-            ClientResponse clientResponse = getClientResponse(transaction, webResource)
-                    .orElseThrow(() -> new Exception(
-                    "Cannot determine the state of : "
-                    + transaction.getActionLevel()
-                    + " HTTP response is null"));
+            ClientResponse clientResponse = getClientResponse(transaction, webResource).orElseThrow(() -> new Exception(
+                    "Cannot determine the state of : " + transaction.getActionLevel() + " HTTP response is null"));
 
             processClientResponse(clientResponse, transaction, outputMessage);
 
             log.info("Completed Rest Operation.....");
 
         } catch (Exception e) {
-            log.debug("failed in RESTCONT Action ("
-                    + transaction.getExecutionRPC()
-                    + ") for the resource "
-                    + transaction.getExecutionEndPoint()
-                    + ", fault message :"
-                    + e.getMessage());
+            log.debug("failed in RESTCONT Action (" + transaction.getExecutionRPC() + ") for the resource "
+                    + transaction.getExecutionEndPoint() + ", fault message :" + e.getMessage());
             throw new Exception("Error While Sending Rest Request", e);
 
         } finally {
-            if(client != null) {
+            if (client != null) {
                 client.destroy();
             }
         }
@@ -105,28 +97,27 @@ public class RestExecutor implements FlowExecutorInterface {
     }
 
     private Optional<ClientResponse> getClientResponse(Transaction transaction, WebResource webResource) {
-        String responseDataType=MediaType.APPLICATION_JSON;
-        String requestDataType=MediaType.APPLICATION_JSON;
+        String responseDataType = MediaType.APPLICATION_JSON;
+        String requestDataType = MediaType.APPLICATION_JSON;
         ClientResponse clientResponse = null;
 
         log.info("Starting Rest Operation.....");
-        if(HttpMethod.GET.equalsIgnoreCase(transaction.getExecutionRPC())) {
+        if (HttpMethod.GET.equalsIgnoreCase(transaction.getExecutionRPC())) {
             clientResponse = webResource.accept(responseDataType).get(ClientResponse.class);
-        }else if(HttpMethod.POST.equalsIgnoreCase(transaction.getExecutionRPC())) {
+        } else if (HttpMethod.POST.equalsIgnoreCase(transaction.getExecutionRPC())) {
             clientResponse = webResource.type(requestDataType).post(ClientResponse.class, transaction.getPayload());
-        }else if(HttpMethod.PUT.equalsIgnoreCase(transaction.getExecutionRPC())) {
+        } else if (HttpMethod.PUT.equalsIgnoreCase(transaction.getExecutionRPC())) {
             clientResponse = webResource.type(requestDataType).put(ClientResponse.class, transaction.getPayload());
-        }else if(HttpMethod.DELETE.equalsIgnoreCase(transaction.getExecutionRPC())) {
+        } else if (HttpMethod.DELETE.equalsIgnoreCase(transaction.getExecutionRPC())) {
             clientResponse = webResource.delete(ClientResponse.class);
         }
         return Optional.ofNullable(clientResponse);
     }
 
-    private void processClientResponse (ClientResponse clientResponse,
-                                        Transaction transaction,
-                                        Map<String, String> outputMessage ) throws Exception {
+    private void processClientResponse(ClientResponse clientResponse, Transaction transaction,
+            Map<String, String> outputMessage) throws Exception {
 
-        if(clientResponse.getStatus() == Status.OK.getStatusCode()) {
+        if (clientResponse.getStatus() == Status.OK.getStatusCode()) {
             Response response = new Response();
             response.setResponseCode(String.valueOf(Status.OK.getStatusCode()));
             transaction.setResponses(Collections.singletonList(response));
@@ -136,10 +127,8 @@ public class RestExecutor implements FlowExecutorInterface {
             if (StringUtils.isNotBlank(errorMsg)) {
                 log.debug("Error Message from Client Response" + errorMsg);
             }
-            throw new Exception("Cannot determine the state of : "
-                    + transaction.getActionLevel()
-                    + " HTTP error code : "
-                    + clientResponse.getStatus());
+            throw new Exception("Cannot determine the state of : " + transaction.getActionLevel()
+                    + " HTTP error code : " + clientResponse.getStatus());
         }
     }
 }
index c36a74b..af65b12 100644 (file)
@@ -2,13 +2,15 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 Nokia. All rights reserved. 
+ * ================================================================================
+ * Copyright (C) 2018 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
+ * 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,
@@ -22,68 +24,74 @@ package org.onap.appc.flow.controller.node;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.HTTP;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_CONTEXT;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_HOST_IP_ADDRESS;
-import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PORT_NUMBER;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_SUB_CONTEXT;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_URL;
-
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.VNF_TYPE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_PROTOCOL;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_PORT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_CONTEXT_URL;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import java.util.Properties;
 import org.apache.commons.lang.StringUtils;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 /**
  * Helper class for RestServiceNode
  */
 class ResourceUriExtractor {
 
-  private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
+    private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
 
-  String extractResourceUri(SvcLogicContext ctx, Properties prop) throws Exception {
-    String resourceUri = ctx.getAttribute(INPUT_URL);
+    String extractResourceUri(SvcLogicContext ctx, Properties prop) throws Exception {
+        String resourceUri = ctx.getAttribute(INPUT_URL);
 
-    if (StringUtils.isBlank(resourceUri)) {
-      resourceUri = getAddress(ctx);
-      log.info("resourceUri= " + resourceUri);
-      resourceUri += getContext(ctx, prop);
-      log.info("resourceUri= " + resourceUri);
-      resourceUri += getSubContext(ctx, prop);
-    }
-    log.info("resourceUri= " + resourceUri);
+        if (StringUtils.isBlank(resourceUri)) {
+            resourceUri = getAddress(ctx, prop);
+            log.info("resourceUri= " + resourceUri);
+            resourceUri += getContext(ctx, prop);
+            log.info("resourceUri= " + resourceUri);
+            resourceUri += getSubContext(ctx, prop);
+        }
+        log.info("resourceUri= " + resourceUri);
 
-    return resourceUri;
-  }
+        return resourceUri;
+    }
 
-  private String getAddress(SvcLogicContext ctx) {
-    String address = ctx.getAttribute(INPUT_HOST_IP_ADDRESS);
-    String port = ctx.getAttribute(INPUT_PORT_NUMBER);
-    return HTTP + address + ":" + port;
-  }
+    private String getAddress(SvcLogicContext ctx, Properties prop) {
+        String address = ctx.getAttribute(INPUT_HOST_IP_ADDRESS);
+        String portPath = ctx.getAttribute(VNF_TYPE) + "." + (REST_PROTOCOL) + "."
+                + ctx.getAttribute(INPUT_REQUEST_ACTION) + "." + (REST_PORT);
+        String port = prop.getProperty(portPath);
+        return HTTP + address + ":" + port;
+    }
 
-  private String getContext(SvcLogicContext ctx, Properties prop) throws Exception {
-    String context;
-    if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_CONTEXT))) {
-      context = "/" + ctx.getAttribute(INPUT_CONTEXT);
-    } else if (prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".context") != null) {
-      context = "/" + prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".context");
-    } else {
-      throw new Exception("Could Not found the context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+    private String getContext(SvcLogicContext ctx, Properties prop) throws Exception {
+        String context;
+        String urlPath = ctx.getAttribute(VNF_TYPE) + "." + REST_PROTOCOL + "." + ctx.getAttribute(INPUT_REQUEST_ACTION)
+                + "." + REST_CONTEXT_URL;
+        if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_CONTEXT))) {
+            context = "/" + ctx.getAttribute(INPUT_CONTEXT);
+        } else if (prop.getProperty(urlPath) != null) {
+            context = "/" + prop.getProperty(urlPath);
+        } else {
+            throw new Exception("Could not find the context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+        }
+        return context;
     }
-    return context;
-  }
 
-  private String getSubContext(SvcLogicContext ctx, Properties prop) throws Exception {
-    String subContext;
-    if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_SUB_CONTEXT))) {
-      subContext = "/" + ctx.getAttribute(INPUT_SUB_CONTEXT);
-    } else if (prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context") != null) {
-      subContext = "/" + prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context");
-    } else {
-      throw new Exception("Could Not found the sub context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+    private String getSubContext(SvcLogicContext ctx, Properties prop) throws Exception {
+        String subContext;
+        if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_SUB_CONTEXT))) {
+            subContext = "/" + ctx.getAttribute(INPUT_SUB_CONTEXT);
+        } else if (prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context") != null) {
+            subContext = "/" + prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context");
+        } else {
+            throw new Exception(
+                    "Could not find the sub context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+        }
+        return subContext;
     }
-    return subContext;
-  }
 
-}
\ No newline at end of file
+}
index 184ba3b..b8625db 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
+ * * ============LICENSE_END=========================================================
  */
 
 package org.onap.appc.flow.controller.node;
 
-import static org.onap.appc.flow.controller.utils.FlowControllerConstants.APPC_FLOW_CONTROLLER;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.APPC_SOUTHBOUND;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_ERROR_MESSAGE;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_STATUS;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_FAILURE;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_MESSAGE;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_SUCCESS;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -44,82 +41,81 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
 
 public class RestServiceNode implements SvcLogicJavaPlugin {
 
-  private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
-  private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
-
-  static final String REST_RESPONSE = "restResponse";
-
-  private final TransactionHandler transactionHandler;
-  private final RestExecutor restExecutor;
-  private final ResourceUriExtractor resourceUriExtractor;
-  private final EnvVariables envVariables;
-
-  public RestServiceNode() {
-    this.transactionHandler = new TransactionHandler();
-    this.restExecutor = new RestExecutor();
-    this.resourceUriExtractor = new ResourceUriExtractor();
-    this.envVariables = new EnvVariables();
-  }
-
-  /**
-   * Constructor for tests, prefer to use no arg constructor
-   */
-  RestServiceNode(TransactionHandler transactionHandler, RestExecutor restExecutor,
-      ResourceUriExtractor uriExtractor, EnvVariables envVariables) {
-    this.transactionHandler = transactionHandler;
-    this.restExecutor = restExecutor;
-    this.resourceUriExtractor = uriExtractor;
-    this.envVariables = envVariables;
-  }
-
-  public void sendRequest(Map<String, String> inParams, SvcLogicContext ctx)
-      throws SvcLogicException {
-    String fn = "RestServiceNode.sendRequest";
-    log.info("Received processParamKeys call with params : " + inParams);
-    String responsePrefix = inParams.get(INPUT_PARAM_RESPONSE_PREFIX);
-    try {
-      responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
-      //Remove below for Block
-      for (String key : ctx.getAttributeKeySet()) {
-        log.info(fn + "Getting Key = " + key + "and Value = " + ctx.getAttribute(key));
-      }
-
-      Properties prop = loadProperties();
-      log.info("Loaded Properties " + prop.toString());
-
-      String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
-
-      log.info("Rest Constructed URL : " + resourceUri);
-
-      Transaction transaction = transactionHandler.buildTransaction(ctx, prop, resourceUri);
-      Map<String, String> output = restExecutor.execute(transaction, ctx);
-
-      String json = output.get(REST_RESPONSE);
-      log.info("Received response from Interface " + json);
-
-      JsonNode validatedJson = JsonValidator.validate(json);
-
-      if (validatedJson != null) {
-        log.info("state is " + validatedJson.findValue("state"));
-        ctx.setAttribute(responsePrefix + OUTPUT_STATUS_MESSAGE, output.get(REST_RESPONSE));
-      }
-
-      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_SUCCESS);
-
-    } catch (Exception e) {
-      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_FAILURE);
-      ctx.setAttribute(responsePrefix + OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
-      log.error("Error Message : " + e.getMessage(), e);
-      throw new SvcLogicException(e.getMessage());
+    private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
+    public static final String APPC_CONFIG_DIR_VAR = "APPC_CONFIG_DIR";
+
+    static final String REST_RESPONSE = "restResponse";
+
+    private final TransactionHandler transactionHandler;
+    private final RestExecutor restExecutor;
+    private final ResourceUriExtractor resourceUriExtractor;
+    private final EnvVariables envVariables;
+
+    public RestServiceNode() {
+        this.transactionHandler = new TransactionHandler();
+        this.restExecutor = new RestExecutor();
+        this.resourceUriExtractor = new ResourceUriExtractor();
+        this.envVariables = new EnvVariables();
+    }
+
+    /**
+     * Constructor for tests, prefer to use no arg constructor
+     */
+    RestServiceNode(TransactionHandler transactionHandler, RestExecutor restExecutor, ResourceUriExtractor uriExtractor,
+            EnvVariables envVariables) {
+        this.transactionHandler = transactionHandler;
+        this.restExecutor = restExecutor;
+        this.resourceUriExtractor = uriExtractor;
+        this.envVariables = envVariables;
+    }
+
+    public void sendRequest(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
+        String fn = "RestServiceNode.sendRequest";
+        log.info("Received processParamKeys call with params : " + inParams);
+        String responsePrefix = inParams.get(INPUT_PARAM_RESPONSE_PREFIX);
+        try {
+            responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+            // Remove below for Block
+            for (String key : ctx.getAttributeKeySet()) {
+                log.info(fn + "Getting Key = " + key + "and Value = " + ctx.getAttribute(key));
+            }
+
+            Properties prop = loadProperties();
+            log.info("Loaded Properties " + prop.toString());
+
+            String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
+
+            log.info("Rest Constructed URL : " + resourceUri);
+
+            Transaction transaction = transactionHandler.buildTransaction(ctx, prop, resourceUri);
+            Map<String, String> output = restExecutor.execute(transaction, ctx);
+
+            String json = output.get(REST_RESPONSE);
+            log.info("Received response from Interface " + json);
+
+            JsonNode validatedJson = JsonValidator.validate(json);
+
+            if (validatedJson != null) {
+                log.info("state is " + validatedJson.findValue("state"));
+                ctx.setAttribute(responsePrefix + OUTPUT_STATUS_MESSAGE, output.get(REST_RESPONSE));
+            }
+
+            ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_SUCCESS);
+
+        } catch (Exception e) {
+            ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_FAILURE);
+            ctx.setAttribute(responsePrefix + OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+            log.error("Error Message : " + e.getMessage(), e);
+            throw new SvcLogicException(e.getMessage());
+        }
     }
-  }
 
-  private Properties loadProperties() throws Exception {
-    String directory = envVariables.getenv(SDNC_CONFIG_DIR_VAR);
-    if (directory == null) {
-      throw new Exception("Cannot find Property file: " + SDNC_CONFIG_DIR_VAR);
+    private Properties loadProperties() throws Exception {
+        String directory = envVariables.getenv(APPC_CONFIG_DIR_VAR);
+        if (directory == null) {
+            throw new Exception("Cannot find Property file: " + APPC_CONFIG_DIR_VAR);
+        }
+        String path = directory + APPC_SOUTHBOUND;
+        return PropertiesLoader.load(path);
     }
-    String path = directory + APPC_FLOW_CONTROLLER;
-    return PropertiesLoader.load(path);
-  }
 }
index 502438c..275dd43 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -15,9 +15,7 @@
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
+ * * ============LICENSE_END=========================================================
  */
 
 package org.onap.appc.flow.controller.utils;
@@ -42,6 +40,7 @@ public class FlowControllerConstants {
     public static final String DESINGTIME = "DesignTime";
     public static final String RUNTIME = "RunTime";
     public static final String APPC_FLOW_CONTROLLER = "/appc-flow-controller.properties";
+    public static final String APPC_SOUTHBOUND = "/appc_southbound.properties";
     public static final String VNF_TYPE = "vnf-type";
     public static final String ACTION = "action";
     public static final String VNFC_TYPE = "vnfc-type";
@@ -98,7 +97,7 @@ public class FlowControllerConstants {
     public static final String OUTPUT_STATUS_MESSAGE = "status-message";
     public static final String HEALTHY = "healthy";
     public static final String INPUT_URL = "input.url";
-    public static final String INPUT_HOST_IP_ADDRESS = "host-ip-address";
+    public static final String INPUT_HOST_IP_ADDRESS = "request-parameters.host-ip-address";
     public static final String INPUT_PORT_NUMBER = "port-number";
     public static final String INPUT_CONTEXT = "context";
     public static final String INPUT_SUB_CONTEXT = "sub-context";
@@ -116,4 +115,10 @@ public class FlowControllerConstants {
     public static final String VF_MODULE = "vf-module";
     public static final String VNFC_NAME = "vnfc-name";
     public static final String AAI_VNF_TYPE = "aai-vnf-type";
+    public static final String REST_PROTOCOL = "REST";
+    public static final String HEALTHCHECK ="HealthCheck";
+    public static final String REST_USER="user";
+    public static final String REST_PWD="password";
+    public static final String REST_PORT="port";
+    public static final String REST_CONTEXT_URL="url";
 }
index e3f108e..3422758 100644 (file)
@@ -3,12 +3,14 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2018 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
+ * 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,
@@ -23,11 +25,13 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_CONTEXT;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_HOST_IP_ADDRESS;
-import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PORT_NUMBER;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_SUB_CONTEXT;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_URL;
-
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_CONTEXT_URL;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_PORT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.REST_PROTOCOL;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.VNF_TYPE;
 import java.util.Properties;
 import org.junit.Assert;
 import org.junit.Before;
@@ -38,73 +42,74 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 
 public class ResourceUriExtractorTest {
 
-  private Properties prop;
-  private SvcLogicContext ctx;
-
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-  private ResourceUriExtractor resourceUriExtractor;
-
-  @Before
-  public void setUp() {
-    ctx = mock(SvcLogicContext.class);
-    prop = mock(Properties.class);
-    resourceUriExtractor = new ResourceUriExtractor();
-  }
+    private Properties prop;
+    private SvcLogicContext ctx;
 
-  @Test
-  public void should_return_input_url_if_exist() throws Exception {
-    ctx = mock(SvcLogicContext.class);
-    when(ctx.getAttribute(INPUT_URL)).thenReturn("http://localhost:8080");
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+    private ResourceUriExtractor resourceUriExtractor;
 
-    resourceUriExtractor = new ResourceUriExtractor();
-    String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
+    @Before
+    public void setUp() {
+        ctx = mock(SvcLogicContext.class);
+        prop = mock(Properties.class);
+        resourceUriExtractor = new ResourceUriExtractor();
+    }
 
-    Assert.assertEquals("http://localhost:8080", resourceUri);
-  }
+    @Test
+    public void should_return_input_url_if_exist() throws Exception {
+        ctx = mock(SvcLogicContext.class);
+        when(ctx.getAttribute(INPUT_URL)).thenReturn("http://localhost:8080");
 
-  @Test
-  public void should_extract_url_input_if_context_input_provided() throws Exception {
-    when(ctx.getAttribute(INPUT_URL)).thenReturn("");
-    when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
-    when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+        resourceUriExtractor = new ResourceUriExtractor();
+        String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
 
-    when(ctx.getAttribute(INPUT_CONTEXT)).thenReturn("input-context");
-    when(ctx.getAttribute(INPUT_SUB_CONTEXT)).thenReturn("input-sub-context");
+        Assert.assertEquals("http://localhost:8080", resourceUri);
+    }
 
-    String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
+    @Test
+    public void should_extract_url_input_if_context_input_provided() throws Exception {
+        when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+        when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+        when(prop.getProperty(ctx.getAttribute(VNF_TYPE) + "." + (REST_PROTOCOL) + "."
+                + ctx.getAttribute(INPUT_REQUEST_ACTION) + "." + (REST_PORT))).thenReturn("8080");
 
-    Assert.assertEquals("http://localhost:8080/input-context/input-sub-context", resourceUri);
-  }
+        when(ctx.getAttribute(INPUT_CONTEXT)).thenReturn("input-context");
+        when(ctx.getAttribute(INPUT_SUB_CONTEXT)).thenReturn("input-sub-context");
 
-  @Test
-  public void should_extract_url_input_if_request_action_provided() throws Exception {
+        String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
 
-    when(ctx.getAttribute(INPUT_URL)).thenReturn("");
-    when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
-    when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+        Assert.assertEquals("http://localhost:8080/input-context/input-sub-context", resourceUri);
+    }
 
-    when(ctx.getAttribute(INPUT_REQUEST_ACTION)).thenReturn("request-action");
-    when(ctx.getAttribute(INPUT_REQUEST_ACTION)).thenReturn("request-action");
+    @Test
+    public void should_extract_url_input_if_request_action_provided() throws Exception {
+        when(ctx.getAttribute(INPUT_REQUEST_ACTION)).thenReturn("request-action");
+        when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+        when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+        when(prop.getProperty(ctx.getAttribute(VNF_TYPE) + "." + (REST_PROTOCOL) + "."
+                + ctx.getAttribute(INPUT_REQUEST_ACTION) + "." + (REST_PORT))).thenReturn("8080");
 
-    when(prop.getProperty("request-action.context")).thenReturn("ra-context");
-    when(prop.getProperty("request-action.sub-context")).thenReturn("ra-sub-context");
+        when(prop.getProperty(ctx.getAttribute(VNF_TYPE) + "." + REST_PROTOCOL + "."
+                + ctx.getAttribute(INPUT_REQUEST_ACTION) + "." + REST_CONTEXT_URL)).thenReturn("ra-context");
+        when(prop.getProperty("request-action.sub-context")).thenReturn("ra-sub-context");
 
-    String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
+        String resourceUri = resourceUriExtractor.extractResourceUri(ctx, prop);
 
-    Assert.assertEquals("http://localhost:8080/ra-context/ra-sub-context", resourceUri);
-  }
+        Assert.assertEquals("http://localhost:8080/ra-context/ra-sub-context", resourceUri);
+    }
 
-  @Test
-  public void should_throw_exception_if_missing_context() throws Exception {
-    when(ctx.getAttribute(INPUT_URL)).thenReturn("");
-    when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
-    when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+    @Test
+    public void should_throw_exception_if_missing_context() throws Exception {
+        when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+        when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+        when(prop.getProperty(ctx.getAttribute(VNF_TYPE) + "." + (REST_PROTOCOL) + "."
+                + ctx.getAttribute(INPUT_REQUEST_ACTION) + "." + (REST_PORT))).thenReturn("8080");
 
-    expectedException.expect(Exception.class);
-    expectedException.expectMessage("Could Not found the context for operation null");
+        expectedException.expect(Exception.class);
+        expectedException.expectMessage("Could not find the context for operation null");
 
-    resourceUriExtractor.extractResourceUri(ctx, prop);
-  }
+        resourceUriExtractor.extractResourceUri(ctx, prop);
+    }
 
-}
\ No newline at end of file
+}
index fdf665a..0015814 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -15,9 +15,7 @@
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
+ * * ============LICENSE_END=========================================================
  */
 package org.onap.appc.flow.controller.node;
 
@@ -27,10 +25,9 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
-import static org.onap.appc.flow.controller.node.InputParamsCollector.SDNC_CONFIG_DIR_VAR;
+import static org.onap.appc.flow.controller.node.RestServiceNode.APPC_CONFIG_DIR_VAR;
 import static org.onap.appc.flow.controller.node.RestServiceNode.REST_RESPONSE;
 import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -47,144 +44,134 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 public class TestRestServiceNode {
 
-  private static final String RESOURCE_URI = "resource-uri";
-  private static final String REST_BODY_RESPONSE = "{ 'state' : 'TEST' }";
-
-  private RestServiceNode restServiceNode;
-
-  private ResourceUriExtractor uriExtractorMock;
-  private TransactionHandler transactionHandlerMock;
-  private RestExecutor restExecutorMock;
-
-  private SvcLogicContext ctxMock;
-  private Transaction transaction;
-  private Map<String, String> params;
-
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
-  @Before
-  public void setUp() throws Exception {
-
-    uriExtractorMock = mock(ResourceUriExtractor.class);
-    transactionHandlerMock = mock(TransactionHandler.class);
-    restExecutorMock = mock(RestExecutor.class);
-    ctxMock = mock(SvcLogicContext.class);
-    transaction = mock(Transaction.class);
-
-    // given
-    params = new HashMap<>();
-
-    HashMap<String, String> restResponseMap = new HashMap<>();
-    restResponseMap.put(REST_RESPONSE, REST_BODY_RESPONSE.replaceAll("'", "\""));
-
-    when(uriExtractorMock
-        .extractResourceUri(any(SvcLogicContext.class), any(Properties.class)))
-        .thenReturn(RESOURCE_URI);
-    when(transactionHandlerMock
-        .buildTransaction(any(SvcLogicContext.class), any(Properties.class), eq(RESOURCE_URI)))
-        .thenReturn(transaction);
-    when(restExecutorMock.execute(eq(transaction), any(SvcLogicContext.class)))
-        .thenReturn(restResponseMap);
-
-    EnvVariables envVariables = mock(EnvVariables.class);
-    when(envVariables.getenv(SDNC_CONFIG_DIR_VAR)).thenReturn("src/test/resources");
-    restServiceNode = new RestServiceNode(transactionHandlerMock, restExecutorMock, uriExtractorMock, envVariables);
-  }
-
-  @Test
-  public void should_send_request() throws Exception {
-    // given
-    params.put(INPUT_PARAM_RESPONSE_PREFIX, "some-prefix");
-
-    // when
-    restServiceNode.sendRequest(params, ctxMock);
-
-    // then
-    verify(uriExtractorMock)
-        .extractResourceUri(eq(ctxMock), any(Properties.class));
-    verify(transactionHandlerMock)
-        .buildTransaction(eq(ctxMock), any(Properties.class), eq(RESOURCE_URI));
-    verify(restExecutorMock)
-        .execute(transaction, ctxMock);
-    verifyNoMoreInteractions(uriExtractorMock, transactionHandlerMock, restExecutorMock);
-  }
-
-  @Test
-  public void should_rethrow_exception_from_uri_extractor() throws Exception {
-    when(uriExtractorMock
-        .extractResourceUri(eq(ctxMock), any(Properties.class)))
-        .thenThrow(new Exception("resource uri exception"));
-
-    expectedException.expect(SvcLogicException.class);
-    expectedException.expectMessage("resource uri exception");
-
-    restServiceNode.sendRequest(params, ctxMock);
-  }
-
-  @Test
-  public void should_rethrow_exception_from_transaction_handler() throws Exception {
-    when(transactionHandlerMock
-        .buildTransaction(eq(ctxMock), any(Properties.class), eq(RESOURCE_URI)))
-        .thenThrow(new Exception("transaction exception"));
-
-    expectedException.expect(SvcLogicException.class);
-    expectedException.expectMessage("transaction exception");
-
-    restServiceNode.sendRequest(params, ctxMock);
-  }
-
-  @Test
-  public void should_rethrow_exception_from_rest_executor() throws Exception {
-    when(restExecutorMock
-        .execute(transaction, ctxMock))
-        .thenThrow(new Exception("rest executor exception"));
-
-    expectedException.expect(SvcLogicException.class);
-    expectedException.expectMessage("rest executor exception");
-
-    restServiceNode.sendRequest(params, ctxMock);
-  }
-
-  @Ignore("missing asserts")
-  @Test(expected = Exception.class)
-  public void testRestServiceNode() throws Exception {
-
-    SvcLogicContext ctx = new SvcLogicContext();
-    ctx.setAttribute(FlowControllerConstants.VNF_TYPE, "vUSP - vDBE-IPX HUB");
-    ctx.setAttribute(FlowControllerConstants.REQUEST_ACTION, "healthcheck");
-    ctx.setAttribute(FlowControllerConstants.VNFC_TYPE, "TESTVNFC-CF");
-    ctx.setAttribute(FlowControllerConstants.REQUEST_ID, "TESTCOMMONFRMWK");
-    ctx.setAttribute("host-ip-address", "127.0.0.1");
-    ctx.setAttribute("port-number", "8888");
-    ctx.setAttribute("request-action-type", "GET");
-    ctx.setAttribute("context", "loader/restconf/operations/appc-provider-lcm:health-check");
-
-    HashMap<String, String> inParams = new HashMap<String, String>();
-    RestServiceNode rsn = new RestServiceNode();
-    inParams.put("output-state", "state");
-    inParams.put("responsePrefix", "healthcheck");
-    rsn.sendRequest(inParams, ctx);
-
-    for (Object key : ctx.getAttributeKeySet()) {
-      String parmName = (String) key;
-      String parmValue = ctx.getAttribute(parmName);
+    private static final String RESOURCE_URI = "resource-uri";
+    private static final String REST_BODY_RESPONSE = "{ 'state' : 'TEST' }";
+
+    private RestServiceNode restServiceNode;
+
+    private ResourceUriExtractor uriExtractorMock;
+    private TransactionHandler transactionHandlerMock;
+    private RestExecutor restExecutorMock;
+
+    private SvcLogicContext ctxMock;
+    private Transaction transaction;
+    private Map<String, String> params;
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Before
+    public void setUp() throws Exception {
+
+        uriExtractorMock = mock(ResourceUriExtractor.class);
+        transactionHandlerMock = mock(TransactionHandler.class);
+        restExecutorMock = mock(RestExecutor.class);
+        ctxMock = mock(SvcLogicContext.class);
+        transaction = mock(Transaction.class);
+
+        // given
+        params = new HashMap<>();
+
+        HashMap<String, String> restResponseMap = new HashMap<>();
+        restResponseMap.put(REST_RESPONSE, REST_BODY_RESPONSE.replaceAll("'", "\""));
+
+        when(uriExtractorMock.extractResourceUri(any(SvcLogicContext.class), any(Properties.class)))
+                .thenReturn(RESOURCE_URI);
+        when(transactionHandlerMock.buildTransaction(any(SvcLogicContext.class), any(Properties.class),
+                eq(RESOURCE_URI))).thenReturn(transaction);
+        when(restExecutorMock.execute(eq(transaction), any(SvcLogicContext.class))).thenReturn(restResponseMap);
+
+        EnvVariables envVariables = mock(EnvVariables.class);
+        when(envVariables.getenv(APPC_CONFIG_DIR_VAR)).thenReturn("src/test/resources");
+        restServiceNode = new RestServiceNode(transactionHandlerMock, restExecutorMock, uriExtractorMock, envVariables);
+    }
+
+    @Test
+    public void should_send_request() throws Exception {
+        // given
+        params.put(INPUT_PARAM_RESPONSE_PREFIX, "some-prefix");
+
+        // when
+        restServiceNode.sendRequest(params, ctxMock);
+
+        // then
+        verify(uriExtractorMock).extractResourceUri(eq(ctxMock), any(Properties.class));
+        verify(transactionHandlerMock).buildTransaction(eq(ctxMock), any(Properties.class), eq(RESOURCE_URI));
+        verify(restExecutorMock).execute(transaction, ctxMock);
+        verifyNoMoreInteractions(uriExtractorMock, transactionHandlerMock, restExecutorMock);
+    }
+
+    @Test
+    public void should_rethrow_exception_from_uri_extractor() throws Exception {
+        when(uriExtractorMock.extractResourceUri(eq(ctxMock), any(Properties.class)))
+                .thenThrow(new Exception("resource uri exception"));
+
+        expectedException.expect(SvcLogicException.class);
+        expectedException.expectMessage("resource uri exception");
+
+        restServiceNode.sendRequest(params, ctxMock);
+    }
+
+    @Test
+    public void should_rethrow_exception_from_transaction_handler() throws Exception {
+        when(transactionHandlerMock.buildTransaction(eq(ctxMock), any(Properties.class), eq(RESOURCE_URI)))
+                .thenThrow(new Exception("transaction exception"));
+
+        expectedException.expect(SvcLogicException.class);
+        expectedException.expectMessage("transaction exception");
+
+        restServiceNode.sendRequest(params, ctxMock);
+    }
+
+    @Test
+    public void should_rethrow_exception_from_rest_executor() throws Exception {
+        when(restExecutorMock.execute(transaction, ctxMock)).thenThrow(new Exception("rest executor exception"));
+
+        expectedException.expect(SvcLogicException.class);
+        expectedException.expectMessage("rest executor exception");
+
+        restServiceNode.sendRequest(params, ctxMock);
+    }
+
+    @Ignore("missing asserts")
+    @Test(expected = Exception.class)
+    public void testRestServiceNode() throws Exception {
+
+        SvcLogicContext ctx = new SvcLogicContext();
+        ctx.setAttribute(FlowControllerConstants.VNF_TYPE, "vUSP - vDBE-IPX HUB");
+        ctx.setAttribute(FlowControllerConstants.REQUEST_ACTION, "healthcheck");
+        ctx.setAttribute(FlowControllerConstants.VNFC_TYPE, "TESTVNFC-CF");
+        ctx.setAttribute(FlowControllerConstants.REQUEST_ID, "TESTCOMMONFRMWK");
+        ctx.setAttribute("host-ip-address", "127.0.0.1");
+        ctx.setAttribute("port-number", "8888");
+        ctx.setAttribute("request-action-type", "GET");
+        ctx.setAttribute("context", "loader/restconf/operations/appc-provider-lcm:health-check");
+
+        HashMap<String, String> inParams = new HashMap<String, String>();
+        RestServiceNode rsn = new RestServiceNode();
+        inParams.put("output-state", "state");
+        inParams.put("responsePrefix", "healthcheck");
+        rsn.sendRequest(inParams, ctx);
+
+        for (Object key : ctx.getAttributeKeySet()) {
+            String parmName = (String) key;
+            String parmValue = ctx.getAttribute(parmName);
+        }
+    }
+
+    @Ignore("missing asserts")
+    @Test(expected = Exception.class)
+    public void testInputParamsRestServiceNode() throws Exception {
+        SvcLogicContext ctx = new SvcLogicContext();
+        ctx.setAttribute("vnf-id", "test");
+        ctx.setAttribute("tmp.vnfInfo.vm-count", "1");
+        ctx.setAttribute("tmp.vnfInfo.vm[0].vnfc-count", "1");
+        RestExecutor restExe = new RestExecutor();
+        Transaction transaction = new Transaction();
+
+        FlowControlNode node = new FlowControlNode();
+        Map<String, String> flowSeq = restExe.execute(transaction, ctx);
+        String flowSequnce = flowSeq.get("restResponse");
+
     }
-  }
-
-  @Ignore("missing asserts")
-  @Test(expected = Exception.class)
-  public void testInputParamsRestServiceNode() throws Exception {
-    SvcLogicContext ctx = new SvcLogicContext();
-    ctx.setAttribute("vnf-id", "test");
-    ctx.setAttribute("tmp.vnfInfo.vm-count", "1");
-    ctx.setAttribute("tmp.vnfInfo.vm[0].vnfc-count", "1");
-    RestExecutor restExe = new RestExecutor();
-    Transaction transaction = new Transaction();
-
-    FlowControlNode node = new FlowControlNode();
-    Map<String, String> flowSeq = restExe.execute(transaction, ctx);
-    String flowSequnce = flowSeq.get("restResponse");
-
-  }
 }
diff --git a/appc-config/appc-flow-controller/provider/src/test/resources/appc_southbound.properties b/appc-config/appc-flow-controller/provider/src/test/resources/appc_southbound.properties
new file mode 100644 (file)
index 0000000..9b2ce82
--- /dev/null
@@ -0,0 +1,28 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APP-C
+# ================================================================================
+# Copyright (C) 2018 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=========================================================
+###
+
+# test properties used by RestServiceNode
+
+healthcheck.mock=false
+healthcheck.default-rest-user=User
+healthcheck.default-rest-pass=@#asd723%^
+seq_generator.uid=seq-generator-uid
+seq_generator.pwd=some-pswd
+seq_generator_url=exec-endpoint
\ No newline at end of file