summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Debeau <eric.debeau@orange.com>2017-10-14 09:08:10 +0000
committerChris Donley <christopher.donley@huawei.com>2017-10-15 19:54:15 +0000
commit6bc6ab33a2da23e335237ea1d84398a25de94eb7 (patch)
tree55a3ddcadefd0e7100f550c723a0a27c70606c8b
parentde6efbfa1c15852665f6ff6df58788169ad26e15 (diff)
Corrections to pass doc8
Change-Id: I753838f44e3c82563b6f272a9a38264398b644cf Issue-ID: DOC-94 Signed-off-by: Eric Debeau <eric.debeau@orange.com>
-rw-r--r--docs/files/VNF SDK - Guide for Bundling VNFs.rst155
-rw-r--r--docs/files/VNF SDK blueprints.rst1130
-rw-r--r--docs/files/VNFSDK-Marketplace-userguide-operators.rst20
-rw-r--r--docs/files/VNFSDK-Marketplace-userguide-vendors.rst8
-rw-r--r--docs/files/marketplace-overview.rst27
-rw-r--r--docs/files/mktplace-install.rst11
-rw-r--r--docs/files/pkgtool.rst90
-rw-r--r--docs/files/vnfsdk-apis.rst406
8 files changed, 918 insertions, 929 deletions
diff --git a/docs/files/VNF SDK - Guide for Bundling VNFs.rst b/docs/files/VNF SDK - Guide for Bundling VNFs.rst
index b5a3499..5a4dc81 100644
--- a/docs/files/VNF SDK - Guide for Bundling VNFs.rst
+++ b/docs/files/VNF SDK - Guide for Bundling VNFs.rst
@@ -1,78 +1,77 @@
-VNF SDK - Guide for Bundling VNFs
-=================================
-
-
-Step 1: Requirements
---------------------
-
-1. Virtual machine images for each of your VDUs (likely in qcow2 format).
-2. Scripts for installing and configuring each VDU per the standard TOSCA lifecycle workflows.
-3. Optional: scripts for retrieving indicators from each VDU.
-4. VNF SDK pkgtools
-
-Step 2: Start with the provided VNF blueprint as a template
------------------------------------------------------------
-
-The VNF SDK comes with a "pingpong.yaml" template.
-
-Copy the file and rename it as is appropriate for your VNF.
-
-Step 3: Edit the VNF blueprint
-------------------------------
-
-You will need a node template for each VDU, which in turn has a "dependency"
-requirement on a host (a Compute node template).
-
-The "dependency" requirement should have a relationship of type
-"vnfsdk.DependsOn".
-
-There are two optional properties you can assign to this relationship:
-
-1. "indicators" is a map of indicators. The keys are arbitrary, for you to name,
- and depend on the specific capabilities of your VNF. These provide the link
- between TOSCA and your indicator retrieval scripts.
-2. "compute_dependencies" is a map of features you require the infrastructure to
- provide for the compute node hosting your VDU. The keys are arbitrary, however
- we will maintain a master list of names supported by various orchestrators
- (TBD). Note that new names will likely be supported in the future as
- technological innovation progresses, while deprecated ones will be ignored by
- orchestrators. Likewise, names unsupported by a particular orchestrator will
- be ignored.
-
-Notes:
-
-1. For "compute_dependencies", you have the option of specifying a single special key, "profile", that refers to a bundle of compute dependencies specified in
- "compute-profiles.yaml". Optionally, you can override any of the dependencies
- in the bundle by specifying them explicitly under "compute_dependencies".
-
-2. By default, compute dependencies are considered to be absolute requirements
- for your VNF to function. However, if your VNF can also function without them,
- you can set "optional: true". This way the orchestrator will try to satisfy
- the optional requirements, but will not report an error if it cannot.
-3. You may optionally consider allowing operators to override your dependencies.
- This is useful for allowing the VNF to run on various compute infrastructures
- other than the defaults you specify, as long as they are indeed supported by
- your VNF. In TOSCA, this is easily handled by declaring "inputs" for your
- blueprint, with "default" values, and then using the "get_input" intrinsic
- function to apply the provided value to any specific "compute_dependencies".
- The "pingpong.yaml" has an example of such usage. The same technique can be
- used to allow the operator to override your indicator scripts, and there is an
- example of that as well.
-
-Otherwise, this is a standard TOSCA blueprint using the Simple Profile for NFV,
-and you may extend the blueprint as is required.
-
-Step 4: Bundle the VNF
-----------------------
-
-Arrange all your files (the TOSCA template, your scripts, and your virtual
-machine images) in the correct directory structure. File references provided in
-the blueprint must match the directory structure. If a script is referenced
-using a path with sub-directory "example" the initial directory must contain a
-directory called "example" with that script file inside. The directory structure
-will be kept inside the CSAR archive.
-
-Run the bundling tool that is included in the VNF SDK.
-
-The result will be a ".csar" file that can now be deployed by operators.
-
+VNF SDK - Guide for Bundling VNFs
+=================================
+
+
+Step 1: Requirements
+--------------------
+
+1. Virtual machine images for each of your VDUs (likely in qcow2 format).
+2. Scripts for installing and configuring each VDU per the standard TOSCA lifecycle workflows.
+3. Optional: scripts for retrieving indicators from each VDU.
+4. VNF SDK pkgtools
+
+Step 2: Start with the provided VNF blueprint as a template
+-----------------------------------------------------------
+
+The VNF SDK comes with a "pingpong.yaml" template.
+
+Copy the file and rename it as is appropriate for your VNF.
+
+Step 3: Edit the VNF blueprint
+------------------------------
+
+You will need a node template for each VDU, which in turn has a "dependency"
+requirement on a host (a Compute node template).
+
+The "dependency" requirement should have a relationship of type
+"vnfsdk.DependsOn".
+
+There are two optional properties you can assign to this relationship:
+
+1. "indicators" is a map of indicators. The keys are arbitrary, for you to name,
+ and depend on the specific capabilities of your VNF. These provide the link
+ between TOSCA and your indicator retrieval scripts.
+2. "compute_dependencies" is a map of features you require the infrastructure to
+ provide for the compute node hosting your VDU. The keys are arbitrary, however
+ we will maintain a master list of names supported by various orchestrators
+ (TBD). Note that new names will likely be supported in the future as
+ technological innovation progresses, while deprecated ones will be ignored by
+ orchestrators. Likewise, names unsupported by a particular orchestrator will
+ be ignored.
+
+Notes:
+
+1. For "compute_dependencies", you have the option of specifying a single special key, "profile", that refers to a bundle of compute dependencies specified in
+ "compute-profiles.yaml". Optionally, you can override any of the dependencies
+ in the bundle by specifying them explicitly under "compute_dependencies".
+2. By default, compute dependencies are considered to be absolute requirements
+ for your VNF to function. However, if your VNF can also function without them,
+ you can set "optional: true". This way the orchestrator will try to satisfy
+ the optional requirements, but will not report an error if it cannot.
+3. You may optionally consider allowing operators to override your dependencies.
+ This is useful for allowing the VNF to run on various compute infrastructures
+ other than the defaults you specify, as long as they are indeed supported by
+ your VNF. In TOSCA, this is easily handled by declaring "inputs" for your
+ blueprint, with "default" values, and then using the "get_input" intrinsic
+ function to apply the provided value to any specific "compute_dependencies".
+ The "pingpong.yaml" has an example of such usage. The same technique can be
+ used to allow the operator to override your indicator scripts, and there is an
+ example of that as well.
+
+Otherwise, this is a standard TOSCA blueprint using the Simple Profile for NFV,
+and you may extend the blueprint as is required.
+
+Step 4: Bundle the VNF
+----------------------
+
+Arrange all your files (the TOSCA template, your scripts, and your virtual
+machine images) in the correct directory structure. File references provided in
+the blueprint must match the directory structure. If a script is referenced
+using a path with sub-directory "example" the initial directory must contain a
+directory called "example" with that script file inside. The directory structure
+will be kept inside the CSAR archive.
+
+Run the bundling tool that is included in the VNF SDK.
+
+The result will be a ".csar" file that can now be deployed by operators.
+
diff --git a/docs/files/VNF SDK blueprints.rst b/docs/files/VNF SDK blueprints.rst
index 3445ac0..a7c15a2 100644
--- a/docs/files/VNF SDK blueprints.rst
+++ b/docs/files/VNF SDK blueprints.rst
@@ -1,569 +1,561 @@
-VNF SDK sample Blueprints
-=========================
-
-
-pingpong.yaml
--------------
-::
-
-
-
- # Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
- #
- # 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.
-
- tosca_definitions_version: tosca_simple_profile_for_nfv_1_0
-
- description: >-
- Ping-Pong VNF example (draft 3).
-
- A simple VNF composed of two VDU templates, "ping" and "pong". For simplicity, we are
- not defining any scalability, so there will always be single insstances of each VDU.
-
- imports:
- - vnfsdk-profile-1.0.yaml # the types for our suggested extensions to the NFV profile
-
- topology_template:
-
- inputs:
- dpdk:
- description: >-
- Allows operators to override the dpdk requirement for the "ping" VDU.
- type: boolean
- default: true
- connectivity_indicator:
- description: >-
- Allows operators to override the connectivity indicator implementation for the
- "ping" VDU.
- default: scripts/vdu/ping_get_connectivity.sh # included in the CSAR
-
- substitution_mappings:
- # In a separate service chain blueprint, our entire blueprint here can be substituted as a
- # single complete VNF.
- node_type: tosca.nodes.nfv.VNF
- requirements:
- virtual_link: [ ingress_route, virtual_link ]
-
- node_templates:
-
- ping_vdu:
- type: tosca.nodes.nfv.VDU
- artifacts:
- image:
- type: tosca.artifacts.Deployment.Image.VM
- file: images/ping_vdu.qcow2 # included in the CSAR
- interfaces:
- Standard:
- configure: scripts/vdu/ping_configure.sh # included in the CSAR
- requirements:
- - dependency:
- node: ping_host
- relationship:
- type: vnfsdk.VirtualHostedOn
- properties:
- indicators:
- hits:
- type: int
- implementation: scripts/vdu/ping_get_hits.sh # included in the CSAR
- connectivity:
- type: string
- implementation: { get_input: connectivity_indicator }
- compute_dependencies:
- profile:
- value: high_performance
- # "profile" is a special key that will pull in a complete bundles of
- # dependencies, which can then override individually here. See
- # compute-profiles.yaml, included in the CSAR, for the bundled values.
- dpdk:
- value: { get_input: dpdk }
- sse:
- value: version 2.0
- optional: true
- - dependency: pong_vdu
-
- pong_vdu:
- type: tosca.nodes.nfv.VDU
- artifacts:
- image:
- type: tosca.artifacts.Deployment.Image.VM
- file: images/pong_vdu.qcow2 # included in the CSAR
- interfaces:
- Standard:
- configure: scripts/vdu/pong_configure.sh # included in the CSAR
- requirements:
- - dependency:
- node: pong_host
- relationship:
- type: vnfsdk.VirtualHostedOn
- properties:
- compute_dependencies:
- cpu_affinity:
- value: 'true'
- container:
- value: 'false'
-
- ping_host:
- type: tosca.nodes.Compute
-
- pong_host:
- type: tosca.nodes.Compute
-
- ingress_vl:
- type: tosca.nodes.nfv.VL.ELine
- properties:
- cidr: 10.2.10.0/24
- gateway_ip: 10.2.10.1
- network_type: vlan
- physical_network: phynet2
- segmentation_id: '1001'
- vendor: TheCarrier
-
- ingress_route:
- type: tosca.nodes.nfv.CP
- description: >-
- Ingress connection point bound to the router VL and linked to the router VDU.
- properties:
- type: vPort
- requirements:
- - binding: ingress_vl
- - link: ping_vdu
- - virtual_binding: ingress_vl
- - virtual_link: ping_vdu
-
- policies:
- allocation:
- type: vnfsdk.Allocation
- targets:
- - ping_vdu
- - pong_vdu
-
- placement:
- type: vnfsdk.Placement
- targets:
- - ping_host
- - pong_host
-
-vrouter.yaml
-------------
-::
-
-
-
- # Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
- #
- # 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.
-
- tosca_definitions_version: tosca_simple_profile_for_nfv_1_0
-
- description: >-
- vRouter VNF example (draft 3).
-
- For the purposes of example, this VNF is composed of two VDU templates, one for routing that can
- scale, and a central VDU for storing the state that cannot scale. So, for example, in some
- configurations the VNF might have 3 routing VDU instances and a single data VDU instance (4 VDU
- instances total).
-
- imports:
- - vnfsdk-profile-1.0.yaml # the types for our suggested extensions to the NFV profile
-
- topology_template:
-
- substitution_mappings:
- # In a separate service chain blueprint, our entire blueprint here can be substituted as a
- # single complete VNF.
- node_type: tosca.nodes.nfv.VNF
- requirements:
- virtual_link: [ ingress_route, virtual_link ]
-
- node_templates:
-
- router_vdu:
- type: tosca.nodes.nfv.VDU
- description: >-
- In charge of handling the routing. Each instance of this VDU template can handle only a
- limited amount of bandwidth depending on host capabilities, but it can be scaled out within
- the VNF.
- artifacts:
- image:
- type: tosca.artifacts.Deployment.Image.VM
- file: images/router_vdu.qcow2 # included in the CSAR
- interfaces:
- Standard:
- configure: scripts/vdu/router_configure.sh # included in the CSAR
- requirements:
- - dependency:
- node: router_host
- relationship:
- type: vnfsdk.VirtualHostedOn
- properties:
- indicators:
- hits:
- type: int
- implementation: scripts/vdu/router_get_hits.sh # included in the CSAR
- connectivity:
- type: string
- implementation: scripts/vdu/router_get_connectivity.sh # included in the CSAR
- compute_dependencies:
- dpdk:
- value: 'true'
- priority: 0.8 # a strong preference
- sse:
- value: version 2.0
- priority: 0.2 # nice to have
- container:
- value: 'false'
- # the default priority is 1.0, meaning an absolute requirement
- - dependency: data_vdu
- capabilities:
- monitoring_parameter: # note that this capability has an "ip_address" attribute
- properties:
- protocol: http
- port: 8081
- url_path: /data/telemetry
-
- data_vdu:
- type: tosca.nodes.nfv.VDU
- description: >-
- All the router VDUs connect to the same data VDU which stores the configuration and state of
- the VNF. We are assuming that this VNF product does not support scaling of the data VDU.
- artifacts:
- image:
- type: tosca.artifacts.Deployment.Image.VM
- file: images/data_vdu.qcow2 # included in the CSAR
- interfaces:
- Standard:
- configure: scripts/vdu/data_configure.sh # included in the CSAR
- requirements:
- - dependency:
- node: data_host
- relationship:
- type: vnfsdk.VirtualHostedOn
- properties:
- compute_dependencies:
- cpu_affinity:
- value: 'true'
- container:
- value: 'false'
- priority: 1.0 # hints that it's absolutely required
- capabilities:
- nfv_compute:
- # This is the "standard" way to define performance optimization in the NFV profile
- properties:
- mem_page_size: large
- cpu_allocation:
- core_count: 4
- numa_node_count: 2
- numa_nodes:
- primary:
- id: 0
- mem_size: 16 GB
- vcpus:
- a: 2
- b: 3
- secondary:
- id: 1
- mem_size: 2 GB
-
- router_host:
- type: tosca.nodes.Compute
- capabilities:
- scalable:
- properties:
- max_instances: 4
-
- data_host:
- type: tosca.nodes.Compute
- requirements:
- - local_storage:
- node: database_storage
- relationship:
- properties:
- location: /mnt/database
-
- database_storage:
- type: tosca.nodes.BlockStorage
- properties:
- size: 5 GB
-
- ingress_vl:
- type: tosca.nodes.nfv.VL.ELine
- properties:
- cidr: 10.2.10.0/24
- gateway_ip: 10.2.10.1
- network_type: vlan
- physical_network: phynet2
- segmentation_id: '1001'
- vendor: TheCarrier
-
- ingress_route:
- type: tosca.nodes.nfv.CP
- description: >-
- Ingress connection point bound to the router VL and linked to the router VDU.
- properties:
- type: vPort
- requirements:
- - binding: ingress_vl
- - link: router_vdu
- - virtual_binding: ingress_vl
- - virtual_link: router_vdu
-
- policies:
- allocation:
- type: vnfsdk.Allocation
- properties:
- prioritize: cost
- targets:
- - router_vdu
- - data_vdu
-
- placement:
- type: vnfsdk.Placement
- properties:
- prioritize: performance
- targets:
- - router_host
- - data_host
- - database_storage
-
- scaling:
- type: vnfsdk.Scaling
- properties:
- bandwidth_threshold: 1.5 GB
- targets:
- - router_vdu
-
- performance:
- type: vnfsdk.Assurance
- properties:
- responsivness: 0.1 Hz
- targets:
- - ingress_vl
-
-vnfsdk-profile-1.0.yaml
------------------------
-::
-
- # Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
- #
- # 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.
-
- # vnfsdk-profile-1.0 (draft 3)
-
- # Required extensions to the TOSCA Simple Profile for Network Functions Virtualization (NFV)
- # Version 1.0.
-
- relationship_types:
-
- vnfsdk.VirtualHostedOn:
- description: >-
- The standard VDU type in the simple NFV is completely separate from the "compute" world. The
- only relatiionship we have available to connect them is DependsOn. Thus, we must extend it in
- order to implement the connection.
- derived_from: tosca.relationships.DependsOn
- valid_target_types:
- - tosca.capabilities.Node
- properties:
- indicators:
- description: >-
- Performance, availability, and other indicators.
- type: map
- entry_schema: vnfsdk.Indicator
- required: false
- compute_dependencies:
- description: >-
- These dependencies will be used by a resource orchestrator/allocator to assign the best
- possible performance profile.
- type: map
- entry_schema: vnfsdk.ComputeDependency
- required: false
-
- policy_types:
-
- vnfsdk.Allocation:
- description: >-
- The orchestrator will apply an algorithm to make sure that VDUs will be allocated the best
- possible hosts according
- derived_from: tosca.policies.Root
- targets:
- - tosca.nodes.nfv.VDU
- properties:
- prioritize:
- description: >-
- Hint to allocation algorithm.
- type: vnfsdk.PolicyPriority
- default: balance
-
- vnfsdk.Placement:
- description: >-
- The orchestrator will apply an algorithm to make sure that our VIM resources will be allocated
- and placed near each other in the data center to guarantee best internal connectivity. This is
- necessary for the VNF to function as an efficient whole, despite being composed of many VIM
- resources.
- derived_from: tosca.policies.Placement
- targets:
- - tosca.nodes.Compute
- - tosca.nodes.BlockStorage
- properties:
- prioritize:
- description: >-
- Hint to placement algorithm.
- type: vnfsdk.PolicyPriority
- default: balance
-
- vnfsdk.Scaling:
- description: >-
- The orchestrator will monitor bandwidth and auto-scale (up and down) according to an algorithm
- configured by our defined parameters here.
- derived_from: tosca.policies.Scaling
- properties:
- bandwidth_threshold:
- description: >-
- Over this bandwidth the algorithm should start scaling up, and under it, it should scale
- down.
- type: scalar-unit.size
- polling_interval:
- description: >-
- How often to check bandwidth.
- type: scalar-unit.time
- default: 10 s
- targets:
- - tosca.nodes.nfv.VDU
-
- vnfsdk.Assurance:
- description: >-
- The orchestrator (SDN-O?) will make sure the virtual link is configured to perform within our
- defined performance envelope here.
- derived_from: tosca.policies.Performance
- properties:
- responsivness:
- description: >-
- How often assurance should be checked.
- type: scalar-unit.frequency
- targets:
- - tosca.nodes.nfv.VL.ELine
-
- data_types:
-
- vnfsdk.ComputeDependency:
- derived_from: tosca.datatypes.Root
- properties:
- value:
- description: >-
- The dependency value.
- type: string
- optional:
- description: >-
- Whether the dependency is optional. When set to true implies priority 0.5.
- type: boolean
- default: false
- priority:
- description: >-
- Allows fine-tuning of the dependency's priority.
- type: float
- constraints:
- - in_range: [ 0.0, 1.0 ]
- default: 1.0
-
- vnfsdk.Indicator:
- derived_from: tosca.datatypes.Root
- properties:
- type:
- description: >-
- The type of the indicator.
- type: string
- implementation:
- description: >-
- The indicator's implementation.
- type: string
-
- vnfsdk.PolicyPriority:
- derived_from: string
- constraints:
- - valid_values: [ performance, cost, balance ]
-
-compute-profiles.yaml
----------------------
-::
-
-
-
- # Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
- #
- # 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.
-
- performance_profiles:
-
- tosca.nodes.nfv.VDU:
-
- high_availability:
- cpu_allocation:
- cpu_affinity: dedicated
- thread_allocation: isolate
- socket_count: 2
- core_count: 2
- thread_count: 4
- dpdk: true
- cpu_affinity:
- default: false
- value: { get_input: cpu_affinity }
-
- low_availability:
- cpu_allocation:
- thread_allocation: isolate
- socket_count: 1
- core_count: 1
- thread_count:
- default: 4
- value: { get_input: thread_count }
- constraint: { in_range: [ 1, 4 ] }
- dpdk: false
- cpu_affinity: true
-
-
-
-
-This document is provided under the Creative Commons Attribution 4.0 International License (available at http://creativecommons.org/licenses/by/4.0/). Code for this document is available under the Apache License, Version 2.0
-
-
-
+VNF SDK sample Blueprints
+=========================
+
+
+pingpong.yaml
+-------------
+::
+
+# Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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.
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0
+
+description: >-
+ Ping-Pong VNF example (draft 3).
+
+ A simple VNF composed of two VDU templates, "ping" and "pong". For simplicity, we are
+ not defining any scalability, so there will always be single insstances of each VDU.
+
+imports:
+ - vnfsdk-profile-1.0.yaml # the types for our suggested extensions to the NFV profile
+
+topology_template:
+
+ inputs:
+ dpdk:
+ description: >-
+ Allows operators to override the dpdk requirement for the "ping" VDU.
+ type: boolean
+ default: true
+ connectivity_indicator:
+ description: >-
+ Allows operators to override the connectivity indicator implementation for the
+ "ping" VDU.
+ default: scripts/vdu/ping_get_connectivity.sh # included in the CSAR
+
+ substitution_mappings:
+ # In a separate service chain blueprint, our entire blueprint here can be substituted as a
+ # single complete VNF.
+ node_type: tosca.nodes.nfv.VNF
+ requirements:
+ virtual_link: [ ingress_route, virtual_link ]
+
+ node_templates:
+
+ ping_vdu:
+ type: tosca.nodes.nfv.VDU
+ artifacts:
+ image:
+ type: tosca.artifacts.Deployment.Image.VM
+ file: images/ping_vdu.qcow2 # included in the CSAR
+ interfaces:
+ Standard:
+ configure: scripts/vdu/ping_configure.sh # included in the CSAR
+ requirements:
+ - dependency:
+ node: ping_host
+ relationship:
+ type: vnfsdk.VirtualHostedOn
+ properties:
+ indicators:
+ hits:
+ type: int
+ implementation: scripts/vdu/ping_get_hits.sh # included in the CSAR
+ connectivity:
+ type: string
+ implementation: { get_input: connectivity_indicator }
+ compute_dependencies:
+ profile:
+ value: high_performance
+ # "profile" is a special key that will pull in a complete bundles of
+ # dependencies, which can then override individually here. See
+ # compute-profiles.yaml, included in the CSAR, for the bundled values.
+ dpdk:
+ value: { get_input: dpdk }
+ sse:
+ value: version 2.0
+ optional: true
+ - dependency: pong_vdu
+
+ pong_vdu:
+ type: tosca.nodes.nfv.VDU
+ artifacts:
+ image:
+ type: tosca.artifacts.Deployment.Image.VM
+ file: images/pong_vdu.qcow2 # included in the CSAR
+ interfaces:
+ Standard:
+ configure: scripts/vdu/pong_configure.sh # included in the CSAR
+ requirements:
+ - dependency:
+ node: pong_host
+ relationship:
+ type: vnfsdk.VirtualHostedOn
+ properties:
+ compute_dependencies:
+ cpu_affinity:
+ value: 'true'
+ container:
+ value: 'false'
+
+ ping_host:
+ type: tosca.nodes.Compute
+
+ pong_host:
+ type: tosca.nodes.Compute
+
+ ingress_vl:
+ type: tosca.nodes.nfv.VL.ELine
+ properties:
+ cidr: 10.2.10.0/24
+ gateway_ip: 10.2.10.1
+ network_type: vlan
+ physical_network: phynet2
+ segmentation_id: '1001'
+ vendor: TheCarrier
+
+ ingress_route:
+ type: tosca.nodes.nfv.CP
+ description: >-
+ Ingress connection point bound to the router VL and linked to the router VDU.
+ properties:
+ type: vPort
+ requirements:
+ - binding: ingress_vl
+ - link: ping_vdu
+ - virtual_binding: ingress_vl
+ - virtual_link: ping_vdu
+
+ policies:
+ allocation:
+ type: vnfsdk.Allocation
+ targets:
+ - ping_vdu
+ - pong_vdu
+
+ placement:
+ type: vnfsdk.Placement
+ targets:
+ - ping_host
+ - pong_host
+
+vrouter.yaml
+------------
+::
+
+
+
+# Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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.
+
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0
+
+description: >-
+ vRouter VNF example (draft 3).
+
+ For the purposes of example, this VNF is composed of two VDU templates, one for routing that can
+ scale, and a central VDU for storing the state that cannot scale. So, for example, in some
+ configurations the VNF might have 3 routing VDU instances and a single data VDU instance (4 VDU
+ instances total).
+
+imports:
+ - vnfsdk-profile-1.0.yaml # the types for our suggested extensions to the NFV profile
+
+topology_template:
+
+ substitution_mappings:
+ # In a separate service chain blueprint, our entire blueprint here can be substituted as a
+ # single complete VNF.
+ node_type: tosca.nodes.nfv.VNF
+ requirements:
+ virtual_link: [ ingress_route, virtual_link ]
+
+ node_templates:
+
+ router_vdu:
+ type: tosca.nodes.nfv.VDU
+ description: >-
+ In charge of handling the routing. Each instance of this VDU template can handle only a
+ limited amount of bandwidth depending on host capabilities, but it can be scaled out within
+ the VNF.
+ artifacts:
+ image:
+ type: tosca.artifacts.Deployment.Image.VM
+ file: images/router_vdu.qcow2 # included in the CSAR
+ interfaces:
+ Standard:
+ configure: scripts/vdu/router_configure.sh # included in the CSAR
+ requirements:
+ - dependency:
+ node: router_host
+ relationship:
+ type: vnfsdk.VirtualHostedOn
+ properties:
+ indicators:
+ hits:
+ type: int
+ implementation: scripts/vdu/router_get_hits.sh # included in the CSAR
+ connectivity:
+ type: string
+ implementation: scripts/vdu/router_get_connectivity.sh # included in the CSAR
+ compute_dependencies:
+ dpdk:
+ value: 'true'
+ priority: 0.8 # a strong preference
+ sse:
+ value: version 2.0
+ priority: 0.2 # nice to have
+ container:
+ value: 'false'
+ # the default priority is 1.0, meaning an absolute requirement
+ - dependency: data_vdu
+ capabilities:
+ monitoring_parameter: # note that this capability has an "ip_address" attribute
+ properties:
+ protocol: http
+ port: 8081
+ url_path: /data/telemetry
+
+ data_vdu:
+ type: tosca.nodes.nfv.VDU
+ description: >-
+ All the router VDUs connect to the same data VDU which stores the configuration and state of
+ the VNF. We are assuming that this VNF product does not support scaling of the data VDU.
+ artifacts:
+ image:
+ type: tosca.artifacts.Deployment.Image.VM
+ file: images/data_vdu.qcow2 # included in the CSAR
+ interfaces:
+ Standard:
+ configure: scripts/vdu/data_configure.sh # included in the CSAR
+ requirements:
+ - dependency:
+ node: data_host
+ relationship:
+ type: vnfsdk.VirtualHostedOn
+ properties:
+ compute_dependencies:
+ cpu_affinity:
+ value: 'true'
+ container:
+ value: 'false'
+ priority: 1.0 # hints that it's absolutely required
+ capabilities:
+ nfv_compute:
+ # This is the "standard" way to define performance optimization in the NFV profile
+ properties:
+ mem_page_size: large
+ cpu_allocation:
+ core_count: 4
+ numa_node_count: 2
+ numa_nodes:
+ primary:
+ id: 0
+ mem_size: 16 GB
+ vcpus:
+ a: 2
+ b: 3
+ secondary:
+ id: 1
+ mem_size: 2 GB
+
+ router_host:
+ type: tosca.nodes.Compute
+ capabilities:
+ scalable:
+ properties:
+ max_instances: 4
+
+ data_host:
+ type: tosca.nodes.Compute
+ requirements:
+ - local_storage:
+ node: database_storage
+ relationship:
+ properties:
+ location: /mnt/database
+
+ database_storage:
+ type: tosca.nodes.BlockStorage
+ properties:
+ size: 5 GB
+
+ ingress_vl:
+ type: tosca.nodes.nfv.VL.ELine
+ properties:
+ cidr: 10.2.10.0/24
+ gateway_ip: 10.2.10.1
+ network_type: vlan
+ physical_network: phynet2
+ segmentation_id: '1001'
+ vendor: TheCarrier
+
+ ingress_route:
+ type: tosca.nodes.nfv.CP
+ description: >-
+ Ingress connection point bound to the router VL and linked to the router VDU.
+ properties:
+ type: vPort
+ requirements:
+ - binding: ingress_vl
+ - link: router_vdu
+ - virtual_binding: ingress_vl
+ - virtual_link: router_vdu
+
+ policies:
+ allocation:
+ type: vnfsdk.Allocation
+ properties:
+ prioritize: cost
+ targets:
+ - router_vdu
+ - data_vdu
+
+ placement:
+ type: vnfsdk.Placement
+ properties:
+ prioritize: performance
+ targets:
+ - router_host
+ - data_host
+ - database_storage
+
+ scaling:
+ type: vnfsdk.Scaling
+ properties:
+ bandwidth_threshold: 1.5 GB
+ targets:
+ - router_vdu
+
+ performance:
+ type: vnfsdk.Assurance
+ properties:
+ responsivness: 0.1 Hz
+ targets:
+ - ingress_vl
+
+vnfsdk-profile-1.0.yaml
+-----------------------
+::
+
+# Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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.
+
+# vnfsdk-profile-1.0 (draft 3)
+
+# Required extensions to the TOSCA Simple Profile for Network Functions Virtualization (NFV)
+# Version 1.0.
+
+relationship_types:
+
+ vnfsdk.VirtualHostedOn:
+ description: >-
+ The standard VDU type in the simple NFV is completely separate from the "compute" world. The
+ only relatiionship we have available to connect them is DependsOn. Thus, we must extend it in
+ order to implement the connection.
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types:
+ - tosca.capabilities.Node
+ properties:
+ indicators:
+ description: >-
+ Performance, availability, and other indicators.
+ type: map
+ entry_schema: vnfsdk.Indicator
+ required: false
+ compute_dependencies:
+ description: >-
+ These dependencies will be used by a resource orchestrator/allocator to assign the best
+ possible performance profile.
+ type: map
+ entry_schema: vnfsdk.ComputeDependency
+ required: false
+
+policy_types:
+
+ vnfsdk.Allocation:
+ description: >-
+ The orchestrator will apply an algorithm to make sure that VDUs will be allocated the best
+ possible hosts according
+ derived_from: tosca.policies.Root
+ targets:
+ - tosca.nodes.nfv.VDU
+ properties:
+ prioritize:
+ description: >-
+ Hint to allocation algorithm.
+ type: vnfsdk.PolicyPriority
+ default: balance
+
+ vnfsdk.Placement:
+ description: >-
+ The orchestrator will apply an algorithm to make sure that our VIM resources will be allocated
+ and placed near each other in the data center to guarantee best internal connectivity. This is
+ necessary for the VNF to function as an efficient whole, despite being composed of many VIM
+ resources.
+ derived_from: tosca.policies.Placement
+ targets:
+ - tosca.nodes.Compute
+ - tosca.nodes.BlockStorage
+ properties:
+ prioritize:
+ description: >-
+ Hint to placement algorithm.
+ type: vnfsdk.PolicyPriority
+
+ description: >-
+ The orchestrator will monitor bandwidth and auto-scale (up and down) according to an algorithm
+ configured by our defined parameters here.
+ derived_from: tosca.policies.Scaling
+ properties:
+ bandwidth_threshold:
+ description: >-
+ Over this bandwidth the algorithm should start scaling up, and under it, it should scale
+ down.
+ type: scalar-unit.size
+ polling_interval:
+ description: >-
+ How often to check bandwidth.
+ type: scalar-unit.time
+ default: 10 s
+ targets:
+ - tosca.nodes.nfv.VDU
+
+ vnfsdk.Assurance:
+ description: >-
+ The orchestrator (SDN-O?) will make sure the virtual link is configured to perform within our
+ defined performance envelope here.
+ derived_from: tosca.policies.Performance
+ properties:
+ responsivness:
+ description: >-
+ How often assurance should be checked.
+ type: scalar-unit.frequency
+ targets:
+ - tosca.nodes.nfv.VL.ELine
+
+data_types:
+
+ vnfsdk.ComputeDependency:
+ derived_from: tosca.datatypes.Root
+ properties:
+ value:
+ description: >-
+ The dependency value.
+ type: string
+ optional:
+ description: >-
+ Whether the dependency is optional. When set to true implies priority 0.5.
+ type: boolean
+ default: false
+ priority:
+ description: >-
+ Allows fine-tuning of the dependency's priority.
+ type: float
+ constraints:
+ - in_range: [ 0.0, 1.0 ]
+ default: 1.0
+
+ vnfsdk.Indicator:
+ derived_from: tosca.datatypes.Root
+ properties:
+ type:
+ description: >-
+ The type of the indicator.
+ type: string
+ implementation:
+ description: >-
+ The indicator's implementation.
+ type: string
+
+ vnfsdk.PolicyPriority:
+ derived_from: string
+ constraints:
+ - valid_values: [ performance, cost, balance ]
+
+compute-profiles.yaml
+---------------------
+::
+
+
+
+# Copyright (c) 2016 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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.
+
+performance_profiles:
+
+ tosca.nodes.nfv.VDU:
+
+ high_availability:
+ cpu_allocation:
+ cpu_affinity: dedicated
+ thread_allocation: isolate
+ socket_count: 2
+ core_count: 2
+ thread_count: 4
+ dpdk: true
+ cpu_affinity:
+ default: false
+ value: { get_input: cpu_affinity }
+
+ low_availability:
+ cpu_allocation:
+ thread_allocation: isolate
+ socket_count: 1
+ core_count: 1
+ thread_count:
+ default: 4
+ value: { get_input: thread_count }
+ constraint: { in_range: [ 1, 4 ] }
+ dpdk: false
+ cpu_affinity: true
+
+
+
+
+This document is provided under the Creative Commons Attribution 4.0 International License (available at http://creativecommons.org/licenses/by/4.0/). Code for this document is available under the Apache License, Version 2.0
+
diff --git a/docs/files/VNFSDK-Marketplace-userguide-operators.rst b/docs/files/VNFSDK-Marketplace-userguide-operators.rst
index 450f669..89463b2 100644
--- a/docs/files/VNFSDK-Marketplace-userguide-operators.rst
+++ b/docs/files/VNFSDK-Marketplace-userguide-operators.rst
@@ -1,10 +1,10 @@
-VNF SDK Marketplace User Guide for Operators
-============================================
-
-The VNFSDK Marketplace helps operators download pre-validated VNFs through the web GUI.
-
-1. Log into the portal
-2. Using the buttons in the upper right corner, an operator can see the currently validated VNFs in a list or grid view.
-3. The marketplace provides an onboarding report for each VNF. Operators can see the testing results by clicking on the VNF. In the Amsterdam release, only validation tests are run. In the future, we plan to add lifecycle and functional tests.
-4. Operators can download a VNF by clicking on the ÒdownloadÓ button.
-5. VNFSDK also supports integration with SDC. A VNF can be onboarded into SDC by visiting the SDC portal. SDC connects to VNFSDK and can query all available VNFs. When an operator selects a VNF in the SDC portal, it will be downloaded from VNFSDK and installed in the SDC catalog.
+VNF SDK Marketplace User Guide for Operators
+============================================
+
+The VNFSDK Marketplace helps operators download pre-validated VNFs through the web GUI.
+
+1. Log into the portal
+2. Using the buttons in the upper right corner, an operator can see the currently validated VNFs in a list or grid view.
+3. The marketplace provides an onboarding report for each VNF. Operators can see the testing results by clicking on the VNF. In the Amsterdam release, only validation tests are run. In the future, we plan to add lifecycle and functional tests.
+4. Operators can download a VNF by clicking on the "download" button.
+5. VNFSDK also supports integration with SDC. A VNF can be onboarded into SDC by visiting the SDC portal. SDC connects to VNFSDK and can query all available VNFs. When an operator selects a VNF in the SDC portal, it will be downloaded from VNFSDK and installed in the SDC catalog.
diff --git a/docs/files/VNFSDK-Marketplace-userguide-vendors.rst b/docs/files/VNFSDK-Marketplace-userguide-vendors.rst
index 768d8b3..549f328 100644
--- a/docs/files/VNFSDK-Marketplace-userguide-vendors.rst
+++ b/docs/files/VNFSDK-Marketplace-userguide-vendors.rst
@@ -4,11 +4,11 @@ VNF SDK Marketplace User Guide for Vendors
The VNFSDK Marketplace helps vendors validate VNFs and connect with suppliers. To upload and validate VNFs, vendors will use the web GUI.
1. Log into the portal
-2. Click ÒuploadÓ in the upper right to upload a VNF. Select the file and enter a short description and details.
-3. The file is uploaded into the system and the marketplace automatically starts the VNF validation process.
+2. Click "upload" in the upper right to upload a VNF. Select the file and enter a short description and details.
+3. The file is uploaded into the system and the marketplace automatically starts the VNF validation process.
4. Once validation is complete, the VNF is installed in the marketplace.
-5. A vendor can re-upload a VNF if there are changes by clicking the Òre-uploadÓ button.
-6. A vendor can also delete a VNF by clicking the ÒdeleteÓ button.
+5. A vendor can re-upload a VNF if there are changes by clicking the "re-upload" button.
+6. A vendor can also delete a VNF by clicking the "delete" button.
7. Using the buttons in the upper right corner, a user can see a list or grid of VNFs.
8. The marketplace provides an onboarding report for each VNF. You can see the testing results by clicking on the VNF. In the Amsterdam release, only validation tests are run. In the future, we plan to add lifecycle and functional tests.
diff --git a/docs/files/marketplace-overview.rst b/docs/files/marketplace-overview.rst
index cede8f5..90a0677 100644
--- a/docs/files/marketplace-overview.rst
+++ b/docs/files/marketplace-overview.rst
@@ -9,21 +9,20 @@ VNF SDK provides a reference implementation "marketplace" to help vendors valida
:height: 600px
:width: 800px
-1. **VNF Repository** is a reference repository for VNFs.
- a. It provides functionalities:
- i. Upload/Re-upload VNF
- ii. Download VNF
- iii. Query VNF based on several parameters
- iv. Delete VNF
- b. It also provides an intuitive Graphical user interface to perform above activities.
-
-2. Along with these, VNFSDK also provides hooks to call other tools or libraries including **Validation and Function Tests**.
-
- a. Validation verifies the package structure, mandatory files and their format. Currently, the tool performs basic validation to support SDC. In a future release, it will also ensure integrity and authenticity of the package as described by VNF Requirements.
- b. Function Test provides Robot framework test cases present in each VNF. Function test executes those test cases and send the test response back to the marketplace. While the framework is in place, actual test development is deferred for a future release.
+1. **VNF Repository** is a reference repository for VNFs.
+ a. It provides functionalities:
+ i. Upload/Re-upload VNF
+ ii. Download VNF
+ iii. Query VNF based on several parameters
+ iv. Delete VNF
+ b. It also provides an intuitive Graphical user interface to perform above activities.
-3. **VNFSDK Integration with SDC**
+2. Along with these, VNFSDK also provides hooks to call other tools or libraries including **Validation and Function Tests**.
+
+ a. Validation verifies the package structure, mandatory files and their format. Currently, the tool performs basic validation to support SDC. In a future release, it will also ensure integrity and authenticity of the package as described by VNF Requirements.
+ b. Function Test provides Robot framework test cases present in each VNF. Function test executes those test cases and send the test response back to the marketplace. While the framework is in place, actual test development is deferred for a future release.
- a. In Amsterdam, the SDC-UI is being integrated with the VNF Repository backend. It provides seamless download, search, view of the VNF present in VNF repository. The user can onboard these validated VNF into the SDC catalogue.
+3. **VNFSDK Integration with SDC**
+ a. In Amsterdam, the SDC-UI is being integrated with the VNF Repository backend. It provides seamless download, search, view of the VNF present in VNF repository. The user can onboard these validated VNF into the SDC catalogue.
diff --git a/docs/files/mktplace-install.rst b/docs/files/mktplace-install.rst
index f6e34f1..de3956a 100644
--- a/docs/files/mktplace-install.rst
+++ b/docs/files/mktplace-install.rst
@@ -3,18 +3,17 @@ VNFSDK Marketplace Installation Instructions
1. Download vnfsdk/refrepo from Gerrit
::
- git clone http://gerrit.onap.org/r/vnfsdk/refrepo
+ git clone http://gerrit.onap.org/r/vnfsdk/refrepo
2. Goto vnfmarket-be/deployment/install,
::
- Enter command "docker-compose up -d"
+ Enter command "docker-compose up -d"
This will start two Docker containers:
- a. VNF Repository
+ a. VNF Repository
+ b. PostgreSQL database.
- b. PostgreSQL database.
-
- Once started, access the Marketplace from your web browser.
+Once started, access the Marketplace from your web browser.
3. Connect to http://{host}:8702/openoui/vnfmarket to access the user interface
diff --git a/docs/files/pkgtool.rst b/docs/files/pkgtool.rst
index e334e0c..ec19bdf 100644
--- a/docs/files/pkgtool.rst
+++ b/docs/files/pkgtool.rst
@@ -1,45 +1,45 @@
-VNF Package Tool
-================
-
-Provided tools
---------------
-
-* VNF Package Builder - creates a CSAR file based on inputs provided by the VNF product DevOps engineer
-* VNF Package Validator - validates the content of the VNF packages to ensure that everything has been built correctly
-* VNF Package Extractor - extracts VNF product model and executables from the CSAR file
-* VNF Package Parser - translates VNF product blueprint into a format consumable by ONAP components
-* VNF Package Dry Run - performs a "dry run" install to ensure that the package can be deployed during instantiation
-The tools are provided in a form of a shared library (Python module) that can be used in other projects. A CLI is also provided out-of-the box for DevOps to use the library with their scripts and autoamtion framework.
-
-Repository Name: vnfsdk/pkgtools
-
-Clone command: git clone http://gerrit.onap.org/r/vnfsdk/pkgtools
-
-Installation
-------------
-Python module with CLI is installed by Python pip command. It is possible to install into a virtual environment (virtualenv).
-The following commands are executed in the cloned repository directory:
-
-1. pip install -r requirements.txt
- Install all required dependencies
-2. pip install .
-
-Or run the following commands in the cloned repository directory to install:
-
-1. python setup.py install
-
-Install VNF SDK tools package
------------------------------
-Usage
-
-* Create CSAR by specifying a directory
- vnfsdk csar-create -d DESTINATION [--manifest MANIFEST] [--history HISTORY] [--tests TESTS] [--licenses LICENSES] source entry
-
-* Extract CSAR content
- vnfsdk csar-open -d DESTINATION source
-
-* Validate CSAR content
- vnfsdk csar-validate source
-All commands have -h switch which displays help and description of all paramaters.
+VNF Package Tool
+================
+
+Provided tools
+--------------
+
+* VNF Package Builder - creates a CSAR file based on inputs provided by the VNF product DevOps engineer
+* VNF Package Validator - validates the content of the VNF packages to ensure that everything has been built correctly
+* VNF Package Extractor - extracts VNF product model and executables from the CSAR file
+* VNF Package Parser - translates VNF product blueprint into a format consumable by ONAP components
+* VNF Package Dry Run - performs a "dry run" install to ensure that the package can be deployed during instantiation
+The tools are provided in a form of a shared library (Python module) that can be used in other projects. A CLI is also provided out-of-the box for DevOps to use the library with their scripts and autoamtion framework.
+
+Repository Name: vnfsdk/pkgtools
+
+Clone command: git clone http://gerrit.onap.org/r/vnfsdk/pkgtools
+
+Installation
+------------
+Python module with CLI is installed by Python pip command. It is possible to install into a virtual environment (virtualenv).
+The following commands are executed in the cloned repository directory:
+
+1. pip install -r requirements.txt
+ Install all required dependencies
+2. pip install .
+
+Or run the following commands in the cloned repository directory to install:
+
+1. python setup.py install
+
+Install VNF SDK tools package
+-----------------------------
+Usage
+
+* Create CSAR by specifying a directory
+ vnfsdk csar-create -d DESTINATION [--manifest MANIFEST] [--history HISTORY] [--tests TESTS] [--licenses LICENSES] source entry
+
+* Extract CSAR content
+ vnfsdk csar-open -d DESTINATION source
+
+* Validate CSAR content
+ vnfsdk csar-validate source
+All commands have -h switch which displays help and description of all paramaters.
diff --git a/docs/files/vnfsdk-apis.rst b/docs/files/vnfsdk-apis.rst
index 2531a14..5ed02e6 100644
--- a/docs/files/vnfsdk-apis.rst
+++ b/docs/files/vnfsdk-apis.rst
@@ -1,203 +1,203 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-
-VNF SDK APIs
-============
-
-Market Place API
-----------------
-Upload/Re-upload VNF Package
-++++++++++++++++++++++++++++
-
-+--------------------+-----------------------------+
-|Interface Definition|Description |
-+====================+=============================+
-|URI |/onapapi/marketplace/v1/csars|
-+--------------------+-----------------------------+
-|Operation Type |POST |
-+--------------------+-----------------------------+
-|Content-Type |multipart/form-data |
-+--------------------+-----------------------------+
-
-Request Parameters:
-
-+---------+---------+-----------+--------------------------+-----------------------+
-|Attribute|Qualifier|Cardinality|Content |Description |
-+=========+=========+===========+==========================+=======================+
-|file |M |1 |InputStream |The CSAR file stream |
-+---------+---------+-----------+--------------------------+-----------------------+
-|file |M |1 |FormDataContentDisposition|The detail of CSAR file|
-+---------+---------+-----------+--------------------------+-----------------------+
-
-FormDataContentDisposition
-
-+----------------+------------------+-----------------------------------------+
-|Attribute |Content |Description |
-+================+==================+=========================================+
-|type |String |the disposition type. will be "form-data"|
-+----------------+------------------+-----------------------------------------+
-|name |String |the control name |
-+----------------+------------------+-----------------------------------------+
-|fileName |String |the file name |
-+----------------+------------------+-----------------------------------------+
-|creationDate |Date |the creation date |
-+----------------+------------------+-----------------------------------------+
-|modificationDate|Date |the modification date |
-+----------------+------------------+-----------------------------------------+
-|readDate |Date |the read date |
-+----------------+------------------+-----------------------------------------+
-|size |String |the size |
-+----------------+------------------+-----------------------------------------+
-|parameters |Map<String,String>|the parameters |
-+----------------+------------------+-----------------------------------------+
-
-Response:
-
-+---------+---------+-----------+-------+------------------------------------------------------------------------+
-|Attribute|Qualifier|Cardinality|Content|Description |
-+---------+---------+-----------+-------+------------------------------------------------------------------------+
-|csarId |M |1 |String |The CSAR identifier is a unique identifier generated by the Market place|
-+---------+---------+-----------+-------+------------------------------------------------------------------------+
-
-Delete VNF package by csarId
-++++++++++++++++++++++++++++
-
-+--------------------+--------------------------------------+
-|Interface Definition|Description |
-+====================+======================================+
-|URI |/onapapi/marketplace/v1/csars/{csarId}|
-+--------------------+--------------------------------------+
-|Operation Type |DELETE |
-+--------------------+--------------------------------------+
-
-Request Parameters:
-
-+---------+---------+-----------+-------+----------------------+
-|Attribute|Qualifier|Cardinality|Content|Description |
-+=========+=========+===========+=======+======================+
-|csarId |M |1 |String |The id of CSAR package|
-+---------+---------+-----------+-------+----------------------+
-
-Response:
-
-HTTP Success or Error Code
-
-Download VNF package files 
-++++++++++++++++++++++++++
-
-+--------------------+--------------------------------------------+
-|Interface Definition|Description |
-+====================+============================================+
-|URI |/onapapi/marketplace/v1/csars/{csarId}/files|
-+--------------------+--------------------------------------------+
-|Operation Type |GET |
-+--------------------+--------------------------------------------+
-
-Request Parameters:
-
-+---------+---------+-----------+-------+--------------+
-|Attribute|Qualifier|Cardinality|Content|Description |
-+=========+=========+===========+=======+==============+
-|csarId |M |1 |String |The id of CSAR|
-+---------+---------+-----------+-------+--------------+
-
-Sample:
-
-/onapapi/marketplace/v1/csars/78ede6f3-66cc-46ab-b748-38a6c010d272/files?
-
-Response:
-
-CSAR Package
-
-Query VNF package information by csarId
-+++++++++++++++++++++++++++++++++++++++
-
-+--------------------+--------------------------------------+
-|Interface Definition|Description |
-+====================+======================================+
-|URI |/onapapi/marketplace/v1/csars/{csarId}|
-+--------------------+--------------------------------------+
-|Operation Type |GET |
-+--------------------+--------------------------------------+
-
-Request Parameters:
-
-+---------+---------+-----------+-------+----------------------+
-|Attribute|Qualifier|Cardinality|Content|Description |
-+=========+=========+===========+=======+======================+
-|csarId |M |1 |String |The id of CSAR package|
-+---------+---------+-----------+-------+----------------------+
-
-Response:
-
-PackageMetaData
-
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|Attribute |Qualifier|Cardinality|Content|Description |
-+=============+=========+===========+=======+========================================================+
-|csarId |M |1 |String |The id of CSAR package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|name |M |1 |String |Name of package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|provider |M |1 |String |Provider company name |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|version |M |1 |String |version of the package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|createTime |M |1 |String |create time of package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|modifyTime |M |1 |String |modify time of package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|downloadUri |M |1 |String |download uri |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|size |M |1 |String |size of the package |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|downloadCount|M |1 |Integer|Number of times the package is download from marketplace|
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|shortdesc |M |1 |String |Short description |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-|details |M |1 |String |Detailed description |
-+-------------+---------+-----------+-------+--------------------------------------------------------+
-
-Sample:
-::
- {
- "csarId":"78ede6f3-66cc-46ab-b748-38a6c010d272",
- "name":"NanocellGateway",
- "provider":"XYZ",
- "version":"V1.0",
- "createTime":"2016-06-29 03:33:15",
- "modifyTime":"2016-06-29 09:33:15",
- "size":"0.93M",
- "downloadUri":"http://msb_ip:msb_port/files/marketplace/CSAR/XYZ/NanocellGW/v1.0/NanocellGateway.csar",
- "type":"CSAR"
- }
-
-Query list of VNF package information by conditions
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-+--------------------+-------------------------------------------------------------------------------------------+
-|Interface Definition|Description |
-+====================+===========================================================================================+
-|URI |/onapapi/marketplace/v1/csars?name={name}&version={version}&type={type}&provider={provider}|
-+--------------------+-------------------------------------------------------------------------------------------+
-|Operation Type |GET |
-+--------------------+-------------------------------------------------------------------------------------------+
-
-Query Param
-
-+---------+---------+-----------+-------+-------------+
-|Attribute|Qualifier|Cardinality|Content|Description |
-+=========+=========+===========+=======+=============+
-|name |M |1 |String |csar Name |
-+---------+---------+-----------+-------+-------------+
-|version |M |1 |String |csar version |
-+---------+---------+-----------+-------+-------------+
-|type |M |1 |String |csar type |
-+---------+---------+-----------+-------+-------------+
-|provider |M |1 |String |csar provider|
-+---------+---------+-----------+-------+-------------+
-
-Response:
-
-List of PackageMetaData
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+VNF SDK APIs
+============
+
+Market Place API
+----------------
+Upload/Re-upload VNF Package
+++++++++++++++++++++++++++++
+
++--------------------+-----------------------------+
+|Interface Definition|Description |
++====================+=============================+
+|URI |/onapapi/marketplace/v1/csars|
++--------------------+-----------------------------+
+|Operation Type |POST |
++--------------------+-----------------------------+
+|Content-Type |multipart/form-data |
++--------------------+-----------------------------+
+
+Request Parameters:
+
++---------+---------+-----------+--------------------------+-----------------------+
+|Attribute|Qualifier|Cardinality|Content |Description |
++=========+=========+===========+==========================+=======================+
+|file |M |1 |InputStream |The CSAR file stream |
++---------+---------+-----------+--------------------------+-----------------------+
+|file |M |1 |FormDataContentDisposition|The detail of CSAR file|
++---------+---------+-----------+--------------------------+-----------------------+
+
+FormDataContentDisposition
+
++----------------+------------------+-----------------------------------------+
+|Attribute |Content |Description |
++================+==================+=========================================+
+|type |String |the disposition type. will be "form-data"|
++----------------+------------------+-----------------------------------------+
+|name |String |the control name |
++----------------+------------------+-----------------------------------------+
+|fileName |String |the file name |
++----------------+------------------+-----------------------------------------+
+|creationDate |Date |the creation date |
++----------------+------------------+-----------------------------------------+
+|modificationDate|Date |the modification date |
++----------------+------------------+-----------------------------------------+
+|readDate |Date |the read date |
++----------------+------------------+-----------------------------------------+
+|size |String |the size |
++----------------+------------------+-----------------------------------------+
+|parameters |Map<String,String>|the parameters |
++----------------+------------------+-----------------------------------------+
+
+Response:
+
++---------+---------+-----------+-------+------------------------------------------------------------------------+
+|Attribute|Qualifier|Cardinality|Content|Description |
++---------+---------+-----------+-------+------------------------------------------------------------------------+
+|csarId |M |1 |String |The CSAR identifier is a unique identifier generated by the Market place|
++---------+---------+-----------+-------+------------------------------------------------------------------------+
+
+Delete VNF package by csarId
+++++++++++++++++++++++++++++
+
++--------------------+--------------------------------------+
+|Interface Definition|Description |
++====================+======================================+
+|URI |/onapapi/marketplace/v1/csars/{csarId}|
++--------------------+--------------------------------------+
+|Operation Type |DELETE |
++--------------------+--------------------------------------+
+
+Request Parameters:
+
++---------+---------+-----------+-------+----------------------+
+|Attribute|Qualifier|Cardinality|Content|Description |
++=========+=========+===========+=======+======================+
+|csarId |M |1 |String |The id of CSAR package|
++---------+---------+-----------+-------+----------------------+
+
+Response:
+
+HTTP Success or Error Code
+
+Download VNF package files 
+++++++++++++++++++++++++++
+
++--------------------+--------------------------------------------+
+|Interface Definition|Description |
++====================+============================================+
+|URI |/onapapi/marketplace/v1/csars/{csarId}/files|
++--------------------+--------------------------------------------+
+|Operation Type |GET |
++--------------------+--------------------------------------------+
+
+Request Parameters:
+
++---------+---------+-----------+-------+--------------+
+|Attribute|Qualifier|Cardinality|Content|Description |
++=========+=========+===========+=======+==============+
+|csarId |M |1 |String |The id of CSAR|
++---------+---------+-----------+-------+--------------+
+
+Sample:
+
+/onapapi/marketplace/v1/csars/78ede6f3-66cc-46ab-b748-38a6c010d272/files?
+
+Response:
+
+CSAR Package
+
+Query VNF package information by csarId
++++++++++++++++++++++++++++++++++++++++
+
++--------------------+--------------------------------------+
+|Interface Definition|Description |
++====================+======================================+
+|URI |/onapapi/marketplace/v1/csars/{csarId}|
++--------------------+--------------------------------------+
+|Operation Type |GET |
++--------------------+--------------------------------------+
+
+Request Parameters:
+
++---------+---------+-----------+-------+----------------------+
+|Attribute|Qualifier|Cardinality|Content|Description |
++=========+=========+===========+=======+======================+
+|csarId |M |1 |String |The id of CSAR package|
++---------+---------+-----------+-------+----------------------+
+
+Response:
+
+PackageMetaData
+
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|Attribute |Qualifier|Cardinality|Content|Description |
++=============+=========+===========+=======+========================================================+
+|csarId |M |1 |String |The id of CSAR package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|name |M |1 |String |Name of package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|provider |M |1 |String |Provider company name |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|version |M |1 |String |version of the package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|createTime |M |1 |String |create time of package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|modifyTime |M |1 |String |modify time of package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|downloadUri |M |1 |String |download uri |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|size |M |1 |String |size of the package |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|downloadCount|M |1 |Integer|Number of times the package is download from marketplace|
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|shortdesc |M |1 |String |Short description |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+|details |M |1 |String |Detailed description |
++-------------+---------+-----------+-------+--------------------------------------------------------+
+
+Sample:
+::
+ {
+ "csarId":"78ede6f3-66cc-46ab-b748-38a6c010d272",
+ "name":"NanocellGateway",
+ "provider":"XYZ",
+ "version":"V1.0",
+ "createTime":"2016-06-29 03:33:15",
+ "modifyTime":"2016-06-29 09:33:15",
+ "size":"0.93M",
+ "downloadUri":"http://msb_ip:msb_port/files/marketplace/CSAR/XYZ/NanocellGW/v1.0/NanocellGateway.csar",
+ "type":"CSAR"
+ }
+
+Query list of VNF package information by conditions
++++++++++++++++++++++++++++++++++++++++++++++++++++
+
++--------------------+-------------------------------------------------------------------------------------------+
+|Interface Definition|Description |
++====================+===========================================================================================+
+|URI |/onapapi/marketplace/v1/csars?name={name}&version={version}&type={type}&provider={provider}|
++--------------------+-------------------------------------------------------------------------------------------+
+|Operation Type |GET |
++--------------------+-------------------------------------------------------------------------------------------+
+
+Query Param
+
++---------+---------+-----------+-------+-------------+
+|Attribute|Qualifier|Cardinality|Content|Description |
++=========+=========+===========+=======+=============+
+|name |M |1 |String |csar Name |
++---------+---------+-----------+-------+-------------+
+|version |M |1 |String |csar version |
++---------+---------+-----------+-------+-------------+
+|type |M |1 |String |csar type |
++---------+---------+-----------+-------+-------------+
+|provider |M |1 |String |csar provider|
++---------+---------+-----------+-------+-------------+
+
+Response:
+
+List of PackageMetaData