Merge "Enable optional Python 3 support"
diff --git a/functions-common b/functions-common
index d68ae77..d4099ff 100644
--- a/functions-common
+++ b/functions-common
@@ -978,6 +978,34 @@
echo "$pkg_dir"
}
+# Wrapper for ``apt-get update`` to try multiple times on the update
+# to address bad package mirrors (which happen all the time).
+function apt_get_update {
+ # only do this once per run
+ if [[ "$REPOS_UPDATED" == "True" && "$RETRY_UPDATE" != "True" ]]; then
+ return
+ fi
+
+ # bail if we are offline
+ [[ "$OFFLINE" = "True" ]] && return
+
+ local sudo="sudo"
+ [[ "$(id -u)" = "0" ]] && sudo="env"
+
+ # time all the apt operations
+ time_start "apt-get-update"
+
+ local proxies="http_proxy=${http_proxy:-} https_proxy=${https_proxy:-} no_proxy=${no_proxy:-} "
+ local update_cmd="$sudo $proxies apt-get update"
+ if ! timeout 300 sh -c "while ! $update_cmd; do sleep 30; done"; then
+ die $LINENO "Failed to update apt repos, we're dead now"
+ fi
+
+ REPOS_UPDATED=True
+ # stop the clock
+ time_stop "apt-get-update"
+}
+
# Wrapper for ``apt-get`` to set cache and proxy environment variables
# Uses globals ``OFFLINE``, ``*_proxy``
# apt_get operation package [package ...]
@@ -1158,16 +1186,7 @@
fi
if is_ubuntu; then
- local xtrace
- xtrace=$(set +o | grep xtrace)
- set +o xtrace
- if [[ "$REPOS_UPDATED" != "True" || "$RETRY_UPDATE" = "True" ]]; then
- # if there are transient errors pulling the updates, that's fine.
- # It may be secondary repositories that we don't really care about.
- apt_get update || /bin/true
- REPOS_UPDATED=True
- fi
- $xtrace
+ apt_get_update
fi
}
diff --git a/inc/rootwrap b/inc/rootwrap
index 63ab59a..2a6e4b6 100644
--- a/inc/rootwrap
+++ b/inc/rootwrap
@@ -22,14 +22,14 @@
local line
# This is pretty simplistic for now - assume only the first line is used
- if [[ -r SUDO_SECURE_PATH_FILE ]]; then
+ if [[ -r $SUDO_SECURE_PATH_FILE ]]; then
line=$(head -1 $SUDO_SECURE_PATH_FILE)
else
line="Defaults:$STACK_USER secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin"
fi
# Only add ``dir`` if it is not already present
- if [[ $line =~ $dir ]]; then
+ if [[ ! $line =~ $dir ]]; then
echo "${line}:$dir" | sudo tee $SUDO_SECURE_PATH_FILE
sudo chmod 400 $SUDO_SECURE_PATH_FILE
sudo chown root:root $SUDO_SECURE_PATH_FILE
diff --git a/lib/ironic b/lib/ironic
index 27b0c8d..2fb2004 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -365,6 +365,9 @@
iniset $IRONIC_CONF_FILE pxe pxe_append_params "$pxe_params"
fi
+ # Set these options for scenarios in which the agent fetches the image
+ # directly from glance, and don't set them where the image is pushed
+ # over iSCSI.
if is_deployed_by_agent; then
if [[ "$SWIFT_ENABLE_TEMPURLS" == "True" ]] ; then
iniset $IRONIC_CONF_FILE glance swift_temp_url_key $SWIFT_TEMPURL_KEY
@@ -379,9 +382,13 @@
iniset $IRONIC_CONF_FILE glance swift_container glance
iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600
iniset $IRONIC_CONF_FILE agent heartbeat_timeout 30
- iniset $IRONIC_CONF_FILE agent agent_erase_devices_priority 0
fi
+ # FIXME: this really needs to be tested in the gate.
+ # For now, any test using the agent ramdisk should skip cleaning
+ # because it is too slow to run in the gate.
+ iniset $IRONIC_CONF_FILE agent agent_erase_devices_priority 0
+
if [[ "$IRONIC_IPXE_ENABLED" == "True" ]] ; then
local pxebin
pxebin=`basename $IRONIC_PXE_BOOT_IMAGE`
diff --git a/lib/neutron-legacy b/lib/neutron-legacy
index d00630a..caf89e3 100644
--- a/lib/neutron-legacy
+++ b/lib/neutron-legacy
@@ -550,9 +550,11 @@
die_if_not_set $LINENO SUBNET_V6_ID "Failure creating SUBNET_V6_ID for $PROVIDER_SUBNET_NAME_V6 $TENANT_ID"
fi
- sudo ip link set $OVS_PHYSICAL_BRIDGE up
- sudo ip link set br-int up
- sudo ip link set $PUBLIC_INTERFACE up
+ if [[ $Q_AGENT == "openvswitch" ]]; then
+ sudo ip link set $OVS_PHYSICAL_BRIDGE up
+ sudo ip link set br-int up
+ sudo ip link set $PUBLIC_INTERFACE up
+ fi
else
NET_ID=$(neutron net-create --tenant-id $TENANT_ID "$PRIVATE_NETWORK_NAME" | grep ' id ' | get_field 2)
die_if_not_set $LINENO NET_ID "Failure creating NET_ID for $PRIVATE_NETWORK_NAME $TENANT_ID"
@@ -698,7 +700,7 @@
function start_neutron_l2_agent {
run_process q-agt "$AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
- if is_provider_network; then
+ if is_provider_network && [[ $Q_AGENT == "openvswitch" ]]; then
sudo ovs-vsctl --no-wait -- --may-exist add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
sudo ip link set $OVS_PHYSICAL_BRIDGE up
sudo ip link set br-int up
@@ -870,7 +872,10 @@
function _configure_neutron_common {
_create_neutron_conf_dir
- cp $NEUTRON_DIR/etc/neutron.conf $NEUTRON_CONF
+ # Uses oslo config generator to generate core sample configuration files
+ (cd $NEUTRON_DIR && exec ./tools/generate_config_file_samples.sh)
+
+ cp $NEUTRON_DIR/etc/neutron.conf.sample $NEUTRON_CONF
Q_POLICY_FILE=$NEUTRON_CONF_DIR/policy.json
cp $NEUTRON_DIR/etc/policy.json $Q_POLICY_FILE
@@ -895,7 +900,9 @@
Q_PLUGIN_CONF_FILE=$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME
# NOTE(hichihara): Some neutron vendor plugins were already decomposed and
# there is no config file in Neutron tree. They should prepare the file in each plugin.
- if [ -f $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]; then
+ if [ -f "$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE.sample" ]; then
+ cp "$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE.sample" /$Q_PLUGIN_CONF_FILE
+ elif [ -f $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]; then
cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE
fi
@@ -903,6 +910,8 @@
iniset $NEUTRON_CONF DEFAULT state_path $DATA_DIR/neutron
iniset $NEUTRON_CONF DEFAULT use_syslog $SYSLOG
iniset $NEUTRON_CONF DEFAULT bind_host $Q_LISTEN_ADDRESS
+ iniset $NEUTRON_CONF oslo_concurrency lock_path $DATA_DIR/neutron/lock
+
# If addition config files are set, make sure their path name is set as well
if [[ ${#Q_PLUGIN_EXTRA_CONF_FILES[@]} > 0 && $Q_PLUGIN_EXTRA_CONF_PATH == '' ]]; then
die $LINENO "Neutron additional plugin config not set.. exiting"
@@ -959,7 +968,7 @@
return
fi
- cp $NEUTRON_DIR/etc/l3_agent.ini $NEUTRON_TEST_CONFIG_FILE
+ cp $NEUTRON_DIR/etc/l3_agent.ini.sample $NEUTRON_TEST_CONFIG_FILE
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT verbose False
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT debug False
@@ -975,7 +984,7 @@
function _configure_neutron_dhcp_agent {
- cp $NEUTRON_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
+ cp $NEUTRON_DIR/etc/dhcp_agent.ini.sample $Q_DHCP_CONF_FILE
iniset $Q_DHCP_CONF_FILE DEFAULT verbose True
iniset $Q_DHCP_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
@@ -1007,7 +1016,7 @@
neutron_vpn_configure_agent
fi
- cp $NEUTRON_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
+ cp $NEUTRON_DIR/etc/l3_agent.ini.sample $Q_L3_CONF_FILE
iniset $Q_L3_CONF_FILE DEFAULT verbose True
iniset $Q_L3_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
@@ -1028,7 +1037,7 @@
}
function _configure_neutron_metadata_agent {
- cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
+ cp $NEUTRON_DIR/etc/metadata_agent.ini.sample $Q_META_CONF_FILE
iniset $Q_META_CONF_FILE DEFAULT verbose True
iniset $Q_META_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
diff --git a/lib/neutron_plugins/services/firewall b/lib/neutron_plugins/services/firewall
index 1d81a21..2b7f32d 100644
--- a/lib/neutron_plugins/services/firewall
+++ b/lib/neutron_plugins/services/firewall
@@ -14,8 +14,11 @@
}
function neutron_fwaas_configure_driver {
+ # Uses oslo config generator to generate FWaaS sample configuration files
+ (cd $NEUTRON_FWAAS_DIR && exec ./tools/generate_config_file_samples.sh)
+
FWAAS_DRIVER_CONF_FILENAME=/etc/neutron/fwaas_driver.ini
- cp $NEUTRON_FWAAS_DIR/etc/fwaas_driver.ini $FWAAS_DRIVER_CONF_FILENAME
+ cp $NEUTRON_FWAAS_DIR/etc/fwaas_driver.ini.sample $FWAAS_DRIVER_CONF_FILENAME
iniset_multiline $FWAAS_DRIVER_CONF_FILENAME fwaas enabled True
iniset_multiline $FWAAS_DRIVER_CONF_FILENAME fwaas driver "neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver"
diff --git a/lib/neutron_plugins/services/metering b/lib/neutron_plugins/services/metering
index 5fd2fdc..5b32468 100644
--- a/lib/neutron_plugins/services/metering
+++ b/lib/neutron_plugins/services/metering
@@ -21,7 +21,7 @@
METERING_AGENT_CONF_FILENAME="$METERING_AGENT_CONF_PATH/metering_agent.ini"
- cp $NEUTRON_DIR/etc/metering_agent.ini $METERING_AGENT_CONF_FILENAME
+ cp $NEUTRON_DIR/etc/metering_agent.ini.sample $METERING_AGENT_CONF_FILENAME
}
function neutron_metering_stop {