##
# Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
# This file is part of openvim
# 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
##



#Miscellaneous
#Option to test openvim without the needed infrastructure, possible values are
#    "normal"      by default, Openflow controller (OFC), switch and real host are needed
#    "test"        Used for testing http API and database without connecting to host or to OFC
#    "host only"   Used when neither OFC nor OF switch are provided. 
#                  Dataplane network connection must be done manually.
#    "OF only"     Used for testing of new openflow controllers support. No real VM deployments will be done but
#                  OFC will be used as in real mode
#    "development" Forced a cloud-type deployment, nomal memory instead of hugepages is used, 
#                  without cpu pinning, and using a bridge network instead of a real OFC dataplane networks.
#                  The same 'development_bridge' (see below) is used for all dataplane networks
mode: test

#Openflow controller information
of_controller:      floodlight                   # Type of controller to be used.
                                                 # Valid controllers are 'opendaylight', 'floodlight' or <custom>
#of_controller_module: module                    # Only needed for <custom>.  Python module that implement
                                                 # this controller. By default a file with the name  <custom>.py is used 
#of_<other>:           value                     # Other parameters required by <custom> controller. Consumed by __init__
of_user:            user credentials             # User credentials for the controller if needed
of_password:        passwd credentials           # Password credentials for the controller if needed
of_controller_ip:   127.0.0.1                    # IP address where the Openflow controller is listening
of_controller_port: 7070                         # TCP port where the Openflow controller is listening (REST API server)
of_controller_dpid: '00:01:02:03:04:05:06:07'    # Openflow Switch identifier (put here the right number)

#This option is used for those openflow switch that cannot deliver one packet to several output with different vlan tags
#When set to true, it fails when trying to attach different vlan tagged ports to the same net
of_controller_nets_with_same_vlan: false         # (by default, true)

#Server parameters
http_host:       0.0.0.0             # IP address where openvim is listening (by default, localhost)
http_port:       9080                # General port where openvim is listening (by default, 9080)
http_admin_port: 9085                # Admin port where openvim is listening (when missing, no administration server is launched)

#database parameters
db_host:   localhost                   # by default localhost
db_user:   vim                       # DB user
db_passwd: vimpw                     # DB password
db_name:   vim_db                    # Name of the VIM DB

#host paremeters
image_path: "/opt/VNF/images"        # Folder, same for every host, where the VNF images will be copied

#testing parameters (used by ./test/test_openvim.py)
tenant_id: fc7b43b6-6bfa-11e4-84d2-5254006d6777   # Default tenant identifier for testing

#VLAN ranges used for the dataplane networks (ptp, data)
#When a network is created an unused value in this range is used
network_vlan_range_start: 3000
network_vlan_range_end:   4000

# Overlay network implementation. Options are:
# - ovs :   (by default) Use a vlxan mesh between computes to handle the network overlay.
# - bridge: Use pre-populated linux bridges with L2 conectivity at compte nodes.
network_type : ovs
ovs_controller_ip   :   localhost                   # dhcp controller IP address, must be change in order to
ovs_controller_user :   "osm_dhcp"                  # User for the dchp controller for OVS networks
ovs_controller_file_path  :   "/var/lib/openvim"    # Path for dhcp daemon configuration, by default '/var/lib/openvim'


#host bridge interfaces for networks
# Apply only for 'network_type: bridge'
# Indicates the bridges at compute nodes to be used for the overlay networks
# Bridge networks need to be pre-provisioned on each host and Openvim uses those pre-provisioned bridge networks.
# Openvim assumes that the following bridge interfaces have been created on each host, appropriately associated to a physical port.
# The following information needs to be provided:
#    - Name of the bridge (identical in all hosts)
#    - VLAN tag associated to each bridge interface
#    - The speed of the physical port in Gbps, where that bridge interface was created
# For instance, next example assumes that 10 bridges have been created on each host
# using vlans 2001 to 2010, associated to a 1Gbps physical port 
#bridge_ifaces:
#   #name:      [vlan, speed in Gbps]
#   virbrMan1:  [2001, 1]
#   virbrMan2:  [2002, 1]
#   virbrMan3:  [2003, 1]
#   virbrMan4:  [2004, 1]
#   virbrMan5:  [2005, 1]
#   virbrMan6:  [2006, 1]
#   virbrMan7:  [2007, 1]
#   virbrMan8:  [2008, 1]
#   virbrMan9:  [2009, 1]
#   virbrMan10: [2010, 1]

#Used only when 'mode' is at development'. Indicates which 'bridge_ifaces' is used for dataplane networks
#development_bridge: virbrMan10

#DHCP SERVER PARAMETERS. 
#In case some of the previous 'bridge_ifaces' are connected to an EXTERNAL dhcp server, provide 
#   the server parameters to allow openvim getting the allocated IP addresses of virtual machines
#   connected to the indicated 'bridge_ifaces' and or 'nets'. Openvim will connect to the dhcp server by ssh.
#DHCP server must contain a shell script "get_dhcp_lease.sh" included in the path, that accepts a mac address as 
#   parameter and return empty or the allocated IP address. See an example at the end of the file 
#   ./openvim/dhcp_thread.py 
#COMMENT all lines in case you do not have a DHCP server in 'normal', 'development'  or 'host only' modes.
#   For 'test' or 'OF only' modes you can leave then uncommented, because in these modes fake IP 
#   address are generated instead of connecting with a real DHCP server.
dhcp_server:
   host:     host-ip-or-name  
   #port:     22               #ssh port, by default 22
   provider: isc-dhcp-server  #dhcp-server type
   user:     user
   #provide password, or key if needed
   password: passwd           
   #key:     ssh-access-key
   #list of the previous bridge interfaces attached to this dhcp server
   bridge_ifaces:   [ virbrMan1, virbrMan2 ] 
   #list of the networks attached to this dhcp server
   nets: [default]


#logging parameters       # DEBUG, INFO, WARNING, ERROR, CRITICAL
log_level:       ERROR
log_level_db:    DEBUG
log_level_of:    DEBUG


