From: Justin Pettit <jpettit@nicira.com>
Date: Sun, 6 Feb 2011 09:02:23 +0000 (-0800)
Subject: debian: Backup OVSDB db file before converting it.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00a42f740f860878540e2e1bbb5bd90e2f2ea6ca;p=openvswitch

debian: Backup OVSDB db file before converting it.

The XenServer init script makes a backup before converting the OVSDB
database file.  This may be useful for debugging, so do the same on
Debian.  Also, store the schema version in the database.
---

diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
index a33636d9..96eb00cf 100755
--- a/debian/openvswitch-switch.init
+++ b/debian/openvswitch-switch.init
@@ -29,7 +29,7 @@ DODTIME=1                   # Time to wait for the server to die, in seconds
                             # let some servers to die gracefully and
                             # 'restart' will not work
 
-# Include ovs-openflowd defaults if available
+# Include openvswitch-switch defaults if available
 unset OVSDB_SERVER_OPTS
 unset OVS_VSWITCHD_OPTS
 unset CORE_LIMIT
@@ -195,6 +195,10 @@ unload_modules() {
 
 case "$1" in
     start)
+        conf_file=/etc/openvswitch/conf.db
+        schema_file=/usr/share/openvswitch/vswitch.ovsschema
+        schema_ver=`ovsdb-tool schema-version "$schema_file"`
+
         load_module openvswitch_mod
 
         if test -n "$CORE_LIMIT"; then
@@ -202,16 +206,18 @@ case "$1" in
         fi
 
         # Create an empty configuration database if it doesn't exist.
-        if test ! -e /etc/openvswitch/conf.db; then
+        if test ! -e $conf_file; then
             # Create configuration database.
-            ovsdb-tool -vANY:console:emer \
-                create /etc/openvswitch/conf.db \
-                /usr/share/openvswitch/vswitch.ovsschema
-        elif ! running ovsdb-server; then
+            ovsdb-tool -vANY:console:emer create $conf_file $schema_file
+        else
+            # If schema version changed, then back up the old version.
+            old_ver=`ovsdb-tool db-version "$conf_file"`
+            if test "X$old_ver" != "X$schema_ver"; then
+                cp "$conf_file" "$conf_file.backup$old_ver"
+            fi
+            
             # Upgrade or downgrade schema and compact database.
-            ovsdb-tool -vANY:console:emer \
-                convert /etc/openvswitch/conf.db \
-                /usr/share/openvswitch/vswitch.ovsschema
+            ovsdb-tool -vANY:console:emer convert $conf_file $schema_file
         fi
 
         if test "$ENABLE_MONITOR" = y; then
@@ -234,7 +240,7 @@ case "$1" in
 
         # Start ovsdb-server.
         set --
-        set -- "$@" /etc/openvswitch/conf.db
+        set -- "$@" $conf_file
         set -- "$@" --verbose=ANY:console:emer --verbose=ANY:syslog:err
         set -- "$@" --log-file=/var/log/openvswitch/ovsdb-server.log
         set -- "$@" --detach --no-chdir --pidfile $monitor_opt
@@ -256,7 +262,7 @@ case "$1" in
             echo " ERROR."
         fi
 
-        ovs-vsctl --no-wait --timeout=5 init
+        ovs-vsctl --no-wait --timeout=5 init -- set Open_vSwitch . db-version="$schema_ver"
 
         # Start ovs-vswitchd.
         set --