Looks good. Ethan
On Wed, Nov 30, 2011 at 14:09, Ben Pfaff <b...@nicira.com> wrote: > This makes ovsdb-tool easier to use in the common case. > > Requested-by: Reid Price <r...@nicira.com> > Feature #7756. > --- > NEWS | 3 +- > ovsdb/ovsdb-tool.1.in | 28 ++++++----- > ovsdb/ovsdb-tool.c | 129 > +++++++++++++++++++++++++++++++------------------ > 3 files changed, 99 insertions(+), 61 deletions(-) > > diff --git a/NEWS b/NEWS > index 33732ff..a527d7d 100644 > --- a/NEWS > +++ b/NEWS > @@ -23,7 +23,8 @@ post-v1.3.0 > and connectivity issues. This tool currently is not included in RH or > Xen packages. > - RHEL packaging now supports integration with Red Hat network scripts. > - > + - ovsdb-tool now uses the typical database and schema installation > + directories as defaults. > > v1.3.0 - xx xxx xxxx > ------------------------ > diff --git a/ovsdb/ovsdb-tool.1.in b/ovsdb/ovsdb-tool.1.in > index 16b8b1f..c440e0d 100644 > --- a/ovsdb/ovsdb-tool.1.in > +++ b/ovsdb/ovsdb-tool.1.in > @@ -12,28 +12,28 @@ > ovsdb\-tool \- Open vSwitch database management utility > . > .SH SYNOPSIS > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBcreate\fI db schema\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBcreate \fR[\fIdb\fR [\fIschema\fR]] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBcompact \fIdb \fR[\fItarget\fR] > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBcompact \fR[\fIdb\fR [\fItarget\fR]] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBconvert\fI db schema > -\fR[\fItarget\fR] > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBconvert \fR[\fIdb\fR [\fIschema > +\fR[\fItarget\fR]]] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBneeds\-conversion\fI db schema\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBneeds\-conversion \fR[\fIdb\fR > [\fIschema\fR]] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBdb\-version\fI db\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBdb\-version \fR[\fIdb\fR] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBschema\-version\fI schema\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBschema\-version \fR[\fIschema\fR] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBdb\-cksum\fI db\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBdb\-cksum \fR[\fIdb\fR] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBschema\-cksum\fI schema\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBschema\-cksum \fR[\fIschema\fR] > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBquery\fI db transaction\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBquery \fR[\fIdb\fR] \fItransaction\fR > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] \fBtransact\fI db transaction\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] \fBtransact \fR[\fIdb\fR] \fItransaction\fR > .br > -\fBovsdb\-tool \fR[\fIoptions\fR] [\fB\-m\fR | \fB\-\-more\fR]... > \fBshow\-log\fI db\fR > +\fBovsdb\-tool \fR[\fIoptions\fR] [\fB\-m\fR | \fB\-\-more\fR]... > \fBshow\-log \fR[\fIdb\fR] > .br > \fBovsdb\-tool help\fR > .so lib/vlog-syn.man > @@ -147,6 +147,10 @@ record. > .so lib/vlog.man > .SS "Other Options" > .so lib/common.man > +.SH "FILES" > +The default \fIdb\fR is \fB@sysconfdir@/openvswitch/conf.db\fR. The > +default \fIschema\fR is \fB@pkgdatadir@/vswitch.ovsschema\fR. The > +\fBhelp\fR command also displays these defaults. > .SH "SEE ALSO" > . > \fBovsdb\-server\fR(1), > diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c > index 015ee12..ad8cece 100644 > --- a/ovsdb/ovsdb-tool.c > +++ b/ovsdb/ovsdb-tool.c > @@ -25,6 +25,7 @@ > #include "column.h" > #include "command-line.h" > #include "compiler.h" > +#include "dirs.h" > #include "dynamic-string.h" > #include "file.h" > #include "lockfile.h" > @@ -49,6 +50,9 @@ static const struct command all_commands[]; > static void usage(void) NO_RETURN; > static void parse_options(int argc, char *argv[]); > > +static const char *default_db(void); > +static const char *default_schema(void); > + > int > main(int argc, char *argv[]) > { > @@ -110,17 +114,19 @@ usage(void) > { > printf("%s: Open vSwitch database management utility\n" > "usage: %s [OPTIONS] COMMAND [ARG...]\n" > - " create DB SCHEMA create DB with the given SCHEMA\n" > - " compact DB [DST] compact DB in-place (or to DST)\n" > - " convert DB SCHEMA [DST] convert DB to SCHEMA (to DST)\n" > - " db-version DB report version of schema used by DB\n" > - " db-cksum DB report checksum of schema used by DB\n" > - " schema-version SCHEMA report SCHEMA's schema version\n" > - " schema-cksum SCHEMA report SCHEMA's checksum\n" > - " query DB TRNS execute read-only transaction on DB\n" > - " transact DB TRNS execute read/write transaction on DB\n" > - " show-log DB prints information about DB's log > entries\n", > - program_name, program_name); > + " create [DB [SCHEMA]] create DB with the given SCHEMA\n" > + " compact [DB [DST]] compact DB in-place (or to DST)\n" > + " convert [DB [SCHEMA [DST]]] convert DB to SCHEMA (to DST)\n" > + " db-version [DB] report version of schema used by DB\n" > + " db-cksum [DB] report checksum of schema used by DB\n" > + " schema-version [SCHEMA] report SCHEMA's schema version\n" > + " schema-cksum [SCHEMA] report SCHEMA's checksum\n" > + " query [DB] TRNS execute read-only transaction on DB\n" > + " transact [DB] TRNS execute read/write transaction on DB\n" > + " [-m]... show-log [DB] print DB's log entries\n" > + "The default DB is %s.\n" > + "The default SCHEMA is %s.\n", > + program_name, program_name, default_db(), default_schema()); > vlog_usage(); > printf("\nOther options:\n" > " -m, --more increase show-log verbosity\n" > @@ -128,6 +134,26 @@ usage(void) > " -V, --version display version information\n"); > exit(EXIT_SUCCESS); > } > + > +static const char * > +default_db(void) > +{ > + static char *db; > + if (!db) { > + db = xasprintf("%s/conf.db", ovs_sysconfdir()); > + } > + return db; > +} > + > +static const char * > +default_schema(void) > +{ > + static char *schema; > + if (!schema) { > + schema = xasprintf("%s/vswitch.ovsschema", ovs_pkgdatadir()); > + } > + return schema; > +} > > static struct json * > parse_json(const char *s) > @@ -157,10 +183,10 @@ check_ovsdb_error(struct ovsdb_error *error) > } > > static void > -do_create(int argc OVS_UNUSED, char *argv[]) > +do_create(int argc, char *argv[]) > { > - const char *db_file_name = argv[1]; > - const char *schema_file_name = argv[2]; > + const char *db_file_name = argc >= 2 ? argv[1] : default_db(); > + const char *schema_file_name = argc >= 3 ? argv[2] : default_schema(); > struct ovsdb_schema *schema; > struct ovsdb_log *log; > struct json *json; > @@ -229,29 +255,34 @@ compact_or_convert(const char *src_name, const char > *dst_name, > } > > static void > -do_compact(int argc OVS_UNUSED, char *argv[]) > +do_compact(int argc, char *argv[]) > { > - compact_or_convert(argv[1], argv[2], NULL, > + const char *db = argc >= 2 ? argv[1] : default_db(); > + const char *target = argc >= 3 ? argv[2] : NULL; > + > + compact_or_convert(db, target, NULL, > "compacted by ovsdb-tool "VERSION BUILDNR); > } > > static void > -do_convert(int argc OVS_UNUSED, char *argv[]) > +do_convert(int argc, char *argv[]) > { > - const char *schema_file_name = argv[2]; > + const char *db = argc >= 2 ? argv[1] : default_db(); > + const char *schema = argc >= 3 ? argv[2] : default_schema(); > + const char *target = argc >= 4 ? argv[3] : NULL; > struct ovsdb_schema *new_schema; > > - check_ovsdb_error(ovsdb_schema_from_file(schema_file_name, &new_schema)); > - compact_or_convert(argv[1], argv[3], new_schema, > + check_ovsdb_error(ovsdb_schema_from_file(schema, &new_schema)); > + compact_or_convert(db, target, new_schema, > "converted by ovsdb-tool "VERSION BUILDNR); > ovsdb_schema_destroy(new_schema); > } > > static void > -do_needs_conversion(int argc OVS_UNUSED, char *argv[]) > +do_needs_conversion(int argc, char *argv[]) > { > - const char *db_file_name = argv[1]; > - const char *schema_file_name = argv[2]; > + const char *db_file_name = argc >= 2 ? argv[1] : default_db(); > + const char *schema_file_name = argc >= 3 ? argv[2] : default_schema(); > struct ovsdb_schema *schema1, *schema2; > > check_ovsdb_error(ovsdb_file_read_schema(db_file_name, &schema1)); > @@ -262,9 +293,9 @@ do_needs_conversion(int argc OVS_UNUSED, char *argv[]) > } > > static void > -do_db_version(int argc OVS_UNUSED, char *argv[]) > +do_db_version(int argc, char *argv[]) > { > - const char *db_file_name = argv[1]; > + const char *db_file_name = argc >= 2 ? argv[1] : default_db(); > struct ovsdb_schema *schema; > > check_ovsdb_error(ovsdb_file_read_schema(db_file_name, &schema)); > @@ -275,7 +306,7 @@ do_db_version(int argc OVS_UNUSED, char *argv[]) > static void > do_db_cksum(int argc OVS_UNUSED, char *argv[]) > { > - const char *db_file_name = argv[1]; > + const char *db_file_name = argc >= 2 ? argv[1] : default_db(); > struct ovsdb_schema *schema; > > check_ovsdb_error(ovsdb_file_read_schema(db_file_name, &schema)); > @@ -284,9 +315,9 @@ do_db_cksum(int argc OVS_UNUSED, char *argv[]) > } > > static void > -do_schema_version(int argc OVS_UNUSED, char *argv[]) > +do_schema_version(int argc, char *argv[]) > { > - const char *schema_file_name = argv[1]; > + const char *schema_file_name = argc >= 2 ? argv[1] : default_schema(); > struct ovsdb_schema *schema; > > check_ovsdb_error(ovsdb_schema_from_file(schema_file_name, &schema)); > @@ -295,9 +326,9 @@ do_schema_version(int argc OVS_UNUSED, char *argv[]) > } > > static void > -do_schema_cksum(int argc OVS_UNUSED, char *argv[]) > +do_schema_cksum(int argc, char *argv[]) > { > - const char *schema_file_name = argv[1]; > + const char *schema_file_name = argc >= 2 ? argv[1] : default_schema(); > struct ovsdb_schema *schema; > > check_ovsdb_error(ovsdb_schema_from_file(schema_file_name, &schema)); > @@ -306,8 +337,10 @@ do_schema_cksum(int argc OVS_UNUSED, char *argv[]) > } > > static void > -transact(bool read_only, const char *db_file_name, const char *transaction) > +transact(bool read_only, int argc, char *argv[]) > { > + const char *db_file_name = argc >= 3 ? argv[1] : default_db(); > + const char *transaction = argv[argc - 1]; > struct json *request, *result; > struct ovsdb *db; > > @@ -322,15 +355,15 @@ transact(bool read_only, const char *db_file_name, > const char *transaction) > } > > static void > -do_query(int argc OVS_UNUSED, char *argv[]) > +do_query(int argc, char *argv[]) > { > - transact(true, argv[1], argv[2]); > + transact(true, argc, argv); > } > > static void > -do_transact(int argc OVS_UNUSED, char *argv[]) > +do_transact(int argc, char *argv[]) > { > - transact(false, argv[1], argv[2]); > + transact(false, argc, argv); > } > > static void > @@ -444,9 +477,9 @@ print_db_changes(struct shash *tables, struct shash > *names, > } > > static void > -do_show_log(int argc OVS_UNUSED, char *argv[]) > +do_show_log(int argc, char *argv[]) > { > - const char *db_file_name = argv[1]; > + const char *db_file_name = argc >= 2 ? argv[1] : default_db(); > struct shash names; > struct ovsdb_log *log; > struct ovsdb_schema *schema; > @@ -507,17 +540,17 @@ do_help(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) > } > > static const struct command all_commands[] = { > - { "create", 2, 2, do_create }, > - { "compact", 1, 2, do_compact }, > - { "convert", 2, 3, do_convert }, > - { "needs-conversion", 2, 2, do_needs_conversion }, > - { "db-version", 1, 1, do_db_version }, > - { "db-cksum", 1, 1, do_db_cksum }, > - { "schema-version", 1, 1, do_schema_version }, > - { "schema-cksum", 1, 1, do_schema_cksum }, > - { "query", 2, 2, do_query }, > - { "transact", 2, 2, do_transact }, > - { "show-log", 1, 1, do_show_log }, > + { "create", 0, 2, do_create }, > + { "compact", 0, 2, do_compact }, > + { "convert", 0, 3, do_convert }, > + { "needs-conversion", 0, 2, do_needs_conversion }, > + { "db-version", 0, 1, do_db_version }, > + { "db-cksum", 0, 1, do_db_cksum }, > + { "schema-version", 0, 1, do_schema_version }, > + { "schema-cksum", 0, 1, do_schema_cksum }, > + { "query", 1, 2, do_query }, > + { "transact", 1, 2, do_transact }, > + { "show-log", 0, 1, do_show_log }, > { "help", 0, INT_MAX, do_help }, > { NULL, 0, 0, NULL }, > }; > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev