aboutsummaryrefslogtreecommitdiffstats
path: root/profiles
diff options
context:
space:
mode:
authorItohan Ukponmwan <itohan.ukponmwan@intel.com>2019-08-05 16:30:20 +0000
committerGerrit Code Review <gerrit@onap.org>2019-08-05 16:30:20 +0000
commit55f55f93890a2c4745ee89505cc889f54ba3c3dd (patch)
tree5eb804de9b3907b38621a3f5d8169ae3f6a64c21 /profiles
parentd53b78f51ed1a37f13163fe0ffd77ebd1c7f6f6f (diff)
parentb9d85a33892c99949aff8e3471eb0fdc039d44aa (diff)
Merge changes I816a1dbb,Ice38da57,I1217d391,I07d22e81,I0ddcdc1c, ...
* changes: Add integration support Update framework Add vf model add artifact command Add service model artifact add command Add VF model checkout command Add VF checkin command Add sdc service resource property set Add sdc consumer-show command Add sdc consumer create command Add ID output in service-model commands Update open-cli.properties Update the sample command OCS YAML Add product into service and schema list Update the version format Update the README Set SNAPSHOT versioning clean-up stale onap profiles Ignore python build artifacts from git
Diffstat (limited to 'profiles')
-rw-r--r--profiles/command/pom.xml6
-rw-r--r--profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java175
-rw-r--r--profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java1
-rw-r--r--profiles/command/src/main/resources/open-cli-schema/cmd/default_input_parameters_cmd.yaml10
-rw-r--r--profiles/http/pom.xml46
-rw-r--r--profiles/http/src/main/java/org/onap/cli/fw/http/auth/OnapCommandHttpAuthClient.java9
-rw-r--r--profiles/http/src/main/java/org/onap/cli/fw/http/cmd/OnapHttpCommand.java57
-rw-r--r--profiles/http/src/main/java/org/onap/cli/fw/http/conf/OnapCommandHttpConstants.java1
-rw-r--r--profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java41
-rw-r--r--profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java35
-rw-r--r--profiles/http/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java17
-rw-r--r--profiles/pom.xml29
-rw-r--r--profiles/snmp/pom.xml6
13 files changed, 314 insertions, 119 deletions
diff --git a/profiles/command/pom.xml b/profiles/command/pom.xml
index 2379eb68..70eec137 100644
--- a/profiles/command/pom.xml
+++ b/profiles/command/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onap.cli</groupId>
<artifactId>cli-profiles</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>cli-profiles-command</artifactId>
@@ -62,6 +62,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java
index 8e94db85..884cde12 100644
--- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java
+++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java
@@ -16,9 +16,13 @@
package org.onap.cli.fw.cmd.cmd;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -27,19 +31,26 @@ import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.cmd.conf.OnapCommandCmdConstants;
import org.onap.cli.fw.cmd.error.OnapCommandCmdFailure;
import org.onap.cli.fw.cmd.schema.OnapCommandSchemaCmdLoader;
+import org.onap.cli.fw.conf.OnapCommandConfig;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
import org.onap.cli.fw.error.OnapCommandResultEmpty;
import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed;
import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.output.OnapCommandResultAttribute;
+import org.onap.cli.fw.output.OnapCommandResultType;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.store.OnapCommandExecutionStore;
import org.onap.cli.fw.utils.OnapCommandUtils;
import org.onap.cli.fw.utils.ProcessRunner;
+import com.google.gson.Gson;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.PathNotFoundException;
import net.minidev.json.JSONArray;
+import net.minidev.json.JSONObject;
/**
* Hello world.
@@ -108,6 +119,25 @@ public class OpenCommandShellCmd extends OnapCommand {
this.resultMap = resultMap;
}
+ private String getStdoutPath() {
+ String storePath = this.getExecutionContext().getStorePath();
+ storePath = storePath + File.separator + "stdout";
+ return storePath;
+ }
+
+ private String getStderrPath() {
+ String storePath = this.getExecutionContext().getStorePath();
+ storePath = storePath + File.separator + "stderr";
+ return storePath;
+ }
+
+ private String getOutputAttributeFilePath(String attrName, boolean temp) {
+ String storePath = (!temp) ? this.getExecutionContext().getStorePath() : OnapCommandConfig.getPropertyValue("cli.tmp.dir");
+ String randomId = (this.getExecutionContext() != null) ? this.getExecutionContext().getExecutionId() : ("" + System.currentTimeMillis());
+ storePath = storePath + File.separator + randomId + "_" + attrName;
+ return storePath;
+ }
+
@Override
protected List<String> initializeProfileSchema(Map<String, ?> schemaMap, boolean validate) throws OnapCommandException {
return OnapCommandSchemaCmdLoader.parseCmdSchema(this, schemaMap, validate);
@@ -118,16 +148,40 @@ public class OpenCommandShellCmd extends OnapCommand {
//Read the input arguments
Map<String, OnapCommandParameter> paramMap = this.getParametersMap();
+ //process command section
+ Map<String, String> tmpFiles = new HashMap<>();
List<String> commandLine = new ArrayList<>();
for (String cmdTkn: this.getCommand()) {
- commandLine.add(OnapCommandUtils.replaceLineFromInputParameters(cmdTkn, paramMap));
+ tmpFiles.putAll(this.formTmpFiles(cmdTkn));
+ String commandLine1 = OnapCommandUtils.replaceLineForSpecialValues(
+ cmdTkn, tmpFiles);
+ commandLine1 = OnapCommandUtils.replaceLineFromInputParameters(commandLine1, paramMap);
+
+ commandLine.add(commandLine1);
}
+ long timeout = Long.parseLong(this.getParametersMap().get(OnapCommandCmdConstants.TIMEOUT).getValue().toString());
+
//Process command
String []cmd = commandLine.toArray(new String []{});
String cwd = this.getWd();
List <String> envs = new ArrayList<>();
+ //add current process environments to sub process
+ for (Map.Entry<String, String> env: System.getenv().entrySet()) {
+ envs.add(env.getKey() + "=" + env.getValue());
+ }
+
+ //add oclip specific environment variables
+ if (this.getExecutionContext() != null) {
+ envs.add("OPEN_CLI_REQUEST_ID=" + this.getExecutionContext().getRequestId());
+ if (OnapCommandRegistrar.getRegistrar().getHost() != null) {
+ envs.add("OPEN_CLI_RPC_HOST=" + OnapCommandRegistrar.getRegistrar().getHost());
+ envs.add("OPEN_CLI_RPC_PORT=" + OnapCommandRegistrar.getRegistrar().getPort());
+ }
+ //mrkanag set the profile OPEN_CLI_PROFILE
+ }
+
for (String env: this.getEnvs().keySet()) {
envs.add(env + "=" + this.getEnvs().get(env));
}
@@ -136,38 +190,102 @@ public class OpenCommandShellCmd extends OnapCommand {
cmd,
(envs.size() > 0) ? envs.toArray(new String []{}) : null,
cwd);
+ FileOutputStream stdoutStream = null;
+ FileOutputStream stderrStream = null;
+ String outputValue = "";
+
try {
+ pr.setTimeout(timeout);
+
+ if (this.getExecutionContext() != null) {
+
+ stdoutStream = new FileOutputStream(this.getStdoutPath());
+ stderrStream = new FileOutputStream(this.getStderrPath());
+
+ pr.setStdout(stdoutStream);
+ pr.setStderr(stderrStream);
+
+ OnapCommandExecutionStore.getStore().storeExectutionDebug(this.getExecutionContext(), pr.toString());
+ } else {
+ this.getResult().setDebugInfo(pr.toString());
+ }
+
pr.run();
} catch (Exception e) {
throw new OnapCommandExecutionFailed(this.getName(), e);
+ } finally {
+ if (stdoutStream != null) {
+ try {
+ stdoutStream.close();
+ } catch (IOException e) {
+ //never occurs // NOSONAR
+ }
+ }
+ if (stderrStream != null) {
+ try {
+ stderrStream.close();
+ } catch (IOException e) {
+ //never occurs // NOSONAR
+ }
+ }
}
if (!this.successStatusCodes.contains(pr.getExitCode())) {
throw new OnapCommandExecutionFailed(this.getName(), pr.getError(), pr.getExitCode());
}
- String outputValue = "";
-
if (this.output.equals("$stdout")) {
- outputValue = pr.getOutput();
+ if (pr.getStdout() != null) {
+ try (FileInputStream is = new FileInputStream(this.getStdoutPath())){
+ outputValue = pr.streamToString(is);
+ } catch (IOException e) {
+ //never occurs // NOSONAR
+ }
+ } else
+ outputValue = pr.getOutput();
+
+ } else if (this.output.equals("$stderr")) {
+ if (pr.getStderr() != null) {
+ try (FileInputStream is = new FileInputStream(this.getStderrPath())) {
+ outputValue = pr.streamToString(is);
+ } catch (IOException e) {
+ //never occurs // NOSONAR
+ }
+ } else
+ outputValue = pr.getError();
+
} else {
- outputValue = OnapCommandUtils.replaceLineFromInputParameters(this.output, paramMap);
- outputValue = OnapCommandUtils.replaceLineForSpecialValues(outputValue);
+ //remove ${tmp: and closing }
+ String tmpName = this.output.substring(7, this.output.length()-1);
+ String tmpFile = tmpFiles.get("tmp:" + tmpName);
+ if (tmpFile != null) {
+ try (FileInputStream is = new FileInputStream(tmpFile)) {
+ outputValue = pr.streamToString(is);
+ } catch (IOException e) {
+ //never occurs // NOSONAR
+ }
+ }
}
+ this.getResult().setDebugInfo(pr.toString() + "\n" + outputValue);
this.getResult().setOutput(outputValue);
//populate results
- for (Entry<String, String> resultMapEntry : this.getResultMap().entrySet()) {
- String value = OnapCommandUtils.replaceLineFromInputParameters(resultMapEntry.getValue(), paramMap);
- value = OnapCommandUtils.replaceLineForSpecialValues(value);
- this.getResult().getRecordsMap().get(resultMapEntry.getKey()).setValues(
- this.replaceLineFromOutputResults(value, outputValue));
- }
+ if (!this.getResult().getType().name().equalsIgnoreCase(OnapCommandResultType.TEXT.name()))
+ for (Entry<String, String> resultMapEntry : this.getResultMap().entrySet()) {
+ String attrName = resultMapEntry.getKey();
+ OnapCommandResultAttribute attr = this.getResult().getRecordsMap().get(attrName);
+
+ String value = OnapCommandUtils.replaceLineFromInputParameters(resultMapEntry.getValue(), paramMap);
+ value = OnapCommandUtils.replaceLineForSpecialValues(value);
+ attr.setValues(this.replaceLineFromOutputResults(value, outputValue));
+ }
//check for pass/failure
- if (!this.passCodes.contains(pr.getExitCode())) {
+ if (!this.passCodes.isEmpty() && !this.passCodes.contains(pr.getExitCode())) {
this.getResult().setPassed(false);
+ } else {
+ this.getResult().setPassed(true);
}
}
@@ -179,6 +297,30 @@ public class OpenCommandShellCmd extends OnapCommand {
this.output = output;
}
+ private Map<String, String> formTmpFiles(String line){
+
+ Map<String, String> result = new HashMap<>();
+
+ if (!line.contains("$s{tmp")) {
+ return result;
+ }
+
+ int currentIdx = 0;
+ while (currentIdx < line.length()) {
+ int idxS = line.indexOf("$s{tmp:", currentIdx); //check for output stream
+ if (idxS == -1) {
+ break;
+ }
+
+ int idxE = line.indexOf("}", idxS);
+ String tmpName = line.substring(idxS + 7, idxE);
+ tmpName = tmpName.trim();
+ result.put("tmp:" + tmpName, this.getOutputAttributeFilePath(tmpName, true));
+ currentIdx = idxE + 1;
+ }
+ return result;
+ }
+
private ArrayList<String> replaceLineFromOutputResults(String line, String output)
throws OnapCommandException {
@@ -217,8 +359,11 @@ public class OpenCommandShellCmd extends OnapCommand {
jsonPath = jsonPath.trim();
Object value = new Object();
try {
- // JSONArray or String
- value = JsonPath.read(output, jsonPath);
+ // Instead of parsing, just assign the json as it is
+ if (!jsonPath.equals("$"))
+ value = JsonPath.read(output, jsonPath);
+ else
+ value = output;
} catch (PathNotFoundException e1) { // NOSONAR
//set to blank for those entries which are missing from the output json
value = "";
diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java
index 6594ef71..4f2d36b4 100644
--- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java
+++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java
@@ -38,6 +38,7 @@ public class OnapCommandCmdConstants {
public static final String CMD_SECTIONS = "cli.schema.cmd.sections";
public static final String DEFAULT_PARAMETER_CMD_FILE_NAME = "default_input_parameters_cmd.yaml";
+ public static final String TIMEOUT = "timeout";
private OnapCommandCmdConstants() {
//as per coding standard !
}
diff --git a/profiles/command/src/main/resources/open-cli-schema/cmd/default_input_parameters_cmd.yaml b/profiles/command/src/main/resources/open-cli-schema/cmd/default_input_parameters_cmd.yaml
index b358a0c7..b6a97b0d 100644
--- a/profiles/command/src/main/resources/open-cli-schema/cmd/default_input_parameters_cmd.yaml
+++ b/profiles/command/src/main/resources/open-cli-schema/cmd/default_input_parameters_cmd.yaml
@@ -13,3 +13,13 @@
# limitations under the License.
open_cli_schema_version: 1.0
+
+parameters:
+ - name: timeout
+ type: string
+ description: timeout for command to complete the given task in milliseconds
+ short_option: u
+ long_option: timeout
+ default_value: 60000
+ is_optional: true
+ is_default_param: false \ No newline at end of file
diff --git a/profiles/http/pom.xml b/profiles/http/pom.xml
index 1103f2f4..b8563e48 100644
--- a/profiles/http/pom.xml
+++ b/profiles/http/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onap.cli</groupId>
<artifactId>cli-profiles</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>cli-profiles-http</artifactId>
@@ -59,30 +59,12 @@
<version>2.9.4</version>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jmockit</groupId>
- <artifactId>jmockit</artifactId>
- <version>1.19</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.onap.cli</groupId>
<artifactId>cli-main</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.jmockit</groupId>
- <artifactId>jmockit-coverage</artifactId>
- <version>1.19</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>com.github.dreamhead</groupId>
<artifactId>moco-runner</artifactId>
<version>0.12.0</version>
@@ -96,14 +78,36 @@
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
- </dependency>
- </dependencies>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit-coverage</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/auth/OnapCommandHttpAuthClient.java b/profiles/http/src/main/java/org/onap/cli/fw/http/auth/OnapCommandHttpAuthClient.java
index 9b7b4039..e5f17bec 100644
--- a/profiles/http/src/main/java/org/onap/cli/fw/http/auth/OnapCommandHttpAuthClient.java
+++ b/profiles/http/src/main/java/org/onap/cli/fw/http/auth/OnapCommandHttpAuthClient.java
@@ -45,9 +45,9 @@ public class OnapCommandHttpAuthClient {
private Map<String, String> loginCache = new HashMap<>();
- public OnapCommandHttpAuthClient(OnapHttpCommand cmd, boolean debug) throws OnapCommandHttpFailure {
+ public OnapCommandHttpAuthClient(OnapHttpCommand cmd) {
this.cmd = cmd;
- this.http = new OnapHttpConnection(debug);
+ this.http = new OnapHttpConnection();
}
/**
@@ -142,11 +142,6 @@ public class OnapCommandHttpAuthClient {
}
}
-
- public String getDebugInfo() {
- return this.http.getDebugInfo();
- }
-
/**
* Http call to external service.
*
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/cmd/OnapHttpCommand.java b/profiles/http/src/main/java/org/onap/cli/fw/http/cmd/OnapHttpCommand.java
index 14728ad0..53a2d042 100644
--- a/profiles/http/src/main/java/org/onap/cli/fw/http/cmd/OnapHttpCommand.java
+++ b/profiles/http/src/main/java/org/onap/cli/fw/http/cmd/OnapHttpCommand.java
@@ -16,6 +16,14 @@
package org.onap.cli.fw.http.cmd;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+
import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.cmd.OnapCommandType;
import org.onap.cli.fw.conf.OnapCommandConfig;
@@ -34,19 +42,12 @@ import org.onap.cli.fw.http.utils.OnapCommandHttpUtils;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.store.OnapCommandExecutionStore;
import org.onap.cli.fw.utils.OnapCommandUtils;
import org.onap.cli.http.mock.MockJsonGenerator;
import org.onap.cli.http.mock.MockRequest;
import org.onap.cli.http.mock.MockResponse;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-
/**
* Oclip http Command.
*
@@ -56,6 +57,8 @@ public class OnapHttpCommand extends OnapCommand {
private HttpInput input = new HttpInput();
+ private HttpResult output = new HttpResult();
+
private List<Integer> successStatusCodes = new ArrayList<>();
private Map<String, String> resultMap = new HashMap<>();
@@ -201,14 +204,11 @@ public class OnapHttpCommand extends OnapCommand {
@Override
protected void run() throws OnapCommandException {
+ this.authClient = new OnapCommandHttpAuthClient(this);
+
try {
// For auth/catalog type commands, login and logout logic is not required
boolean isAuthRequired = this.isAuthRequired();
-
- this.authClient = new OnapCommandHttpAuthClient(
- this,
- this.getResult().isDebug());
-
if (isAuthRequired) {
this.authClient.login();
}
@@ -218,24 +218,28 @@ public class OnapHttpCommand extends OnapCommand {
if (isAuthRequired) {
this.authClient.logout();
}
-
- if (this.getResult().isDebug() && authClient != null) {
- this.getResult().setDebugInfo(this.authClient.getDebugInfo());
- }
} catch (OnapCommandException e) {
- if (this.getResult().isDebug() && authClient != null) {
- this.getResult().setDebugInfo(this.authClient.getDebugInfo());
- }
throw e;
+ } finally {
+ this.getResult().setDebugInfo(this.input.toString() + "\n" + this.output.toString());
}
}
protected void processRequest() throws OnapCommandException {
HttpInput httpInput = OnapCommandHttpUtils.populateParameters(this.getParametersMap(), this.getInput());
- httpInput.setUri(this.authClient.getServiceUrl() + httpInput.getUri());
+ if (!httpInput.getUri().startsWith("http")) {
+ httpInput.setUri(this.authClient.getServiceUrl() + httpInput.getUri());
+ }
- HttpResult output = this.authClient.run(httpInput);
+ this.setInput(httpInput);
+
+ if (this.getExecutionContext() != null) {
+ OnapCommandExecutionStore.getStore().storeExectutionDebug(this.getExecutionContext(), this.getInput().toString());
+ } else {
+ this.getResult().setDebugInfo(this.getInput().toString());
+ }
+ this.output = this.authClient.run(this.getInput());
this.getResult().setOutput(output);
if (!this.getSuccessStatusCodes().contains(output.getStatus())) {
@@ -250,12 +254,17 @@ public class OnapHttpCommand extends OnapCommand {
}
Map<String, ArrayList<String>> results = OnapCommandHttpUtils.populateOutputs(this.getResultMap(), output);
- results = OnapCommandUtils.populateOutputsFromInputParameters(results, this.getParametersMap());
+ //results = OnapCommandUtils.populateOutputsFromInputParameters(results, this.getParametersMap());
for (OnapCommandResultAttribute attr : this.getResult().getRecords()) {
attr.setValues(results.get(attr.getName()));
}
- generateJsonMock(httpInput, output, this.getSchemaName());
+
+ try{
+ generateJsonMock(this.getInput(), output, this.getSchemaName());
+ } catch (OnapCommandFailedMocoGenerate e) {
+ //NO SONAR ignore it
+ }
}
private void generateJsonMock(HttpInput httpInput, HttpResult httpResult, String schemaName)
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/conf/OnapCommandHttpConstants.java b/profiles/http/src/main/java/org/onap/cli/fw/http/conf/OnapCommandHttpConstants.java
index 2d14bb88..6a87ed13 100644
--- a/profiles/http/src/main/java/org/onap/cli/fw/http/conf/OnapCommandHttpConstants.java
+++ b/profiles/http/src/main/java/org/onap/cli/fw/http/conf/OnapCommandHttpConstants.java
@@ -94,6 +94,7 @@ public class OnapCommandHttpConstants {
//context param
public static final String CONTEXT = "context";
public static final String CONTEXT_REMOVE_EMPTY_JSON_NODES = "remove_empty_node";
+ public static final String __BODY__ = "__body__";
// moco server const
public static final String VERIFY_MOCO_HOST = "cli.verify.host";
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java b/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java
index a2da0706..3f426bf3 100644
--- a/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java
+++ b/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java
@@ -27,15 +27,18 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
+
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.annotation.NotThreadSafe;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
@@ -79,10 +82,6 @@ public class OnapHttpConnection {
Map<String, String> mapCommonHeaders = new HashMap<> ();
- protected boolean debug = false;
-
- private String debugDetails = "";
-
public static class TrustAllX509TrustManager implements X509TrustManager {
@Override
@@ -101,18 +100,6 @@ public class OnapHttpConnection {
}
}
- /**
- * OnapHttpConnection Constructor.
- *
- * @param debug
- * boolean
- * @throws OnapCommandHttpFailure
- * exception
- */
- public OnapHttpConnection(boolean debug) {
- this.debug = debug;
- }
-
private void initHttpClient(boolean isSecured) throws OnapCommandHttpFailure {
if (this.httpClient == null) {
try {
@@ -137,10 +124,6 @@ public class OnapHttpConnection {
}
}
- public String getDebugInfo() {
- return this.debugDetails;
- }
-
private Map<String, String> getHttpHeaders(HttpResponse resp) {
Map<String, String> result = new HashMap<>();
@@ -244,9 +227,12 @@ public class OnapHttpConnection {
}
}
- private void addCommonCookies(CookieStore cookieStore) {
+ private void addCommonCookies(HttpInput input, CookieStore cookieStore) {
for (Entry<String, String> header : this.mapCommonHeaders.entrySet()) {
- Cookie cookie = new BasicClientCookie(header.getKey(), header.getValue());
+ //take care of overriden headers in OCS YAML
+ String value = input.getReqHeaders().getOrDefault(header.getKey(),
+ header.getValue());
+ Cookie cookie = new BasicClientCookie(header.getKey(), value);
cookieStore.addCookie(cookie);
}
}
@@ -267,7 +253,7 @@ public class OnapHttpConnection {
}
private void updateInputFromCookies(HttpInput input, CookieStore cookieStore) {
- addCommonCookies(cookieStore);
+ addCommonCookies(input, cookieStore);
for (String cookieName : input.getReqCookies().keySet()) {
BasicClientCookie cookie = new BasicClientCookie(cookieName, input.getReqCookies().get(cookieName));
cookie.setDomain(this.getDomain(input.getUri()));
@@ -320,6 +306,8 @@ public class OnapHttpConnection {
}
requestBase.setURI(URI.create(input.getUri()));
+ requestBase.setConfig(RequestConfig.custom()
+ .setSocketTimeout(30000).setConnectTimeout(50000).build());
for (Entry<String, String> h : input.getReqHeaders().entrySet()) {
requestBase.addHeader(h.getKey(), h.getValue());
@@ -328,7 +316,6 @@ public class OnapHttpConnection {
HttpResult result = new HttpResult();
try {
- this.debugDetails = "";
CookieStore cookieStore = new BasicCookieStore();
updateInputFromCookies(input, cookieStore);
HttpContext localContext = new BasicHttpContext();
@@ -344,12 +331,6 @@ public class OnapHttpConnection {
this.updateResultFromCookies(result, cookieStore.getCookies());
} catch (Exception e) { // NOSONAR
throw new OnapCommandHttpFailure(e);
- } finally {
- String info = input + " " + result;
- log.info(info);
- if (this.debug) {
- this.debugDetails = info;
- }
}
return result;
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java b/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java
index f4a6cee5..5cab0a68 100644
--- a/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java
+++ b/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java
@@ -76,24 +76,22 @@ public class OnapCommandHttpUtils {
}
}
+ inp.setUri(OnapCommandUtils.replaceLineForSpecialValues(input.getUri()));
inp.setUri(OnapCommandUtils.replaceLineFromInputParameters(input.getUri(), params));
inp.setMethod(input.getMethod().toLowerCase());
- for (String h : input.getReqHeaders().keySet()) {
- String value = input.getReqHeaders().get(h);
- inp.getReqHeaders().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
- }
+ boolean isRemoveEmptyNodes = Boolean.parseBoolean(input.getContext().getOrDefault(OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES, "false"));
- for (String h : input.getReqQueries().keySet()) {
- String value = input.getReqQueries().get(h);
- inp.getReqQueries().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
+ //Process for md5
+ Map <String, String> values = new HashMap<>();
+ for (Map.Entry<String, OnapCommandParameter> param: params.entrySet()) {
+ values.put(param.getKey(), param.getValue().getValue().toString());
}
- boolean isRemoveEmptyNodes = Boolean.parseBoolean(input.getContext().getOrDefault(OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES, "false"));
-
if (input.getMultiparts().size() > 0) {
for (HttpInput.Part part: input.getMultiparts()) {
+ part.setContent(OnapCommandUtils.replaceLineForSpecialValues(part.getContent(), values));
part.setContent(OnapCommandUtils.replaceLineFromInputParameters(part.getContent(), params));
if (isRemoveEmptyNodes) {
part.setContent(OnapCommandHttpUtils.normalizeJson(part.getContent()));
@@ -103,11 +101,28 @@ public class OnapCommandHttpUtils {
inp.setMultiparts(input.getMultiparts());
} else {
inp.setMultipartEntityName(input.getMultipartEntityName());
- inp.setBody(OnapCommandUtils.replaceLineFromInputParameters(input.getBody(), params));
+ inp.setBody(OnapCommandUtils.replaceLineForSpecialValues(input.getBody(), values));
+ inp.setBody(OnapCommandUtils.replaceLineFromInputParameters(inp.getBody(), params));
if (isRemoveEmptyNodes) {
inp.setBody(OnapCommandHttpUtils.normalizeJson(inp.getBody()));
}
}
+
+ //consider __body__ spl entry
+ values.put(OnapCommandHttpConstants.__BODY__, inp.getBody());
+
+ for (String h : input.getReqHeaders().keySet()) {
+ String value = input.getReqHeaders().get(h);
+ value = OnapCommandUtils.replaceLineForSpecialValues(value, values);
+ inp.getReqHeaders().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
+ }
+
+ for (String h : input.getReqQueries().keySet()) {
+ String value = input.getReqQueries().get(h);
+ value = OnapCommandUtils.replaceLineForSpecialValues(value, values);
+ inp.getReqQueries().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
+ }
+
return inp;
}
diff --git a/profiles/http/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java b/profiles/http/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java
index fab02ff2..f0115580 100644
--- a/profiles/http/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java
+++ b/profiles/http/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java
@@ -72,8 +72,7 @@ public class OnapHttpConnectionTest {
}
};
inp.setMethod("get");
- con = new OnapHttpConnection(true);
- con.getDebugInfo();
+ con = new OnapHttpConnection();
con.get(inp);
}
@@ -90,7 +89,7 @@ public class OnapHttpConnectionTest {
};
inp.setMethod("post");
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.post(inp);
}
@@ -108,7 +107,7 @@ public class OnapHttpConnectionTest {
inp.setMethod("post");
inp.setBinaryData(true);
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.post(inp);
}
@@ -123,7 +122,7 @@ public class OnapHttpConnectionTest {
}
};
inp.setMethod("put");
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.put(inp);
}
@@ -138,7 +137,7 @@ public class OnapHttpConnectionTest {
}
};
inp.setMethod("delete");
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.delete(inp);
}
@@ -153,14 +152,14 @@ public class OnapHttpConnectionTest {
}
};
inp.setMethod("other");
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.request(inp);
}
@Test()
public void httpUnSecuredCloseExceptionTest() throws OnapCommandHttpFailure {
inp.setMethod("other");
- con = new OnapHttpConnection(true);
+ con = new OnapHttpConnection();
con.close();
}
@@ -185,7 +184,7 @@ public class OnapHttpConnectionTest {
inp.setReqHeaders(new HashMap<String, String>());
inp.setReqQueries(new HashMap<String, String>());
inp.setUri("https://192.168.99.10:80");
- OnapHttpConnection con = new OnapHttpConnection(false);
+ OnapHttpConnection con = new OnapHttpConnection();
con.get(inp);
} catch (OnapCommandHttpFailure e) {
assertEquals("0x3001::IO Exception", e.getMessage());
diff --git a/profiles/pom.xml b/profiles/pom.xml
index 20abad3f..94f71c51 100644
--- a/profiles/pom.xml
+++ b/profiles/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.onap.cli</groupId>
<artifactId>cli</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>cli-profiles</artifactId>
@@ -35,6 +35,7 @@
<module>http</module>
<module>snmp</module>
<module>command</module>
+
</modules>
<dependencies>
<dependency>
@@ -53,6 +54,32 @@
<pluginManagement>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <id>copy-resource-conf</id>
+ <phase>install</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+
+ <configuration>
+ <outputDirectory>../../profiles/target/conf</outputDirectory>
+ <resources>
+ <resource>
+ <directory>${project.basedir}/src/main/resources</directory>
+ <includes>
+ <include>*.properties</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
diff --git a/profiles/snmp/pom.xml b/profiles/snmp/pom.xml
index 4b9884d6..1dcaa59a 100644
--- a/profiles/snmp/pom.xml
+++ b/profiles/snmp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onap.cli</groupId>
<artifactId>cli-profiles</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>cli-profiles-snmp</artifactId>
@@ -62,6 +62,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ </plugin>
</plugins>
</build>
</project>