##
# Copyright 2015 Telefonica Investigacion y Desarrollo, S.A.U.
# This file is part of openmano
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact with: nfvlabs@tid.es
##
---
vnf:
    name: TEMPLATE
    description: This is a template to help in the creation of your own VNFs
    # class: parent      # Optional. Used to organize VNFs
    external-connections:
    -   name:              mgmt0
        type:              mgmt        # "mgmt" (autoconnect to management net), "bridge", "data"
        VNFC:              TEMPLATE-VM # Virtual Machine this interface belongs to
        local_iface_name:  mgmt0       # interface name inside this Virtual Machine (must be defined in the VNFC section)
        description:       Management interface
    -   name:              xe0
        type:              data
        VNFC:              TEMPLATE-VM
        local_iface_name:  xe0
        description:       Data interface 1
    -   name:              xe1
        type:              data
        VNFC:              TEMPLATE-VM
        local_iface_name:  xe1
        description:       Data interface 2
    -   name:              ge0
        type:              bridge
        VNFC:              TEMPLATE-VM
        local_iface_name:  ge0
        description:       Bridge interface
    VNFC:                              # Virtual machine array 
    -   name:        TEMPLATE-VM       # name of Virtual Machine
        # count:       1                 #by default 1
        description: TEMPLATE description
        VNFC image: /path/to/imagefolder/TEMPLATE-VM.qcow2
        # image metadata: {"bus":"ide", "os_type":"windows", "use_incremental": "no" } #Optional
        # processor:                     #Optional
        #     model: Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz
        #     features: ["64b", "iommu", "lps", "tlbps", "hwsv", "dioc", "ht"]
        # hypervisor:                    #Optional
        #     type: QEMU-kvm
        #     version: "10002|12001|2.6.32-358.el6.x86_64"
        # vcpus: 1          # Only for traditional cloud VMs. Number of virtual CPUs (oversubscription is allowed).
        # ram: 1024         # Only for traditional cloud VMs. Memory in MBytes (not from hugepages, oversubscription is allowed)
        # disk: 10          # disk size in GiB, by default 1
        numas: 
        -   paired-threads: 5          # "cores", "paired-threads", "threads"
            paired-threads-id: [ [0,1], [2,3], [4,5], [6,7], [8,9] ] # By default follows incremental order
            memory: 14                 # GBytes
            interfaces:
            -   name:      xe0
                vpci:      "0000:00:11.0"     
                dedicated: "yes"         # "yes"(passthrough), "no"(sriov with vlan tags), "yes:sriov"(sriovi, but exclusive and without vlan tag)
                bandwidth: 10 Gbps
                # mac_address: '20:33:45:56:77:44' #avoid this option if possible
            -   name:      xe1
                vpci:      "0000:00:12.0"
                dedicated: "yes"
                bandwidth: 10 Gbps
                # mac_address: '20:33:45:56:77:45' #avoid this option if possible
        bridge-ifaces:
        -   name:      mgmt0
            vpci:      "0000:00:09.0"    # Optional. Virtual PCI address
            bandwidth: 1 Mbps            # Optional. Informative only
            # mac_address: '20:33:45:56:77:46' #avoid this option if possible
            # model:       'virtio'      # ("virtio","e1000","ne2k_pci","pcnet","rtl8139") By default, it is automatically filled by libvirt
        -   name:      ge0
            vpci:      "0000:00:10.0"
            bandwidth: 1 Mbps
            # mac_address: '20:33:45:56:77:47' #avoid this option if possible
            # model:       'virtio'      # ("virtio","e1000","ne2k_pci","pcnet","rtl8139") By default, it is automatically filled by libvirt
        devices:                       # Optional, order determines device letter asignation (hda, hdb, ...)
        -   type:      disk            # "disk","cdrom","xml"
            image:     /path/to/imagefolder/SECOND-DISK.qcow2
            # image metadata: {"bus":"ide", "os_type":"windows", "use_incremental": "no" }
            # vpci:      "0000:00:03.0"   # Optional, not for disk or cdrom
        -   type:      cdrom
            image:     /path/to/imagefolder/CDROM-IMAGE.qcow2
            # image metadata: {"bus":"ide", "os_type":"windows", "use_incremental": "no" }
        -   type:      xml
            image:     /path/to/imagefolder/ADDITIONAL-DISK.qcow2   # Optional, depending on the device type
            image metadata: {"bus":"ide", "os_type":"windows", "use_incremental": "no" }  # Optional, depending on the device type
            vpci:      "0000:00:03.0"                          # Optional, depending on the device type (not needed for disk or cdrom)
            xml:   '   xml text for XML described devices. Do not use single quotes inside
                       The following words, if found, will be replaced:
                       __file__    by image path, (image must be provided)
                       __format__  by qcow2 or raw (image must be provided)
                       __dev__     by device letter (b, c, d ...) 
                       __vpci__    by vpci (vpci must be provided)
                   '
    # Additional Virtual Machines would be included here

