Thank you. I pushed this to master.
On Tue, Jan 10, 2012 at 06:15:34PM -0800, Ethan Jackson wrote: > 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