Merge "install ebtables locking workaround"
This commit is contained in:
commit
0b6a40bcab
23
files/ebtables.workaround
Normal file
23
files/ebtables.workaround
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# This is a terrible, terrible, truly terrible work around for
|
||||||
|
# environments that have libvirt < 1.2.11. ebtables requires that you
|
||||||
|
# specifically tell it you would like to not race and get punched in
|
||||||
|
# the face when 2 run at the same time with a --concurrent flag.
|
||||||
|
|
||||||
|
flock -w 300 /var/lock/ebtables.nova /sbin/ebtables.real $@
|
@ -31,6 +31,11 @@ function install_libvirt {
|
|||||||
fi
|
fi
|
||||||
install_package libvirt-bin libvirt-dev
|
install_package libvirt-bin libvirt-dev
|
||||||
pip_install_gr libvirt-python
|
pip_install_gr libvirt-python
|
||||||
|
if [[ "$EBTABLES_RACE_FIX" == "True" ]]; then
|
||||||
|
# Work around for bug #1501558. We can remove this once we
|
||||||
|
# get to a version of Ubuntu that has new enough libvirt.
|
||||||
|
TOP_DIR=$TOP_DIR $TOP_DIR/tools/install_ebtables_workaround.sh
|
||||||
|
fi
|
||||||
#pip_install_gr <there-si-no-guestfs-in-pypi>
|
#pip_install_gr <there-si-no-guestfs-in-pypi>
|
||||||
elif is_fedora || is_suse; then
|
elif is_fedora || is_suse; then
|
||||||
install_package kvm
|
install_package kvm
|
||||||
|
10
stackrc
10
stackrc
@ -766,6 +766,16 @@ GIT_DEPTH=${GIT_DEPTH:-0}
|
|||||||
# Use native SSL for servers in ``SSL_ENABLED_SERVICES``
|
# Use native SSL for servers in ``SSL_ENABLED_SERVICES``
|
||||||
USE_SSL=$(trueorfalse False USE_SSL)
|
USE_SSL=$(trueorfalse False USE_SSL)
|
||||||
|
|
||||||
|
# ebtables is inherently racey. If you run it by two or more processes
|
||||||
|
# simultaneously it will collide, badly, in the kernel and produce
|
||||||
|
# failures or corruption of ebtables. The only way around it is for
|
||||||
|
# all tools running ebtables to only ever do so with the --concurrent
|
||||||
|
# flag. This requires libvirt >= 1.2.11.
|
||||||
|
#
|
||||||
|
# If you don't have this then the following work around will replace
|
||||||
|
# ebtables with a wrapper script so that it is safe to run without
|
||||||
|
# that flag.
|
||||||
|
EBTABLES_RACE_FIX=$(trueorfalse False EBTABLES_RACE_FIX)
|
||||||
|
|
||||||
# Following entries need to be last items in file
|
# Following entries need to be last items in file
|
||||||
|
|
||||||
|
31
tools/install_ebtables_workaround.sh
Executable file
31
tools/install_ebtables_workaround.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash -eu
|
||||||
|
#
|
||||||
|
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# This replaces the ebtables on your system with a wrapper script that
|
||||||
|
# does implicit locking. This is needed if libvirt < 1.2.11 on your platform.
|
||||||
|
|
||||||
|
EBTABLES=/sbin/ebtables
|
||||||
|
EBTABLESREAL=/sbin/ebtables.real
|
||||||
|
FILES=$TOP_DIR/files
|
||||||
|
|
||||||
|
if [[ -f "$EBTABLES" ]]; then
|
||||||
|
if file $EBTABLES | grep ELF; then
|
||||||
|
sudo mv $EBTABLES $EBTABLESREAL
|
||||||
|
sudo install -m 0755 $FILES/ebtables.workaround $EBTABLES
|
||||||
|
echo "Replaced ebtables with locking workaround"
|
||||||
|
fi
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user