diff mbox

[ovs-dev,2/2] ovs-bugtool: Add OVN/VTEP db and schema files

Message ID 1452902727-80120-2-git-send-email-u9012063@gmail.com
State Changes Requested
Headers show

Commit Message

William Tu Jan. 16, 2016, 12:05 a.m. UTC
Add ovn-nb.{db,ovsschema}, ovn-sb.{db,ovsschema}, and vtep.{db,ovsschema}

Signed-off-by: William Tu <u9012063@gmail.com>
---
 utilities/bugtool/ovs-bugtool.in | 63 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Ben Pfaff Jan. 19, 2016, 5:08 p.m. UTC | #1
On Fri, Jan 15, 2016 at 04:05:27PM -0800, William Tu wrote:
> Add ovn-nb.{db,ovsschema}, ovn-sb.{db,ovsschema}, and vtep.{db,ovsschema}
> 
> Signed-off-by: William Tu <u9012063@gmail.com>

Can we do this with a plugin, so that non-OVN installations don't have
this code?
diff mbox

Patch

diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
index aa4b567..331d8a6 100755
--- a/utilities/bugtool/ovs-bugtool.in
+++ b/utilities/bugtool/ovs-bugtool.in
@@ -113,6 +113,15 @@  OPENVSWITCH_DEFAULT_SWITCH = '/etc/default/openvswitch-switch' # Debian
 OPENVSWITCH_SYSCONFIG_SWITCH = '/etc/sysconfig/openvswitch'    # RHEL
 OPENVSWITCH_CONF_DB = '@DBDIR@/conf.db'
 OPENVSWITCH_COMPACT_DB = '@DBDIR@/bugtool-compact-conf.db'
+OPENVSWITCH_OVNNB_DB = '@DBDIR@/ovnnb.db'
+OPENVSWITCH_OVNNB_SCHEMA = '@abs_top_srcdir@/ovn/ovn-nb.ovsschema'
+OPENVSWITCH_COMPACT_OVNNB_DB = '@DBDIR@/bugtool-compact-ovnnb.db'
+OPENVSWITCH_OVNSB_DB = '@DBDIR@/ovnsb.db'
+OPENVSWITCH_OVNSB_SCHEMA = '@abs_top_srcdir@/ovn/ovn-sb.ovsschema'
+OPENVSWITCH_COMPACT_OVNSB_DB = '@DBDIR@/bugtool-compact-ovnsb.db'
+OPENVSWITCH_VTEP_DB = '@DBDIR@/vtep.db'
+OPENVSWITCH_VTEP_SCHEMA = '@abs_top_srcdir@/vtep/vtep.ovsschema'
+OPENVSWITCH_COMPACT_VTEP_DB = '@DBDIR@/bugtool-compact-vtep.db'
 OPENVSWITCH_VSWITCHD_PID = '@RUNDIR@/ovs-vswitchd.pid'
 VAR_LOG_DIR = '/var/log/'
 VAR_LOG_CORE_DIR = '/var/log/core'
@@ -611,6 +620,8 @@  exclude those logs from the archive.
     cmd_output(CAP_NETWORK_INFO, [TC, '-s', 'qdisc'])
     file_output(CAP_NETWORK_INFO, [PROC_NET_SOFTNET_STAT])
 
+    collect_ovnschema()
+    collect_ovndb()
     collect_ovsdb()
     if os.path.exists(OPENVSWITCH_VSWITCHD_PID):
         cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'show', '-s'])
@@ -721,6 +732,7 @@  exclude those logs from the archive.
                                                      cap_sizes[c])
 
     cleanup_ovsdb()
+    cleanup_ovndb()
     return 0
 
 def dump_scsi_hosts(cap):
@@ -781,6 +793,57 @@  def dp_list():
         return output.getvalue().splitlines()
     return []
 
+def collect_ovnschema():
+    ovndbs_schema = [OPENVSWITCH_OVNNB_SCHEMA, OPENVSWITCH_OVNSB_SCHEMA, OPENVSWITCH_VTEP_SCHEMA]
+    for schema in ovndbs_schema:
+        if not os.path.isfile(schema):
+            continue
+        try:
+            file_output(CAP_NETWORK_STATUS, [schema])
+        except OSError, e:
+            return
+
+def collect_ovndb():
+    ovndbs = [OPENVSWITCH_OVNNB_DB, OPENVSWITCH_OVNSB_DB, OPENVSWITCH_VTEP_DB]
+    ovndbs_compact = [OPENVSWITCH_COMPACT_OVNNB_DB,
+                      OPENVSWITCH_COMPACT_OVNSB_DB, OPENVSWITCH_COMPACT_VTEP_DB]
+
+    max_size = 10*MB
+
+    for i in xrange(len(ovndbs)):
+        ovndb = ovndbs[i]
+        ovndb_compact = ovndbs_compact[i]
+
+        if not os.path.isfile(ovndb):
+            continue
+
+        try:
+            if os.path.getsize(ovndb) > max_size:
+                if os.path.isfile(ovndb_compact):
+                    os.unlink(ovndb_compact)
+
+                output = StringIO.StringIO()
+                max_time = 5
+                procs = [ProcOutput(['ovsdb-tool', 'compact',
+                                    ovndb, ovndb_compact],
+                                    max_time, output)]
+                run_procs([procs])
+                file_output(CAP_NETWORK_STATUS, [ovndb_compact])
+            else:
+                file_output(CAP_NETWORK_STATUS, [ovndb])
+        except OSError, e:
+            return
+
+def cleanup_ovndb():
+    ovndbs_compact = [OPENVSWITCH_COMPACT_OVNNB_DB,
+                      OPENVSWITCH_COMPACT_OVNSB_DB, OPENVSWITCH_COMPACT_VTEP_DB]
+    for ovndb_compact in ovndbs_compact:
+        try:
+            if os.path.isfile(ovndb_compact):
+                os.unlink(ovndb_compact)
+        except:
+            return
+
 def collect_ovsdb():
     if not os.path.isfile(OPENVSWITCH_CONF_DB):
         return