#!/bin/bash

#
# XenServer specific defaults for the /tools/xen/ scripts
# Similar to stackrc, you can override these in your localrc
#

# Name of this guest
GUEST_NAME=${GUEST_NAME:-DevStackOSDomU}

# Template cleanup
CLEAN_TEMPLATES=${CLEAN_TEMPLATES:-false}

# Size of image
VDI_MB=${VDI_MB:-5000}
OSDOMU_MEM_MB=1024
OSDOMU_VDI_GB=8

# Network mapping. Specify bridge names or network names. Network names may
# differ across localised versions of XenServer. If a given bridge/network
# was not found, a new network will be created with the specified name.

# The management network is specified by the bridge name. xenbr0 is usually
# the name of the bridge of the network associated with the hypervisor's eth0.
MGT_BRIDGE_OR_NET_NAME="xenbr0"
VM_BRIDGE_OR_NET_NAME="OpenStack VM Network"
PUB_BRIDGE_OR_NET_NAME="OpenStack Public Network"
XEN_INT_BRIDGE_OR_NET_NAME="OpenStack VM Integration Network"

# VM Password
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}

# Extracted variables for OpenStack VM network device numbers.
# Make sure, they form a continous sequence starting from 0
MGT_DEV_NR=0
VM_DEV_NR=1
PUB_DEV_NR=2

# Host Interface, i.e. the interface on the nova vm you want to expose the
# services on. Usually the device connected to the management network or the
# one connected to the public network is used.
HOST_IP_IFACE=${HOST_IP_IFACE:-"eth${MGT_DEV_NR}"}

#
# Our nova host's network info
#

# Management network
MGT_IP=${MGT_IP:-dhcp}
MGT_NETMASK=${MGT_NETMASK:-ignored}

# VM Network
VM_IP=${VM_IP:-10.255.255.255}
VM_NETMASK=${VM_NETMASK:-255.255.255.0}

# Public network
# Aligned with stack.sh - see FLOATING_RANGE
PUB_IP=${PUB_IP:-172.24.4.10}
PUB_NETMASK=${PUB_NETMASK:-255.255.255.0}

# Ubuntu install settings
UBUNTU_INST_RELEASE="precise"
UBUNTU_INST_TEMPLATE_NAME="Ubuntu 12.04 (64-bit) for DevStack"
# For 12.04 use "precise" and update template name
# However, for 12.04, you should be using
# XenServer 6.1 and later or XCP 1.6 or later
# 11.10 is only really supported with XenServer 6.0.2 and later
UBUNTU_INST_ARCH="amd64"
UBUNTU_INST_HTTP_HOSTNAME="archive.ubuntu.net"
UBUNTU_INST_HTTP_DIRECTORY="/ubuntu"
UBUNTU_INST_HTTP_PROXY=""
UBUNTU_INST_LOCALE="en_US"
UBUNTU_INST_KEYBOARD="us"
# network configuration for ubuntu netinstall
UBUNTU_INST_BRIDGE_OR_NET_NAME=${UBUNTU_INST_BRIDGE_OR_NET_NAME:-"$MGT_BRIDGE_OR_NET_NAME"}
UBUNTU_INST_IP="dhcp"
UBUNTU_INST_NAMESERVERS=""
UBUNTU_INST_NETMASK=""
UBUNTU_INST_GATEWAY=""

# Create a separate xvdb. Tis could be used as a backing device for cinder
# volumes. Specify
#   XEN_XVDB_SIZE_GB=10
#   VOLUME_BACKING_DEVICE=/dev/xvdb
# in your localrc to avoid kernel lockups:
#   https://bugs.launchpad.net/cinder/+bug/1023755
#
# Set the size to 0 to avoid creation of additional disk.
XEN_XVDB_SIZE_GB=0

source ../../stackrc
