Add versioning for command 05/9105/6
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Tue, 29 Aug 2017 12:45:10 +0000 (18:15 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Wed, 30 Aug 2017 05:32:07 +0000 (11:02 +0530)
By allowing to add version to the YAML, helps to
create same command for multiple versions of
product say onap 1.0, 1.1

CLI-37
Change-Id: Ic3982ea912045ff4f422fcf093cbd98ecd99716d
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
81 files changed:
deployment/docker/src/main/docker/Dockerfile
framework/src/main/java/org/onap/cli/fw/OnapCommand.java
framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java
framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java
framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java
framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java
framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java
framework/src/main/java/org/onap/cli/fw/conf/Constants.java
framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java
framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java
framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java [new file with mode: 0644]
framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java
framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
framework/src/main/resources/onap-cli-schema/schema-refresh.yaml [moved from framework/src/main/resources/schema-refresh.yaml with 94% similarity]
framework/src/main/resources/onap-cli-schema/schema-validate.yaml [moved from framework/src/main/resources/schema-validate.yaml with 96% similarity]
framework/src/main/resources/onap.properties
framework/src/test/java/org/onap/cli/cmd/sample/OnapCommandSample.java
framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java
framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java
framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java
framework/src/test/java/org/onap/cli/fw/utils/OpenCommandRegistrarTest.java
framework/src/test/resources/onap-cli-schema/sample-test1-schema-http.yaml
framework/src/test/resources/onap-test-schema.yaml
framework/src/test/resources/onap.properties [new file with mode: 0644]
framework/src/test/resources/sample-test-invalid-schema-duplicate-longoption.yaml
framework/src/test/resources/sample-test-invalid-schema-duplicate-name.yaml
framework/src/test/resources/sample-test-invalid-schema-duplicate-shortoption.yaml
framework/src/test/resources/sample-test-invalid-schema.yaml
framework/src/test/resources/sample-test-schema-auth-required.yaml
framework/src/test/resources/sample-test-schema-http.yaml
framework/src/test/resources/sample-test-schema-swagger.yaml
framework/src/test/resources/sample-test-schema.yaml
main/src/main/java/org/onap/cli/main/OnapCli.java
main/src/main/resources/onap-readme.txt
main/src/test/java/org/onap/cli/main/OnapCommandSampleTest.java
main/src/test/resources/onap-cli-schema/sample-create-schema.yaml
main/src/test/resources/sample-test-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema-1.1.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml
plugins/aai/src/test/resources/onap-cli-sample/cloud-region/cloud-list-sample.yaml
plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceCreateCommand.java
plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceDeleteCommand.java
plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceListCommand.java
plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceShowCommand.java
plugins/msb/src/main/resources/onap-cli-schema/microservice-create-schema.yaml [moved from plugins/msb/src/main/resources/microservice-create-schema.yaml with 99% similarity]
plugins/msb/src/main/resources/onap-cli-schema/microservice-delete-schema.yaml [moved from plugins/msb/src/main/resources/microservice-delete-schema.yaml with 97% similarity]
plugins/msb/src/main/resources/onap-cli-schema/microservice-list-schema.yaml [moved from plugins/msb/src/main/resources/microservice-list-schema.yaml with 98% similarity]
plugins/msb/src/main/resources/onap-cli-schema/microservice-show-schema.yaml [moved from plugins/msb/src/main/resources/microservice-show-schema.yaml with 98% similarity]
plugins/msb/src/test/resources/service-list-schema.yaml
plugins/msb/src/test/resources/user-create-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml
validation/pom.xml [new file with mode: 0644]

index 1b453de..83ebb61 100644 (file)
@@ -26,6 +26,7 @@ ENV ONAP_PASSWORD guest
 ENV ONAP_CLI_DEBUG false
 ENV ONAP_CLI_DEBUG_PORT 5005
 ENV MODE console
+ENV CLI_PRODUCT_VERSION cli-1.0
 
 ENTRYPOINT cp /etc/lighttpd/conf-available/10-accesslog.conf /etc/lighttpd/conf-enabled/ && \
            service lighttpd start && \
index 08cbc3b..c65ca9a 100644 (file)
@@ -58,6 +58,8 @@ public abstract class OnapCommand {
 
     private String cmdSchemaName;
 
+    private String cmdVersion;
+
     private OnapService onapService = new OnapService();
 
     private List<OnapCommandParameter> cmdParameters = new ArrayList<>();
@@ -324,4 +326,12 @@ public abstract class OnapCommand {
         return OnapCommandUtils.help(this);
     }
     // (mrkanag) Add toString for all command, parameter, result, etc objects in JSON format
+
+    public void setVersion(String version) {
+        this.cmdVersion = version;
+    }
+
+    public String getVersion() {
+        return this.cmdVersion;
+    }
 }
index 567e038..ca875b3 100644 (file)
 
 package org.onap.cli.fw;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 import org.onap.cli.fw.conf.Constants;
 import org.onap.cli.fw.conf.OnapCommandConfg;
@@ -24,6 +32,7 @@ import org.onap.cli.fw.error.OnapCommandHelpFailed;
 import org.onap.cli.fw.error.OnapCommandInvalidRegistration;
 import org.onap.cli.fw.error.OnapCommandNotFound;
 import org.onap.cli.fw.error.OnapCommandRegistrationFailed;
+import org.onap.cli.fw.error.OnapCommandRegistrationVersionMissing;
 import org.onap.cli.fw.output.OnapCommandResult;
 import org.onap.cli.fw.output.OnapCommandResultAttribute;
 import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
@@ -32,24 +41,17 @@ import org.onap.cli.fw.output.ResultType;
 import org.onap.cli.fw.utils.ExternalSchema;
 import org.onap.cli.fw.utils.OnapCommandUtils;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * Onap Command registrar provides a common place, where every command would get registered automatically when its
  * loaded into JVM.
  *
  */
 public class OnapCommandRegistrar {
-    /*
-     * static { //Start the AOP for logging new OnapCommandLogger(); }
-     */
+
     private Map<String, Class<? extends OnapCommand>> registry = new HashMap<>();
 
+    private Set<String> availableProductVersions = new HashSet<>();
+
     private static OnapCommandRegistrar registrar = null;
 
     /**
@@ -61,9 +63,15 @@ public class OnapCommandRegistrar {
      *            Command Class
      * @throws OnapCommandInvalidRegistration
      *             Invalid registration exception
+     * @throws OnapCommandRegistrationVersionMissing
      */
-    public void register(String name, Class<? extends OnapCommand> cmd) throws OnapCommandInvalidRegistration {
-        this.registry.put(name, cmd);
+    public void register(String name, String version, Class<? extends OnapCommand> cmd) throws OnapCommandInvalidRegistration, OnapCommandRegistrationVersionMissing {
+        if (version == null || version.isEmpty()) {
+            throw new OnapCommandRegistrationVersionMissing(name);
+        }
+
+        this.registry.put(name + ":" + version, cmd);
+        this.availableProductVersions.add(version);
     }
 
     /**
@@ -91,6 +99,27 @@ public class OnapCommandRegistrar {
         return this.registry.keySet();
     }
 
+    /**
+     * Get the list of discovered commands for a given product version in registrar.
+     *
+     * @return set
+     */
+    public Set<String> listCommandsForEnabledProductVersion() {
+        String version = OnapCommandConfg.getEnabledProductVersion();
+
+        Set<String> cmds = new HashSet<>();
+        if (!this.availableProductVersions.contains(version)) {
+            return cmds;
+        }
+
+        for (String cmd: this.registry.keySet()) {
+            if (cmd.split(":")[1].equalsIgnoreCase(version)) {
+                cmds.add(cmd.split(":")[0]);
+            }
+        }
+        return cmds;
+    }
+
     /**
      * Returns map of command to schema.
      *
@@ -103,7 +132,7 @@ public class OnapCommandRegistrar {
         List<ExternalSchema> schemas = OnapCommandUtils.findAllExternalSchemas();
         if (schemas != null) {
             for (ExternalSchema schema : schemas) {
-                map.put(schema.getCmdName(), schema.getSchemaName());
+                map.put(schema.getCmdName() + ":" + schema.getCmdVersion(), schema.getSchemaName());
             }
         }
         if (this.registry != null) {
@@ -127,19 +156,23 @@ public class OnapCommandRegistrar {
      *             Exception
      */
     public OnapCommand get(String cmdName) throws OnapCommandException {
-        OnapCommand cmd;
-        Class<? extends OnapCommand> cls = registry.get(cmdName);
+        return this.get(cmdName, OnapCommandConfg.getEnabledProductVersion());
+    }
+
+    private OnapCommand get(String cmdName, String version) throws OnapCommandException {
+        Class<? extends OnapCommand> cls = registry.get(cmdName + ":" + version);
         if (cls == null) {
-            throw new OnapCommandNotFound(cmdName);
+               throw new OnapCommandNotFound(cmdName, version);
         }
 
+        OnapCommand cmd;
         try {
             Constructor<?> constr = cls.getConstructor();
             cmd = (OnapCommand) constr.newInstance();
 
             String schemaName;
             if (cmd.getClass().equals(OnapHttpCommand.class)) { // NOSONAR
-                schemaName = OnapCommandUtils.loadExternalSchemaFromJson(cmdName).getSchemaName();
+                schemaName = OnapCommandUtils.loadExternalSchemaFromJson(cmdName, version).getSchemaName();
             } else {
                 schemaName = this.getSchemaFileName(cls);
             }
@@ -152,13 +185,13 @@ public class OnapCommandRegistrar {
         return cmd;
     }
 
-    private void autoDiscover() throws OnapCommandInvalidRegistration {
+    private void autoDiscover() throws OnapCommandInvalidRegistration, OnapCommandRegistrationVersionMissing {
         List<Class<OnapCommand>> cmds = OnapCommandUtils.findOnapCommands();
 
         for (Class<OnapCommand> cmd : cmds) {
             if (cmd.isAnnotationPresent(OnapCommandSchema.class)) {
                 OnapCommandSchema ano = cmd.getAnnotation(OnapCommandSchema.class);
-                this.register(ano.name(), cmd);
+                this.register(ano.name(), ano.version(), cmd);
             }
         }
     }
@@ -166,15 +199,14 @@ public class OnapCommandRegistrar {
     private void autoDiscoverHttpSchemas() throws OnapCommandException {
         List<ExternalSchema> schemas = OnapCommandUtils.loadExternalSchemasFromJson();
         for (ExternalSchema schema : schemas) {
-            this.register(schema.getCmdName(), OnapHttpCommand.class);
+            if (schema.isHttp()) {
+                this.register(schema.getCmdName(), schema.getCmdVersion(), OnapHttpCommand.class);
+            }
         }
     }
 
     private String getSchemaFileName(Class<? extends OnapCommand> cmd) {
         OnapCommandSchema ano = (OnapCommandSchema) cmd.getAnnotation(OnapCommandSchema.class);
-        if (ano.schema().isEmpty()) {
-            return "onap-" + ano.name() + "-schema.yaml";
-        }
         return ano.schema();
     }
 
@@ -188,7 +220,18 @@ public class OnapCommandRegistrar {
         if (version == null) {
             version = OnapCommandConfg.getVersion();
         }
-        return version;
+
+        String configuredProductVersion = OnapCommandConfg.getEnabledProductVersion();
+
+        String errorNote = "";
+        if (!this.availableProductVersions.contains(configuredProductVersion)) {
+            errorNote = "** CUATION: Please configure the enabled product version to use one of " + this.availableProductVersions.toString() +
+                        ".\nTo enable a product version, set env variable CLI_PRODUCT_VERSION or cli.product.version in onap.properties";
+        }
+        return "CLI version               : " + version + "\n"
+                + "Available product versions: " + this.availableProductVersions.toString() + "\n"
+                + "Enabled product version   : " + configuredProductVersion + "\n" +
+                errorNote;
     }
 
     /**
@@ -209,6 +252,12 @@ public class OnapCommandRegistrar {
         attr.setScope(OnapCommandResultAttributeScope.SHORT);
         help.getRecords().add(attr);
 
+        OnapCommandResultAttribute attrVer = new OnapCommandResultAttribute();
+        attrVer.setName(Constants.PRODUCT_VERSION.toUpperCase());
+        attrVer.setDescription(Constants.DESCRIPTION);
+        attrVer.setScope(OnapCommandResultAttributeScope.SHORT);
+        help.getRecords().add(attrVer);
+
         OnapCommandResultAttribute attrSrv = new OnapCommandResultAttribute();
         attrSrv.setName(Constants.SERVICE.toUpperCase());
         attrSrv.setDescription(Constants.SERVICE);
@@ -224,18 +273,19 @@ public class OnapCommandRegistrar {
         for (String cmdName : OnapCommandUtils.sort(this.listCommands())) {
             OnapCommand cmd;
             try {
-                cmd = this.get(cmdName);
+                String []cmdVer = cmdName.split(":");
+                cmd = this.get(cmdVer[0], cmdVer[1]);
+                attr.getValues().add(cmdVer[0]);
+                attrVer.getValues().add(cmdVer[1]);
+                attrSrv.getValues().add(cmd.printVersion());
+                attrDesc.getValues().add(cmd.getDescription());
             } catch (OnapCommandException e) {
                 throw new OnapCommandHelpFailed(e);
             }
-
-            attr.getValues().add(cmd.getName());
-            attrSrv.getValues().add(cmd.printVersion());
-            attrDesc.getValues().add(cmd.getDescription());
         }
 
         try {
-            return "\n\nOnap sub-commands:\n" + help.print();
+            return "\n\nOnap sub-commands:\n" + help.print() + "\n" + this.getVersion();
         } catch (OnapCommandException e) {
             throw new OnapCommandHelpFailed(e);
         }
index 853d358..471ab05 100644 (file)
@@ -39,6 +39,13 @@ public @interface OnapCommandSchema {
      */
     String name();
 
+    /**
+     * Command version
+     *
+     * @return
+     */
+    String version();
+
     /**
      * Schema file name placed under class path
      *
index e9d495c..458a758 100644 (file)
@@ -54,8 +54,6 @@ public class OnapAuthClient {
 
     private OnapService service = new OnapService();
 
-    private String authType = OnapCommandConfg.getAuthType();
-
     private Map<String, String> paramMap = new HashMap<>();
 
     public OnapAuthClient(OnapCredentials creds, boolean debug, OnapService service, List<OnapCommandParameter> params) throws OnapCommandHttpFailure, OnapCommandInvalidParameterValue {
@@ -64,7 +62,6 @@ public class OnapAuthClient {
         for (OnapCommandParameter param : params) {
             paramMap.put(param.getName(), param.getValue().toString());
         }
-        this.authType = service.getAuthType();
 
         this.http = new OnapHttpConnection(creds.getHostUrl().startsWith("https"), debug);
     }
@@ -88,15 +85,14 @@ public class OnapAuthClient {
             return;
         }
 
-        if (this.authType.equalsIgnoreCase(Constants.AUTH_BASIC)) {
+        if (this.service.getAuthType().equalsIgnoreCase(Constants.AUTH_BASIC)) {
             String authToken = BasicScheme.authenticate(new UsernamePasswordCredentials(
                     creds.getUsername(), creds.getPassword()), "UTF-8", false).getValue();
 
             Map<String, String> mapHeaders = OnapCommandConfg.getBasicCommonHeaders(this.paramMap);
-            if(this.service.getName() != null){
-                mapHeaders.putAll(OnapCommandConfg.getServiceHeaders(this.service.getName(), this.paramMap));
-            }
+            mapHeaders.putAll(OnapCommandConfg.getServiceHeaders(this.service.getName(), this.paramMap));
             mapHeaders.put(OnapCommandConfg.getXAuthTokenName(), authToken);
+
             this.http.setCommonHeaders(mapHeaders);
             return;
         }
index 5743275..81cdfca 100644 (file)
@@ -30,7 +30,7 @@ import java.util.List;
  * Refresh external schema.
  *
  */
-@OnapCommandSchema(name = "schema-refresh", schema = "schema-refresh.yaml")
+@OnapCommandSchema(name = "schema-refresh", version="0.0", schema = "schema-refresh.yaml")
 public class OnapSchemaRefreshCommand extends OnapCommand {
 
     @Override
index b181148..140ac81 100644 (file)
@@ -29,7 +29,7 @@ import java.util.Map;
 /**
  * Validate schema command.
  */
-@OnapCommandSchema(name = "schema-validate", schema = "schema-validate.yaml")
+@OnapCommandSchema(name = "schema-validate", version="0.0", schema = "schema-validate.yaml")
 public class OnapSchemaValidateCommand extends OnapCommand {
 
     @Override
index e9b158e..980b94d 100644 (file)
@@ -129,6 +129,8 @@ public class Constants {
     public static final String CONF = "onap.properties";
     public static final String ONAP_IGNORE_AUTH = "cli.ignore_auth";
     public static final String ONAP_CLI_VERSION = "cli.version";
+    public static final String ONAP_CLI_PRODUCT_VERSION = "cli.product.version";
+    public static final String ONAP_CLI_PRODUCT_VERSION_ENV_NAME = "CLI_PRODUCT_VERSION";
     public static final String HTTP_API_KEY_USE_COOKIES = "cli.http.api_key_use_cookies";
     public static final String EXCLUDE_PARAMS_INTERNAL_CMD = "cli.exclude_params_internal_cmd";
     public static final String NO_AUTH_DISABLE_INCLUDE_PARAMS_EXTERNAL_CMD = "cli.no_auth_disable_include_params_external_cmd";
@@ -146,7 +148,7 @@ public class Constants {
     public static final String EXTERNAL_JSON_PATTERN = "/**/*.json";
     public static final String EXTERNAL_SCHEMA_PATH_PATERN = EXTERNAL_SCHEMA_DIRECTORY + EXTERNAL_YAML_PATTERN;
     public static final String EXTERNAL_DISCOVERY_DIRECTORY = "data";
-    public static final String EXTERNAL_DISCOVERY_FILE = "external-schema.json";
+    public static final String EXTERNAL_DISCOVERY_FILE = "cli-schema.json";
     public static final String EXTERNAL_DISCOVERY_DIRECTORY_PATTERN = EXTERNAL_DISCOVERY_DIRECTORY
             + EXTERNAL_JSON_PATTERN;
 
@@ -177,6 +179,7 @@ public class Constants {
 
     public static final String DEFAULT_SCHEMA_FILE_NAME = "default_input_parameters.yaml";
 
+    public static final String PRODUCT_VERSION = "product version";
     // Error message
     public static final String SCHEMA_INVALID_DEFAULT_PARAMS_SECTION = "Invalid default_parameter section";
     public static final String SCHEMA_FILE_EMPTY = "The schema file cann't be null or empty";
index 479431f..5ca0589 100644 (file)
@@ -68,6 +68,14 @@ public final class OnapCommandConfg {
         return prps.getProperty(Constants.ONAP_CLI_VERSION);
     }
 
+    public static String getEnabledProductVersion() {
+        String version = System.getenv(Constants.ONAP_CLI_PRODUCT_VERSION_ENV_NAME);
+        if (version == null) {
+            version = prps.getProperty(Constants.ONAP_CLI_PRODUCT_VERSION);
+        }
+        return version;
+    }
+
     /**
      * checks if cookies based auth.
      *
@@ -103,22 +111,25 @@ public final class OnapCommandConfg {
 
     private static Map<String, String> getHeaderValues(String headerKey, Map<String, String> paramMap) {
         Map<String, String> mapHeaders = new HashMap<String, String> ();
-        Arrays.stream(prps.getProperty(headerKey)  // NOSONAR
-                .split(",")).map(String::trim).forEach(header -> {
-                    String headerName = prps.getProperty(headerKey+ "." + header);
-                    String headerValue = prps.getProperty(headerKey + "." + header + ".value", null);
-                    if (headerValue != null) {
-                        headerValue = headerValue.replaceAll("uuid", UUID.randomUUID().toString());
-                        if (headerValue.contains("${")) {
-                            String param = headerValue.substring(headerValue.indexOf("${")+2 ,headerValue.indexOf("}"));
-                            String pattern = "${"+param+"}";
-                            headerValue = headerValue.replace(pattern, paramMap.getOrDefault(param, param));
+        if (prps.containsKey(headerKey)) {
+            Arrays.stream(prps.getProperty(headerKey)  // NOSONAR
+                    .split(",")).map(String::trim).forEach(header -> {
+                        String headerName = prps.getProperty(headerKey+ "." + header);
+                        String headerValue = prps.getProperty(headerKey + "." + header + ".value", null);
+                        if (headerValue != null) {
+                            headerValue = headerValue.replaceAll("uuid", UUID.randomUUID().toString());
+                            if (headerValue.contains("${")) {
+                                String param = headerValue.substring(headerValue.indexOf("${")+2 ,headerValue.indexOf("}"));
+                                String pattern = "${"+param+"}";
+                                headerValue = headerValue.replace(pattern, paramMap.getOrDefault(param, param));
+                            }
                         }
-                    }
-                    mapHeaders.put(headerName, headerValue);
-                });
+                        mapHeaders.put(headerName, headerValue);
+                    });
+        }
         return mapHeaders;
     }
+
     public static Map<String, String> getBasicCommonHeaders(Map<String, String> paramMap) {
         return getHeaderValues(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS, paramMap);
     }
index 172d60b..4a070fb 100644 (file)
@@ -24,7 +24,8 @@ public class OnapCommandNotFound extends OnapCommandException {
 
     private static final long serialVersionUID = 6676137916079057963L;
 
-    public OnapCommandNotFound(String cmdName) {
-        super("0x0011", "Command " + cmdName + " is not registered");
+    public OnapCommandNotFound(String cmdName, String version) {
+        super("0x0011", "Command " + cmdName + " is not available for product version " + version +
+                ". so please check command name or product version set in env variable CLI_PRODUCT_VERSION or cli.product.version in onap.properties");
     }
 }
diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java
new file mode 100644 (file)
index 0000000..2bad5a4
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017 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.error;
+
+/**
+ * Command Not registered in Onap Command Registrar as version missing.
+ *
+ */
+public class OnapCommandRegistrationVersionMissing extends OnapCommandException {
+
+    private static final long serialVersionUID = 5513297861129088463L;
+
+    public OnapCommandRegistrationVersionMissing(String cmdName) {
+        super("0x0031", "Command " + cmdName + " version is missing");
+    }
+}
index e9f1967..12f217c 100644 (file)
@@ -19,8 +19,11 @@ package org.onap.cli.fw.utils;
 public class ExternalSchema {
 
     private String schemaName;
+    private String schemaURI;
     private String cmdName;
+    private String cmdVersion;
     private String version;
+    private String http = "false";
 
     public String getSchemaName() {
         return schemaName;
@@ -46,4 +49,32 @@ public class ExternalSchema {
         this.version = version;
     }
 
+    public String getCmdVersion() {
+        return cmdVersion;
+    }
+
+    public void setCmdVersion(String cmdVersion) {
+        this.cmdVersion = cmdVersion;
+    }
+
+    public String getSchemaURI() {
+        return schemaURI;
+    }
+
+    public void setSchemaURI(String schemaURI) {
+        this.schemaURI = schemaURI;
+    }
+
+    public String getHttp() {
+        return http;
+    }
+
+    public void setHttp(String internal) {
+        this.http = internal;
+    }
+
+    public boolean isHttp() {
+        return this.getHttp().equals("true");
+    }
+
 }
index 625c644..b31b75c 100644 (file)
@@ -25,6 +25,7 @@ import org.onap.cli.fw.ad.OnapCredentials;
 import org.onap.cli.fw.ad.OnapService;
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 import org.onap.cli.fw.cmd.OnapSwaggerCommand;
+import org.onap.cli.fw.conf.Constants;
 import org.onap.cli.fw.conf.OnapCommandConfg;
 import org.onap.cli.fw.error.OnapCommandDiscoveryFailed;
 import org.onap.cli.fw.error.OnapCommandException;
@@ -372,6 +373,13 @@ public class OnapCommandUtils {
                     }
                     break;
 
+                case VERSION:
+                    Object version = values.get(key);
+                    if (version != null) {
+                        cmd.setVersion(version.toString());
+                    }
+                    break;
+
                 case DESCRIPTION:
                     Object description = values.get(key);
                     if (description != null) {
@@ -1482,7 +1490,11 @@ public class OnapCommandUtils {
 
         for (Entry<String, String> entry : resultMap.entrySet()) {
             String key = entry.getKey();
-            resultsProcessed.put(key, replaceLineFromOutputResults(resultMap.get(key), resultHttp));
+            try {
+                resultsProcessed.put(key, replaceLineFromOutputResults(resultMap.get(key), resultHttp));
+            } catch(OnapCommandResultEmpty e) {
+                // pass // NOSONAR
+            }
         }
 
         return resultsProcessed;
@@ -1508,9 +1520,14 @@ public class OnapCommandUtils {
                     if (resourceMap != null && resourceMap.size() > 0) {
                         ExternalSchema schema = new ExternalSchema();
                         schema.setSchemaName(resource.getFilename());
+                        schema.setSchemaURI(resource.getURI().toString());
                         schema.setCmdName((String) resourceMap.get(NAME));
                         Object obj = resourceMap.get(ONAP_CMD_SCHEMA_VERSION);
                         schema.setVersion(obj.toString());
+                        schema.setCmdVersion(resourceMap.get(Constants.VERSION).toString());
+                        if (resourceMap.get(Constants.HTTP) != null) {
+                            schema.setHttp("true");
+                        }
                         extSchemas.add(schema);
                     }
                 }
@@ -1672,12 +1689,12 @@ public class OnapCommandUtils {
      * @throws OnapCommandDiscoveryFailed
      *             exception
      */
-    public static ExternalSchema loadExternalSchemaFromJson(String cmd) throws OnapCommandException {
+    public static ExternalSchema loadExternalSchemaFromJson(String cmd, String version) throws OnapCommandException {
         List<ExternalSchema> list = loadExternalSchemasFromJson();
         ExternalSchema schemaStr = null;
         if (list != null) {
             for (ExternalSchema schema : list) {
-                if (cmd.equals(schema.getCmdName())) {
+                if (cmd.equals(schema.getCmdName()) && version.equals(schema.getCmdVersion())) {
                     schemaStr = schema;
                     break;
                 }
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: schema-refresh
 description: Onap command to refresh schemas stored in onap_cli_schema folders.
+version: 0.0
 service:
   auth: none
   name: onap-cli
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: schema-validate
 description: Onap command to validate schema
+version: 0.0
 service:
   auth: none
   name: onap-cli
index 9d59f1e..9e6b34b 100644 (file)
@@ -12,7 +12,6 @@ cli.no_auth_disable_include_params_external_cmd=onap-username,onap-password,host
 cli.no_auth_enable_exclude_params_external_cmd=onap-username,onap-password,no-auth
 cli.no_auth_enable_include_params_external_cmd=host-url
 
-cli.service.auth=aaf
 cli.http.basic.common_headers=x-auth-token,x-transaction-id,x-app-id
 cli.http.basic.common_headers.x-auth-token=Authorization
 cli.http.basic.common_headers.x-transaction-id=X-TransactionId
@@ -29,7 +28,7 @@ cli.http.basic.common_headers.sdc.user-id.value=${onap-username}
 #cli.service.auth=aaf
 
 #schema validation
-cli.schema.top_level_params_list=onap_cmd_schema_version,name,description,service,parameters,results,http
+cli.schema.top_level_params_list=onap_cmd_schema_version,name,version,description,service,parameters,results,http
 cli.schema.top_level_mandatory_list=onap_cmd_schema_version
 
 cli.schema.service_params_list=name,version,auth,mode
@@ -52,3 +51,6 @@ cli.schema.http_methods=post,get,delete,put,head
 cli.schema.boolean_values=true,false
 cli.schema.auth_values=none,basic
 cli.schema.mode_values=direct,catalog
+
+#product version
+cli.product.version=cli-1.0
index 69714ad..16c9218 100644 (file)
@@ -25,7 +25,7 @@ import org.onap.cli.fw.error.OnapCommandExecutionFailed;
  * This command helps to test the Command functionalities.
  *
  */
-@OnapCommandSchema(name = "sample-test", schema = "sample-test-schema.yaml")
+@OnapCommandSchema(name = "sample-test", version="cli-1.0", schema = "sample-test-schema.yaml")
 public class OnapCommandSample extends OnapCommand {
 
     public OnapCommandSample() {
index a076eee..840a75d 100644 (file)
@@ -50,7 +50,7 @@ public class OnapCommandRegistrarTest {
             if (!file.exists()) {
                 file.mkdir();
             } else {
-                File f1 = new File(path + "/external-schema.json");
+                File f1 = new File(path + "/cli-schema.json");
                 f1.delete();
             }
         }
@@ -60,7 +60,7 @@ public class OnapCommandRegistrarTest {
     public void registerTest() throws OnapCommandException {
         OnapCommand test = new OnapCommandTest();
         Class<OnapCommand> cmd = (Class<OnapCommand>) test.getClass();
-        registerar.register("Test", cmd);
+        registerar.register("Test", "cli-1.0", cmd);
         OnapCommand cc = registerar.get("Test");
         assertTrue(cmd == cc.getClass());
 
@@ -71,7 +71,7 @@ public class OnapCommandRegistrarTest {
     public void cmdTestSchema() throws OnapCommandException {
         OnapCommand test = new OnapCommandTest();
         Class<OnapCommand> cmd = (Class<OnapCommand>) test.getClass();
-        registerar.register("Test", cmd);
+        registerar.register("Test", "cli-1.0", cmd);
         OnapCommand cc = registerar.get("Test");
     }
 
@@ -82,14 +82,16 @@ public class OnapCommandRegistrarTest {
             registerar.get("Test1");
             fail("This should have thrown an exception");
         } catch (OnapCommandNotFound e) {
-            assertEquals(e.getMessage(), "0x0011::Command Test1 is not registered");
+            //pass  // NOSONAR
+        } catch (Exception e) {
+            fail("This should have thrown an OnapCommandNotFound exception");
         }
     }
 
     @Test
     public void onapCommandRegistrationFailedTest() throws OnapCommandException {
 
-        @OnapCommandSchema(name = "Test2", schema = "sample-test-schema.yaml")
+        @OnapCommandSchema(name = "Test2", version= "cli-1.0", schema = "sample-test-schema.yaml")
         class Test extends OnapCommand {
 
             @Override
@@ -102,7 +104,7 @@ public class OnapCommandRegistrarTest {
         OnapCommand com = new Test();
         Class<OnapCommand> cmd = (Class<OnapCommand>) com.getClass();
         try {
-            registerar.register("Test2", cmd);
+            registerar.register("Test2", "cli-1.0", cmd);
             registerar.get("Test2");
             fail("This should have thrown an exception");
         } catch (OnapCommandRegistrationFailed e) {
@@ -116,7 +118,7 @@ public class OnapCommandRegistrarTest {
         OnapCommand test = new OnapCommandTest1();
         Class<OnapCommand> cmd = (Class<OnapCommand>) test.getClass();
         registerar = new OnapCommandRegistrar();
-        registerar.register("test1", cmd);
+        registerar.register("test1", "cli-1.0", cmd);
         String help = registerar.getHelp();
         assertNotNull(help);
     }
@@ -139,7 +141,7 @@ public class OnapCommandRegistrarTest {
     }
 }
 
-@OnapCommandSchema(name = OnapCommandTest.CMD_NAME, schema = "sample-test-schema.yaml")
+@OnapCommandSchema(name = OnapCommandTest.CMD_NAME, version = "cli-1.0", schema = "sample-test-schema.yaml")
 class OnapCommandTest extends OnapCommand {
 
     public OnapCommandTest() {
@@ -154,7 +156,7 @@ class OnapCommandTest extends OnapCommand {
 
 }
 
-@OnapCommandSchema(name = OnapCommandTest1.CMD_NAME, schema = "test-schema.yaml")
+@OnapCommandSchema(name = OnapCommandTest1.CMD_NAME, version = "cli-1.0", schema = "test-schema.yaml")
 class OnapCommandTest1 extends OnapCommand {
 
     public OnapCommandTest1() {
index 1d0c1a6..0a388e5 100644 (file)
@@ -190,9 +190,11 @@ public class OnapCommandErrorTest {
 
     @Test
     public void onapCommandNotFoundTest() {
-        OnapCommandNotFound failed = new OnapCommandNotFound("Test");
+        OnapCommandNotFound failed = new OnapCommandNotFound("Test", "1.0");
 
-        assertEquals("0x0011::Command Test is not registered", failed.getMessage());
+        assertEquals("0x0011::Command Test is not available for product version 1.0."
+                + " so please check command name or product version set in env variable CLI_PRODUCT_VERSION or"
+                + " cli.product.version in onap.properties", failed.getMessage());
     }
 
     @Test
index 064576d..5a992c6 100644 (file)
@@ -434,14 +434,14 @@ public class OnapCommandUtilsTest {
 
     }
 
-    @OnapCommandSchema(name = "sample-test", schema = "sample-test-schema.yaml")
+    @OnapCommandSchema(name = "sample-test", version = "cli-1.0", schema = "sample-test-schema.yaml")
     class OnapCommandSample extends OnapCommand {
         @Override
         protected void run() throws OnapCommandException {
         }
     }
 
-    @OnapCommandSchema(name = "sample-swagger-test", schema = "sample-test-schema-swagger.yaml")
+    @OnapCommandSchema(name = "sample-swagger-test", version = "cli-1.0", schema = "sample-test-schema-swagger.yaml")
     class OnapSwaggerBasedCommandSample extends OnapSwaggerCommand {
 
         @Override
@@ -449,7 +449,7 @@ public class OnapCommandUtilsTest {
         }
     }
 
-    @OnapCommandSchema(name = "sample-http-test", schema = "sample-test-schema-http.yaml")
+    @OnapCommandSchema(name = "sample-http-test", version = "cli-1.0", schema = "sample-test-schema-http.yaml")
     class OnapHttpCommandSample extends OnapHttpCommand {
 
         @Override
index fa73ea6..f7ba235 100644 (file)
@@ -34,9 +34,9 @@ public class OpenCommandRegistrarTest {
     public void test() throws OnapCommandException {
         OnapCommandRegistrar registrar = OnapCommandRegistrar.getRegistrar();
         OnapCommand cmd = registrar.get("sample-test");
-        registrar.listCommands();
-        registrar.getAllCommandToSchemaMap();
         cmd.printVersion();
+        registrar.listCommands();
+
     }
 
 }
index 18a7bb1..0da1d22 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test1
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
index aa65606..0a2f5c4 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+verion: cli-1.0
 service:
   name: sample
   version: v1
diff --git a/framework/src/test/resources/onap.properties b/framework/src/test/resources/onap.properties
new file mode 100644 (file)
index 0000000..9e6b34b
--- /dev/null
@@ -0,0 +1,56 @@
+cli.ignore_auth=false
+cli.version=1.0
+cli.http.api_key_use_cookies=true
+
+cli.service_name=onap-cli
+cli.api_gateway=msb
+cli.auth_service=auth
+
+# service section
+cli.exclude_params_internal_cmd=onap-username,onap-password,host-url,no-auth
+cli.no_auth_disable_include_params_external_cmd=onap-username,onap-password,host-url,no-auth
+cli.no_auth_enable_exclude_params_external_cmd=onap-username,onap-password,no-auth
+cli.no_auth_enable_include_params_external_cmd=host-url
+
+cli.http.basic.common_headers=x-auth-token,x-transaction-id,x-app-id
+cli.http.basic.common_headers.x-auth-token=Authorization
+cli.http.basic.common_headers.x-transaction-id=X-TransactionId
+cli.http.basic.common_headers.x-transaction-id.value=req-uuid
+cli.http.basic.common_headers.x-app-id=X-FromAppId
+cli.http.basic.common_headers.x-app-id.value=onap-cli
+
+# Service specific headers
+cli.http.basic.common_headers.sdc=user-id
+cli.http.basic.common_headers.sdc.user-id=USER_ID
+cli.http.basic.common_headers.sdc.user-id.value=${onap-username}
+
+#TODO mrkanag add support for aaf like defined above for basic
+#cli.service.auth=aaf
+
+#schema validation
+cli.schema.top_level_params_list=onap_cmd_schema_version,name,version,description,service,parameters,results,http
+cli.schema.top_level_mandatory_list=onap_cmd_schema_version
+
+cli.schema.service_params_list=name,version,auth,mode
+cli.schema.service_params_mandatory_list=name,version
+
+cli.schema.input_params_list=name,description,type,short_option,long_option, is_optional,default_value,is_secured
+cli.schema.input_params_mandatory_list=name,description,type
+
+cli.schema.result_params_list=name,description,scope,type,is_secured
+cli.schema.result_params_mandatory_list=name, description, type
+
+cli.schema.http_sections=request,success_codes,result_map,sample_response
+cli.schema.http_mandatory_sections=equest, success_codes
+
+cli.schema.http_request_params=uri,method,body,headers,queries,multipart_entity_name
+cli.schema.http_request_mandatory_params=uri,method
+
+cli.schema.http_methods=post,get,delete,put,head
+
+cli.schema.boolean_values=true,false
+cli.schema.auth_values=none,basic
+cli.schema.mode_values=direct,catalog
+
+#product version
+cli.product.version=cli-1.0
index 8761bb3..a18aacc 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
index df4ed31..375f454 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
index 519f6e3..9c50145 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
index ed21772..fc301bb 100644 (file)
@@ -1,11 +1,12 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
 parameters:
-  -- name: bool-param
+  - name: bool-param
     type: bool
     description: Onap boolean param, by default its always false.
     short_option: b
index 4df6445..408c74c 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
index 7bbf677..56a0a53 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-create-http
 description: Register microservice into Onap
+version: onap-1.0
 service:
   name: msb
   version: v1
index c88ddb7..b994436 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test-swagger
 description: Sample swagger command test.
+version: cli-1.0
 service:
   name: sample
   version: v1
index dbb5cbe..2f02177 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: onap-1.0
 service:
   name: sample
   version: v1
index 05daf11..2695c3f 100644 (file)
@@ -86,7 +86,7 @@ public class OnapCli {
             if ((args.isEmpty())
                     || ((args.size() == 1) && (this.getLongOption(OnapCliConstants.PARAM_HELP_LOGN).equals(args.get(0))
                             || this.getShortOption(OnapCliConstants.PARAM_HELP_SHORT).equals(args.get(0))))) {
-                this.print(IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream("onap-readme.txt")));
+                this.print(IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream("README.md")));
                 String help = OnapCommandRegistrar.getRegistrar().getHelp();
                 this.print(help);
                 this.exitSuccessfully();
@@ -173,7 +173,7 @@ public class OnapCli {
     private ConsoleReader createConsoleReader() throws IOException {
         ConsoleReader console = new ConsoleReader();
         try {
-            StringCompleter strCompleter = new StringCompleter(OnapCommandRegistrar.getRegistrar().listCommands());
+            StringCompleter strCompleter = new StringCompleter(OnapCommandRegistrar.getRegistrar().listCommandsForEnabledProductVersion());
             strCompleter.add(OnapCliConstants.PARAM_INTERACTIVE_EXIT,
                     OnapCliConstants.PARAM_INTERACTIVE_CLEAR);
             console.addCompleter(strCompleter);
index 737cd04..1008737 100644 (file)
@@ -12,4 +12,7 @@ To know the CLI version, type onap [-v|--version]
 To know the CLI usage, type onap [-h|--help]
 To know the usage of sub commands, type onap <command> [-h|--help]
 
-To know more, please refer the Onap wiki https://wiki.onap.org
\ No newline at end of file
+To know more, please refer the Onap wiki https://wiki.onap.org
+
+NOTE: This file has been deprecated in amesterdam release and is
+replaced by README.md file
\ No newline at end of file
index 517d6c4..b06824b 100644 (file)
@@ -24,7 +24,7 @@ import org.onap.cli.fw.error.OnapCommandException;
  * This command helps to test the Command functionalities.
  *
  */
-@OnapCommandSchema(name = "sample-test", schema = "sample-test-schema.yaml")
+@OnapCommandSchema(name = "sample-test", version = "cli-1.0", schema = "sample-test-schema.yaml")
 public class OnapCommandSampleTest extends OnapCommand {
 
     @Override
index 6fb12be..478f58f 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-create
 description: Sample create into Onap
+version: cli-1.0
 service:
   name: sample
   version: v1
index 419f416..b198824 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: sample-test
 description: Onap sample command to test the command features
+version: cli-1.0
 service:
   name: sample
   version: v1
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..511e090
--- /dev/null
@@ -0,0 +1,52 @@
+onap_cmd_schema_version: 1.0
+name: cloud-list
+description: List the configured clouds and Onap service subscriptions
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+results:
+  direction: landscape
+  attributes:
+    - name: cloud
+      description: Onap cloud
+      scope: short
+      type: string
+    - name: region
+      description: Onap cloud region
+      scope: short
+      type: string
+    - name: tenant
+      description: Onap cloud tenat
+      scope: long
+      type: string
+    - name: tenant-id
+      description: Onap cloud tenat id
+      scope: long
+      type: string
+    - name: customer
+      description: Onap cloud customer
+      scope: long
+      type: string
+    - name: service
+      description: Onap cloud service
+      scope: long
+      type: string
+http:
+  request:
+    uri: /aai/v11/cloud-infrastructure/cloud-regions
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    cloud: $b{cloud-region.[*].cloud-owner}
+    region: $b{cloud-region.[*].cloud-region-id}
+    tenant: $b{cloud-region.[*].tenants.tenant.[*].tenant-name}
+    tenant-id: $b{cloud-region.[*].tenants.tenant.[*].tenant-id}
+    customer: $b{cloud-region.[*].tenants.tenant.[*].relationship-list.relationship.[*].relationship-data.[?(@.relationship-key == 'customer.global-customer-id')].relationship-value}
+    service: $b{cloud-region.[*].tenants.tenant.[*].relationship-list.relationship.[*].relationship-data.[?(@.relationship-key == 'service-subscription.service-type')].relationship-value}
+  sample_response:
+    body: '{"cloud-region":[{"cloud-owner":"Rackspace","cloud-region-id":"RegionOne","cloud-type":"SharedNode","owner-defined-type":"OwnerType","cloud-region-version":"v1","cloud-zone":"CloudZone","resource-version":"1500729864","tenants":{"tenant":[{"tenant-id":"e69e6d64b44347509c3fc512391f34a6","tenant-name":"onap","resource-version":"1500729865","relationship-list":{"relationship":[{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"Demonstration"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/Demonstration123/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"Demonstration123"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/u1/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"u1"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/u2/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"u2"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vLB/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"Demonstration"},{"relationship-key":"service-subscription.service-type","relationship-value":"vLB"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/Linan/service-subscriptions/service-subscription/vFW/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"Linan"},{"relationship-key":"service-subscription.service-type","relationship-value":"vFW"}]},{"related-to":"service-subscription","related-link":"https://192.168.17.12:8443/aai/v8/business/customers/customer/Linan/service-subscriptions/service-subscription/vLB/","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"Linan"},{"relationship-key":"service-subscription.service-type","relationship-value":"vLB"}]}]}}]}}]}'
index cb04aac..1f23125 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: cloud-list
 description: List the configured clouds and Onap service subscriptions
+version: onap-1.0
 service:
   name: aai
   version: v8
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..a3d61b4
--- /dev/null
@@ -0,0 +1,33 @@
+onap_cmd_schema_version: 1.0
+name: customer-create
+description: Create a customer in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+  - name: subscriber-name
+    description: Onap subscriber name
+    type: string
+    short_option: y
+    long_option: subscriber-name
+    is_optional: false
+
+http:
+  request:
+    uri: /aai/v11/business/customers/customer/${customer-name}
+    method: PUT
+    body: '{"global-customer-id": "${customer-name}", "subscriber-name": "${subscriber-name}", "subscriber-type": "INFRA"}'
+  success_codes:
+    - 201
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..2e6c1eb
--- /dev/null
@@ -0,0 +1,30 @@
+onap_cmd_schema_version: 1.0
+name: customer-delete
+description: Delete a customer from Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+  - name: resource-version
+    description: Onap customer resource version
+    type: uuid
+    short_option: y
+    long_option: resource-version
+    is_optional: true
+http:
+  request:
+    uri: /aai/v11/business/customers/customer/${customer-name}?resource-version=${resource-version}
+    method: DELETE
+  success_codes:
+    - 204
+    - 404
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..c49d3cb
--- /dev/null
@@ -0,0 +1,31 @@
+onap_cmd_schema_version: 1.0
+name: customer-list
+description: Lists the registetred customers in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+results:
+  direction: landscape
+  attributes:
+    - name: name
+      description: Onap customer name
+      scope: short
+      type: string
+    - name: resource-version
+      description: Onap customer resource version
+      scope: short
+      type: string
+http:
+  request:
+    uri: /aai/v11/business/customers
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: $b{customer.[*].global-customer-id}
+    resource-version: $b{customer.[*].resource-version}
+  sample_response:
+    body: '{"customer":[{"global-customer-id":"Demonstration","subscriber-name":"Demonstration","subscriber-type":"INFRA","resource-version":"1500729865","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1500729865","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1500729865","service-instances":{"service-instance":[{"service-instance-id":"d6167ea1-ff83-4236-9b32-37494dfb7537","service-instance-name":"demoVLB-1","persona-model-id":"af01a849-721b-407d-a880-be836e26ee81","persona-model-version":"1.0","resource-version":"1501154574","relationship-list":{"relationship":[{"related-to":"generic-vnf","related-link":"https://192.168.17.12:8443/aai/v8/network/generic-vnfs/generic-vnf/16c6d95d-44e3-4527-aa63-a495bf8e776e/","relationship-data":[{"relationship-key":"generic-vnf.vnf-id","relationship-value":"16c6d95d-44e3-4527-aa63-a495bf8e776e"}],"related-to-property":[{"property-key":"generic-vnf.vnf-name","property-value":"demoVLB-1-VNF-1"}]}]}}]},"relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}},{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}},{"global-customer-id":"DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19","subscriber-name":"DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19","subscriber-type":"INFRA","resource-version":"1501766760","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501766760","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}]}'
\ No newline at end of file
index a4f701b..79c4e20 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: customer-list
 description: Lists the registetred customers in Onap
+version: onap-1.0
 service:
   name: aai
   version: v8
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..c7a39bc
--- /dev/null
@@ -0,0 +1,50 @@
+onap_cmd_schema_version: 1.0
+name: customer-show
+description: Lists the registetred customers in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+
+results:
+  direction: landscape
+  attributes:
+    - name: name
+      description: Onap customer name
+      scope: short
+      type: string
+    - name: subscriber-name
+      description: Onap subscriber name
+      scope: short
+      type: string
+    - name: resource-version
+      description: Onap subscriber resource version
+      scope: long
+      type: string
+    - name: subscriber-type
+      description: Onap subscriber type
+      scope: long
+      type: string
+http:
+  request:
+    uri: /aai/v11/business/customers/customer/${customer-name}
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: $b{$.global-customer-id}
+    subscriber-name: $b{$.subscriber-name}
+    subscriber-type: $b{$.subscriber-type}
+    resource-version: $b{$.resource-version}
+  sample_response:
+    body: '{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}'
index 7923779..ff5a5c7 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: customer-show
 description: Lists the registetred customers in Onap
+version: onap-1.0
 service:
   name: aai
   version: v8
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..a91f005
--- /dev/null
@@ -0,0 +1,33 @@
+onap_cmd_schema_version: 1.0
+name: service-type-create
+description: Add a service type in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: service-type
+    description: Onap service type
+    type: string
+    short_option: x
+    long_option: service-type
+    is_optional: false
+  - name: service-type-id
+    description: Onap service type uuid
+    type: uuid
+    short_option: y
+    long_option: service-type-id
+    is_optional: true
+
+http:
+  request:
+    uri: /aai/v11/service-design-and-creation/services/service/${service-type-id}
+    method: PUT
+    body: '{"service-description": "${service-type}", "service-id": "${service-type-id}"}'
+  success_codes:
+    - 201
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..30296a9
--- /dev/null
@@ -0,0 +1,34 @@
+onap_cmd_schema_version: 1.0
+name: service-type-delete
+description: Delete a service type from Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: service-type-id
+    description: Onap service type uuid
+    type: uuid
+    short_option: x
+    long_option: service-type-id
+    is_optional: true
+  - name: resource-version
+    description: Onap service resource version
+    type: uuid
+    short_option: y
+    long_option: resource-version
+    is_optional: true
+http:
+  request:
+    uri: /aai/v11/service-design-and-creation/services/service/${service-type-id}?resource-version=${resource-version}
+    queries:
+      resource-version: ${resource-version}
+    method: DELETE
+  success_codes:
+    - 204
+    - 404
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..ac57b05
--- /dev/null
@@ -0,0 +1,37 @@
+onap_cmd_schema_version: 1.0
+name: service-type-list
+description: List the service types configured in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+results:
+  direction: landscape
+  attributes:
+    - name: service-type-id
+      description: Onap cloud service
+      scope: short
+      type: string
+    - name: service-type
+      description: Onap cloud service
+      scope: short
+      type: string
+    - name: resource-version
+      description: Onap cloud service resource version
+      scope: short
+      type: string
+http:
+  request:
+    uri: /aai/v11/service-design-and-creation/services
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    service-type: $b{service.[*].service-description}
+    service-type-id: $b{service.[*].service-id}
+    resource-version: $b{service.[*].resource-version}
+  sample_response:
+    body: '{"service":[{"service-id":"db3403eb-5c94-4295-bb00-a9dba8964ab3","service-description":"vFW","resource-version":"1500729865"},{"service-id":"33737156-ff09-4b3d-884a-fe9a372afa4e","service-description":"vLB","resource-version":"1500729866"}]}'
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..9b86330
--- /dev/null
@@ -0,0 +1,63 @@
+onap_cmd_schema_version: 1.0
+name: subscription-create
+description: Create a subscription for a customer in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+  - name: subscriber-name
+    description: Onap subscriber name
+    type: string
+    short_option: y
+    long_option: subscriber-name
+    is_optional: false
+  - name: cloud-type
+    description: Onap cloud type (openstack, rackspace)
+    type: string
+    short_option: z
+    long_option: cloud-type
+    is_optional: false
+  - name: cloud-region
+    description: Onap cloud region
+    type: string
+    short_option: r
+    long_option: cloud-region
+    is_optional: false
+  - name: cloud-tenant-id
+    description: Onap cloud tenant id
+    type: string
+    short_option: c
+    long_option: cloud-tenant-id
+    is_optional: false
+  - name: service-type
+    description: Onap service type
+    type: string
+    short_option: e
+    long_option: service-type
+    is_optional: false
+  - name: resource-version
+    description: Onap subscription resource version. It is mandatory for existing customer to create a new subscription
+    type: string
+    short_option: g
+    long_option: resource-version
+    is_optional: true
+http:
+  request:
+    uri: /aai/v11/business/customers/customer/${customer-name}
+    method: PUT
+    body: '{"global-customer-id": "${customer-name}", "subscriber-name": "${subscriber-name}", "subscriber-type": "INFRA", "resource-version":"${resource-version}", "service-subscriptions":{"service-subscription":[{"relationship-list":{"relationship":[{"related-to":"tenant","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"${cloud-type}"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"${cloud-region}"},{"relationship-key":"tenant.tenant-id","relationship-value":"${cloud-tenant-id}"}]}]},"service-type":"${service-type}"}]}}}'
+  success_codes:
+    - 200
+    - 201
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema-1.1.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema-1.1.yaml
new file mode 100644 (file)
index 0000000..b4d1093
--- /dev/null
@@ -0,0 +1,40 @@
+onap_cmd_schema_version: 1.0
+name: subscription-list
+description: Lists the subscription for a given customer in Onap
+version: onap-1.1
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+
+results:
+  direction: landscape
+  attributes:
+    - name: service-type
+      description: Onap service type
+      scope: short
+      type: string
+
+http:
+  request:
+    uri: /aai/v11/business/customers/customer/${customer-name}
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    service-type: $b{$.service-subscriptions.service-subscription.[*].service-type}
+  sample_response:
+    body: '{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}'
+
+
+
+
index e3131eb..f3bb9f7 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: subscription-list
 description: Lists the subscription for a given customer in Onap
+version: onap-1.0
 service:
   name: aai
   version: v8
index 8b46e6b..4246d65 100644 (file)
@@ -19,6 +19,6 @@ package org.onap.cli.cmd.cs.msb;
 import org.onap.cli.fw.OnapCommandSchema;
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 
-@OnapCommandSchema(name = "microservice-create", schema = "microservice-create-schema.yaml")
+@OnapCommandSchema(name = "microservice-create", version = "onap-1.0", schema = "microservice-create-schema.yaml")
 public class OnapServiceCreateCommand extends OnapHttpCommand {
 }
index 595934d..5522723 100644 (file)
@@ -19,6 +19,6 @@ package org.onap.cli.cmd.cs.msb;
 import org.onap.cli.fw.OnapCommandSchema;
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 
-@OnapCommandSchema(name = "microservice-delete", schema = "microservice-delete-schema.yaml")
+@OnapCommandSchema(name = "microservice-delete", version = "onap-1.0", schema = "microservice-delete-schema.yaml")
 public class OnapServiceDeleteCommand extends OnapHttpCommand {
 }
index 436d187..fadbf02 100644 (file)
@@ -19,6 +19,6 @@ package org.onap.cli.cmd.cs.msb;
 import org.onap.cli.fw.OnapCommandSchema;
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 
-@OnapCommandSchema(name = "microservice-list", schema = "microservice-list-schema.yaml")
+@OnapCommandSchema(name = "microservice-list", version = "onap-1.0", schema = "microservice-list-schema.yaml")
 public class OnapServiceListCommand extends OnapHttpCommand {
 }
index 2256cc6..bef3af9 100644 (file)
@@ -19,6 +19,6 @@ package org.onap.cli.cmd.cs.msb;
 import org.onap.cli.fw.OnapCommandSchema;
 import org.onap.cli.fw.cmd.OnapHttpCommand;
 
-@OnapCommandSchema(name = "microservice-show", schema = "microservice-show-schema.yaml")
+@OnapCommandSchema(name = "microservice-show", version = "onap-1.0", schema = "microservice-show-schema.yaml")
 public class OnapServiceShowCommand extends OnapHttpCommand {
 }
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: microservice-list
 description: Lists the registetred micro services in Onap
+version: onap-1.0
 service:
   name: msb
   version: v1
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: microservice-show
 description: Details the registered microservice in Onap
+version: onap-1.0
 service:
   name: msb
   version: v1
index 72e774b..f7a45a3 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: service-list
 description: Onap Service list
+version: onap-1.0
 service:
   name: msb
   version: v1
index 3f1e886..08bbd5b 100644 (file)
@@ -1,6 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: user-create
 description: Onap user create command.
+version: onap-1.0
 service:
   name: auth
   version: v1
index a845deb..4bd8b1f 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-checkin
 description: Checkin Vendor Software Product
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index 6f46088..f090b03 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-create
 description: Create Vendor Software Product
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index 9fe2564..1055f29 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-list
 description: List of the Vendor Software Products
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index 0f400b7..83e1113 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-show
 description: Details of the Vendor Software Product
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index 9557293..631e204 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-submit
 description: Submit Vendor Software Product
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index bc0bc4c..5786531 100644 (file)
@@ -1,7 +1,7 @@
 onap_cmd_schema_version: 1.0
 name: vsp-upload
 description: Upload the CSAR file to VSP
-
+version: onap-1.0
 service:
   name: sdc
   version: v1.0
index 6e3263e..c5d6491 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-checkin
-
+version: onap-1.0
 samples:
     sample1:
         name: Checkin the Vendor Software Product
index c261899..c96a76f 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-create
-
+version: onap-1.0
 samples:
     sample1:
         name: Create the Vendor Software Product
index 82013df..4cfa64a 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-list
-
+version: onap-1.0
 samples:
     sample1:
         name: List Vendor Software Products
index f599b74..4938c0c 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-show
-
+version: onap-1.0
 samples:
     sample1:
         name: Show the details of Vendor Software Products
index 19f3d7d..568fdf7 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-submit
-
+version: onap-1.0
 samples:
     sample1:
         name: Submit the Vendor Software Product
index 7fecc8a..1fd1034 100644 (file)
@@ -1,7 +1,7 @@
 onap_cli_sample_version: 1.0
 
 name: vsp-upload
-
+version: onap-1.0
 samples:
     sample1:
         name: upload the zip file to Vendor Software Product
diff --git a/validation/pom.xml b/validation/pom.xml
new file mode 100644 (file)
index 0000000..adeb49b
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2017 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+         http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.cli</groupId>
+        <artifactId>cli</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>cli-validation</artifactId>
+    <name>cli/validation</name>
+    <packaging>jar</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+  </dependencies>
+</project>