diff options
81 files changed, 795 insertions, 99 deletions
diff --git a/deployment/docker/src/main/docker/Dockerfile b/deployment/docker/src/main/docker/Dockerfile index 1b453def..83ebb615 100644 --- a/deployment/docker/src/main/docker/Dockerfile +++ b/deployment/docker/src/main/docker/Dockerfile @@ -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 && \ diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java index 08cbc3bc..c65ca9a8 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java @@ -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; + } } diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java index 567e0381..ca875b35 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java @@ -16,6 +16,14 @@ 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); } /** @@ -92,6 +100,27 @@ public class OnapCommandRegistrar { } /** + * 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. * * @return map @@ -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); } diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java b/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java index 853d3583..471ab057 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java @@ -40,6 +40,13 @@ public @interface OnapCommandSchema { String name(); /** + * Command version + * + * @return + */ + String version(); + + /** * Schema file name placed under class path * * @return diff --git a/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java b/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java index e9d495c6..458a7587 100644 --- a/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java +++ b/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java @@ -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; } diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java index 57432751..81cdfca2 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java @@ -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 diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java index b1811483..140ac818 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java @@ -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 diff --git a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java index e9b158e7..980b94d3 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java @@ -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"; diff --git a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java index 479431f2..5ca0589f 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java @@ -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); } diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java index 172d60bb..4a070fb3 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java @@ -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 index 00000000..2bad5a4c --- /dev/null +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java @@ -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"); + } +} diff --git a/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java b/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java index e9f19673..12f217ce 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java @@ -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"); + } + } 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 625c644b..b31b75cf 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 @@ -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; } diff --git a/framework/src/main/resources/schema-refresh.yaml b/framework/src/main/resources/onap-cli-schema/schema-refresh.yaml index 59f2496c..56492502 100644 --- a/framework/src/main/resources/schema-refresh.yaml +++ b/framework/src/main/resources/onap-cli-schema/schema-refresh.yaml @@ -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 diff --git a/framework/src/main/resources/schema-validate.yaml b/framework/src/main/resources/onap-cli-schema/schema-validate.yaml index 76945793..a4c1fd29 100644 --- a/framework/src/main/resources/schema-validate.yaml +++ b/framework/src/main/resources/onap-cli-schema/schema-validate.yaml @@ -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 diff --git a/framework/src/main/resources/onap.properties b/framework/src/main/resources/onap.properties index 9d59f1e2..9e6b34bd 100644 --- a/framework/src/main/resources/onap.properties +++ b/framework/src/main/resources/onap.properties @@ -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 diff --git a/framework/src/test/java/org/onap/cli/cmd/sample/OnapCommandSample.java b/framework/src/test/java/org/onap/cli/cmd/sample/OnapCommandSample.java index 69714ad7..16c92185 100644 --- a/framework/src/test/java/org/onap/cli/cmd/sample/OnapCommandSample.java +++ b/framework/src/test/java/org/onap/cli/cmd/sample/OnapCommandSample.java @@ -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() { diff --git a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java index a076eee6..840a75d7 100644 --- a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java +++ b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java @@ -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() { diff --git a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java index 1d0c1a6b..0a388e5f 100644 --- a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java +++ b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java @@ -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 diff --git a/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java b/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java index 064576d8..5a992c6f 100644 --- a/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java +++ b/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java @@ -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 diff --git a/framework/src/test/java/org/onap/cli/fw/utils/OpenCommandRegistrarTest.java b/framework/src/test/java/org/onap/cli/fw/utils/OpenCommandRegistrarTest.java index fa73ea6e..f7ba2355 100644 --- a/framework/src/test/java/org/onap/cli/fw/utils/OpenCommandRegistrarTest.java +++ b/framework/src/test/java/org/onap/cli/fw/utils/OpenCommandRegistrarTest.java @@ -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(); + } } diff --git a/framework/src/test/resources/onap-cli-schema/sample-test1-schema-http.yaml b/framework/src/test/resources/onap-cli-schema/sample-test1-schema-http.yaml index 18a7bb16..0da1d22e 100644 --- a/framework/src/test/resources/onap-cli-schema/sample-test1-schema-http.yaml +++ b/framework/src/test/resources/onap-cli-schema/sample-test1-schema-http.yaml @@ -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 diff --git a/framework/src/test/resources/onap-test-schema.yaml b/framework/src/test/resources/onap-test-schema.yaml index aa656064..0a2f5c47 100644 --- a/framework/src/test/resources/onap-test-schema.yaml +++ b/framework/src/test/resources/onap-test-schema.yaml @@ -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 index 00000000..9e6b34bd --- /dev/null +++ b/framework/src/test/resources/onap.properties @@ -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 diff --git a/framework/src/test/resources/sample-test-invalid-schema-duplicate-longoption.yaml b/framework/src/test/resources/sample-test-invalid-schema-duplicate-longoption.yaml index 8761bb30..a18aacc0 100644 --- a/framework/src/test/resources/sample-test-invalid-schema-duplicate-longoption.yaml +++ b/framework/src/test/resources/sample-test-invalid-schema-duplicate-longoption.yaml @@ -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/framework/src/test/resources/sample-test-invalid-schema-duplicate-name.yaml b/framework/src/test/resources/sample-test-invalid-schema-duplicate-name.yaml index df4ed316..375f4548 100644 --- a/framework/src/test/resources/sample-test-invalid-schema-duplicate-name.yaml +++ b/framework/src/test/resources/sample-test-invalid-schema-duplicate-name.yaml @@ -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/framework/src/test/resources/sample-test-invalid-schema-duplicate-shortoption.yaml b/framework/src/test/resources/sample-test-invalid-schema-duplicate-shortoption.yaml index 519f6e3b..9c501452 100644 --- a/framework/src/test/resources/sample-test-invalid-schema-duplicate-shortoption.yaml +++ b/framework/src/test/resources/sample-test-invalid-schema-duplicate-shortoption.yaml @@ -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/framework/src/test/resources/sample-test-invalid-schema.yaml b/framework/src/test/resources/sample-test-invalid-schema.yaml index ed21772c..fc301bbd 100644 --- a/framework/src/test/resources/sample-test-invalid-schema.yaml +++ b/framework/src/test/resources/sample-test-invalid-schema.yaml @@ -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 diff --git a/framework/src/test/resources/sample-test-schema-auth-required.yaml b/framework/src/test/resources/sample-test-schema-auth-required.yaml index 4df6445a..408c74c7 100644 --- a/framework/src/test/resources/sample-test-schema-auth-required.yaml +++ b/framework/src/test/resources/sample-test-schema-auth-required.yaml @@ -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/framework/src/test/resources/sample-test-schema-http.yaml b/framework/src/test/resources/sample-test-schema-http.yaml index 7bbf6775..56a0a536 100644 --- a/framework/src/test/resources/sample-test-schema-http.yaml +++ b/framework/src/test/resources/sample-test-schema-http.yaml @@ -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 diff --git a/framework/src/test/resources/sample-test-schema-swagger.yaml b/framework/src/test/resources/sample-test-schema-swagger.yaml index c88ddb7a..b9944363 100644 --- a/framework/src/test/resources/sample-test-schema-swagger.yaml +++ b/framework/src/test/resources/sample-test-schema-swagger.yaml @@ -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 diff --git a/framework/src/test/resources/sample-test-schema.yaml b/framework/src/test/resources/sample-test-schema.yaml index dbb5cbed..2f021779 100644 --- a/framework/src/test/resources/sample-test-schema.yaml +++ b/framework/src/test/resources/sample-test-schema.yaml @@ -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 diff --git a/main/src/main/java/org/onap/cli/main/OnapCli.java b/main/src/main/java/org/onap/cli/main/OnapCli.java index 05daf116..2695c3f7 100644 --- a/main/src/main/java/org/onap/cli/main/OnapCli.java +++ b/main/src/main/java/org/onap/cli/main/OnapCli.java @@ -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); diff --git a/main/src/main/resources/onap-readme.txt b/main/src/main/resources/onap-readme.txt index 737cd04d..1008737b 100644 --- a/main/src/main/resources/onap-readme.txt +++ b/main/src/main/resources/onap-readme.txt @@ -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 diff --git a/main/src/test/java/org/onap/cli/main/OnapCommandSampleTest.java b/main/src/test/java/org/onap/cli/main/OnapCommandSampleTest.java index 517d6c4f..b06824b6 100644 --- a/main/src/test/java/org/onap/cli/main/OnapCommandSampleTest.java +++ b/main/src/test/java/org/onap/cli/main/OnapCommandSampleTest.java @@ -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 diff --git a/main/src/test/resources/onap-cli-schema/sample-create-schema.yaml b/main/src/test/resources/onap-cli-schema/sample-create-schema.yaml index 6fb12beb..478f58f6 100644 --- a/main/src/test/resources/onap-cli-schema/sample-create-schema.yaml +++ b/main/src/test/resources/onap-cli-schema/sample-create-schema.yaml @@ -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 diff --git a/main/src/test/resources/sample-test-schema.yaml b/main/src/test/resources/sample-test-schema.yaml index 419f416c..b1988240 100644 --- a/main/src/test/resources/sample-test-schema.yaml +++ b/main/src/test/resources/sample-test-schema.yaml @@ -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 index 00000000..511e090a --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema-1.1.yaml @@ -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"}]}]}}]}}]}' diff --git a/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema.yaml index cb04aac7..1f231256 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/cloud-region/cloud-list-schema.yaml @@ -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 index 00000000..a3d61b41 --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema-1.1.yaml @@ -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-create-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml index 58c1a094..533cd71e 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: customer-create description: Create a customer in Onap +version: onap-1.0 service: name: aai version: v8 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 index 00000000..2e6c1ebc --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema-1.1.yaml @@ -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-delete-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema.yaml index 4c3fe055..3baca5eb 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-delete-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: customer-delete description: Delete a customer from Onap +version: onap-1.0 service: name: aai version: v8 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 index 00000000..c49d3cbb --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema-1.1.yaml @@ -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 diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml index a4f701b9..79c4e20a 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml @@ -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 index 00000000..c7a39bcb --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema-1.1.yaml @@ -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"}]}]}}]}}' diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml index 7923779a..ff5a5c71 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml @@ -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 index 00000000..a91f005b --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema-1.1.yaml @@ -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-create-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema.yaml index ad11c35d..0f5eea1f 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-create-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: service-type-create description: Add a service type 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-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 index 00000000..30296a94 --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema-1.1.yaml @@ -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-delete-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema.yaml index a2eecd93..d007a05c 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-delete-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: service-type-delete description: Delete a service type from 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-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 index 00000000..ac57b05b --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema-1.1.yaml @@ -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/service-type/service-type-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema.yaml index 7be38f1c..a81b6d95 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/service-type/service-type-list-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: service-type-list description: List the service types configured in Onap +version: onap-1.0 service: name: aai version: v8 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 index 00000000..9b86330e --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema-1.1.yaml @@ -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-create-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml index 58b5fc53..9bd67350 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: subscription-create description: Create a subscription for a customer in Onap +version: onap-1.0 service: name: aai version: v8 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 index 00000000..b4d1093c --- /dev/null +++ b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema-1.1.yaml @@ -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"}]}]}}]}}' + + + + diff --git a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml index e3131eb0..f3bb9f7f 100644 --- a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml +++ b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml @@ -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 diff --git a/plugins/aai/src/test/resources/onap-cli-sample/cloud-region/cloud-list-sample.yaml b/plugins/aai/src/test/resources/onap-cli-sample/cloud-region/cloud-list-sample.yaml index 55e65a99..95ea4112 100644 --- a/plugins/aai/src/test/resources/onap-cli-sample/cloud-region/cloud-list-sample.yaml +++ b/plugins/aai/src/test/resources/onap-cli-sample/cloud-region/cloud-list-sample.yaml @@ -1,7 +1,7 @@ onap_cli_sample_version: 1.0 name: cloud-list - +version: onap-1.0 samples: sample1: name: List the configured clouds in onap diff --git a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceCreateCommand.java b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceCreateCommand.java index 8b46e6b8..4246d654 100644 --- a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceCreateCommand.java +++ b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceCreateCommand.java @@ -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 { } diff --git a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceDeleteCommand.java b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceDeleteCommand.java index 595934d9..5522723b 100644 --- a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceDeleteCommand.java +++ b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceDeleteCommand.java @@ -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 { } diff --git a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceListCommand.java b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceListCommand.java index 436d187b..fadbf020 100644 --- a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceListCommand.java +++ b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceListCommand.java @@ -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 { } diff --git a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceShowCommand.java b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceShowCommand.java index 2256cc61..bef3af9b 100644 --- a/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceShowCommand.java +++ b/plugins/msb/src/main/java/org/onap/cli/cmd/cs/msb/OnapServiceShowCommand.java @@ -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 { } diff --git a/plugins/msb/src/main/resources/microservice-create-schema.yaml b/plugins/msb/src/main/resources/onap-cli-schema/microservice-create-schema.yaml index 13bd53b1..71f068c1 100644 --- a/plugins/msb/src/main/resources/microservice-create-schema.yaml +++ b/plugins/msb/src/main/resources/onap-cli-schema/microservice-create-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: microservice-create description: Register microservice into Onap +version: onap-1.0 service: name: msb version: v1 diff --git a/plugins/msb/src/main/resources/microservice-delete-schema.yaml b/plugins/msb/src/main/resources/onap-cli-schema/microservice-delete-schema.yaml index 695efe1e..af92172f 100644 --- a/plugins/msb/src/main/resources/microservice-delete-schema.yaml +++ b/plugins/msb/src/main/resources/onap-cli-schema/microservice-delete-schema.yaml @@ -1,6 +1,7 @@ onap_cmd_schema_version: 1.0 name: microservice-delete description: Deletes the micro service from Onap +version: onap-1.0 service: name: msb version: v1 diff --git a/plugins/msb/src/main/resources/microservice-list-schema.yaml b/plugins/msb/src/main/resources/onap-cli-schema/microservice-list-schema.yaml index 42fa0ec4..1688ef24 100644 --- a/plugins/msb/src/main/resources/microservice-list-schema.yaml +++ b/plugins/msb/src/main/resources/onap-cli-schema/microservice-list-schema.yaml @@ -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 diff --git a/plugins/msb/src/main/resources/microservice-show-schema.yaml b/plugins/msb/src/main/resources/onap-cli-schema/microservice-show-schema.yaml index 26cccfd3..3173b779 100644 --- a/plugins/msb/src/main/resources/microservice-show-schema.yaml +++ b/plugins/msb/src/main/resources/onap-cli-schema/microservice-show-schema.yaml @@ -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 diff --git a/plugins/msb/src/test/resources/service-list-schema.yaml b/plugins/msb/src/test/resources/service-list-schema.yaml index 72e774b8..f7a45a3c 100644 --- a/plugins/msb/src/test/resources/service-list-schema.yaml +++ b/plugins/msb/src/test/resources/service-list-schema.yaml @@ -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 diff --git a/plugins/msb/src/test/resources/user-create-schema.yaml b/plugins/msb/src/test/resources/user-create-schema.yaml index 3f1e8866..08bbd5b6 100644 --- a/plugins/msb/src/test/resources/user-create-schema.yaml +++ b/plugins/msb/src/test/resources/user-create-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml index a845deb5..4bd8b1f4 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml index 6f460884..f090b035 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml index 9fe2564e..1055f297 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml index 0f400b74..83e11139 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml index 95572939..631e204d 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml @@ -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 diff --git a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml index bc0bc4c7..5786531c 100644 --- a/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml +++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml @@ -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 diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml index 6e3263e3..c5d64917 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml @@ -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 diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml index c261899d..c96a76fd 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml @@ -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 diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml index 82013df6..4cfa64af 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml @@ -1,7 +1,7 @@ onap_cli_sample_version: 1.0 name: vsp-list - +version: onap-1.0 samples: sample1: name: List Vendor Software Products diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml index f599b747..4938c0cb 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml @@ -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 diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml index 19f3d7d0..568fdf72 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml @@ -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 diff --git a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml index 7fecc8a0..1fd10340 100644 --- a/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml +++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml @@ -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 index 00000000..adeb49b8 --- /dev/null +++ b/validation/pom.xml @@ -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> |