LGTM, thanks On Fri, Oct 24, 2014, 1:32 PM 'Petr Pudlak' via ganeti-devel < [email protected]> wrote:
> The script does the bare minimum required to set up the interface during > instance creation. The rest of the process is carried out by the ifup-os > script. > > Signed-off-by: Petr Pudlak <[email protected]> > --- > .gitignore | 1 + > Makefile.am | 7 +++++ > lib/pathutils.py | 2 ++ > tools/vif-ganeti-metad.in | 70 ++++++++++++++++++++++++++++++ > +++++++++++++++++ > 4 files changed, 80 insertions(+) > create mode 100644 tools/vif-ganeti-metad.in > > diff --git a/.gitignore b/.gitignore > index bbc5402..a84642f 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -123,6 +123,7 @@ > /tools/users-setup > /tools/vcluster-setup > /tools/vif-ganeti > +/tools/vif-ganeti-metad > /tools/net-common > /tools/node-cleanup > /tools/node-daemon-setup > diff --git a/Makefile.am b/Makefile.am > index b95f668..9b4367d 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -295,6 +295,7 @@ CLEANFILES = \ > tools/kvm-ifup-os \ > tools/xen-ifup-os \ > tools/vif-ganeti \ > + tools/vif-ganeti-metad \ > tools/net-common \ > tools/users-setup \ > tools/vcluster-setup \ > @@ -1310,6 +1311,7 @@ myexeclib_SCRIPTS = \ > tools/kvm-ifup-os \ > tools/xen-ifup-os \ > tools/vif-ganeti \ > + tools/vif-ganeti-metad \ > tools/net-common \ > $(HS_MYEXECLIB_PROGS) > > @@ -1349,6 +1351,7 @@ EXTRA_DIST = \ > tools/kvm-ifup.in \ > tools/ifup-os.in \ > tools/vif-ganeti.in \ > + tools/vif-ganeti-metad.in \ > tools/net-common.in \ > tools/vcluster-setup.in \ > $(docinput) \ > @@ -1863,6 +1866,10 @@ tools/vif-ganeti: tools/vif-ganeti.in > $(REPLACE_VARS_SED) > sed -f $(REPLACE_VARS_SED) < $< > $@ > chmod +x $@ > > +tools/vif-ganeti-metad: tools/vif-ganeti-metad.in $(REPLACE_VARS_SED) > + sed -f $(REPLACE_VARS_SED) < $< > $@ > + chmod +x $@ > + > tools/net-common: tools/net-common.in $(REPLACE_VARS_SED) > sed -f $(REPLACE_VARS_SED) < $< > $@ > chmod +x $@ > diff --git a/lib/pathutils.py b/lib/pathutils.py > index a5a9a0b..0e02142 100644 > --- a/lib/pathutils.py > +++ b/lib/pathutils.py > @@ -69,6 +69,8 @@ XEN_CONSOLE_WRAPPER = _constants.PKGLIBDIR + > "/tools/xen-console-wrapper" > CFGUPGRADE = _constants.PKGLIBDIR + "/tools/cfgupgrade" > POST_UPGRADE = _constants.PKGLIBDIR + "/tools/post-upgrade" > ENSURE_DIRS = _constants.PKGLIBDIR + "/ensure-dirs" > +# Script to configure the metadata virtual network interface with Xen > +XEN_VIF_METAD_SETUP = _constants.PKGLIBDIR + "/vif-ganeti-metad" > ETC_HOSTS = vcluster.ETC_HOSTS > > # Top-level paths > diff --git a/tools/vif-ganeti-metad.in b/tools/vif-ganeti-metad.in > new file mode 100644 > index 0000000..092b6a0 > --- /dev/null > +++ b/tools/vif-ganeti-metad.in > @@ -0,0 +1,70 @@ > +#!/bin/sh > +# > + > +# Copyright (C) 2014 Google Inc. > +# All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions are > +# met: > +# > +# 1. Redistributions of source code must retain the above copyright > notice, > +# this list of conditions and the following disclaimer. > +# > +# 2. Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in the > +# documentation and/or other materials provided with the distribution. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED > +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > PARTICULAR > +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR > +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, > +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, > +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR > +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF > +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING > +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS > +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > +# This Xen vif setup script does the bare minimum required to set up the > +# interface during instance creation. The rest of the process is carried > out by > +# the ifup-os script. > + > +set -e > + > +xenstore_read() { > + if ! xenstore-read "$XENBUS_PATH/$1" 2>/dev/null ; then > + echo "$2" > + fi > +} > + > +xenstore_write() { > + xenstore-write "$XENBUS_PATH/$1" "$2" > +} > + > +log() { > + local level="$1" ; shift > + logger -p daemon."${level}" -t "$0" -- "$@" > +} > + > +: "${XENBUS_PATH:?}" "${vif:?}" > + > +vifname=$(xenstore_read "vifname" "") > +if [ -n "$vifname" ] ; then > + if [ "$1" = "online" ] && ! ip link show "$vifname" >/dev/null >&2 ; > then > + log debug "Renaming interface ${vif} to ${vifname}" > + ip link set "$vif" name "$vifname" > + fi > + vif="$vifname" > +fi > + > +case "$1" in > + online) > + # Tell Xen we're connected > + xenstore_write "hotplug-status" "connected" > + ;; > + offline) > + ifconfig "$vif" down || true > + ;; > +esac > -- > 2.1.0.rc2.206.gedb03e5 > >
