Add VSP lifecycle commands 73/6773/13
authorBharath Thiruveedula <bharath_ves@hotmail.com>
Mon, 7 Aug 2017 02:58:13 +0000 (08:28 +0530)
committerBharath Thiruveedula <bharath_ves@hotmail.com>
Fri, 25 Aug 2017 18:32:33 +0000 (00:02 +0530)
Change-Id: Ibdc78b3ab1921c160f8ee193fcd47be0c75f94a9
Issue-ID: CLI-16
Signed-off-by: Bharath T<bharath.thiruveedula@verizon.com>
25 files changed:
deployment/zip/src/main/release/bin/onap.sh [changed mode: 0644->0755]
framework/src/main/java/org/onap/cli/fw/OnapCommand.java
framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java
framework/src/main/java/org/onap/cli/fw/conf/Constants.java
framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java
framework/src/main/java/org/onap/cli/fw/http/HttpInput.java
framework/src/main/java/org/onap/cli/fw/http/OnapHttpConnection.java
framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
framework/src/main/resources/onap.properties
framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java
framework/src/test/resources/onap.properties
plugins/pom.xml
plugins/sdc/pom.xml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-checkin-schema.yaml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-create-schema.yaml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-list-schema.yaml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-show-schema.yaml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-submit-schema.yaml [new file with mode: 0644]
plugins/sdc/src/main/resources/onap-cli-schema/vsp/vsp-upload-schema.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-checkin-sample.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-create-sample.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-list-sample.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-show-sample.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-submit-sample.yaml [new file with mode: 0644]
plugins/sdc/src/test/resources/onap-cli-sample/vsp/vsp-upload-sample.yaml [new file with mode: 0644]

old mode 100644 (file)
new mode 100755 (executable)
index 78ab551..08cbc3b 100644 (file)
@@ -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) {
index 93d5ad6..e9d495c 100644 (file)
@@ -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;
index a372427..e9b158e 100644 (file)
@@ -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";
index 2fdb0a8..479431f 100644 (file)
@@ -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
index 3ab6cf4..69439bd 100644 (file)
@@ -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;
     }
index b0ab11c..a9df38c 100644 (file)
@@ -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;
     }
 }
index 9b56dec..625c644 100644 (file)
@@ -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);
index 8a2756e..9d59f1e 100644 (file)
@@ -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
index f98846c..c57be7d 100644 (file)
@@ -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);
index 8a2756e..cdbbfa8 100644 (file)
@@ -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
index 40e7b8e..acd2480 100644 (file)
@@ -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 (file)
index 0000000..0128555
--- /dev/null
@@ -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 (file)
index 0000000..a845deb
--- /dev/null
@@ -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 (file)
index 0000000..6f46088
--- /dev/null
@@ -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 (file)
index 0000000..9fe2564
--- /dev/null
@@ -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 (file)
index 0000000..0f400b7
--- /dev/null
@@ -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 (file)
index 0000000..9557293
--- /dev/null
@@ -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 (file)
index 0000000..bc0bc4c
--- /dev/null
@@ -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 (file)
index 0000000..6e3263e
--- /dev/null
@@ -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 (file)
index 0000000..c261899
--- /dev/null
@@ -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 (file)
index 0000000..82013df
--- /dev/null
@@ -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 (file)
index 0000000..f599b74
--- /dev/null
@@ -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 (file)
index 0000000..19f3d7d
--- /dev/null
@@ -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 (file)
index 0000000..7fecc8a
--- /dev/null
@@ -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