From f973f2af2fd4452c8e182caf6a4346cf2a2a394e Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 27 Jul 2012 15:52:21 -0700 Subject: [PATCH] Make the location of the database separately configurable. The default is unchanged, /etc/openvswitch/conf.db. This makes it possible to transition each Open vSwitch packaging from /etc/openvswitch/conf.db to /var/lib/openvswitch/conf.db independently. Signed-off-by: Ben Pfaff --- Makefile.am | 1 + configure.ac | 1 + lib/automake.mk | 2 ++ lib/dirs.c.in | 9 ++++++++- lib/dirs.h | 3 ++- m4/openvswitch.m4 | 10 ++++++++++ ovsdb/ovsdb-server.1.in | 2 +- ovsdb/ovsdb-server.c | 2 +- ovsdb/ovsdb-tool.1.in | 2 +- ovsdb/ovsdb-tool.c | 2 +- python/automake.mk | 1 + python/ovs/dirs.py | 1 + tests/ofproto-macros.at | 3 ++- tests/ovs-monitor-ipsec.at | 1 + tests/ovs-xapi-sync.at | 1 + tests/unixctl-py.at | 2 ++ tests/vlog.at | 4 ++++ utilities/bugtool/ovs-bugtool.in | 4 ++-- utilities/bugtool/plugins/system-logs/openvswitch.xml | 3 ++- utilities/ovs-ctl.8 | 3 ++- utilities/ovs-ctl.in | 7 ++++--- utilities/ovs-lib.in | 2 ++ 22 files changed, 52 insertions(+), 14 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9cad47b72..1b148719f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -108,6 +108,7 @@ SUFFIXES += .in sed \ -e 's,[@]PKIDIR[@],$(PKIDIR),g' \ -e 's,[@]LOGDIR[@],$(LOGDIR),g' \ + -e 's,[@]DBDIR[@],$(DBDIR),g' \ -e 's,[@]PERL[@],$(PERL),g' \ -e 's,[@]PYTHON[@],$(PYTHON),g' \ -e 's,[@]RUNDIR[@],$(RUNDIR),g' \ diff --git a/configure.ac b/configure.ac index b18b25967..9bdffeadf 100644 --- a/configure.ac +++ b/configure.ac @@ -62,6 +62,7 @@ AC_CHECK_HEADERS([mntent.h sys/statvfs.h linux/types.h]) OVS_CHECK_PKIDIR OVS_CHECK_RUNDIR +OVS_CHECK_DBDIR OVS_CHECK_BACKTRACE OVS_CHECK_MALLOC_HOOKS OVS_CHECK_VALGRIND diff --git a/lib/automake.mk b/lib/automake.mk index ed7db7ce1..818051750 100644 --- a/lib/automake.mk +++ b/lib/automake.mk @@ -313,6 +313,7 @@ lib/dirs.c: lib/dirs.c.in Makefile -e 's,[@]srcdir[@],$(srcdir),g' \ -e 's,[@]LOGDIR[@],"$(LOGDIR)",g' \ -e 's,[@]RUNDIR[@],"$(RUNDIR)",g' \ + -e 's,[@]DBDIR[@],"$(DBDIR)",g' \ -e 's,[@]bindir[@],"$(bindir)",g' \ -e 's,[@]sysconfdir[@],"$(sysconfdir)",g' \ -e 's,[@]pkgdatadir[@],"$(pkgdatadir)",g') \ @@ -338,6 +339,7 @@ lib-install-data-local: $(MKDIR_P) $(DESTDIR)$(RUNDIR) $(MKDIR_P) $(DESTDIR)$(PKIDIR) $(MKDIR_P) $(DESTDIR)$(LOGDIR) + $(MKDIR_P) $(DESTDIR)$(DBDIR) if !USE_LINKER_SECTIONS # All distributed sources, with names adjust properly for referencing diff --git a/lib/dirs.c.in b/lib/dirs.c.in index a5d9f317b..2b998b9ff 100644 --- a/lib/dirs.c.in +++ b/lib/dirs.c.in @@ -1,6 +1,6 @@ #line 2 "@srcdir@/lib/dirs.c.in" /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,6 +65,13 @@ ovs_logdir(void) return get_dir(&d); } +const char * +ovs_dbdir(void) +{ + static struct directory d = { NULL, @DBDIR@, "OVS_DBDIR" }; + return get_dir(&d); +} + const char * ovs_bindir(void) { diff --git a/lib/dirs.h b/lib/dirs.h index 6b4d1ceed..811a51fce 100644 --- a/lib/dirs.h +++ b/lib/dirs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ const char *ovs_sysconfdir(void); /* /usr/local/etc */ const char *ovs_pkgdatadir(void); /* /usr/local/share/openvswitch */ const char *ovs_rundir(void); /* /usr/local/var/run/openvswitch */ const char *ovs_logdir(void); /* /usr/local/var/log/openvswitch */ +const char *ovs_dbdir(void); /* /usr/local/etc/openvswitch */ const char *ovs_bindir(void); /* /usr/local/bin */ #endif /* dirs.h */ diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index eca6010f5..939f29617 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -132,6 +132,16 @@ AC_DEFUN([OVS_CHECK_LOGDIR], [LOGDIR='${localstatedir}/log/${PACKAGE}']) AC_SUBST([LOGDIR])]) +dnl Checks for the directory in which to store the Open vSwitch database. +AC_DEFUN([OVS_CHECK_DBDIR], + [AC_ARG_WITH( + [dbdir], + AC_HELP_STRING([--with-dbdir=DIR], + [directory used for conf.db [[SYSCONFDIR/PACKAGE]]]), + [DBDIR=$withval], + [DBDIR='${sysconfdir}/${PACKAGE}']) + AC_SUBST([DBDIR])]) + dnl Defines HAVE_BACKTRACE if backtrace() is declared in dnl and exists in libc. AC_DEFUN([OVS_CHECK_BACKTRACE], diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in index 4236f8ff2..1f5be03a8 100644 --- a/ovsdb/ovsdb-server.1.in +++ b/ovsdb/ovsdb-server.1.in @@ -26,7 +26,7 @@ vSwitch database (OVSDB). It supports JSON-RPC client connections over active or passive TCP/IP or Unix domain sockets. .PP The OVSDB file may be specified on the command line as \fIdatabase\fR. -The default is \fB@sysconfdir@/openvswitch/conf.db\fR. The database +The default is \fB@DBDIR@/conf.db\fR. The database file must already have been created and initialized using, for example, \fBovsdb\-tool create\fR. . diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index 139acc611..6c68e506b 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -808,7 +808,7 @@ parse_options(int argc, char *argv[], char **file_namep, switch (argc) { case 0: - *file_namep = xasprintf("%s/openvswitch/conf.db", ovs_sysconfdir()); + *file_namep = xasprintf("%s/conf.db", ovs_dbdir()); break; case 1: diff --git a/ovsdb/ovsdb-tool.1.in b/ovsdb/ovsdb-tool.1.in index c440e0d6b..9d3284457 100644 --- a/ovsdb/ovsdb-tool.1.in +++ b/ovsdb/ovsdb-tool.1.in @@ -148,7 +148,7 @@ record. .SS "Other Options" .so lib/common.man .SH "FILES" -The default \fIdb\fR is \fB@sysconfdir@/openvswitch/conf.db\fR. The +The default \fIdb\fR is \fB@DBDIR@/conf.db\fR. The default \fIschema\fR is \fB@pkgdatadir@/vswitch.ovsschema\fR. The \fBhelp\fR command also displays these defaults. .SH "SEE ALSO" diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c index f5412f36b..49594781d 100644 --- a/ovsdb/ovsdb-tool.c +++ b/ovsdb/ovsdb-tool.c @@ -140,7 +140,7 @@ default_db(void) { static char *db; if (!db) { - db = xasprintf("%s/conf.db", ovs_sysconfdir()); + db = xasprintf("%s/conf.db", ovs_dbdir()); } return db; } diff --git a/python/automake.mk b/python/automake.mk index b656f088f..3cd6e1e7f 100644 --- a/python/automake.mk +++ b/python/automake.mk @@ -47,6 +47,7 @@ ovs-install-data-local: echo 'PKGDATADIR = os.environ.get("OVS_PKGDATADIR", """$(pkgdatadir)""")' && \ echo 'RUNDIR = os.environ.get("OVS_RUNDIR", """@RUNDIR@""")' && \ echo 'LOGDIR = os.environ.get("OVS_LOGDIR", """@LOGDIR@""")' && \ + echo 'DBDIR = os.environ.get("OVS_DBDIR", """@DBDIR@""")' && \ echo 'BINDIR = os.environ.get("OVS_BINDIR", """$(bindir)""")') \ > python/ovs/dirs.py.tmp $(MKDIR_P) $(DESTDIR)$(pkgdatadir)/python/ovs diff --git a/python/ovs/dirs.py b/python/ovs/dirs.py index 5b006cc3e..a5717fcab 100644 --- a/python/ovs/dirs.py +++ b/python/ovs/dirs.py @@ -5,4 +5,5 @@ import os PKGDATADIR = os.environ.get("OVS_PKGDATADIR", "/usr/local/share/openvswitch") RUNDIR = os.environ.get("OVS_RUNDIR", "/var/run") LOGDIR = os.environ.get("OVS_LOGDIR", "/usr/local/var/log") +LOGDIR = os.environ.get("OVS_DBDIR", "/usr/local/etc/openvswitch") BINDIR = os.environ.get("OVS_BINDIR", "/usr/local/bin") diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at index 658f30e44..dc9bc8646 100644 --- a/tests/ofproto-macros.at +++ b/tests/ofproto-macros.at @@ -31,13 +31,14 @@ m4_define([TESTABLE_LOG], [-vPATTERN:ANY:'%c|%p|%m']) m4_define([OVS_VSWITCHD_START], [OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR + OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat ovsdb-server.pid ovs-vswitchd.pid`' 0 dnl Create database. mkdir openvswitch touch openvswitch/.conf.db.~lock~ - AT_CHECK([ovsdb-tool create openvswitch/conf.db $abs_top_srcdir/vswitchd/vswitch.ovsschema]) + AT_CHECK([ovsdb-tool create conf.db $abs_top_srcdir/vswitchd/vswitch.ovsschema]) dnl Start ovsdb-server. AT_CHECK([ovsdb-server --detach --pidfile --log-file --remote=punix:$OVS_RUNDIR/db.sock], [0], [], [stderr]) diff --git a/tests/ovs-monitor-ipsec.at b/tests/ovs-monitor-ipsec.at index e9d638929..1a8316129 100644 --- a/tests/ovs-monitor-ipsec.at +++ b/tests/ovs-monitor-ipsec.at @@ -4,6 +4,7 @@ AT_SETUP([ovs-monitor-ipsec]) AT_SKIP_IF([test $HAVE_PYTHON = no]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_PKGDATADIR=`pwd`; export OVS_PKGDATADIR cp "$top_srcdir/vswitchd/vswitch.ovsschema" . diff --git a/tests/ovs-xapi-sync.at b/tests/ovs-xapi-sync.at index 5fa61ec33..25acc7437 100644 --- a/tests/ovs-xapi-sync.at +++ b/tests/ovs-xapi-sync.at @@ -9,6 +9,7 @@ PYTHONPATH=`pwd`:$PYTHONPATH export PYTHONPATH OVS_RUNDIR=`pwd`; export OVS_RUNDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_PKGDATADIR=`pwd`; export OVS_PKGDATADIR cp "$top_srcdir/vswitchd/vswitch.ovsschema" . diff --git a/tests/unixctl-py.at b/tests/unixctl-py.at index 037460265..15fd86be8 100644 --- a/tests/unixctl-py.at +++ b/tests/unixctl-py.at @@ -73,6 +73,7 @@ AT_CLEANUP AT_SETUP([unixctl bad target - Python]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CHECK([PYAPPCTL -t bogus doit], [1], [], [stderr]) @@ -91,6 +92,7 @@ AT_SETUP([unixctl server - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat test-unixctl.py.pid`' 0 AT_CAPTURE_FILE([`pwd`/test-unixctl.py.log]) diff --git a/tests/vlog.at b/tests/vlog.at index 2bc7b5ce0..a8a947c1b 100644 --- a/tests/vlog.at +++ b/tests/vlog.at @@ -107,6 +107,7 @@ AT_SETUP([vlog - vlog/reopen - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat test-unixctl.py.pid`' 0 @@ -136,6 +137,7 @@ AT_SETUP([vlog - vlog/reopen without log file - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat test-unixctl.py.pid`' 0 @@ -158,6 +160,7 @@ AT_SKIP_IF([echo > /dev/full]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat test-unixctl.py.pid`' 0 @@ -184,6 +187,7 @@ AT_SETUP([vlog - vlog/set and vlog/list - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) OVS_RUNDIR=`pwd`; export OVS_RUNDIR OVS_LOGDIR=`pwd`; export OVS_LOGDIR +OVS_DBDIR=`pwd`; export OVS_DBDIR OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR trap 'kill `cat test-unixctl.py.pid`' 0 diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in index 7018665bf..2074e2380 100755 --- a/utilities/bugtool/ovs-bugtool.in +++ b/utilities/bugtool/ovs-bugtool.in @@ -14,7 +14,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Copyright (c) 2005, 2007 XenSource Ltd. -# Copyright (c) 2010, 2011 Nicira, Inc. +# Copyright (c) 2010, 2011, 2012 Nicira, Inc. # # To add new entries to the bugtool, you need to: @@ -115,7 +115,7 @@ OPENVSWITCH_LOG_DIR = '@LOGDIR@/' OPENVSWITCH_DEFAULT_SWITCH = '/etc/default/openvswitch-switch' # Debian OPENVSWITCH_SYSCONFIG_SWITCH = '/etc/sysconfig/openvswitch' # RHEL OPENVSWITCH_DEFAULT_CONTROLLER = '/etc/default/openvswitch-controller' -OPENVSWITCH_CONF_DB = '@sysconfdir@/openvswitch/conf.db' +OPENVSWITCH_CONF_DB = '@DBDIR@/conf.db' OPENVSWITCH_VSWITCHD_PID = '@RUNDIR@/ovs-vswitchd.pid' COLLECTD_LOGS_DIR = '/var/lib/collectd/rrd' VAR_LOG_DIR = '/var/log/' diff --git a/utilities/bugtool/plugins/system-logs/openvswitch.xml b/utilities/bugtool/plugins/system-logs/openvswitch.xml index 849336198..354af3412 100644 --- a/utilities/bugtool/plugins/system-logs/openvswitch.xml +++ b/utilities/bugtool/plugins/system-logs/openvswitch.xml @@ -13,9 +13,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - Copyright (C) 2011 Nicira, Inc. + Copyright (C) 2011, 2012 Nicira, Inc. --> /etc/openvswitch + /var/lib/openvswitch diff --git a/utilities/ovs-ctl.8 b/utilities/ovs-ctl.8 index 1a9ee2a58..c730778d5 100644 --- a/utilities/ovs-ctl.8 +++ b/utilities/ovs-ctl.8 @@ -395,6 +395,7 @@ that it runs. \fBovs\-ctl\fR will add the \fIsbindir\fR and . .IP "\fBOVS_LOGDIR\fR" .IQ "\fBOVS_RUNDIR\fR" +.IQ "\fBOVS_DBDIR\fR" .IQ "\fBOVS_SYSCONFDIR\fR" .IQ "\fBOVS_PKGDATADIR\fR" .IQ "\fBOVS_BINDIR\fR" @@ -422,7 +423,7 @@ process ID. The OVS database schema used to initialize the database (use \fB\-\-db\-schema to override this location). . -.IP "\fIsysconfdir\fB/openvswitch/conf.db\fR" +.IP "\fIdbdir\fB/conf.db\fR" The OVS database (use \fB\-\-db\-file\fR to override this location). . .IP "\fIrundir\fB/openvswitch/db.sock\fR" diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in index dbb629a6e..674c3c31e 100755 --- a/utilities/ovs-ctl.in +++ b/utilities/ovs-ctl.in @@ -403,7 +403,7 @@ set_defaults () { OVS_VSWITCHD_WRAPPER= OVS_BRCOMPATD_WRAPPER= - DB_FILE=$etcdir/conf.db + DB_FILE=$dbdir/conf.db DB_SOCK=$rundir/db.sock DB_SCHEMA=$datadir/vswitch.ovsschema @@ -491,8 +491,9 @@ Other options: -V, --version display version information Default directories with "configure" option and environment variable override: - logs: @LOGDIR@ (--log-dir, OVS_LOGDIR) - pidfiles and sockets: @RUNDIR@ (--run-dir, OVS_RUNDIR) + logs: @LOGDIR@ (--with-logdir, OVS_LOGDIR) + pidfiles and sockets: @RUNDIR@ (--with-rundir, OVS_RUNDIR) + conf.db: @DBDIR@ (--with-dbdir, OVS_DBDIR) system configuration: @sysconfdir@ (--sysconfdir, OVS_SYSCONFDIR) data files: @pkgdatadir@ (--pkgdatadir, OVS_PKGDATADIR) user binaries: @bindir@ (--bindir, OVS_BINDIR) diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in index 3905a846f..893e8d1ef 100644 --- a/utilities/ovs-lib.in +++ b/utilities/ovs-lib.in @@ -22,6 +22,8 @@ # All of these should be substituted by the Makefile at build time. logdir=${OVS_LOGDIR-'@LOGDIR@'} # /var/log/openvswitch rundir=${OVS_RUNDIR-'@RUNDIR@'} # /var/run/openvswitch +dbdir=${OVS_DBDIR-'@DBDIR@'} # /etc/openvswitch + # or /var/lib/openvswitch sysconfdir=${OVS_SYSCONFDIR-'@sysconfdir@'} # /etc etcdir=$sysconfdir/openvswitch # /etc/openvswitch datadir=${OVS_PKGDATADIR-'@pkgdatadir@'} # /usr/share/openvswitch -- 2.43.0