##
# Copyright 2015 Telefónica Investigación 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:        dataplaneVNF3
    description: "Example of a dataplane VNF consisting of one VM with two SR-IOV"
    # class: parent      # Optional. Used to organize VNFs
    external-connections:
    -   name:              mgmt
        type:              mgmt
        VNFC:              dataplaneVNF3-VM
        local_iface_name:  eth0
        description:       control interface VM1
    -   name:              data0
        type:              data
        VNFC:              dataplaneVNF3-VM
        local_iface_name:  xe0
        description:       Dataplane interface
    -   name:              data1
        type:              data
        VNFC:              dataplaneVNF3-VM
        local_iface_name:  xe1
        description:       Dataplane interface
    VNFC:
    -   name:        dataplaneVNF3-VM
        description: "Dataplane VM with 2 threads, 2 GB hugepages, 2 SR-IOV interface"
        #Copy the image to a compute path and edit this path
        VNFC image:  /path/to/imagefolder/dataplaneVNF3.qcow2
        disk: 10
        numas: 
        -   threads: 2         # "cores", "paired-threads", "threads"
            memory: 2                 # GBytes
            interfaces:
            -   name:      xe0
                vpci:      "0000:00:11.0"
                dedicated: "no"         # "yes"(passthrough), "no"(sriov with vlan tags), "yes:sriov"(sriovi, but exclusive and without vlan tag)
                bandwidth: 1 Gbps
            -   name:      xe1
                vpci:      "0000:00:12.0"
                dedicated: "no"
                bandwidth: 1 Gbps
        bridge-ifaces:
        -   name:      eth0
            vpci:      "0000:00:09.0"
            bandwidth: 1 Mbps          # Optional, informative only


