summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBharath Thiruveedula <bharath_ves@hotmail.com>2017-08-07 08:28:13 +0530
committerBharath Thiruveedula <bharath_ves@hotmail.com>2017-08-26 00:02:33 +0530
commita7a64477c28b433ba05afbe65155450d6ae3cba8 (patch)
tree103e4301b0831fe81193b65971ed66ebbd56828d
parent42ad121a52d01dd203c529f2ba7753f82d45ec21 (diff)
Add VSP lifecycle commands
Change-Id: Ibdc78b3ab1921c160f8ee193fcd47be0c75f94a9 Issue-ID: CLI-16 Signed-off-by: Bharath T<bharath.thiruveedula@verizon.com>
-rwxr-xr-x[-rw-r--r--]deployment/zip/src/main/release/bin/onap.sh0
-rw-r--r--framework/src/main/java/org/onap/cli/fw/OnapCommand.java3
-rw-r--r--framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java21
-rw-r--r--framework/src/main/java/org/onap/cli/fw/conf/Constants.java1
-rw-r--r--framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java25
-rw-r--r--framework/src/main/java/org/onap/cli/fw/http/HttpInput.java11
-rw-r--r--framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java3
-rw-r--r--framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java5
-rw-r--r--framework/src/main/resources/onap.properties9
-rw-r--r--framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java22
-rw-r--r--framework/src/test/resources/onap.properties7
-rw-r--r--plugins/pom.xml1
-rw-r--r--plugins/sdc/pom.xml39
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml27
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml79
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml32
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml45
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml27
-rw-r--r--plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml33
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml8
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml14
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml18
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml14
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml8
-rw-r--r--plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml8
25 files changed, 440 insertions, 20 deletions
diff --git a/deployment/zip/src/main/release/bin/onap.sh b/deployment/zip/src/main/release/bin/onap.sh
index 9650ccd1..9650ccd1 100644..100755
--- a/deployment/zip/src/main/release/bin/onap.sh
+++ b/deployment/zip/src/main/release/bin/onap.sh
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 78ab5517..08cbc3bc 100644
--- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java
+++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java
@@ -264,7 +264,8 @@ public abstract class OnapCommand {
this.authClient = new OnapAuthClient(
creds,
this.getResult().isDebug(),
- this.getService().getAuthType());
+ this.getService(),
+ this.getParameters());
}
if (isAuthRequired) {
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 93d5ad6b..e9d495c6 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
@@ -16,6 +16,8 @@
package org.onap.cli.fw.ad;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.http.HttpStatus;
@@ -26,6 +28,7 @@ import org.onap.cli.fw.conf.OnapCommandConfg;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
import org.onap.cli.fw.error.OnapCommandHttpFailure;
+import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
import org.onap.cli.fw.error.OnapCommandLoginFailed;
import org.onap.cli.fw.error.OnapCommandLogoutFailed;
import org.onap.cli.fw.error.OnapCommandServiceNotFound;
@@ -34,6 +37,7 @@ import org.onap.cli.fw.http.HttpResult;
import org.onap.cli.fw.http.OnapHttpConnection;
import com.jayway.jsonpath.JsonPath;
+import org.onap.cli.fw.input.OnapCommandParameter;
/**
* Onap Auth client helps to do login and logout.
@@ -48,13 +52,19 @@ public class OnapAuthClient {
private OnapCredentials creds = null;
+ private OnapService service = new OnapService();
+
private String authType = OnapCommandConfg.getAuthType();
- public OnapAuthClient(OnapCredentials creds, boolean debug, String... authType) throws OnapCommandHttpFailure {
+ private Map<String, String> paramMap = new HashMap<>();
+
+ public OnapAuthClient(OnapCredentials creds, boolean debug, OnapService service, List<OnapCommandParameter> params) throws OnapCommandHttpFailure, OnapCommandInvalidParameterValue {
this.creds = creds;
- if (authType.length > 0) {
- this.authType = authType[0];
+ this.service = service;
+ for (OnapCommandParameter param : params) {
+ paramMap.put(param.getName(), param.getValue().toString());
}
+ this.authType = service.getAuthType();
this.http = new OnapHttpConnection(creds.getHostUrl().startsWith("https"), debug);
}
@@ -82,7 +92,10 @@ public class OnapAuthClient {
String authToken = BasicScheme.authenticate(new UsernamePasswordCredentials(
creds.getUsername(), creds.getPassword()), "UTF-8", false).getValue();
- Map<String, String> mapHeaders = OnapCommandConfg.getBasicCommonHeaders();
+ Map<String, String> mapHeaders = OnapCommandConfg.getBasicCommonHeaders(this.paramMap);
+ if(this.service.getName() != null){
+ 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/conf/Constants.java b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java
index a3724275..e9b158e7 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
@@ -75,6 +75,7 @@ public class Constants {
public static final String CLIENT = "client";
public static final String ENTITY = "entity";
public static final String METHOD = "method";
+ public static final String MULTIPART_ENTITY_NAME = "multipart_entity_name";
public static final String EXCEPTION = "exception";
public static final String SCOPE = "scope";
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 2fdb0a82..479431f2 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
@@ -16,6 +16,8 @@
package org.onap.cli.fw.conf;
+import org.onap.cli.fw.input.OnapCommandParameter;
+
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
@@ -99,21 +101,32 @@ public final class OnapCommandConfg {
return prps.getProperty(Constants.SERVICE_AUTH, Constants.AUTH_BASIC);
}
- public static Map<String, String> getBasicCommonHeaders() {
+ private static Map<String, String> getHeaderValues(String headerKey, Map<String, String> paramMap) {
Map<String, String> mapHeaders = new HashMap<String, String> ();
-
- Arrays.stream(prps.getProperty(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS) // NOSONAR
+ Arrays.stream(prps.getProperty(headerKey) // NOSONAR
.split(",")).map(String::trim).forEach(header -> {
- String headerName = prps.getProperty(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS + "." + header);
- String headerValue = prps.getProperty(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS + "." + header + ".value", null);
+ 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);
});
-
return mapHeaders;
}
+ public static Map<String, String> getBasicCommonHeaders(Map<String, String> paramMap) {
+ return getHeaderValues(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS, paramMap);
+ }
+
+ public static Map<String, String> getServiceHeaders(String serviceName, Map<String, String> paramMap) {
+ String serviceHeader = Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS+ "." + serviceName;
+ return getHeaderValues(serviceHeader, paramMap);
+ }
public static Set<String> getExcludeParamsForInternalCmd() {
return Arrays.stream(prps.getProperty(Constants.EXCLUDE_PARAMS_INTERNAL_CMD) // NOSONAR
diff --git a/framework/src/main/java/org/onap/cli/fw/http/HttpInput.java b/framework/src/main/java/org/onap/cli/fw/http/HttpInput.java
index 3ab6cf4b..69439bd4 100644
--- a/framework/src/main/java/org/onap/cli/fw/http/HttpInput.java
+++ b/framework/src/main/java/org/onap/cli/fw/http/HttpInput.java
@@ -30,6 +30,8 @@ public class HttpInput {
private String reqMethod = "";
+ private String multipartEntityName = "";
+
private Map<String, String> reqHeaders = new HashMap<>();
private Map<String, String> reqQueries = new HashMap<>();
@@ -83,6 +85,15 @@ public class HttpInput {
return this;
}
+ public String getMultipartEntityName() {
+ return this.multipartEntityName;
+ }
+
+ public HttpInput setMultipartEntityName(String multipartEntityName) {
+ this.multipartEntityName = multipartEntityName;
+ return this;
+ }
+
public Map<String, String> getReqQueries() {
return reqQueries;
}
diff --git a/framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java b/framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java
index b0ab11c4..a9df38c5 100644
--- a/framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java
+++ b/framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java
@@ -338,7 +338,8 @@ public class OnapHttpConnection {
private HttpEntity getMultipartEntity(HttpInput input) {
FileBody fileBody = new FileBody(new File(input.getBody().trim()));
MultipartEntity multipartEntity = new MultipartEntity();
- multipartEntity.addPart("file", fileBody);
+ String fileName = input.getMultipartEntityName() != "" ? input.getMultipartEntityName() : "upload";
+ multipartEntity.addPart(fileName, fileBody);
return multipartEntity;
}
}
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 9b56dece..625c644b 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
@@ -126,6 +126,7 @@ import static org.onap.cli.fw.conf.Constants.NAME;
import static org.onap.cli.fw.conf.Constants.ONAP_CMD_SCHEMA_VERSION;
import static org.onap.cli.fw.conf.Constants.PARAMETERS;
import static org.onap.cli.fw.conf.Constants.QUERIES;
+import static org.onap.cli.fw.conf.Constants.MULTIPART_ENTITY_NAME;
import static org.onap.cli.fw.conf.Constants.REQUEST;
import static org.onap.cli.fw.conf.Constants.RESULTS;
import static org.onap.cli.fw.conf.Constants.RESULT_MAP;
@@ -915,6 +916,10 @@ public class OnapCommandUtils {
cmd.getInput().setReqQueries(query);
break;
+ case MULTIPART_ENTITY_NAME:
+ Object multipartEntityName = map.get(key2);
+ cmd.getInput().setMultipartEntityName(multipartEntityName.toString());
+ break;
}
}catch (Exception ex) {
throwOrCollect(new OnapCommandInvalidSchema(schemaName, ex), errorList, validate);
diff --git a/framework/src/main/resources/onap.properties b/framework/src/main/resources/onap.properties
index 8a2756e4..9d59f1e2 100644
--- a/framework/src/main/resources/onap.properties
+++ b/framework/src/main/resources/onap.properties
@@ -20,6 +20,11 @@ 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
@@ -39,11 +44,11 @@ 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
+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 \ No newline at end of file
+cli.schema.mode_values=direct,catalog
diff --git a/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java b/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java
index f98846c6..c57be7d2 100644
--- a/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java
+++ b/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java
@@ -16,6 +16,9 @@
package org.onap.cli.fw.ad;
+import java.util.ArrayList;
+import java.util.List;
+
import static org.junit.Assert.assertEquals;
import org.junit.AfterClass;
@@ -30,6 +33,7 @@ import org.onap.cli.fw.error.OnapCommandServiceNotFound;
import org.onap.cli.fw.http.HttpInput;
import org.onap.cli.fw.http.HttpResult;
import org.onap.cli.fw.http.OnapHttpConnection;
+import org.onap.cli.fw.input.OnapCommandParameter;
import mockit.Invocation;
import mockit.Mock;
@@ -40,15 +44,19 @@ public class OnapAuthClientTest {
OnapAuthClient client;
@Before
- public void setUp() throws OnapCommandHttpFailure {
+ public void setUp() throws OnapCommandHttpFailure, OnapCommandException {
OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80");
- client = new OnapAuthClient(creds, true);
+ OnapService service = new OnapService();
+ List<OnapCommandParameter> params = new ArrayList<>();
+ client = new OnapAuthClient(creds, true, service, params);
}
@Test
public void loginFailedAuthIgnoredTest() throws OnapCommandException {
OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80");
- OnapAuthClient client = new OnapAuthClient(creds, true);
+ OnapService service = new OnapService();
+ List<OnapCommandParameter> params = new ArrayList<>();
+ OnapAuthClient client = new OnapAuthClient(creds, true, service, params);
if (OnapCommandConfg.isAuthIgnored()) {
client.getDebugInfo();
client.login();
@@ -58,7 +66,9 @@ public class OnapAuthClientTest {
@Test
public void logoutFailedAuthIgnoredTest() throws OnapCommandException {
OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80");
- OnapAuthClient client = new OnapAuthClient(creds, true);
+ OnapService service = new OnapService();
+ List<OnapCommandParameter> params = new ArrayList<>();
+ OnapAuthClient client = new OnapAuthClient(creds, true, service, params);
if (OnapCommandConfg.isAuthIgnored()) {
client.logout();
}
@@ -67,7 +77,9 @@ public class OnapAuthClientTest {
@Test
public void getMsbUrlTest() throws OnapCommandException {
OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80");
- OnapAuthClient client = new OnapAuthClient(creds, true);
+ OnapService service = new OnapService();
+ List<OnapCommandParameter> params = new ArrayList<>();
+ OnapAuthClient client = new OnapAuthClient(creds, true, service, params);
OnapService srv = new OnapService();
srv.setName("msb");
String msb = client.getServiceBasePath(srv);
diff --git a/framework/src/test/resources/onap.properties b/framework/src/test/resources/onap.properties
index 8a2756e4..cdbbfa84 100644
--- a/framework/src/test/resources/onap.properties
+++ b/framework/src/test/resources/onap.properties
@@ -20,6 +20,11 @@ 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
@@ -46,4 +51,4 @@ 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 \ No newline at end of file
+cli.schema.mode_values=direct,catalog
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 40e7b8e6..acd24803 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -46,6 +46,7 @@
<modules>
<module>msb</module>
<module>aai</module>
+ <module>sdc</module>
</modules>
<build>
<pluginManagement>
diff --git a/plugins/sdc/pom.xml b/plugins/sdc/pom.xml
new file mode 100644
index 00000000..01285558
--- /dev/null
+++ b/plugins/sdc/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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-plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>cli-plugins-sdc</artifactId>
+ <name>cli/plugins/sdc</name>
+ <packaging>jar</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
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
new file mode 100644
index 00000000..a845deb5
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml
@@ -0,0 +1,27 @@
+onap_cmd_schema_version: 1.0
+name: vsp-checkin
+description: Checkin Vendor Software Product
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+parameters:
+ - name: vsp-id
+ description: Onap VSP ID
+ type: string
+ short_option: x
+ long_option: vsp-id
+ is_optional: false
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products/${vsp-id}/actions
+ method: PUT
+ body: '{"action": "Checkin"}'
+ success_codes:
+ - 201
+ - 200
+ sample_response:
+ body: ''
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
new file mode 100644
index 00000000..6f460884
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml
@@ -0,0 +1,79 @@
+onap_cmd_schema_version: 1.0
+name: vsp-create
+description: Create Vendor Software Product
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+parameters:
+ - name: vsp-name
+ description: Onap VSP Name
+ type: string
+ short_option: x
+ long_option: vsp-name
+ is_optional: false
+ - name: vsp-description
+ description: Description for VSP
+ type: string
+ short_option: y
+ long_option: vsp-description
+ is_optional: true
+ - name: vsp-category
+ description: Category of the VSP
+ type: string
+ long_option: vsp-category
+ is_optional: true
+ default_value: resourceNewCategory.generic
+ - name: vsp-subcategory
+ description: Sub Category of VSP
+ type: string
+ long_option: vsp-subcategory
+ is_optional: true
+ default_value: resourceNewCategory.generic.abstract
+ - name: vsp-license-version
+ description: License version
+ type: string
+ long_option: vsp-license-version
+ is_optional: true
+ default_value: 1.0
+ - name: vsp-vendor-name
+ description: License Model Name
+ type: string
+ long_option: vsp-vendor-name
+ is_optional: false
+ - name: vsp-vendor-id
+ description: License Model ID
+ type: string
+ long_option: vsp-vendor-id
+ is_optional: false
+ - name: license-agreement-id
+ description: License Agreement ID
+ type: string
+ long_option: license-agreement-id
+ is_optional: false
+ - name: feature-group-id
+ description: Feature Group ID
+ type: string
+ long_option: feature-group-id
+ is_optional: false
+results:
+ direction: portrait
+ attributes:
+ - name: ID
+ description: VSP ID
+ scope: short
+ type: string
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products
+ method: POST
+ body: '{"name": "${vsp-name}", "description": "${vsp-description}", "category": "${vsp-category}", "subCategory": "${vsp-subcategory}", "licensingVersion": "${vsp-license-version}", "vendorName": "${vsp-vendor-name}", "vendorId": "${vsp-vendor-id}", "icon": "icon", "licensingData": { "licenseAgreement": "${license-agreement-id}", "featureGroups": [ "${feature-group-id}" ]}}'
+ success_codes:
+ - 200
+ result_map:
+ ID: $b{$.vspId}
+ sample_response:
+ body: '{"vspId":"2DEB6CB4B082415BB7A697C9CD1273BA"}'
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
new file mode 100644
index 00000000..9fe2564e
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml
@@ -0,0 +1,32 @@
+onap_cmd_schema_version: 1.0
+name: vsp-list
+description: List of the Vendor Software Products
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+results:
+ direction: landscape
+ attributes:
+ - name: ID
+ description: VSP ID
+ scope: short
+ type: string
+ - name: name
+ description: VSP Name
+ scope: short
+ type: string
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products
+ method: GET
+ success_codes:
+ - 200
+ result_map:
+ name: $b{results.[*].name}
+ ID: $b{results.[*].id}
+ sample_response:
+ body: '{"results":[{"name":"test-vsp1","description":"vendor software product","category":"resourceNewCategory.generic","subCategory":"resourceNewCategory.generic.abstract","vendorName":"5aa8a88c","vendorId":"DBB202617952486691C1E35C9621CD4E","licensingVersion":"1.0","licensingData":{"licenseAgreement":"E19DBDDB137B494385F9535325BFD585","featureGroups":["94835F096DAF4ED78781A394A4F22AD1"]},"id":"354BF3E32E494EAFBB15037CFAB262FF","version":"0.1","viewableVersions":["0.1"],"status":"Locked","lockingUser":"cs0008"},{"name":"test-vsp","description":"vendor software product","category":"resourceNewCategory.generic","subCategory":"resourceNewCategory.generic.abstract","vendorName":"5aa8a88c","vendorId":"DBB202617952486691C1E35C9621CD4E","licensingVersion":"1.0","licensingData":{"licenseAgreement":"E19DBDDB137B494385F9535325BFD585","featureGroups":["94835F096DAF4ED78781A394A4F22AD1"]},"id":"2DEB6CB4B082415BB7A697C9CD1273BA","version":"1.0","viewableVersions":["1.0"],"finalVersions":["1.0"],"status":"Final"}],"listCount":2}'
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
new file mode 100644
index 00000000..0f400b74
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml
@@ -0,0 +1,45 @@
+onap_cmd_schema_version: 1.0
+name: vsp-show
+description: Details of the Vendor Software Product
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+parameters:
+ - name: vsp-id
+ description: Onap VSP ID
+ type: string
+ short_option: x
+ long_option: vsp-id
+ is_optional: false
+
+results:
+ direction: landscape
+ attributes:
+ - name: name
+ description: VSP Name
+ scope: short
+ type: string
+ - name: ID
+ description: VSP ID
+ scope: short
+ type: string
+ - name: description
+ description: Description for the VSP
+ scope: short
+ type: string
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products/${vsp-id}
+ method: GET
+ success_codes:
+ - 200
+ result_map:
+ name: $b{$.name}
+ ID: $b{$.id}
+ description: $b{$.description}
+ sample_response:
+ body: '{"name":"test-vsp1","description":"vendor software product","category":"resourceNewCategory.generic","subCategory":"resourceNewCategory.generic.abstract","vendorName":"5aa8a88c","vendorId":"DBB202617952486691C1E35C9621CD4E","licensingVersion":"1.0","licensingData":{"licenseAgreement":"E19DBDDB137B494385F9535325BFD585","featureGroups":["94835F096DAF4ED78781A394A4F22AD1"]},"id":"354BF3E32E494EAFBB15037CFAB262FF","version":"0.1","viewableVersions":["0.1"],"status":"Locked","lockingUser":"cs0008"}'
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
new file mode 100644
index 00000000..95572939
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml
@@ -0,0 +1,27 @@
+onap_cmd_schema_version: 1.0
+name: vsp-submit
+description: Submit Vendor Software Product
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+parameters:
+ - name: vsp-id
+ description: Onap VSP ID
+ type: string
+ short_option: x
+ long_option: vsp-id
+ is_optional: false
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products/${vsp-id}/actions
+ method: PUT
+ body: '{"action": "Submit"}'
+ success_codes:
+ - 201
+ - 200
+ sample_response:
+ body: ''
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
new file mode 100644
index 00000000..bc0bc4c7
--- /dev/null
+++ b/plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml
@@ -0,0 +1,33 @@
+onap_cmd_schema_version: 1.0
+name: vsp-upload
+description: Upload the CSAR file to VSP
+
+service:
+ name: sdc
+ version: v1.0
+ auth: basic
+ mode: direct
+
+parameters:
+ - name: vsp-id
+ description: Onap VSP ID
+ type: string
+ short_option: x
+ long_option: vsp-id
+ is_optional: false
+ - name: vsp-file
+ description: CSAR File path
+ type: binary
+ short_option: y
+ long_option: vsp-file
+ is_optional: false
+http:
+ request:
+ uri: /onboarding-api/v1.0/vendor-software-products/${vsp-id}/upload
+ method: POST
+ body: ${vsp-file}
+ multipart_entity_name: upload
+ success_codes:
+ - 200
+ sample_response:
+ body: ''
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
new file mode 100644
index 00000000..6e3263e3
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml
@@ -0,0 +1,8 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-checkin
+
+samples:
+ sample1:
+ name: Checkin the Vendor Software Product
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://localhost:8080 --vsp-id E563CB23A6BE49AF9A84CF579DAFB929
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
new file mode 100644
index 00000000..c261899d
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml
@@ -0,0 +1,14 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-create
+
+samples:
+ sample1:
+ name: Create the Vendor Software Product
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://locahost:8080 --vsp-name demo-vsp2 --vsp-vendor-name 5aa8a88c --vsp-vendor-id DBB202617952486691C1E35C9 621CD4E --license-agreement-id E19DBDDB137B494385F9535325BFD585 --feature-group-id 94835F096DAF4ED78781A394A4F22AD1
+ output: |
+ +----------+----------------------------------+
+ |property |value |
+ +----------+----------------------------------+
+ |ID |6897DFFF8E864F84AD17A34B7FB936A3 |
+ +----------+----------------------------------+
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
new file mode 100644
index 00000000..82013df6
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml
@@ -0,0 +1,18 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-list
+
+samples:
+ sample1:
+ name: List Vendor Software Products
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://localhost:8080
+ output: |
+ +----------------------------------+------------+
+ |ID |name |
+ +----------------------------------+------------+
+ |E563CB23A6BE49AF9A84CF579DAFB929 |demo-vsp2 |
+ +----------------------------------+------------+
+ |79E62AA736C34E359B869E757D3DDBBE |demo-vsp1 |
+ +----------------------------------+------------+
+ |928B828EE3CC46B99B92D7B9A2AB2118 |demo-vsp |
+ +----------------------------------+------------+
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
new file mode 100644
index 00000000..f599b747
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml
@@ -0,0 +1,14 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-show
+
+samples:
+ sample1:
+ name: Show the details of Vendor Software Products
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://localhost:8080 --vsp-id 2DEB6CB4B082415BB7A697C9CD1273BA
+ output: |
+ +----------+----------------------------------+--------------------------+
+ |name |ID |description |
+ +----------+----------------------------------+--------------------------+
+ |test-vsp |2DEB6CB4B082415BB7A697C9CD1273BA |vendor software product |
+ +----------+----------------------------------+--------------------------+
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
new file mode 100644
index 00000000..19f3d7d0
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml
@@ -0,0 +1,8 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-submit
+
+samples:
+ sample1:
+ name: Submit the Vendor Software Product
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://localhost:8080 --vsp-id E563CB23A6BE49AF9A84CF579DAFB929
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
new file mode 100644
index 00000000..7fecc8a0
--- /dev/null
+++ b/plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml
@@ -0,0 +1,8 @@
+onap_cli_sample_version: 1.0
+
+name: vsp-upload
+
+samples:
+ sample1:
+ name: upload the zip file to Vendor Software Product
+ input: --onap-username cs0008 --onap-password demo123456! --host-url http://localhost:8080 --vsp-id E563CB23A6BE49AF9A84CF579DAFB929 --vsp-file /home/user/vFW.zip