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:
@@ -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)
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user