Merge "Devstack changes for Brocade Quantum Plugin"
diff --git a/files/apts/ryu b/files/apts/ryu
index 1e8f2d2..4a4fc52 100644
--- a/files/apts/ryu
+++ b/files/apts/ryu
@@ -1,4 +1,5 @@
python-setuptools
python-gevent
python-gflags
+python-netifaces
python-sphinx
diff --git a/files/rpms/ryu b/files/rpms/ryu
index 1e8f2d2..4a4fc52 100644
--- a/files/rpms/ryu
+++ b/files/rpms/ryu
@@ -1,4 +1,5 @@
python-setuptools
python-gevent
python-gflags
+python-netifaces
python-sphinx
diff --git a/functions b/functions
index 68aec5d..79c82a4 100644
--- a/functions
+++ b/functions
@@ -80,6 +80,27 @@
}
+# HTTP and HTTPS proxy servers are supported via the usual environment variables [1]
+# ``http_proxy``, ``https_proxy`` and ``no_proxy``. They can be set in
+# ``localrc`` or on the command line if necessary::
+#
+# [1] http://www.w3.org/Daemon/User/Proxies/ProxyClients.html
+#
+# http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh
+
+function export_proxy_variables() {
+ if [[ -n "$http_proxy" ]]; then
+ export http_proxy=$http_proxy
+ fi
+ if [[ -n "$https_proxy" ]]; then
+ export https_proxy=$https_proxy
+ fi
+ if [[ -n "$no_proxy" ]]; then
+ export no_proxy=$no_proxy
+ fi
+}
+
+
# Grab a numbered field from python prettytable output
# Fields are numbered starting with 1
# Reverse syntax is supported: -1 is the last field, -2 is second to last, etc.
@@ -717,26 +738,31 @@
# Helper to launch a service in a named screen
# screen_it service "command-line"
function screen_it {
- NL=`echo -ne '\015'`
SCREEN_NAME=${SCREEN_NAME:-stack}
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
+ SCREEN_DEV=`trueorfalse True $SCREEN_DEV`
if is_service_enabled $1; then
# Append the service to the screen rc file
screen_rc "$1" "$2"
screen -S $SCREEN_NAME -X screen -t $1
- # sleep to allow bash to be ready to be send the command - we are
- # creating a new window in screen and then sends characters, so if
- # bash isn't running by the time we send the command, nothing happens
- sleep 1.5
+ if [[ "$SCREEN_DEV" = "True" ]]; then
+ # sleep to allow bash to be ready to be send the command - we are
+ # creating a new window in screen and then sends characters, so if
+ # bash isn't running by the time we send the command, nothing happens
+ sleep 1.5
- if [[ -n ${SCREEN_LOGDIR} ]]; then
- screen -S $SCREEN_NAME -p $1 -X logfile ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log
- screen -S $SCREEN_NAME -p $1 -X log on
- ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log
+ if [[ -n ${SCREEN_LOGDIR} ]]; then
+ screen -S $SCREEN_NAME -p $1 -X logfile ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log
+ screen -S $SCREEN_NAME -p $1 -X log on
+ ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log
+ fi
+ NL=`echo -ne '\015'`
+ screen -S $SCREEN_NAME -p $1 -X stuff "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\"$NL"
+ else
+ screen -S $SCREEN_NAME -p $1 -X exec /bin/bash -c "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\""
fi
- screen -S $SCREEN_NAME -p $1 -X stuff "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\"$NL"
fi
}
diff --git a/lib/baremetal b/lib/baremetal
index 7c31d1f..2659386 100644
--- a/lib/baremetal
+++ b/lib/baremetal
@@ -400,15 +400,10 @@
}
function clear_baremetal_of_all_nodes() {
- list=$(nova-baremetal-manage node list | tail -n +2 | awk '{print $1}' )
+ list=$(nova baremetal-node-list | awk -F '| ' 'NR>3 {print $2}' )
for node in $list
do
- nova-baremetal-manage node delete $node
- done
- list=$(nova-baremetal-manage interface list | tail -n +2 | awk '{print $1}' )
- for iface in $list
- do
- nova-baremetal-manage interface delete $iface
+ nova baremetal-node-delete $node
done
}
@@ -420,16 +415,18 @@
mac_1=${1:-$BM_FIRST_MAC}
mac_2=${2:-$BM_SECOND_MAC}
- id=$(nova-baremetal-manage node create \
- --host=$BM_HOSTNAME --prov_mac=$mac_1 \
- --cpus=$BM_FLAVOR_CPU --memory_mb=$BM_FLAVOR_RAM \
- --local_gb=$BM_FLAVOR_ROOT_DISK --terminal_port=0 \
- --pm_address=$BM_PM_ADDR --pm_user=$BM_PM_USER --pm_password=$BM_PM_PASS \
- )
+ id=$(nova baremetal-node-create \
+ --pm_address="$BM_PM_ADDR" \
+ --pm_user="$BM_PM_USER" \
+ --pm_password="$BM_PM_PASS" \
+ "$BM_HOSTNAME" \
+ "$BM_FLAVOR_CPU" \
+ "$BM_FLAVOR_RAM" \
+ "$BM_FLAVOR_ROOT_DISK" \
+ "$mac_1" \
+ | grep ' id ' | get_field 2 )
[ $? -eq 0 ] || [ "$id" ] || die "Error adding baremetal node"
- id2=$(nova-baremetal-manage interface create \
- --node_id=$id --mac_address=$mac_2 --datapath_id=0 --port_no=0 \
- )
+ id2=$(nova baremetal-add-interface "$id" "$mac_2" )
[ $? -eq 0 ] || [ "$id2" ] || die "Error adding interface to barmetal node $id"
}
diff --git a/lib/quantum b/lib/quantum
index d5733b3..f3a3ec4 100644
--- a/lib/quantum
+++ b/lib/quantum
@@ -270,8 +270,19 @@
# Create a small network
# Since quantum command is executed in admin context at this point,
# ``--tenant_id`` needs to be specified.
- NET_ID=$(quantum net-create --tenant_id $TENANT_ID "$PRIVATE_NETWORK_NAME" | grep ' id ' | get_field 2)
- SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
+ if is_baremetal; then
+ sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
+ for IP in $(ip addr show dev $PUBLIC_INTERFACE | grep ' inet ' | awk '{print $2}'); do
+ sudo ip addr del $IP dev $PUBLIC_INTERFACE
+ sudo ip addr add $IP dev $OVS_PHYSICAL_BRIDGE
+ done
+ NET_ID=$(quantum net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type flat --provider:physical_network "$PHYSICAL_NETWORK" | grep ' id ' | get_field 2)
+ SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --gateway $NETWORK_GATEWAY $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
+ sudo ifconfig $OVS_PHYSICAL_BRIDGE up
+ else
+ NET_ID=$(quantum net-create --tenant_id $TENANT_ID "$PRIVATE_NETWORK_NAME" | grep ' id ' | get_field 2)
+ SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
+ fi
if is_service_enabled q-l3; then
# Create a router, and add the private subnet as one of its interfaces
@@ -507,7 +518,11 @@
iniset $QUANTUM_CONF DEFAULT allow_overlapping_ips $Q_ALLOW_OVERLAPPING_IP
iniset $QUANTUM_CONF DEFAULT auth_strategy $Q_AUTH_STRATEGY
- _quantum_setup_keystone $Q_API_PASTE_FILE filter:authtoken
+ _quantum_setup_keystone $QUANTUM_CONF keystone_authtoken
+ # Comment out keystone authtoken configuration in api-paste.ini
+ # It is required to avoid any breakage in Quantum where the sample
+ # api-paste.ini has authtoken configurations.
+ _quantum_commentout_keystone_authtoken $Q_API_PASTE_FILE filter:authtoken
# Configure plugin
quantum_plugin_configure_service
@@ -573,6 +588,21 @@
rm -f $QUANTUM_AUTH_CACHE_DIR/*
}
+function _quantum_commentout_keystone_authtoken() {
+ local conf_file=$1
+ local section=$2
+
+ inicomment $conf_file $section auth_host
+ inicomment $conf_file $section auth_port
+ inicomment $conf_file $section auth_protocol
+ inicomment $conf_file $section auth_url
+
+ inicomment $conf_file $section admin_tenant_name
+ inicomment $conf_file $section admin_user
+ inicomment $conf_file $section admin_password
+ inicomment $conf_file $section signing_dir
+}
+
function _quantum_setup_interface_driver() {
quantum_plugin_setup_interface_driver $1
}
diff --git a/lib/quantum_plugins/bigswitch_floodlight b/lib/quantum_plugins/bigswitch_floodlight
index 35276a5..2c928be 100644
--- a/lib/quantum_plugins/bigswitch_floodlight
+++ b/lib/quantum_plugins/bigswitch_floodlight
@@ -2,7 +2,7 @@
# ------------------------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
source $TOP_DIR/lib/quantum_plugins/ovs_base
@@ -52,4 +52,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_plugins/linuxbridge b/lib/quantum_plugins/linuxbridge
index e8ba68c..6d5d4e0 100644
--- a/lib/quantum_plugins/linuxbridge
+++ b/lib/quantum_plugins/linuxbridge
@@ -2,7 +2,7 @@
# ---------------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
function is_quantum_ovs_base_plugin() {
@@ -76,4 +76,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_plugins/openvswitch b/lib/quantum_plugins/openvswitch
index 5415e86..181e7e7 100644
--- a/lib/quantum_plugins/openvswitch
+++ b/lib/quantum_plugins/openvswitch
@@ -2,7 +2,7 @@
# ---------------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
source $TOP_DIR/lib/quantum_plugins/ovs_base
@@ -75,7 +75,7 @@
# Nova will always be installed along with quantum for a domU
# devstack install, so it should be safe to rely on nova.conf
# for xenapi configuration.
- Q_RR_DOM0_COMMAND="$QUANTUM_DIR/bin/quantum-rootwrap-dom0 $NOVA_CONF"
+ Q_RR_DOM0_COMMAND="$QUANTUM_DIR/bin/quantum-rootwrap-xen-dom0 $NOVA_CONF"
# Under XS/XCP, the ovs agent needs to target the dom0
# integration bridge. This is enabled by using a root wrapper
# that executes commands on dom0 via a XenAPI plugin.
@@ -141,4 +141,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_plugins/ovs_base b/lib/quantum_plugins/ovs_base
index f34e862..8563674 100644
--- a/lib/quantum_plugins/ovs_base
+++ b/lib/quantum_plugins/ovs_base
@@ -2,7 +2,7 @@
# -------------------------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
function is_quantum_ovs_base_plugin() {
@@ -46,4 +46,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_plugins/ryu b/lib/quantum_plugins/ryu
index 86105bc..2dfd4f7 100644
--- a/lib/quantum_plugins/ryu
+++ b/lib/quantum_plugins/ryu
@@ -2,7 +2,7 @@
# ------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
source $TOP_DIR/lib/quantum_plugins/ovs_base
@@ -15,6 +15,9 @@
function quantum_plugin_install_agent_packages() {
_quantum_ovs_base_install_agent_packages
+
+ # quantum_ryu_agent requires ryu module
+ install_ryu
}
function quantum_plugin_configure_common() {
@@ -60,4 +63,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_thirdparty/bigswitch_floodlight b/lib/quantum_thirdparty/bigswitch_floodlight
index 77aeb61..60e3924 100644
--- a/lib/quantum_thirdparty/bigswitch_floodlight
+++ b/lib/quantum_thirdparty/bigswitch_floodlight
@@ -2,7 +2,7 @@
# ------------------------------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
@@ -47,4 +47,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/quantum_thirdparty/ryu b/lib/quantum_thirdparty/ryu
index f11951a..7a01923 100644
--- a/lib/quantum_thirdparty/ryu
+++ b/lib/quantum_thirdparty/ryu
@@ -2,7 +2,7 @@
# -----------------------
# Save trace setting
-XTRACE=$(set +o | grep xtrace)
+MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
@@ -49,8 +49,16 @@
echo "${RYU_CONF_CONTENTS}" > $RYU_CONF
}
+# install_ryu can be called multiple times as quantum_pluing/ryu may call
+# this function for quantum-ryu-agent
+# Make this function idempotent and avoid cloning same repo many times
+# with RECLONE=yes
+_RYU_INSTALLED=${_RYU_INSTALLED:-False}
function install_ryu() {
- git_clone $RYU_REPO $RYU_DIR $RYU_BRANCH
+ if [[ "$_RYU_INSTALLED" == "False" ]]; then
+ git_clone $RYU_REPO $RYU_DIR $RYU_BRANCH
+ _RYU_INSTALLED=True
+ fi
}
function start_ryu() {
@@ -62,4 +70,4 @@
}
# Restore xtrace
-$XTRACE
+$MY_XTRACE
diff --git a/lib/tempest b/lib/tempest
index cb172a8..e43f6d7 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -205,13 +205,7 @@
iniset $TEMPEST_CONF identity admin_password "$password"
# Compute
- iniset $TEMPEST_CONF compute password "$password" # DEPRECATED
- iniset $TEMPEST_CONF compute alt_username $ALT_USERNAME # DEPRECATED
- iniset $TEMPEST_CONF compute alt_password "$password" # DEPRECATED
- iniset $TEMPEST_CONF compute alt_tenant_name $ALT_TENANT_NAME # DEPRECATED
- iniset $TEMPEST_CONF compute resize_available False
iniset $TEMPEST_CONF compute change_password_available False
- iniset $TEMPEST_CONF compute compute_log_level ERROR
# Note(nati) current tempest don't create network for each tenant
# so reuse same tenant for now
if is_service_enabled quantum; then
@@ -232,10 +226,6 @@
iniset $TEMPEST_CONF compute flavor_ref_alt $flavor_ref_alt
iniset $TEMPEST_CONF compute live_migration_available ${LIVE_MIGRATION_AVAILABLE:-False}
iniset $TEMPEST_CONF compute use_block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
- iniset $TEMPEST_CONF compute source_dir $NOVA_SOURCE_DIR # DEPRECATED
- iniset $TEMPEST_CONF compute bin_dir $NOVA_BIN_DIR # DEPRECATED
- iniset $TEMPEST_CONF compute path_to_private_key $TEMPEST_DIR/id_rsa # DEPRECATED
- iniset $TEMPEST_CONF compute db_uri $BASE_SQL_CONN/nova # DEPRECATED
# Whitebox
iniset $TEMPEST_CONF whitebox source_dir $NOVA_SOURCE_DIR
@@ -246,21 +236,11 @@
iniset $TEMPEST_CONF whitebox db_uri $BASE_SQL_CONN/nova
- # image
- iniset $TEMPEST_CONF image password "$password" # DEPRECATED
-
- # identity-admin
- iniset $TEMPEST_CONF "identity-admin" password "$password" # DEPRECATED
-
# compute admin
iniset $TEMPEST_CONF "compute-admin" password "$password" # DEPRECATED
- # network admin
- iniset $TEMPEST_CONF "network-admin" password "$password" # DEPRECATED
-
# network
iniset $TEMPEST_CONF network api_version 2.0
- iniset $TEMPEST_CONF network password "$password" # DEPRECATED
iniset $TEMPEST_CONF network tenant_networks_reachable "$tenant_networks_reachable"
iniset $TEMPEST_CONF network public_network_id "$public_network_id"
iniset $TEMPEST_CONF network public_router_id "$public_router_id"
diff --git a/stack.sh b/stack.sh
index 8a814a0..0f009fc 100755
--- a/stack.sh
+++ b/stack.sh
@@ -30,9 +30,8 @@
GetDistro
-
-# Settings
-# ========
+# Global Settings
+# ===============
# ``stack.sh`` is customizable through setting environment variables. If you
# want to override a setting you can set and export it::
@@ -62,33 +61,18 @@
source $TOP_DIR/stackrc
-# Proxy Settings
+# Local Settings
# --------------
-# HTTP and HTTPS proxy servers are supported via the usual environment variables [1]
-# ``http_proxy``, ``https_proxy`` and ``no_proxy``. They can be set in
-# ``localrc`` if necessary or on the command line::
-#
-# [1] http://www.w3.org/Daemon/User/Proxies/ProxyClients.html
-#
-# http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh
-
-if [[ -n "$http_proxy" ]]; then
- export http_proxy=$http_proxy
-fi
-if [[ -n "$https_proxy" ]]; then
- export https_proxy=$https_proxy
-fi
-if [[ -n "$no_proxy" ]]; then
- export no_proxy=$no_proxy
-fi
+# Make sure the proxy config is visible to sub-processes
+export_proxy_variables
# Destination path for installation ``DEST``
DEST=${DEST:-/opt/stack}
# Sanity Check
-# ============
+# ------------
# Clean up last environment var cache
if [[ -r $TOP_DIR/.stackenv ]]; then
@@ -646,26 +630,9 @@
# OpenStack uses a fair number of other projects.
# Install package requirements
+# Source it so the entire environment is available
echo_summary "Installing package prerequisites"
-if is_ubuntu; then
- install_package $(get_packages $FILES/apts)
-elif is_fedora; then
- install_package $(get_packages $FILES/rpms)
-elif is_suse; then
- install_package $(get_packages $FILES/rpms-suse)
-else
- exit_distro_not_supported "list of packages"
-fi
-
-if [[ $SYSLOG != "False" ]]; then
- if is_ubuntu || is_fedora; then
- install_package rsyslog-relp
- elif is_suse; then
- install_package rsyslog-module-relp
- else
- exit_distro_not_supported "rsyslog-relp installation"
- fi
-fi
+source $TOP_DIR/tools/install_prereqs.sh
install_rpc_backend
@@ -1092,9 +1059,7 @@
elif [ "$VIRT_DRIVER" = 'openvz' ]; then
echo_summary "Using OpenVZ virtualization driver"
- # TODO(deva): OpenVZ driver does not yet work if compute_driver is set here.
- # Replace connection_type when this is fixed.
- # iniset $NOVA_CONF DEFAULT compute_driver "openvz.connection.OpenVzConnection"
+ iniset $NOVA_CONF DEFAULT compute_driver "openvz.driver.OpenVzDriver"
iniset $NOVA_CONF DEFAULT connection_type "openvz"
LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"}
iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER"
diff --git a/stackrc b/stackrc
index 789fc82..91f4e2b 100644
--- a/stackrc
+++ b/stackrc
@@ -29,6 +29,13 @@
# Set the default Nova APIs to enable
NOVA_ENABLED_APIS=ec2,osapi_compute,metadata
+# Whether to use 'dev mode' for screen windows. Dev mode works by
+# stuffing text into the screen windows so that a developer can use
+# ctrl-c, up-arrow, enter to restart the service. Starting services
+# this way is slightly unreliable, and a bit slower, so this can
+# be disabled for automated testing by setting this value to false.
+SCREEN_DEV=True
+
# Repositories
# ------------
diff --git a/tools/install_prereqs.sh b/tools/install_prereqs.sh
new file mode 100755
index 0000000..4d151db
--- /dev/null
+++ b/tools/install_prereqs.sh
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+
+# **install_prereqs.sh**
+
+# Install system package prerequisites
+#
+# install_prereqs.sh [-f]
+#
+# -f Force an install run now
+
+if [[ -n "$1" && "$1" = "-f" ]]; then
+ FORCE_PREREQ=1
+fi
+
+# If TOP_DIR is set we're being sourced rather than running stand-alone
+# or in a sub-shell
+if [[ -z "$TOP_DIR" ]]; then
+ # Keep track of the devstack directory
+ TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
+
+ # Import common functions
+ source $TOP_DIR/functions
+
+ # Determine what system we are running on. This provides ``os_VENDOR``,
+ # ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
+ # and ``DISTRO``
+ GetDistro
+
+ # Needed to get ``ENABLED_SERVICES``
+ source $TOP_DIR/stackrc
+
+ # Prereq dirs are here
+ FILES=$TOP_DIR/files
+fi
+
+# Minimum wait time
+PREREQ_RERUN_MARKER=${PREREQ_RERUN_MARKER:-$TOP_DIR/.prereqs}
+PREREQ_RERUN_HOURS=${PREREQ_RERUN_HOURS:-2}
+PREREQ_RERUN_SECONDS=$((60*60*$PREREQ_RERUN_HOURS))
+
+NOW=$(date "+%s")
+LAST_RUN=$(head -1 $PREREQ_RERUN_MARKER 2>/dev/null || echo "0")
+DELTA=$(($NOW - $LAST_RUN))
+if [[ $DELTA -lt $PREREQ_RERUN_SECONDS && -z "$FORCE_PREREQ" ]]; then
+ echo "Re-run time has not expired ($(($PREREQ_RERUN_SECONDS - $DELTA)) seconds remaining); exiting..."
+ return 0
+fi
+
+# Make sure the proxy config is visible to sub-processes
+export_proxy_variables
+
+
+# Install Packages
+# ================
+
+# Install package requirements
+if is_ubuntu; then
+ install_package $(get_packages $FILES/apts)
+elif is_fedora; then
+ install_package $(get_packages $FILES/rpms)
+elif is_suse; then
+ install_package $(get_packages $FILES/rpms-suse)
+else
+ exit_distro_not_supported "list of packages"
+fi
+
+if [[ -n "$SYSLOG" && "$SYSLOG" != "False" ]]; then
+ if is_ubuntu || is_fedora; then
+ install_package rsyslog-relp
+ elif is_suse; then
+ install_package rsyslog-module-relp
+ else
+ exit_distro_not_supported "rsyslog-relp installation"
+ fi
+fi
+
+
+# Mark end of run
+# ---------------
+
+date "+%s" >$PREREQ_RERUN_MARKER
+date >>$PREREQ_RERUN_MARKER
diff --git a/tools/xen/build_xva.sh b/tools/xen/build_xva.sh
index 0e874cf..b0fd003 100755
--- a/tools/xen/build_xva.sh
+++ b/tools/xen/build_xva.sh
@@ -44,12 +44,9 @@
exit 1
fi
-# Configure dns (use same dns as dom0)
-# but only when not precise
-if [ "$UBUNTU_INST_RELEASE" != "precise" ]; then
- cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
-elif [ "$MGT_IP" != "dhcp" ] && [ "$PUB_IP" != "dhcp" ]; then
- echo "Configuration without DHCP not supported on Precise"
+# Only support DHCP for now - don't support how different versions of Ubuntu handle resolv.conf
+if [ "$MGT_IP" != "dhcp" ] && [ "$PUB_IP" != "dhcp" ]; then
+ echo "Configuration without DHCP not supported"
exit 1
fi