summaryrefslogtreecommitdiffstats
path: root/framework
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 /framework
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 'framework')
-rw-r--r--framework/pom.xml42
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java14
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/OnapCommandType.java5
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowDebugCommand.java34
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowErrCommand.java34
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowOutCommand.java32
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/product/OnapServiceListCommand.java1
-rw-r--r--framework/src/main/java/org/onap/cli/fw/cmd/schema/OnapSchemaListCommand.java1
-rw-r--r--framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfig.java7
-rw-r--r--framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConstants.java4
-rw-r--r--framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java7
-rw-r--r--framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameterType.java4
-rw-r--r--framework/src/main/java/org/onap/cli/fw/registrar/OnapCommandRegistrar.java4
-rw-r--r--framework/src/main/java/org/onap/cli/fw/schema/OnapCommandSchemaLoader.java3
-rw-r--r--framework/src/main/java/org/onap/cli/fw/store/OnapCommandExecutionStore.java137
-rw-r--r--framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java1
-rw-r--r--framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java71
-rw-r--r--framework/src/main/java/org/onap/cli/fw/utils/ProcessRunner.java73
-rw-r--r--framework/src/main/resources/META-INF/services/org.onap.cli.fw.cmd.OnapCommand7
-rw-r--r--framework/src/main/resources/open-cli-schema/default_input_parameters.yaml2
-rw-r--r--framework/src/main/resources/open-cli-schema/execution/execution-show-debug.yaml38
-rw-r--r--framework/src/main/resources/open-cli-schema/execution/execution-show-err.yaml38
-rw-r--r--framework/src/main/resources/open-cli-schema/execution/execution-show-out.yaml38
-rw-r--r--framework/src/main/resources/open-cli-schema/execution/execution-show.yaml2
-rw-r--r--framework/src/main/resources/open-cli-schema/open-cli-registry.yaml6
-rw-r--r--framework/src/main/resources/open-cli-schema/product/service-list.yaml4
-rw-r--r--framework/src/main/resources/open-cli-schema/schema/schema-list.yaml12
-rw-r--r--framework/src/main/resources/open-cli.properties13
-rw-r--r--framework/src/main/resources/version.info2
29 files changed, 548 insertions, 88 deletions
diff --git a/framework/pom.xml b/framework/pom.xml
index 60193e73..75d94ee7 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -24,17 +24,20 @@
<parent>
<groupId>org.onap.cli</groupId>
<artifactId>cli</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>cli-framework</artifactId>
+
<name>cli/framework</name>
+
<packaging>jar</packaging>
+
<dependencies>
<dependency>
<groupId>org.onap.cli</groupId>
<artifactId>oclip-grpc-client</artifactId>
- <version>3.0.0</version>
+ <version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
@@ -52,6 +55,11 @@
<version>1.3</version>
</dependency>
<dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.9</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
@@ -62,6 +70,21 @@
<version>3.2.9.RELEASE</version>
</dependency>
<dependency>
+ <groupId>com.jayway.jsonpath</groupId>
+ <artifactId>json-path</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.9.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-yaml</artifactId>
+ <version>2.9.4</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
@@ -79,20 +102,5 @@
<version>1.19</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <version>2.2.0</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.4</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.dataformat</groupId>
- <artifactId>jackson-dataformat-yaml</artifactId>
- <version>2.9.4</version>
- </dependency>
</dependencies>
</project>
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java
index b814ba82..d73df4fb 100644
--- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java
@@ -39,6 +39,7 @@ import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
import org.onap.cli.fw.schema.OnapCommandSchemaMerger;
import org.onap.cli.fw.store.OnapCommandArtifactStore;
import org.onap.cli.fw.store.OnapCommandArtifactStore.Artifact;
+import org.onap.cli.fw.store.OnapCommandExecutionStore.ExecutionStoreContext;
import org.onap.cli.fw.utils.OnapCommandHelperUtils;
import org.onap.cli.fw.utils.OnapCommandUtils;
import org.slf4j.Logger;
@@ -73,6 +74,8 @@ public abstract class OnapCommand {
private boolean isRpc = false;
+ private ExecutionStoreContext executionStoreContext;
+
public boolean isRpc() {
return isRpc;
}
@@ -234,6 +237,7 @@ public abstract class OnapCommand {
protected void postRun() throws OnapCommandException {
log.debug(this.getName() + " POST-RUN");
}
+
/**
* Oclip command execute with given parameters on service. Before calling this method, its mandatory to set all
* parameters value.
@@ -314,6 +318,8 @@ public abstract class OnapCommand {
log.info("OUTPUT: " + this.cmdResult.getRecords());
postRun();
+
+
return this.cmdResult;
}
@@ -343,4 +349,12 @@ public abstract class OnapCommand {
return OnapCommandHelperUtils.help(this);
}
// (mrkanag) Add toString for all command, parameter, result, etc objects in JSON format
+
+ public void setExecutionContext(ExecutionStoreContext executionStoreContext) {
+ this.executionStoreContext = executionStoreContext;
+ }
+
+ public ExecutionStoreContext getExecutionContext() {
+ return this.executionStoreContext;
+ }
}
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommandType.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommandType.java
index 34ccc760..e874a14e 100644
--- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommandType.java
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommandType.java
@@ -27,8 +27,7 @@ public enum OnapCommandType {
AUTH,
CATALOG,
- CMD,
- SYSTEM;
+ CMD;
/**
* Get parameter type.
@@ -46,8 +45,6 @@ public enum OnapCommandType {
return CATALOG;
} else if (CMD.name().equalsIgnoreCase(name)) {
return CMD;
- } else if (SYSTEM.name().equalsIgnoreCase(name)) {
- return SYSTEM;
} else {
throw new OnapCommandInvalidCommandType(name);
}
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowDebugCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowDebugCommand.java
new file mode 100644
index 00000000..e6be04aa
--- /dev/null
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowDebugCommand.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2019 Huawei Technologies Co., Ltd.
+ *
+ * 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.
+ */
+
+package org.onap.cli.fw.cmd.execution;
+
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.store.OnapCommandExecutionStore;
+
+@OnapCommandSchema(schema = "execution-show-debug.yaml")
+public class OnapCommandExceutionShowDebugCommand extends OnapCommand {
+
+ @Override
+ protected void run() throws OnapCommandException {
+ String executionId = getParametersMap().get("execution-id").getValue().toString();
+ this.getResult().setOutput(OnapCommandExecutionStore.getStore().showExecutionDebug(executionId));
+ }
+
+
+}
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowErrCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowErrCommand.java
new file mode 100644
index 00000000..bd3ff9ec
--- /dev/null
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowErrCommand.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2019 Huawei Technologies Co., Ltd.
+ *
+ * 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.
+ */
+
+package org.onap.cli.fw.cmd.execution;
+
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.store.OnapCommandExecutionStore;
+
+@OnapCommandSchema(schema = "execution-show-err.yaml")
+public class OnapCommandExceutionShowErrCommand extends OnapCommand {
+
+ @Override
+ protected void run() throws OnapCommandException {
+ String executionId = getParametersMap().get("execution-id").getValue().toString();
+ this.getResult().setOutput(OnapCommandExecutionStore.getStore().showExecutionErr(executionId));
+ }
+
+
+}
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowOutCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowOutCommand.java
new file mode 100644
index 00000000..878ceb13
--- /dev/null
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/execution/OnapCommandExceutionShowOutCommand.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2019 Huawei Technologies Co., Ltd.
+ *
+ * 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.
+ */
+
+package org.onap.cli.fw.cmd.execution;
+
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.store.OnapCommandExecutionStore;
+
+@OnapCommandSchema(schema = "execution-show-out.yaml")
+public class OnapCommandExceutionShowOutCommand extends OnapCommand {
+
+ @Override
+ protected void run() throws OnapCommandException {
+ String executionId = getParametersMap().get("execution-id").getValue().toString();
+ this.getResult().setOutput(OnapCommandExecutionStore.getStore().showExecutionOut(executionId));
+ }
+}
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/product/OnapServiceListCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/product/OnapServiceListCommand.java
index 010cdc19..fa4f60b9 100644
--- a/framework/src/main/java/org/onap/cli/fw/cmd/product/OnapServiceListCommand.java
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/product/OnapServiceListCommand.java
@@ -73,6 +73,7 @@ public class OnapServiceListCommand extends OnapCommand {
}
for (String service : rslt.getOrDefault(product, new HashSet<String>())) {
+ this.getResult().getRecordsMap().get("product").getValues().add(product);
this.getResult().getRecordsMap().get("service").getValues().add(service);
this.getResult().getRecordsMap().get("description").getValues().add(
serviceDescs.containsKey(service) ? serviceDescs.get(service) : "");
diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/schema/OnapSchemaListCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/schema/OnapSchemaListCommand.java
index ef22e4af..5046f44a 100644
--- a/framework/src/main/java/org/onap/cli/fw/cmd/schema/OnapSchemaListCommand.java
+++ b/framework/src/main/java/org/onap/cli/fw/cmd/schema/OnapSchemaListCommand.java
@@ -47,6 +47,7 @@ public class OnapSchemaListCommand extends OnapCommand {
if (service.length() > 0 && !service.equalsIgnoreCase(schema.getService())) {
continue;
}
+ this.getResult().getRecordsMap().get("product").getValues().add(schema.getProduct());
this.getResult().getRecordsMap().get("command").getValues().add(schema.getCmdName());
this.getResult().getRecordsMap().get("schema").getValues().add(schema.getSchemaName());
this.getResult().getRecordsMap().get("service").getValues().add(schema.getService());
diff --git a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfig.java b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfig.java
index c59521e0..b395177f 100644
--- a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfig.java
+++ b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfig.java
@@ -22,6 +22,8 @@ import java.util.Map.Entry;
import java.util.Properties;
import java.util.stream.Collectors;
+import org.onap.cli.fw.utils.OnapCommandUtils;
+
/**
* Oclip command constants.
*
@@ -38,7 +40,8 @@ public final class OnapCommandConfig {
}
static {
- loadProperties(prps, OnapCommandConstants.CONF);
+ addProperties(OnapCommandConstants.CONF);
+
for (String prpFile: getCommaSeparatedList(OnapCommandConstants.OPEN_CLI_PLUGIN_PRPS)) {
addProperties(prpFile);
}
@@ -57,7 +60,7 @@ public final class OnapCommandConfig {
loadProperties(ps, fileName);
for (Entry<Object, Object> entry: ps.entrySet()) {
- prps.put(entry.getKey(), entry.getValue());
+ prps.put(entry.getKey(), OnapCommandUtils.replaceLineForSpecialValues(entry.getValue().toString()));
}
}
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 56183399..53018025 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
@@ -36,14 +36,13 @@ public class OnapCommandConstants {
public static final String RESULT_PARAMS_LIST = "cli.schema.base.results.sections";
public static final String RESULT_PARAMS_MANDATORY_LIST = "cli.schema.base.results.sections.mandatory";
public static final String BOOLEAN_VALUE = "cli.schema.boolean_values";
-
public static final String COMMAND_TYPE_VALUES = "cli.schema.command.type";
public static final String SCHEMA_TYPES_SUPPORTED = "cli.schema.profile.available";
public static final String OPEN_CLI_PRODUCT_NAME = "cli.product_name";
public static final String OPEN_CLI_PLUGIN_PRPS = "cli.schema.profile.confs";
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";
//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";
@@ -151,6 +150,7 @@ public class OnapCommandConstants {
public static final String SPL_ENTRY_UUID = "uuid";
public static final String SPL_ENTRY_ENV = "env:";
public static final String SPL_ENTRY_FILE = "file:";
+ public static final String SPL_ENTRY_MD5 = "md5:";
public static final String VERSION_INFO = "version.info";
public static final String VERSION_INFO_PLACE_HOLDER_VERSION = "__VERSION__";
diff --git a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java
index 618c321c..3b13c9f8 100644
--- a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java
+++ b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java
@@ -288,7 +288,12 @@ public class OnapCommandParameter {
public void setValue(Object value) throws OnapCommandInvalidParameterValue {
this.rawValue = value;
- if (OnapCommandParameterType.URL.equals(parameterType) && !value.toString().isEmpty() && !value.toString().startsWith("http")
+ if (OnapCommandParameterType.URL.equals(parameterType) &&
+ !value.toString().isEmpty() &&
+ !value.toString().startsWith("http") &&
+ !value.toString().startsWith("ftp") &&
+ !value.toString().startsWith("mqtt") &&
+ !value.toString().startsWith("tcp")
&& !value.toString().startsWith("/")) {
value = "/" + value;
} else if (OnapCommandParameterType.ARRAY.equals(parameterType)) {
diff --git a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameterType.java b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameterType.java
index 391383d4..b6860b3c 100644
--- a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameterType.java
+++ b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameterType.java
@@ -23,7 +23,7 @@ import org.onap.cli.fw.error.OnapCommandInvalidParameterType;
*
*/
public enum OnapCommandParameterType {
- STRING, JSON, YAML, TEXT, URL, UUID,
+ STRING, BYTE, JSON, YAML, TEXT, URL, UUID,
DIGIT,
BOOL,
ARRAY,
@@ -42,6 +42,8 @@ public enum OnapCommandParameterType {
public static OnapCommandParameterType get(String name) throws OnapCommandInvalidParameterType {
if (JSON.name().equalsIgnoreCase(name)) {
return JSON;
+ } else if (BYTE.name().equalsIgnoreCase(name)) {
+ return BYTE;
} else if (YAML.name().equalsIgnoreCase(name)) {
return YAML;
} else if (STRING.name().equalsIgnoreCase(name)) {
diff --git a/framework/src/main/java/org/onap/cli/fw/registrar/OnapCommandRegistrar.java b/framework/src/main/java/org/onap/cli/fw/registrar/OnapCommandRegistrar.java
index d7937527..fdacbd1e 100644
--- a/framework/src/main/java/org/onap/cli/fw/registrar/OnapCommandRegistrar.java
+++ b/framework/src/main/java/org/onap/cli/fw/registrar/OnapCommandRegistrar.java
@@ -431,8 +431,8 @@ public class OnapCommandRegistrar {
}
}
- public List<Map<String, ?>> getTestSuite(String cmd) throws OnapCommandException {
- return OnapCommandDiscoveryUtils.createTestSuite(cmd, enabledProductVersion);
+ public List<Map<String, ?>> getTestSuite(String cmd, String product) throws OnapCommandException {
+ return OnapCommandDiscoveryUtils.createTestSuite(cmd, product);
}
public String getHost() {
diff --git a/framework/src/main/java/org/onap/cli/fw/schema/OnapCommandSchemaLoader.java b/framework/src/main/java/org/onap/cli/fw/schema/OnapCommandSchemaLoader.java
index fe191f5b..7d2cec92 100644
--- a/framework/src/main/java/org/onap/cli/fw/schema/OnapCommandSchemaLoader.java
+++ b/framework/src/main/java/org/onap/cli/fw/schema/OnapCommandSchemaLoader.java
@@ -344,7 +344,7 @@ public class OnapCommandSchemaLoader {
case IS_OPTIONAL:
if (validate && !OnapCommandUtils.validateBoolean(String.valueOf(parameter.get(key2)))) {
exceptionList.add(OnapCommandUtils.invalidBooleanValueMessage(parameter.get(NAME),
- IS_SECURED, parameter.get(key2)));
+ IS_OPTIONAL, parameter.get(key2)));
}
if (BOOLEAN_TRUE.equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {
@@ -510,6 +510,7 @@ public class OnapCommandSchemaLoader {
break;
}
}
+
return exceptionList;
}
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 4fc2508a..d09e4304 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
@@ -19,7 +19,6 @@ package org.onap.cli.fw.store;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -29,7 +28,6 @@ import java.util.Map;
import java.util.TimeZone;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
import org.onap.cli.fw.conf.OnapCommandConfig;
import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
@@ -54,7 +52,7 @@ public class OnapCommandExecutionStore {
private static SearchMode SEARCH_MODE = SearchMode.file;
public static class ExecutionStoreContext {
-
+ private String requestId;
private String executionId;
private String storePath;
public String getExecutionId() {
@@ -71,6 +69,13 @@ public class OnapCommandExecutionStore {
this.storePath = storePath;
return this;
}
+ public String getRequestId() {
+ return requestId;
+ }
+ public ExecutionStoreContext setRequestId(String requestId) {
+ this.requestId = requestId;
+ return this;
+ }
}
public static class Execution {
@@ -185,63 +190,113 @@ public class OnapCommandExecutionStore {
public ExecutionStoreContext storeExectutionStart(
String requestId, String product, String service, String cmd, String profile, String input) {
+ ExecutionStoreContext context = new ExecutionStoreContext();
+ context.setRequestId(requestId);
+
String executionId = requestId + "-" + System.currentTimeMillis();
+ context.setExecutionId(executionId);
String storePath = getBasePath() + File.separator + executionId + SEPARATOR + product +
SEPARATOR + service +
SEPARATOR + cmd +
(profile != null ? (SEPARATOR + profile) : "" );
+
try {
File dir = new File(storePath);
FileUtils.forceMkdir(dir);
+ context.setStorePath(dir.getAbsolutePath());
if (product != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "product"), product);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "product"), product);
if (service != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "service"), service);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "service"), service);
if (cmd != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "command"), cmd);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "command"), cmd);
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "requestId"), requestId);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "requestId"), requestId);
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "executionId"), executionId);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "executionId"), executionId);
if (input != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "input"), input);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "input"), input);
if (profile != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "profile"), profile);
- FileUtils.touch(new File(dir.getAbsolutePath() + File.separator + "in-progress"));
+ 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"));
+ FileUtils.touch(new File(context.getStorePath() + File.separator + "debug"));
+
+ FileUtils.touch(new File(context.getStorePath() + File.separator + "in-progress"));
} catch (IOException e) {
log.error("Failed to store the execution start details " + storePath);
}
- return new ExecutionStoreContext().setExecutionId(executionId).setStorePath(storePath);
+ return context;
}
public void storeExectutionEnd(
- ExecutionStoreContext execContext,
- String output, String error, boolean passed) {
+ ExecutionStoreContext context,
+ String output, String error, String debug, boolean passed) {
try {
- File dir = new File(execContext.getStorePath());
- FileUtils.forceMkdir(dir);
-
if (output != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "output"), output);
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "output"), output);
if (error != null)
- FileUtils.writeStringToFile(new File(dir.getAbsolutePath() + File.separator + "error"), error);
-
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "error"), error);
+ if (debug != null)
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "debug"), debug);
if (passed)
- FileUtils.touch(new File(dir.getAbsolutePath() + File.separator + "completed"));
+ FileUtils.touch(new File(context.getStorePath() + File.separator + "completed"));
else
- FileUtils.touch(new File(dir.getAbsolutePath() + File.separator + "failed"));
+ FileUtils.touch(new File(context.getStorePath() + File.separator + "failed"));
+
+ new File(context.getStorePath() + File.separator + "in-progress").delete();
+ } catch (IOException e) {
+ log.error("Failed to store the execution end details " + context.storePath);
+ }
+ }
+
+ public void storeExectutionProgress(
+ ExecutionStoreContext context,
+ String output, String error, String debug) {
+
+ try {
+ if (output != null)
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "output"), output);
+ if (error != null)
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "error"), error);
+ if (debug != null)
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "debug"), debug);
+ } catch (IOException e) {
+ log.error("Failed to store the execution end details " + context.storePath);
+ }
+ }
+
+ public void storeExectutionDebug(
+ ExecutionStoreContext context,
+ String debug) {
- new File(dir.getAbsolutePath() + File.separator + "in-progress").delete();
+ try {
+ if (debug != null) {
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "debug"), debug);
+ }
} catch (IOException e) {
- log.error("Failed to store the execution end details " + execContext.storePath);
+ log.error("Failed to store the execution debug details " + context.storePath);
}
}
+ public void storeExectutionOutput(
+ ExecutionStoreContext context,
+ String output) {
+
+ try {
+ if (output != null) {
+ FileUtils.writeStringToFile(new File(context.getStorePath() + File.separator + "output"), output);
+ }
+ } catch (IOException e) {
+ log.error("Failed to store the execution output details " + context.storePath);
+ }
+ }
public List<OnapCommandExecutionStore.Execution> listExecutions(Map<String, String> search) throws OnapCommandExecutionFailed {
List <OnapCommandExecutionStore.Execution> list = new ArrayList<>();
@@ -342,7 +397,8 @@ public class OnapCommandExecutionStore {
return exectuion;
}
- public Execution getExecution(String executionId) throws OnapCommandExecutionNotFound, OnapCommandExecutionFailed {
+
+ private File getExecutionDir(String executionId) throws OnapCommandExecutionNotFound {
File []f = new File(getBasePath()).listFiles(new FilenameFilter() {
@Override
@@ -356,10 +412,37 @@ public class OnapCommandExecutionStore {
throw new OnapCommandExecutionNotFound(executionId);
}
+ return f[0];
+ }
+
+ public String showExecutionOut(String executionId) throws OnapCommandExecutionNotFound {
+ try {
+ return FileUtils.readFileToString(new File (this.getExecutionDir(executionId).getAbsolutePath() + File.separator + "stdout"));
+ } catch (IOException e) {
+ return "";
+ }
+ }
+
+ public String showExecutionErr(String executionId) throws OnapCommandExecutionNotFound {
+ try {
+ return FileUtils.readFileToString(new File (this.getExecutionDir(executionId).getAbsolutePath() + File.separator + "stderr"));
+ } catch (IOException e) {
+ return "";
+ }
+ }
+
+ public String showExecutionDebug(String executionId) throws OnapCommandExecutionNotFound {
+ try {
+ return FileUtils.readFileToString(new File (this.getExecutionDir(executionId).getAbsolutePath() + File.separator + "debug"));
+ } catch (IOException e) {
+ return "";
+ }
+ }
+ public Execution getExecution(String executionId) throws OnapCommandExecutionNotFound, OnapCommandExecutionFailed {
try {
- return this.makeExecution(f[0].getAbsolutePath());
+ return this.makeExecution(this.getExecutionDir(executionId).getAbsolutePath());
} catch (IOException e) {
throw new OnapCommandExecutionFailed(e, "Failed to retrieve the execution");
}
}
-}
+} \ No newline at end of file
diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java
index 7c1f18f6..a94087ec 100644
--- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java
+++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java
@@ -508,7 +508,6 @@ public class OnapCommandDiscoveryUtils {
Map<String, String> sample = samples.get(sampleId);
List<String> inputArgs = new ArrayList();
- inputArgs.add(cmd);
if (sample.get(OnapCommandConstants.VERIFY_INPUT) != null) {
inputArgs.addAll(Arrays.asList(sample.get(OnapCommandConstants.VERIFY_INPUT).trim().split(" ")));
}
diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
index e279fa0b..96f864e0 100644
--- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
+++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
@@ -31,6 +31,8 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;
import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.conf.OnapCommandConfig;
@@ -185,6 +187,49 @@ public class OnapCommandUtils {
* @return
*/
public static String replaceLineForSpecialValues(String lineSpl) {
+ return replaceLineForSpecialValues(lineSpl, new HashMap<String, String>());
+ }
+
+ /**
+ *
+ * @param lineSpl
+ * @param values Value for the given entry already known by the caller.
+ * @return
+ */
+ public static String replaceLineFromResults(String line, Map <String, String> values) {
+ String resultLine = "";
+
+ if (!line.contains("$r{")) {
+ return line;
+ }
+
+ int currentIdx = 0;
+ while (currentIdx < line.length()) {
+ int idxS = line.indexOf("$r{", currentIdx);
+ if (idxS == -1) {
+ resultLine += line.substring(currentIdx);
+ break;
+ }
+ int idxE = line.indexOf("}", idxS);
+ String attr = line.substring(idxS + 3, idxE);
+ attr = attr.trim();
+
+ String value = "";
+
+ if (values.get(attr) != null) {
+ value = values.get(attr);
+ } else {
+ value = attr;
+ }
+
+ resultLine += line.substring(currentIdx, idxS) + value;
+ currentIdx = idxE + 1;
+ }
+
+ return resultLine;
+ }
+
+ public static String replaceLineForSpecialValues(String lineSpl, Map <String, String> values) {
String resultSpl = "";
if (!lineSpl.contains("$s{")) {
@@ -232,8 +277,20 @@ public class OnapCommandUtils {
//exist.
value = "";
}
+ } else if (splEntry.startsWith(OnapCommandConstants.SPL_ENTRY_MD5)) {
+ //start to read after md5:entryname
+ String entryName = splEntry.substring(4);
+ String content = values.get(entryName);
+ if (content != null)
+ value = OnapCommandUtils.md5(content);
+ else
+ value = splEntry;
} else {
- value = splEntry;
+ if (values.get(splEntry) != null) {
+ value = values.get(splEntry);
+ } else {
+ value = splEntry;
+ }
}
}
@@ -271,7 +328,11 @@ public class OnapCommandUtils {
|| OnapCommandParameterType.JSON.equals(param.getParameterType())
|| OnapCommandParameterType.YAML.equals(param.getParameterType())) {
// ignore the front and back double quotes in json body
- result += line.substring(currentIdx, idxS - 1) + params.get(paramName).getValue().toString();
+ String va_ = params.get(paramName).getValue().toString();
+ if (idxS > 0)
+ result += line.substring(currentIdx, idxS - 1) + va_;
+ else
+ result += va_;
currentIdx = idxE + 2;
} else if (OnapCommandParameterType.MAP.equals(param.getParameterType())) {
try {
@@ -366,6 +427,12 @@ public class OnapCommandUtils {
}
}
+ public static String md5(String content) {
+ String md5 = DigestUtils.md5Hex(content);
+
+ byte[] encodeBase64 = Base64.encodeBase64(md5.getBytes());
+ return new String(encodeBase64);
+ }
}
diff --git a/framework/src/main/java/org/onap/cli/fw/utils/ProcessRunner.java b/framework/src/main/java/org/onap/cli/fw/utils/ProcessRunner.java
index eb335837..db7245c7 100644
--- a/framework/src/main/java/org/onap/cli/fw/utils/ProcessRunner.java
+++ b/framework/src/main/java/org/onap/cli/fw/utils/ProcessRunner.java
@@ -17,18 +17,18 @@
package org.onap.cli.fw.utils;
import java.io.BufferedReader;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.IOUtils;
-import org.onap.cli.fw.cmd.OnapCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,8 +43,9 @@ public class ProcessRunner {
private int exitCode = -1;
private String output;
private String error;
- private Map<String, Object> results;
-
+ private long timeout = 0;
+ private OutputStream stdout;
+ private OutputStream stderr;
public ProcessRunner(String []cmd, String []env, String cwd) {
this.cmd = cmd;
@@ -55,6 +56,14 @@ public class ProcessRunner {
this.env = env;
}
+ public void setTimeout(long timeout) {
+ this.timeout = timeout;
+ }
+
+ public long getTimeout() {
+ return this.timeout;
+ }
+
public void overrideToUnix() {
this.shell = UNIX_SHELL;
}
@@ -82,9 +91,13 @@ public class ProcessRunner {
@SuppressWarnings("unchecked")
public void run() throws InterruptedException, IOException {
Process p = null;
+
final StringWriter writerOutput = new StringWriter();
final StringWriter writerError = new StringWriter();
+ final OutputStream stdout = this.getStdout();
+ final OutputStream stderr = this.getStderr();
+
if (this.cmd.length == 1) {
p = Runtime.getRuntime().exec(this.shell + this.cmd[0], this.env, null);
} else {
@@ -98,7 +111,10 @@ public class ProcessRunner {
new Thread(new Runnable() {
public void run() {
try {
- IOUtils.copy(p1.getInputStream(), writerOutput);
+ if (stdout != null) {
+ IOUtils.copy(p1.getInputStream(), stdout);
+ }
+ else IOUtils.copy(p1.getInputStream(), writerOutput);
} catch (IOException e) {
}
}
@@ -107,21 +123,32 @@ public class ProcessRunner {
new Thread(new Runnable() {
public void run() {
try {
- IOUtils.copy(p1.getErrorStream(), writerError);
+ if (stderr != null) {
+ IOUtils.copy(p1.getErrorStream(), stderr);
+ }
+ else IOUtils.copy(p1.getErrorStream(), writerError);
} catch (IOException e) {
}
}
}).start();
- //mrkanag: handle the case if the given cmd does not exist
- p.waitFor(1, TimeUnit.MINUTES);
- this.exitCode = p.exitValue();
+ boolean completed = p.waitFor(this.getTimeout(), TimeUnit.MILLISECONDS);
+ if (completed) {
+ this.exitCode = p.exitValue();
+ }
+
this.output = writerOutput.toString();
this.error = writerError.toString();
log.debug("CMD: " + Arrays.asList(this.cmd).toString() + "\nWORKING_DIR: " + this.cwd + "\nENV: " +
((this.env == null) ? this.env : Arrays.asList(this.env).toString()) +
"\nOUTPUT: " + this.output + "\nERROR: " + this.error + "\nEXIT_CODE: " + this.exitCode);
p.destroy();
+
+ if (!completed) {
+ throw new RuntimeException("TIMEOUT:: cmd:" + Arrays.asList(this.cmd).toString());
+ } else {
+
+ }
}
public String streamToString(InputStream stream) throws IOException {
@@ -152,4 +179,32 @@ public class ProcessRunner {
public String getError() {
return this.error;
}
+
+ public OutputStream getStdout() {
+ return stdout;
+ }
+
+ public void setStdout(OutputStream stdout) {
+ this.stdout = stdout;
+ }
+
+ public OutputStream getStderr() {
+ return stderr;
+ }
+
+ public void setStderr(OutputStream stderr) {
+ this.stderr = stderr;
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("COMMAND: " + this.shell + " " + Arrays.asList(this.cmd));
+ sb.append("\nCWD: " + new File(this.cwd).getAbsolutePath());
+ sb.append("\nTIMEOUT: " + this.timeout);
+ sb.append("\nEXIT-CODE: " + this.getExitCode());
+ sb.append("\nENVIRONMENTS: " + Arrays.asList(this.env));
+
+ return sb.toString();
+ }
} \ No newline at end of file
diff --git a/framework/src/main/resources/META-INF/services/org.onap.cli.fw.cmd.OnapCommand b/framework/src/main/resources/META-INF/services/org.onap.cli.fw.cmd.OnapCommand
index 547d7872..7ca9c783 100644
--- a/framework/src/main/resources/META-INF/services/org.onap.cli.fw.cmd.OnapCommand
+++ b/framework/src/main/resources/META-INF/services/org.onap.cli.fw.cmd.OnapCommand
@@ -16,8 +16,13 @@ org.onap.cli.fw.cmd.schema.OnapSchemaValidateCommand
org.onap.cli.fw.cmd.schema.OnapSchemaRefreshCommand
org.onap.cli.fw.cmd.schema.OnapSchemaListCommand
org.onap.cli.fw.cmd.schema.OnapSchemaShowCommand
-#org.onap.cli.fw.cmd.schema.OnapSchemaSwitchCommand
+org.onap.cli.fw.cmd.schema.OnapSchemaSwitchCommand
+
org.onap.cli.fw.cmd.product.OnapProductsListCommand
org.onap.cli.fw.cmd.product.OnapServiceListCommand
+
org.onap.cli.fw.cmd.execution.OnapCommandExceutionListCommand
org.onap.cli.fw.cmd.execution.OnapCommandExceutionShowCommand
+org.onap.cli.fw.cmd.execution.OnapCommandExceutionShowDebugCommand
+org.onap.cli.fw.cmd.execution.OnapCommandExceutionShowOutCommand
+org.onap.cli.fw.cmd.execution.OnapCommandExceutionShowErrCommand
diff --git a/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml b/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml
index d1a074d7..f3d5e89d 100644
--- a/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml
+++ b/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml
@@ -72,4 +72,4 @@ parameters:
short_option: D
long_option: context
is_default_param: true
- is_optional: true \ No newline at end of file
+ is_optional: true
diff --git a/framework/src/main/resources/open-cli-schema/execution/execution-show-debug.yaml b/framework/src/main/resources/open-cli-schema/execution/execution-show-debug.yaml
new file mode 100644
index 00000000..6e968747
--- /dev/null
+++ b/framework/src/main/resources/open-cli-schema/execution/execution-show-debug.yaml
@@ -0,0 +1,38 @@
+# Copyright 2018 Huawei Technologies Co., Ltd.
+#
+# 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.
+
+open_cli_schema_version: 1.0
+name: execution-show-debug
+description: Show the command execution debug information
+
+info:
+ product: open-cli
+ service: execution
+ type: cmd
+ author: Kanagaraj Manickam kanagaraj.manickam@huawei.com
+
+parameters:
+ - name: execution-id
+ type: string
+ description: Execution id
+ short_option: l
+ long_option: execution-id
+ is_optional: false
+ - name: format
+ type: string
+ description: Output formats, supported formats such as table, csv, json, yaml
+ short_option: f
+ long_option: format
+ default_value: text
+ is_default_param: true \ No newline at end of file
diff --git a/framework/src/main/resources/open-cli-schema/execution/execution-show-err.yaml b/framework/src/main/resources/open-cli-schema/execution/execution-show-err.yaml
new file mode 100644
index 00000000..13ad274e
--- /dev/null
+++ b/framework/src/main/resources/open-cli-schema/execution/execution-show-err.yaml
@@ -0,0 +1,38 @@
+# Copyright 2018 Huawei Technologies Co., Ltd.
+#
+# 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.
+
+open_cli_schema_version: 1.0
+name: execution-show-err
+description: Show the command execution console error information
+
+info:
+ product: open-cli
+ service: execution
+ type: cmd
+ author: Kanagaraj Manickam kanagaraj.manickam@huawei.com
+
+parameters:
+ - name: execution-id
+ type: string
+ description: Execution id
+ short_option: l
+ long_option: execution-id
+ is_optional: false
+ - name: format
+ type: string
+ description: Output formats, supported formats such as table, csv, json, yaml
+ short_option: f
+ long_option: format
+ default_value: text
+ is_default_param: true \ No newline at end of file
diff --git a/framework/src/main/resources/open-cli-schema/execution/execution-show-out.yaml b/framework/src/main/resources/open-cli-schema/execution/execution-show-out.yaml
new file mode 100644
index 00000000..5b74f7aa
--- /dev/null
+++ b/framework/src/main/resources/open-cli-schema/execution/execution-show-out.yaml
@@ -0,0 +1,38 @@
+# Copyright 2018 Huawei Technologies Co., Ltd.
+#
+# 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.
+
+open_cli_schema_version: 1.0
+name: execution-show-out
+description: Show the command execution console output information
+
+info:
+ product: open-cli
+ service: execution
+ type: cmd
+ author: Kanagaraj Manickam kanagaraj.manickam@huawei.com
+
+parameters:
+ - name: execution-id
+ type: string
+ description: Execution id
+ short_option: l
+ long_option: execution-id
+ is_optional: false
+ - name: format
+ type: string
+ description: Output formats, supported formats such as table, csv, json, yaml
+ short_option: f
+ long_option: format
+ default_value: text
+ is_default_param: true \ No newline at end of file
diff --git a/framework/src/main/resources/open-cli-schema/execution/execution-show.yaml b/framework/src/main/resources/open-cli-schema/execution/execution-show.yaml
index 7b4bd599..a29775e0 100644
--- a/framework/src/main/resources/open-cli-schema/execution/execution-show.yaml
+++ b/framework/src/main/resources/open-cli-schema/execution/execution-show.yaml
@@ -14,7 +14,7 @@
open_cli_schema_version: 1.0
name: execution-show
-description: Show the complete executions for the given request id
+description: Show the complete executions for the given execution id
info:
product: open-cli
diff --git a/framework/src/main/resources/open-cli-schema/open-cli-registry.yaml b/framework/src/main/resources/open-cli-schema/open-cli-registry.yaml
index 9b988b4e..395cb01e 100644
--- a/framework/src/main/resources/open-cli-schema/open-cli-registry.yaml
+++ b/framework/src/main/resources/open-cli-schema/open-cli-registry.yaml
@@ -30,11 +30,5 @@ services:
description: Product and service searching abilities
- name: schema
description: OCS schema management
- - name: profile
- description: Profile management
- - name: artifact
- description: Artifact management
- name: execution
description: Execution management
- - name: rpc
- description: RPC management across OCLIP \ No newline at end of file
diff --git a/framework/src/main/resources/open-cli-schema/product/service-list.yaml b/framework/src/main/resources/open-cli-schema/product/service-list.yaml
index 8a84b257..81699309 100644
--- a/framework/src/main/resources/open-cli-schema/product/service-list.yaml
+++ b/framework/src/main/resources/open-cli-schema/product/service-list.yaml
@@ -33,6 +33,10 @@ parameters:
results:
direction: landscape
attributes:
+ - name: product
+ description: Product name
+ scope: short
+ type: string
- name: service
description: Service name
scope: short
diff --git a/framework/src/main/resources/open-cli-schema/schema/schema-list.yaml b/framework/src/main/resources/open-cli-schema/schema/schema-list.yaml
index 4f971ce2..72833d39 100644
--- a/framework/src/main/resources/open-cli-schema/schema/schema-list.yaml
+++ b/framework/src/main/resources/open-cli-schema/schema/schema-list.yaml
@@ -38,6 +38,14 @@ parameters:
results:
direction: landscape
attributes:
+ - name: product
+ description: Product name
+ scope: short
+ type: string
+ - name: service
+ description: Service name
+ scope: short
+ type: string
- name: command
description: Command name
scope: short
@@ -46,10 +54,6 @@ results:
description: Schema name
scope: long
type: string
- - name: service
- description: Service name
- scope: short
- type: string
- name: ocs-version
description: Schema version
scope: short
diff --git a/framework/src/main/resources/open-cli.properties b/framework/src/main/resources/open-cli.properties
index e0ca44a8..259fd227 100644
--- a/framework/src/main/resources/open-cli.properties
+++ b/framework/src/main/resources/open-cli.properties
@@ -13,10 +13,13 @@
# limitations under the License.
cli.product_name=open-cli
-cli.version=2.0.5
+cli.version=3.0.0
cli.discover_always=false
-cli.data.dir=data
-cli.artifact.dir=d:/temp/OCLIP
+cli.data.dir=./data
+cli.artifact.dir=./data/artifacts
+cli.tmp.dir=./data/tmp
+#timeout in seconds
+cli.grpc.client.timeout=60
#schema validation
cli.schema.base.sections=open_cli_schema_version,name,description,parameters,results,info
@@ -36,10 +39,10 @@ cli.schema.command.type=cmd,auth,catalog
# moco properties
cli.sample.gen.enable=false
-cli.sample.gen.target=.
+cli.sample.gen.target=./open-cli-sample
# mrkanag Move this to db, once exteranl command registration is supported in place of discovery
-cli.schema.profile.available=
+cli.schema.profile.available=http,snmp,cmd
#other properties to load (it should be hanled when plugins are made as externally register-able
#when command plugin management support is enabled in oclip
diff --git a/framework/src/main/resources/version.info b/framework/src/main/resources/version.info
index edfa61d6..3b8aedf9 100644
--- a/framework/src/main/resources/version.info
+++ b/framework/src/main/resources/version.info
@@ -1,4 +1,4 @@
-CLI version : __VERSION__
+Version : __VERSION__
Available products: __AVAILABLE_PRODUCT_VERSIONS__
Enabled product : __ENABLED_PRODUCT_VERSIONS__