diff options
12 files changed, 99 insertions, 26 deletions
diff --git a/deployment/zip/src/main/release/conf/open-cli.properties b/deployment/zip/src/main/release/conf/open-cli.properties index eff85b8a..76048e69 100644 --- a/deployment/zip/src/main/release/conf/open-cli.properties +++ b/deployment/zip/src/main/release/conf/open-cli.properties @@ -20,6 +20,7 @@ cli.artifact.dir=$s{env:OPEN_CLI_HOME}/data/artifacts cli.tmp.dir=$s{env:OPEN_CLI_HOME}/data/tmp #timeout in seconds cli.grpc.client.timeout=60 +cli.execution.search.mode=find #schema validation cli.schema.base.sections=open_cli_schema_version,name,description,parameters,results,info @@ -38,7 +39,7 @@ cli.schema.boolean_values=true,false cli.schema.command.type=cmd,auth,catalog # moco properties -cli.sample.gen.enable=false +cli.sample.gen.enable=true cli.sample.gen.target=$s{env:OPEN_CLI_HOME}/open-cli-sample # mrkanag Move this to db, once exteranl command registration is supported in place of discovery diff --git a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConstants.java b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConstants.java index 53018025..51a18627 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConstants.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConstants.java @@ -43,6 +43,7 @@ public class OnapCommandConstants { public static final String OPEN_CLI_DATA_DIR = "cli.data.dir"; public static final String OPEN_CLI_ARTIFACT_DIR = "cli.artifact.dir"; public static final String OPEN_CLI_GRPC_CLIENT_TIMEOUT = "cli.grpc.client.timeout"; + public static final String OPEN_CLI_EXECUTION_SEARCH_MODE = "cli.execution.search.mode"; //schema public static final String OPEN_CLI_SCHEMA_VERSION = "open_cli_schema_version"; public static final String OPEN_CLI_SCHEMA_VERSION_VALUE_1_0 = "1.0"; diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidSample.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidSample.java index 32e5cf65..9f702209 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidSample.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidSample.java @@ -20,7 +20,7 @@ package org.onap.cli.fw.error; * Command sample is invalid. * */ -public class OnapCommandInvalidSample extends OnapCommandException { +public class OnapCommandInvalidSample extends OnapCommandWarning { private static final long serialVersionUID = -3387652326582792835L; diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandWarning.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandWarning.java index 3b49f464..ccd2cee5 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandWarning.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandWarning.java @@ -31,4 +31,8 @@ public abstract class OnapCommandWarning extends OnapCommandException { public OnapCommandWarning(String errorCode, String errorMessage) { super(errorCode, errorMessage); } + + public OnapCommandWarning(String errorCode, String errorMessage, Throwable err) { + super(errorCode, errorMessage, err); + } } diff --git a/framework/src/main/java/org/onap/cli/fw/store/OnapCommandExecutionStore.java b/framework/src/main/java/org/onap/cli/fw/store/OnapCommandExecutionStore.java index d09e4304..d032a99c 100644 --- a/framework/src/main/java/org/onap/cli/fw/store/OnapCommandExecutionStore.java +++ b/framework/src/main/java/org/onap/cli/fw/store/OnapCommandExecutionStore.java @@ -48,12 +48,21 @@ public class OnapCommandExecutionStore { private enum SearchMode { find, file //for developer mode + + } + private static SearchMode SEARCH_MODE = SearchMode.file; + static { + String mode = OnapCommandConfig.getPropertyValue(OnapCommandConstants.OPEN_CLI_EXECUTION_SEARCH_MODE); + if (mode.equalsIgnoreCase(SearchMode.find.name())) + SEARCH_MODE = SearchMode.find; + } public static class ExecutionStoreContext { private String requestId; private String executionId; + private String profile; private String storePath; public String getExecutionId() { return executionId; @@ -76,6 +85,12 @@ public class OnapCommandExecutionStore { this.requestId = requestId; return this; } + public String getProfile() { + return profile; + } + public void setProfile(String profile) { + this.profile = profile; + } } public static class Execution { @@ -219,8 +234,10 @@ public class OnapCommandExecutionStore { if (input != null) FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "input"), input); - if (profile != null) + if (profile != null) { + context.setProfile(profile); FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "profile"), profile); + } FileUtils.touch(new File(context.getStorePath() + File.separator + "stdout")); FileUtils.touch(new File(context.getStorePath() + File.separator + "stderr")); @@ -371,6 +388,7 @@ public class OnapCommandExecutionStore { if (new File(executionStorePath + File.separator + "executionId").exists()) exectuion.setId(FileUtils.readFileToString(new File(executionStorePath + File.separator + "executionId"))); exectuion.setProduct(FileUtils.readFileToString(new File(executionStorePath + File.separator + "product"))); + exectuion.setProfile(FileUtils.readFileToString(new File(executionStorePath + File.separator + "profile"))); exectuion.setService(FileUtils.readFileToString(new File(executionStorePath + File.separator + "service"))); exectuion.setCommand(FileUtils.readFileToString(new File(executionStorePath + File.separator + "command"))); if (new File(executionStorePath + File.separator + "profile").exists()) diff --git a/framework/src/main/resources/open-cli.properties b/framework/src/main/resources/open-cli.properties index 259fd227..bd8a6acf 100644 --- a/framework/src/main/resources/open-cli.properties +++ b/framework/src/main/resources/open-cli.properties @@ -20,7 +20,7 @@ cli.artifact.dir=./data/artifacts cli.tmp.dir=./data/tmp #timeout in seconds cli.grpc.client.timeout=60 - +cli.execution.search.mode=file #schema validation cli.schema.base.sections=open_cli_schema_version,name,description,parameters,results,info cli.schema.base.sections.mandatory=open_cli_schema_version diff --git a/grpc/grpc-server/src/main/java/org/open/infc/grpc/server/OpenInterfaceGrpcServer.java b/grpc/grpc-server/src/main/java/org/open/infc/grpc/server/OpenInterfaceGrpcServer.java index f34df89f..9f325067 100644 --- a/grpc/grpc-server/src/main/java/org/open/infc/grpc/server/OpenInterfaceGrpcServer.java +++ b/grpc/grpc-server/src/main/java/org/open/infc/grpc/server/OpenInterfaceGrpcServer.java @@ -162,18 +162,18 @@ public class OpenInterfaceGrpcServer { new ArrayList<String>()); //fill from profile + Map<String, String> cache= OnapCommandRegistrar.getRegistrar().getParamCache(product); for (OnapCommandParameter param: cmd.getParameters()) { - Map<String, String> cache= OnapCommandRegistrar.getRegistrar().getParamCache(product); if (cache.containsKey( cmd.getInfo().getService() + ":" + cmd.getName() + ":" + param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get( + param.setValue(cache.get( cmd.getInfo().getService() + ":" + cmd.getName() + ":" + param.getLongOption())); } else if (cache.containsKey( cmd.getInfo().getService() + ":" + param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get( + param.setValue(cache.get( cmd.getInfo().getService() + ":" + param.getLongOption())); - } else if (OnapCommandRegistrar.getRegistrar().getParamCache().containsKey(param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get(param.getLongOption())); + } else if (cache.containsKey(param.getLongOption())) { + param.setValue(cache.get(param.getLongOption())); } } } @@ -261,7 +261,6 @@ public class OpenInterfaceGrpcServer { } catch (OnapCommandException e) { logger.info(e.getMessage()); - Builder reply = Output.newBuilder(); reply.putAttrs(OnapCommandConstants.RESULTS, "{}"); reply.setSuccess(false); diff --git a/main/src/main/java/org/onap/cli/main/OnapCli.java b/main/src/main/java/org/onap/cli/main/OnapCli.java index 0c7082f8..268b23cf 100644 --- a/main/src/main/java/org/onap/cli/main/OnapCli.java +++ b/main/src/main/java/org/onap/cli/main/OnapCli.java @@ -161,6 +161,10 @@ public class OnapCli { System.out.println(msg); } + protected void printerr(String msg) { + System.err.println(msg); + } + private void print(Throwable throwable) { String error = throwable.getMessage() != null ? throwable.getMessage() : ""; this.print(error); @@ -349,7 +353,7 @@ public class OnapCli { } else { resultAtt.getValues().add(OnapCommandConstants.VERIFY_RESULT_FAIL); } - this.print(testResult.getDebugInfo()); + this.printerr(testResult.getDebugInfo()); this.print("\n***************Expected Output: \n" + expectedOutput); this.print("\n***************Actual Output: \n" + actualOutput); } @@ -509,20 +513,28 @@ public class OnapCli { } //refer params from profile - if (this.profile != null) + if (this.profile != null) { + + Map<String, String> paramCache = new HashMap<>(); + if (this.product == null) + paramCache = OnapCommandRegistrar.getRegistrar().getParamCache(); + else + paramCache = OnapCommandRegistrar.getRegistrar().getParamCache(this.product); + for (OnapCommandParameter param: cmd.getParameters()) { - if (OnapCommandRegistrar.getRegistrar().getParamCache().containsKey( + if (paramCache.containsKey( cmd.getInfo().getService() + ":" + cmd.getName() + ":" + param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get( + param.setValue(paramCache.get( cmd.getInfo().getService() + ":" + cmd.getName() + ":" + param.getLongOption())); - } else if (OnapCommandRegistrar.getRegistrar().getParamCache().containsKey( + } else if (paramCache.containsKey( cmd.getInfo().getService() + ":" + param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get( + param.setValue(paramCache.get( cmd.getInfo().getService() + ":" + param.getLongOption())); - } else if (OnapCommandRegistrar.getRegistrar().getParamCache().containsKey(param.getLongOption())) { - param.setValue(OnapCommandRegistrar.getRegistrar().getParamCache().get(param.getLongOption())); + } else if (paramCache.containsKey(param.getLongOption())) { + param.setValue(paramCache.get(param.getLongOption())); } } + } //load the parameters value from the map read from param-file if (!this.argsParamFile.isEmpty()) { @@ -558,8 +570,17 @@ public class OnapCli { this.exitFailure(); } } catch (OnapCommandWarning w) { + if (cmd.getExecutionContext() != null) { + OnapCommandExecutionStore.getStore().storeExectutionEnd( + cmd.getExecutionContext(), + w.getMessage(), + null, + cmd.getResult().getDebugInfo(), + cmd.getResult().isPassed()); + } + this.print(w); - this.print(cmd.getResult().getDebugInfo()); + this.printerr(cmd.getResult().getDebugInfo()); this.exitSuccessfully(); } catch (Exception e) { if (executionStoreContext != null) { @@ -572,7 +593,7 @@ public class OnapCli { } this.print(e); - this.print(cmd.getResult().getDebugInfo()); + this.printerr(cmd.getResult().getDebugInfo()); this.exitFailure(); } } @@ -580,7 +601,7 @@ public class OnapCli { public void handleTracking(OnapCommand cmd) throws OnapCommandException { if (cmd.getResult().isDebug()) - this.print(cmd.getResult().getDebugInfo()); + this.printerr(cmd.getResult().getDebugInfo()); String printOut = cmd.getResult().print(); this.print(printOut); 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 40ccf5c4..bc864529 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 @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.commons.io.FileUtils; import org.onap.cli.fw.cmd.OnapCommand; import org.onap.cli.fw.cmd.conf.OnapCommandCmdConstants; import org.onap.cli.fw.cmd.error.OnapCommandCmdFailure; @@ -175,11 +176,13 @@ public class OpenCommandShellCmd extends OnapCommand { //add oclip specific environment variables if (this.getExecutionContext() != null) { envs.add("OPEN_CLI_REQUEST_ID=" + this.getExecutionContext().getRequestId()); + if (this.getExecutionContext().getProfile() != null) { + envs.add("OPEN_CLI_PROFILE=" + this.getExecutionContext().getProfile()); + } 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()) { @@ -315,7 +318,32 @@ public class OpenCommandShellCmd extends OnapCommand { int idxE = line.indexOf("}", idxS); String tmpName = line.substring(idxS + 7, idxE); tmpName = tmpName.trim(); - result.put("tmp:" + tmpName, this.getOutputAttributeFilePath(tmpName, true)); + String tmpTkns[] = tmpName.split(":"); + String tmpFileName; + String paramName; + if (tmpTkns.length == 2) { + tmpFileName = tmpTkns[0]; + paramName = tmpTkns[1]; + } else { + tmpFileName = tmpTkns[0]; + paramName = null; + } + + String tmpFilePath = this.getOutputAttributeFilePath(tmpFileName, true); + if (paramName != null) { + //Write the value of input params into file before passing to command + try { + FileUtils.touch(new File(tmpFilePath)); + FileUtils.writeStringToFile(new File(tmpFilePath), + this.getParametersMap().get(paramName).getValue().toString()); + } catch (IOException e) { + // NO SONAR + } + } + + result.put("tmp:" + tmpFileName, tmpFilePath); //used in output parsing + result.put("tmp:" + tmpName, tmpFilePath); //used in line replacement + currentIdx = idxE + 1; } return result; diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/error/OnapCommandFailedMocoGenerate.java b/profiles/http/src/main/java/org/onap/cli/fw/http/error/OnapCommandFailedMocoGenerate.java index 12a645c4..9d6274ac 100644 --- a/profiles/http/src/main/java/org/onap/cli/fw/http/error/OnapCommandFailedMocoGenerate.java +++ b/profiles/http/src/main/java/org/onap/cli/fw/http/error/OnapCommandFailedMocoGenerate.java @@ -17,12 +17,13 @@ package org.onap.cli.fw.http.error; import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.error.OnapCommandWarning; /** * Invalid data for generating moco json . * */ -public class OnapCommandFailedMocoGenerate extends OnapCommandException { +public class OnapCommandFailedMocoGenerate extends OnapCommandWarning { private static final long serialVersionUID = -5386652726982792831L; 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 5cab0a68..d1f88df4 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 @@ -171,7 +171,7 @@ public class OnapCommandHttpUtils { /** * In case of empty response body [] or {} **/ - if (resultHttp.getBody().length() <= 2) { + if (resultHttp.getBody() != null && resultHttp.getBody().length() <= 2) { return result; } diff --git a/validate/sample-mock-generator/src/main/java/org/onap/cli/http/mock/MockResponse.java b/validate/sample-mock-generator/src/main/java/org/onap/cli/http/mock/MockResponse.java index d7999bea..e49e4d41 100644 --- a/validate/sample-mock-generator/src/main/java/org/onap/cli/http/mock/MockResponse.java +++ b/validate/sample-mock-generator/src/main/java/org/onap/cli/http/mock/MockResponse.java @@ -38,7 +38,7 @@ public class MockResponse { } public void setJson(String json) throws IOException { - if (!json.isEmpty()) { + if (json != null && !json.isEmpty()) { try { ObjectMapper objectMapper = new ObjectMapper(); this.json = objectMapper.readTree(json); |