diff options
Diffstat (limited to 'docs/files')
-rw-r--r-- | docs/files/VNFSDK-Marketplace-userguide-vendors.rst | 2 | ||||
-rw-r--r-- | docs/files/csar-validation.rst | 4 | ||||
-rw-r--r-- | docs/files/dictionary-validation.rst | 58 | ||||
-rw-r--r-- | docs/files/marketplace-overview.rst | 2 | ||||
-rw-r--r-- | docs/files/swagger.json | 831 | ||||
-rw-r--r-- | docs/files/swagger.yaml | 565 |
6 files changed, 1435 insertions, 27 deletions
diff --git a/docs/files/VNFSDK-Marketplace-userguide-vendors.rst b/docs/files/VNFSDK-Marketplace-userguide-vendors.rst index 01d7b4c..b99636f 100644 --- a/docs/files/VNFSDK-Marketplace-userguide-vendors.rst +++ b/docs/files/VNFSDK-Marketplace-userguide-vendors.rst @@ -3,7 +3,7 @@ .. Copyright 2017 Huawei Technologies Co., Ltd. VNF SDK Marketplace User Guide for VNF Suppliers -========================================== +================================================ The VNF SDK Marketplace helps vendors validate VNFs and connect with suppliers. To upload and validate VNFs, vendors will use the web GUI. diff --git a/docs/files/csar-validation.rst b/docs/files/csar-validation.rst index 458dab2..4224218 100644 --- a/docs/files/csar-validation.rst +++ b/docs/files/csar-validation.rst @@ -59,9 +59,11 @@ Generate certificates openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "pnf.key" -out "pnf.cert" -days 365 -subj "/C=NL/ST=Zuid Holland/L=Rotterdam/O=Sparkling Network/OU=IT Dept/CN=$(whoami)s Sign Key" Sign csar file with the private key -------------------------------- +----------------------------------- + openssl dgst -sha256 -sign "pnf.key" -out pnf.sha256.cms pnf.csar Verify signature ---------------- + openssl dgst -sha256 -verify <(openssl x509 -in "pnf.cert" -pubkey -noout) -signature pnf.sha256.cms pnf.csar diff --git a/docs/files/dictionary-validation.rst b/docs/files/dictionary-validation.rst index 6cfd67e..7dfc593 100644 --- a/docs/files/dictionary-validation.rst +++ b/docs/files/dictionary-validation.rst @@ -31,20 +31,20 @@ The standalone version of Dictionary validation library is available from Honolu How to download standalone version ---------------------------------- -All available jars are available at -:: - https://nexus.onap.org/#nexus-search;quick~validation-dictionary +All available jars are available at:: + + https://nexus.onap.org/#nexus-search;quick~validation-dictionary To download a standalone version of Dictionary validation library you need to prepare a link for selected version of file or manually download the file from Nexus (Viewing Repository: Releases). -Template -:: - wget -O validation-dictionary-<VERSION>-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=<VERSION>&e=jar&c=standalone +Template:: + + wget -O validation-dictionary-<VERSION>-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=<VERSION>&e=jar&c=standalone -For example link for version 1.2.16 looks like -:: - wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone +For example link for version 1.2.16 looks like:: + + wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone Application return codes ------------------------ @@ -74,19 +74,23 @@ How to run standalone application? 1. Install Java 11 JRE 2. Download standalone version of Dictionary YAML validation application -For example -:: - wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=snapshots&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone +For example:: + + wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=snapshots&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone -3. Go to folder with downloaded application and run it -:: - java -jar validation-dictionary-1.2.16-standalone.jar <path to dictionary_file.yaml> +3. Go to folder with downloaded application and run it. + +Code:: + + java -jar validation-dictionary-1.2.16-standalone.jar <path to dictionary_file.yaml> Examples -------- -1. Successful validation -:: +1. Successful validation. + +Code:: + ❯ java -jar validation-dictionary-1.2.16-standalone.jar /home/username/yaml_schema/Simple_Valid_Schema.yaml # Executing a 'Validate Dictionary yaml' operation ... @@ -116,8 +120,10 @@ Examples } -2. Failing validation -:: +2. Failing validation. + +Code:: + ❯ java -jar validation-dictionary-1.2.16-standalone.jar /home/username/yaml_schema/Dictionary.yaml # Executing a 'Validate Dictionary yaml' operation ... @@ -189,7 +195,9 @@ Examples } 3. Validation internal error -:: + +Code:: + ❯ java -jar validation-dictionary-1.2.16-standalone.jar /home/username/Not_Yaml_File.txt # Executing a 'Validate Dictionary yaml' operation ... @@ -211,12 +219,14 @@ How to run Dictionary YAML validation as an Oclip command? 1. Run Oclip and execute a command: -Command -:: +Code:: + oclip --product onap-honolulu dictionary-validate --yaml <path-to-yaml-file> -For example -:: +For example: + +Code:: + vnfadmin@ddc559540515:/tmp$ oclip --product onap-honolulu dictionary-validate --yaml /tmp/Simple_Valid_Schema.yaml {"file":"/tmp/Simple_Valid_Schema.yaml","date":"Mon Dec 28 07:38:43 UTC 2020","criteria":"PASS","errors":"[]"} diff --git a/docs/files/marketplace-overview.rst b/docs/files/marketplace-overview.rst index 0568bdc..ba1d92e 100644 --- a/docs/files/marketplace-overview.rst +++ b/docs/files/marketplace-overview.rst @@ -68,7 +68,7 @@ This will start two Docker containers: Once started, access the Marketplace from your web browser. -3. Connect to http://{host}:8702/onapui/vnfmarket to access the user interface +3. Connect to http://hostIP:8702/onapui/vnfmarket to access the user interface VNF SDK Tools ~~~~~~~~~~~~~ diff --git a/docs/files/swagger.json b/docs/files/swagger.json new file mode 100644 index 0000000..e91b326 --- /dev/null +++ b/docs/files/swagger.json @@ -0,0 +1,831 @@ +{ + "swagger": "2.0", + "info": { + "description": "These are the APIs for the ONAP VNFSDK Marketplace. VNFSDK helps to package and validate VNFs for onboarding into ONAP. You can find out more about VNFSDK at [http://onap.readthedocs.io](http://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/files/vnfsdk-apis.html).", + "version": "1.0.0", + "title": "ONAP VNFSDK", + "contact": { + "email": "onap-discuss@lists.onap.org" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "host": "onap.readthedocs.io", + "basePath": "/onapapi/marketplace/v1", + "tags": [ + { + "name": "csars", + "description": "VNF CSAR information", + "externalDocs": { + "description": "Find out more", + "url": "http://wiki.onap.org" + } + }, + { + "name": "VTP Scenario" + }, + { + "name": "VTP Execution" + } + ], + "schemes": [ + "http" + ], + "paths": { + "/csars": { + "get": { + "summary": "Query VNF Package by conditions", + "description": "Query VNF package", + "operationId": "queryVnf", + "produces": [ + "application/json" + ], + "tags": [ + "VNF package" + ], + "parameters": [ + { + "name": "conditions", + "in": "query", + "description": "Conditions that need to be considered for filter", + "required": true, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Csars" + } + } + }, + "400": { + "description": "Invalid status value" + } + } + }, + "post": { + "summary": "Upload/Re-Upload VNF Package", + "description": "", + "operationId": "addVnf", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "VNF package" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "VNF objects to add to the Marketplace", + "required": true, + "schema": { + "$ref": "#/definitions/Csars" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/ApiResponse" + } + } + } + } + }, + "/csars/{csarId}": { + "get": { + "tags": [ + "csarId" + ], + "summary": "Find vnf by CSAR ID", + "description": "Returns a single vnf", + "operationId": "getVnfByCsarId", + "produces": [ + "application/xml", + "application/json" + ], + "parameters": [ + { + "name": "csarId", + "in": "path", + "description": "CSAR ID of VNF to return", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Csars" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "VNF not found" + } + } + }, + "post": { + "tags": [ + "csarId" + ], + "summary": "Updates a VNF in the Marketplace with form data", + "description": "", + "operationId": "updateCsar", + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/xml", + "application/json" + ], + "parameters": [ + { + "name": "csarId", + "in": "path", + "description": "CSAR ID of VNF that needs to be updated", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "formData", + "description": "Updated name of the VNF", + "required": false, + "type": "string" + }, + { + "name": "fileNamee", + "in": "formData", + "description": "Updated filename of the csar", + "required": false, + "type": "string" + } + ], + "responses": { + "405": { + "description": "Invalid input" + } + } + }, + "delete": { + "tags": [ + "csarId" + ], + "summary": "Deletes a VNF", + "description": "", + "operationId": "deleteVnf", + "produces": [ + "application/xml", + "application/json" + ], + "parameters": [ + { + "name": "csarId", + "in": "path", + "description": "VNF CSAR ID to delete", + "required": true, + "type": "string" + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + } + } + } + }, + "/csars/{csarId}/files": { + "get": { + "tags": [ + "csarId" + ], + "summary": "Download vnf", + "description": "Download a single vnf", + "operationId": "downloadVnf", + "produces": [ + "application/xml", + "application/json" + ], + "parameters": [ + { + "name": "csarId", + "in": "path", + "description": "CSAR ID of VNF to return", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Csars" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "VNF not found" + } + } + } + }, + "/vtp/scenarios/{scenario}/testsuites": { + "get": { + "tags": [ + "VTP Scenario" + ], + "summary": " List available test suties in given scenario", + "description": "", + "operationId": "listTestSuties", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "scenario", + "in": "path", + "description": "Test scenario name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestSuite" + } + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + }, + "/vtp/scenarios/{scenario}/testcases": { + "get": { + "tags": [ + "VTP Scenario" + ], + "summary": " List available test cases", + "description": "", + "operationId": "listTestcases", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "scenario", + "in": "path", + "description": "Test scenario name", + "required": true, + "type": "string" + }, + { + "name": "testSuiteName", + "in": "query", + "description": "Test suite name", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestCase" + } + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + }, + "/vtp/scenarios/{scenario}/testsuites/{testSuiteName}/testcases/{testCaseName}": { + "get": { + "tags": [ + "VTP Scenario" + ], + "summary": "Retrieve test cases details like inputs outputs and test suite name", + "description": "", + "operationId": "getTestcase", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "scenario", + "in": "path", + "description": "Test scenario name", + "required": true, + "type": "string" + }, + { + "name": "testSuiteName", + "in": "path", + "description": "Test case name", + "required": true, + "type": "string" + }, + { + "name": "testCaseName", + "in": "path", + "description": "Test case name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/VTPTestCase" + } + }, + "404": { + "description": "Test case does not exist", + "schema": { + "$ref": "#/definitions/VTPError" + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + }, + "/vtp/executions/{executionId}": { + "get": { + "tags": [ + "VTP Execution" + ], + "summary": " Retrieve test execution complete details", + "description": "", + "operationId": "getTestExecution", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "executionId", + "in": "path", + "description": "Test execution Id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/VTPTestExecution" + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + }, + "/vtp/scenarios": { + "get": { + "tags": [ + "VTP Scenario" + ], + "summary": " List available test scenarios", + "description": "", + "operationId": "listTestScenarios", + "produces": [ + "application/json" + ], + "parameters": [], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestScenario" + } + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + }, + "/vtp/executions": { + "get": { + "tags": [ + "VTP Execution" + ], + "summary": " List test executions", + "description": "", + "operationId": "listTestExecutions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "requestId", + "in": "query", + "description": "Test request Id", + "required": false, + "type": "string" + }, + { + "name": "scenario", + "in": "query", + "description": "Test scenario name", + "required": false, + "type": "string" + }, + { + "name": "testsuiteName", + "in": "query", + "description": "Test suite name", + "required": false, + "type": "string" + }, + { + "name": "testcaseName", + "in": "query", + "description": "Test case name", + "required": false, + "type": "string" + }, + { + "name": "profileName", + "in": "query", + "description": "Test profile name", + "required": false, + "type": "string" + }, + { + "name": "startTime", + "in": "query", + "description": "Test execution start time", + "required": false, + "type": "string" + }, + { + "name": "endTime", + "in": "query", + "description": "Test execution end time", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestExecution" + } + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + }, + "post": { + "tags": [ + "VTP Execution" + ], + "summary": "Execute the test case with given inputs in 'executions' form-data as key-value pair of parameter's name vs parameter's value. If parameter is binary type thenmulti-part form-data 'file' should be used to feed the binary file content and it can be more than once. To use the given file as input parameter, prefix the value with file://<filename>.", + "description": "", + "operationId": "executeTestcases1", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "requestId", + "in": "query", + "description": "Request Id", + "required": false, + "type": "string" + }, + { + "name": "file", + "in": "formData", + "description": "Testcase File arguments", + "required": false, + "type": "array", + "items": { + "$ref": "#/definitions/FormDataBodyPart" + }, + "collectionFormat": "multi" + }, + { + "name": "executions", + "in": "formData", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestExecution" + } + } + }, + "500": { + "description": "Failed to perform the operation", + "schema": { + "$ref": "#/definitions/VTPError" + } + } + } + } + } + }, + "definitions": { + "Csars": { + "type": "object", + "required": [ + "csarId" + ], + "properties": { + "type": { + "type": "string", + "example": "CSAR" + }, + "name": { + "type": "string", + "example": "NanocellGateway" + }, + "fileName": { + "type": "string" + }, + "creationDate": { + "type": "string" + }, + "modificationDate": { + "type": "string" + }, + "readDate": { + "type": "string" + }, + "size": { + "type": "string", + "example": "37 MB" + }, + "provider": { + "type": "string", + "example": "XYZ" + }, + "version": { + "type": "string", + "example": "v1.0.0" + }, + "createTime": { + "type": "string" + }, + "modifyTime": { + "type": "string" + }, + "downloadUri": { + "type": "string", + "example": "http://msb_ip:msb_port/files/marketplace/CSAR/XYZ/NanocellGW/v1.0" + }, + "shortdesc": { + "type": "string", + "example": "XYZ Nanocell Gateway VNF" + }, + "details": { + "type": "string" + }, + "csarId": { + "type": "string", + "example": "78ede6f3-66cc-46ab-b748-38a6c010d272" + }, + "parameters": { + "type": "array", + "xml": { + "name": "parameters", + "wrapped": true + }, + "items": { + "type": "string" + } + } + }, + "xml": { + "name": "Csars" + } + }, + "ApiResponse": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "VTPTestSuite": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "VTPError": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "httpStatus": { + "type": "integer", + "format": "int32" + } + } + }, + "VTPTestCase": { + "type": "object", + "properties": { + "scenario": { + "type": "string" + }, + "testCaseName": { + "type": "string" + }, + "testSuiteName": { + "type": "string" + }, + "descripton": { + "type": "string" + }, + "author": { + "type": "string" + }, + "inputs": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestCaseInput" + } + }, + "outputs": { + "type": "array", + "items": { + "$ref": "#/definitions/VTPTestCaseOutput" + } + } + } + }, + "VTPTestCaseInput": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "defaultValue": { + "type": "string" + }, + "isOptional": { + "type": "boolean" + }, + "metadata": "type:object" + } + }, + "VTPTestCaseOutput": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "VTPTestExecution": { + "type": "object", + "properties": { + "scenario": { + "type": "string" + }, + "testCaseName": { + "type": "string" + }, + "testSuiteName": { + "type": "string" + }, + "executionId": { + "type": "string" + }, + "requestId": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/JsonNode" + }, + "results": { + "$ref": "#/definitions/JsonNode" + }, + "status": { + "type": "string" + }, + "startTime": { + "type": "string" + }, + "endTime": { + "type": "string" + } + } + }, + "VTPTestScenario": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + }, + "externalDocs": { + "description": "Find out more about VNFSDK", + "url": "https://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/index.html" + } +}
\ No newline at end of file diff --git a/docs/files/swagger.yaml b/docs/files/swagger.yaml new file mode 100644 index 0000000..83780c1 --- /dev/null +++ b/docs/files/swagger.yaml @@ -0,0 +1,565 @@ +swagger: "2.0" +info: + description: "These are the APIs for the ONAP VNFSDK Marketplace. VNFSDK helps to package and validate VNFs for onboarding into ONAP. You can find out more about VNFSDK at [http://onap.readthedocs.io](http://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/files/vnfsdk-apis.html)." + version: "1.0.0" + title: "ONAP VNFSDK" + contact: + email: "onap-discuss@lists.onap.org" + license: + name: "Apache 2.0" + url: "http://www.apache.org/licenses/LICENSE-2.0.html" +host: "onap.readthedocs.io" +basePath: "/onapapi/marketplace/v1" +tags: +- name: "csars" + description: "VNF CSAR information" + externalDocs: + description: "Find out more" + url: "http://wiki.onap.org" +- name: VTP Scenario +- name: VTP Execution +schemes: +- "http" +paths: + /csars: + get: + summary: "Query VNF Package by conditions" + description: "Query VNF package" + operationId: "queryVnf" + produces: + - "application/json" + tags: + - "VNF package" + parameters: + - name: "conditions" + in: "query" + description: "Conditions that need to be considered for filter" + required: true + type: "array" + items: + type: "string" + collectionFormat: "multi" + responses: + 200: + description: "successful operation" + schema: + type: "array" + items: + $ref: "#/definitions/Csars" + 400: + description: "Invalid status value" + post: + summary: "Upload/Re-Upload VNF Package" + description: "" + operationId: "addVnf" + consumes: + - "multipart/form-data" + produces: + - "application/json" + tags: + - "VNF package" + parameters: + - in: "body" + name: "body" + description: "VNF objects to add to the Marketplace" + required: true + schema: + $ref: "#/definitions/Csars" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + /csars/{csarId}: + get: + tags: + - "csarId" + summary: "Find vnf by CSAR ID" + description: "Returns a single vnf" + operationId: "getVnfByCsarId" + produces: + - "application/xml" + - "application/json" + parameters: + - name: "csarId" + in: "path" + description: "CSAR ID of VNF to return" + required: true + type: "string" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/Csars" + 400: + description: "Invalid ID supplied" + 404: + description: "VNF not found" + post: + tags: + - "csarId" + summary: "Updates a VNF in the Marketplace with form data" + description: "" + operationId: "updateCsar" + consumes: + - "application/x-www-form-urlencoded" + produces: + - "application/xml" + - "application/json" + parameters: + - name: "csarId" + in: "path" + description: "CSAR ID of VNF that needs to be updated" + required: true + type: "string" + - name: "name" + in: "formData" + description: "Updated name of the VNF" + required: false + type: "string" + - name: "fileNamee" + in: "formData" + description: "Updated filename of the csar" + required: false + type: "string" + responses: + 405: + description: "Invalid input" + delete: + tags: + - "csarId" + summary: "Deletes a VNF" + description: "" + operationId: "deleteVnf" + produces: + - "application/xml" + - "application/json" + parameters: + - name: "csarId" + in: "path" + description: "VNF CSAR ID to delete" + required: true + type: "string" + responses: + 400: + description: "Invalid ID supplied" + /csars/{csarId}/files: + get: + tags: + - "csarId" + summary: "Download vnf" + description: "Download a single vnf" + operationId: "downloadVnf" + produces: + - "application/xml" + - "application/json" + parameters: + - name: "csarId" + in: "path" + description: "CSAR ID of VNF to return" + required: true + type: "string" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/Csars" + 400: + description: "Invalid ID supplied" + 404: + description: "VNF not found" + '/vtp/scenarios/{scenario}/testsuites': + get: + tags: + - VTP Scenario + summary: ' List available test suties in given scenario' + description: '' + operationId: listTestSuties + produces: + - application/json + parameters: + - name: scenario + in: path + description: Test scenario name + required: true + type: string + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/VTPTestSuite' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + + '/vtp/scenarios/{scenario}/testcases': + get: + tags: + - VTP Scenario + summary: ' List available test cases' + description: '' + operationId: listTestcases + produces: + - application/json + parameters: + - name: scenario + in: path + description: Test scenario name + required: true + type: string + - name: testSuiteName + in: query + description: Test suite name + required: false + type: string + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/VTPTestCase' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + '/vtp/scenarios/{scenario}/testsuites/{testSuiteName}/testcases/{testCaseName}': + get: + tags: + - VTP Scenario + summary: Retrieve test cases details like inputs outputs and test suite name + description: '' + operationId: getTestcase + produces: + - application/json + parameters: + - name: scenario + in: path + description: Test scenario name + required: true + type: string + - name: testSuiteName + in: path + description: Test case name + required: true + type: string + - name: testCaseName + in: path + description: Test case name + required: true + type: string + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/VTPTestCase' + '404': + description: Test case does not exist + schema: + $ref: '#/definitions/VTPError' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + '/vtp/executions/{executionId}': + get: + tags: + - VTP Execution + summary: ' Retrieve test execution complete details' + description: '' + operationId: getTestExecution + produces: + - application/json + parameters: + - name: executionId + in: path + description: Test execution Id + required: true + type: string + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/VTPTestExecution' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + /vtp/scenarios: + get: + tags: + - VTP Scenario + summary: ' List available test scenarios' + description: '' + operationId: listTestScenarios + produces: + - application/json + parameters: [] + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/VTPTestScenario' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + /vtp/executions: + get: + tags: + - VTP Execution + summary: ' List test executions' + description: '' + operationId: listTestExecutions + produces: + - application/json + parameters: + - name: requestId + in: query + description: Test request Id + required: false + type: string + - name: scenario + in: query + description: Test scenario name + required: false + type: string + - name: testsuiteName + in: query + description: Test suite name + required: false + type: string + - name: testcaseName + in: query + description: Test case name + required: false + type: string + - name: profileName + in: query + description: Test profile name + required: false + type: string + - name: startTime + in: query + description: Test execution start time + required: false + type: string + - name: endTime + in: query + description: Test execution end time + required: false + type: string + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/VTPTestExecution' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' + post: + tags: + - VTP Execution + summary: 'Execute the test case with given inputs in ''executions'' form-data as key-value pair of parameter''s name vs parameter''s value. If parameter is binary type thenmulti-part form-data ''file'' should be used to feed the binary file content and it can be more than once. To use the given file as input parameter, prefix the value with file://<filename>.' + description: '' + operationId: executeTestcases1 + consumes: + - multipart/form-data + produces: + - application/json + parameters: + - name: requestId + in: query + description: Request Id + required: false + type: string + - name: file + in: formData + description: Testcase File arguments + required: false + type: array + items: + $ref: '#/definitions/FormDataBodyPart' + collectionFormat: multi + - name: executions + in: formData + required: false + type: string + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/VTPTestExecution' + '500': + description: Failed to perform the operation + schema: + $ref: '#/definitions/VTPError' +definitions: + Csars: + type: "object" + required: + - "csarId" + properties: + type: + type: "string" + example: "CSAR" + name: + type: "string" + example: "NanocellGateway" + fileName: + type: "string" + creationDate: + type: "string" + modificationDate: + type: "string" + readDate: + type: "string" + size: + type: "string" + example: "37 MB" + provider: + type: "string" + example: "XYZ" + version: + type: "string" + example: "v1.0.0" + createTime: + type: "string" + modifyTime: + type: "string" + downloadUri: + type: "string" + example: "http://msb_ip:msb_port/files/marketplace/CSAR/XYZ/NanocellGW/v1.0" + shortdesc: + type: "string" + example: "XYZ Nanocell Gateway VNF" + details: + type: "string" + csarId: + type: "string" + example: "78ede6f3-66cc-46ab-b748-38a6c010d272" + parameters: + type: "array" + xml: + name: "parameters" + wrapped: true + items: + type: "string" + xml: + name: "Csars" + ApiResponse: + type: "object" + properties: + code: + type: "integer" + format: "int32" + type: + type: "string" + message: + type: "string" + VTPTestSuite: + type: object + properties: + name: + type: string + VTPError: + type: object + properties: + code: + type: string + message: + type: string + httpStatus: + type: integer + format: int32 + VTPTestCase: + type: object + properties: + scenario: + type: string + testCaseName: + type: string + testSuiteName: + type: string + descripton: + type: string + author: + type: string + inputs: + type: array + items: + $ref: '#/definitions/VTPTestCaseInput' + outputs: + type: array + items: + $ref: '#/definitions/VTPTestCaseOutput' + VTPTestCaseInput: + type: object + properties: + name: + type: string + description: + type: string + type: + type: string + defaultValue: + type: string + isOptional: + type: boolean + metadata: + type:object + VTPTestCaseOutput: + type: object + properties: + name: + type: string + description: + type: string + type: + type: string + + VTPTestExecution: + type: object + properties: + scenario: + type: string + testCaseName: + type: string + testSuiteName: + type: string + executionId: + type: string + requestId: + type: string + profile: + type: string + parameters: + $ref: '#/definitions/JsonNode' + results: + $ref: '#/definitions/JsonNode' + status: + type: string + startTime: + type: string + endTime: + type: string + VTPTestScenario: + type: object + properties: + name: + type: string + + +externalDocs: + description: "Find out more about VNFSDK" + url: "https://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/index.html"
\ No newline at end of file |