##
# 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
##
---
schema_version: "0.2"
vnf:
    name:        dataplaneVNF4
    description: "Example of a dataplane VNF consisting of two VMs for data plane workloads with one internal network. VMs use image name instead of the path"
    # class: parent      # Optional. Used to organize VNFs
    internal-connections:
    -   name:        datanet
        description: datanet
        type:        e-lan
        implementation: underlay
        ip-profile:
            ip-version:       IPv4
            subnet-address:   192.168.1.0/24
            gateway-address:  192.168.1.1
            dns-address:      8.8.8.8
            dhcp:
                enabled: true
                start-address: 192.168.1.100
                count: 100
        elements:
        -   VNFC:             VNF_2VMs-VM1
            local_iface_name: xe0
            ip_address:       192.168.1.2
        -   VNFC:             VNF_2VMs-VM2
            local_iface_name: xe0
            ip_address:       192.168.1.3
    external-connections:
    -   name:              control0
        type:              mgmt
        VNFC:              VNF_2VMs-VM1
        local_iface_name:  eth0
        description:       control interface VM1
    -   name:              control1
        type:              mgmt
        VNFC:              VNF_2VMs-VM2
        local_iface_name:  eth0
        description:       control interface VM2
    -   name:              in
        type:              data
        VNFC:              VNF_2VMs-VM1
        local_iface_name:  xe1
        description:       Dataplane interface input
    -   name:              out
        type:              data
        VNFC:              VNF_2VMs-VM2
        local_iface_name:  xe1
        description:       Dataplane interface output
    VNFC:
    -   name:        VNF_2VMs-VM1
        description: "Dataplane VM1 with 4 threads, 2 GB hugepages, 2 SR-IOV interface"
        image name: linux-linux-VM-img
        disk: 10
        numas: 
        -   paired-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

    -   name:        VNF_2VMs-VM2
        description: "Dataplane VM1 with 2 threads, 2 GB hugepages, 2 SR-IOV interface"
        image name: linux-linux-VM-img
        disk: 10
        numas: 
        -   paired-threads: 1         # "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

