2
0
mirror of https://github.com/openvswitch/ovs synced 2025-09-06 17:26:27 +00:00

xenserver: Make RPM install work again.

The RPM install was generating a database cache in Python pickle format in
/etc/ovs-vswitchd.conf, but interface-reconfigure was looking for it in
XML format in /var/lib/openvswitch/dbcache.  This fixes the problem, by
adding an init-dbcache command to interface-reconfigure and then using that
at RPM install time.

This moves the database cache creation from %pre to %post.  This is
necessary so that interface-reconfigure is available from the install
script.
This commit is contained in:
Ben Pfaff
2009-09-11 14:41:39 -07:00
parent 0d46ae039b
commit ac9634f0af
2 changed files with 12 additions and 31 deletions

View File

@@ -8,6 +8,7 @@
%(command-name)s --session <SESSION-REF> --pif <PIF-REF> [up|down|rewrite]
%(command-name)s --force <BRIDGE> [up|down|rewrite <CONFIG>]
%(command-name)s --force all down
%(command-name)s init-dbcache
where,
<CONFIG> = --device=<INTERFACE> --mode=dhcp
@@ -1441,6 +1442,9 @@ def main(argv=None):
if len(force_rewrite_config) and not (force_interface and action == "rewrite"):
raise Usage("\"--force rewrite\" needed for --device, --mode, --ip, --netmask, and --gateway")
if action == "init-dbcache" and arglist:
raise Usage("\"init-dbcache\" action does not accept any options")
global db
if force_interface:
log("Force interface %s %s" % (force_interface, action))
@@ -1458,6 +1462,8 @@ def main(argv=None):
action_down(pif)
else:
raise Usage("Unknown action %s" % action)
elif action == "init-dbcache":
DatabaseCache().save(dbcache_file)
else:
db = DatabaseCache(session_ref=session)

View File

@@ -106,10 +106,12 @@ rm -rf \
$RPM_BUILD_ROOT/root/vswitch/share/man/man8/ovs-pki.8 \
$RPM_BUILD_ROOT/root/vswitch/share/openvswitch
install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
%clean
rm -rf $RPM_BUILD_ROOT
%pre
%post
if [ ! -f /etc/xensource-inventory ]; then
printf "XenSource inventory not present in /etc/xensource-inventory"
exit 1
@@ -146,7 +148,7 @@ EOF
fi
fi
if test ! -e /etc/ovs-vswitch.dbcache; then
if test ! -e /var/lib/openvswitch/dbcache; then
if test "$1" = 1; then
printf "Creating xapi database cache... "
else
@@ -155,34 +157,7 @@ if test ! -e /etc/ovs-vswitch.dbcache; then
printf "Re-creating xapi database cache... "
fi
source /etc/xensource-inventory
if python - "$INSTALLATION_UUID" <<EOF
import XenAPI
import pickle
import sys
session = XenAPI.xapi_local()
try:
session.xenapi.login_with_password("root", "")
vlans = session.xenapi.VLAN.get_all_records()
bonds = session.xenapi.Bond.get_all_records()
pifs = session.xenapi.PIF.get_all_records()
networks = session.xenapi.network.get_all_records()
host = session.xenapi.host.get_by_uuid(sys.argv[1])
finally:
session.xenapi.session.logout()
dbcache_file = "/etc/ovs-vswitch.dbcache"
f = open(dbcache_file, 'w')
pickle.dump({'vlans': vlans,
'bonds': bonds,
'pifs': pifs,
'networks': networks}, f)
pickle.dump({'host': host}, f)
f.close()
EOF
then
if /root/vswitch/scripts/interface-reconfigure init-dbcache; then
printf "done.\n"
else
printf "FAILED\n"
@@ -193,7 +168,6 @@ EOF
fi
fi
%post
if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
cat >>/etc/sysctl.conf <<EOF
# This works around an issue in xhad, which binds to a particular
@@ -357,3 +331,4 @@ fi
/root/vswitch/share/man/man8/ovs-dpctl.8
/root/vswitch/share/man/man8/ovs-ofctl.8
/root/vswitch/share/man/man8/ovs-vswitchd.8
/var/lib/openvswitch