TOSCA CSAR on-boarding
This tutorial is more advanced and expects that you already know what TOSCA is and how Virtual Network Function Descriptor or Network Service Descriptor defined in the TOSCA format is structured. The Cloud Service Archive CSAR is a package defined by OASIS TOSCA. It is a compressed file that includes a TOSCA template of a Network Service, and all the scripts or files that a VNF needs for the lifecycle time from creation to termination. The CSAR is a zip file with this structure:
├── Definitions | └── testNSDiperf.yaml ├── Scripts | ├── install.sh | └── (VNF NAME) | └── script.sh └── TOSCA-Metadata ├── Metadata.yaml └── TOSCA.meta
The CSAR reader can read both NSDs and VNFDs written in TOSCA. The difference being that when reading a NSD it will onboard all VNFs included in the NSD and after that the NSD itself.
The TOSCA.meta file must contain the reference to the template in this case Entry-Definitions: Definitions/testNSDIperf.yaml. An optional feature is to define the vm image here in the metadata. It is easier to add it here one time instead of adding it multiple times in the template.
TOSCA-Meta-File-Version: 1.0 CSAR-Version: 1.1 Created-By: Fokus Entry-Definitions: Definitions/testNSDIperf.yaml
The Metadata.yaml defines essential properties for the VNF or VNFs and every CSAR has to include one. For more information on how to create such a file refer to the VNF Package tutorial. This is a simple example:
name: NSDExample image: upload: false names: - ubuntu-14.04-server-cloudimg-amd64-disk1 vim_types: - openstack
The Scripts folder contains all the files required from the lifecycle interfaces of the VNFs. If the CSAR has a Network Service Template, then for every type of VNF included in the NS Template you have to include a folder with the scripts for that particular type. Example if one VNF is of type client, then the scripts for that VNF have to be put in Scripts/client folder.
In this example testNSDIperf.yaml is a template for a Network Service. In a CSAR the template can define either a Virtual Network Function or a Network Service that consists of multiple Virtual Network Functions. The VNF Tosca tutorial and NS Tosca tutorial provide more information on how to construct a template of each kind.
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0 description: Example of NSD metadata: ID: NSD-Iperf vendor: Fokus version: 1.0 topology_template: node_templates: iperf-server: #VNF1 type: openbaton.type.VNF properties: vendor: Fokus version: 1.0 endpoint: generic type: server vnfPackageLocation: https://github.com/openbaton/vnf-scripts.git deploymentFlavour: - flavour_key: m1.small requirements: - virtualLink: private - vdu: VDU2 interfaces: lifecycle: # lifecycle instantiate: - install.sh - install-srv.sh iperf-client: type: openbaton.type.VNF properties: ID: x vendor: Fokus version: 1.0 type: client vnfPackageLocation: https://github.com/openbaton/vnf-scripts.git deploymentFlavour: - flavour_key: m1.small endpoint: generic requirements: - virtualLink: private - vdu: VDU1 interfaces: lifecycle: # lifecycle INSTANTIATE: - install.sh CONFIGURE: - server_configure.sh VDU1: type: tosca.nodes.nfv.VDU properties: scale_in_out: 1 artifacts: VDU1Image: type: tosca.artifacts.Deployment.Image.VM file: ubuntu-14.04-server-cloudimg-amd64-disk1 VDU2: type: tosca.nodes.nfv.VDU properties: scale_in_out: 3 requirements: - virtual_link: CP2 artifacts: VDU1Image: type: tosca.artifacts.Deployment.Image.VM file: ubuntu-14.04-server-cloudimg-amd64-disk1 CP1: type: tosca.nodes.nfv.CP properties: floatingIP: random requirements: - virtualBinding: VDU1 - virtualLink: private CP2: #endpoints of VNF2 type: tosca.nodes.nfv.CP requirements: - virtualBinding: VDU2 - virtualLink: private private: type: tosca.nodes.nfv.VL properties: vendor: Fokus relationships_template: connection_server_client: type: tosca.nodes.relationships.ConnectsTo source: iperf-server target: iperf-client parameters: - private
Saving as CSAR
To save the three folders - Scripts, Definitions, TOSCA-Metadata as a CSAR go to the folder where you have saved them and run:
zip -r iperf.csar . -x ".*" -x "*/.*"
Onboarding VNF CSARs
Go to the Catalogue -> VNF Packages -> Upload VNFPackage, check the "Use CSAR Parser" box and select the csar that you want to upload.
Onboard Network Service CSARs
Go to the Catalogue -> NS Descriptors and click on "Upload CSAR NSD" and select the file.