summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--ovsdb/ovsdb-client.c13
-rw-r--r--tests/ovsdb-client.at4
3 files changed, 17 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index be9884ead..49d2fa597 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ Post-v2.8.0
* New high-level documentation in ovsdb(7).
* New file format documentation for developers in ovsdb(5).
* Protocol documentation moved from ovsdb-server(1) to ovsdb-server(7).
+ * ovsdb-client: New "get-schema-cksum" command.
- OVN:
* The "requested-chassis" option for a logical switch port now accepts a
chassis "hostname" in addition to a chassis "name".
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index 7d9018384..c37302ef9 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -251,6 +251,9 @@ usage(void)
"\n get-schema-version [SERVER] [DATABASE]\n"
" retrieve schema for DATABASE from SERVER and report only its\n"
" version number on stdout\n"
+ "\n get-schema-cksum [SERVER] [DATABASE]\n"
+ " retrieve schema for DATABASE from SERVER and report only its\n"
+ " checksum on stdout\n"
"\n list-tables [SERVER] [DATABASE]\n"
" list tables for DATABASE on SERVER\n"
"\n list-columns [SERVER] [DATABASE] [TABLE]\n"
@@ -448,6 +451,15 @@ do_get_schema_version(struct jsonrpc *rpc, const char *database,
}
static void
+do_get_schema_cksum(struct jsonrpc *rpc, const char *database,
+ int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
+{
+ struct ovsdb_schema *schema = fetch_schema(rpc, database);
+ puts(schema->cksum);
+ ovsdb_schema_destroy(schema);
+}
+
+static void
do_list_tables(struct jsonrpc *rpc, const char *database,
int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
{
@@ -1575,6 +1587,7 @@ static const struct ovsdb_client_command all_commands[] = {
{ "list-dbs", NEED_RPC, 0, 0, do_list_dbs },
{ "get-schema", NEED_DATABASE, 0, 0, do_get_schema },
{ "get-schema-version", NEED_DATABASE, 0, 0, do_get_schema_version },
+ { "get-schema-cksum", NEED_DATABASE, 0, 0, do_get_schema_cksum },
{ "list-tables", NEED_DATABASE, 0, 0, do_list_tables },
{ "list-columns", NEED_DATABASE, 0, 1, do_list_columns },
{ "transact", NEED_RPC, 1, 1, do_transact },
diff --git a/tests/ovsdb-client.at b/tests/ovsdb-client.at
index 0f787fac8..903929550 100644
--- a/tests/ovsdb-client.at
+++ b/tests/ovsdb-client.at
@@ -1,11 +1,13 @@
AT_BANNER([OVSDB -- ovsdb-client commands])
-AT_SETUP([ovsdb-client get-schema-version])
+AT_SETUP([ovsdb-client get-schema-version and get-schema-cksum])
AT_KEYWORDS([ovsdb client positive])
ordinal_schema > schema
AT_CHECK([ovsdb-tool create db schema], [0], [ignore], [ignore])
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db], [0], [ignore], [ignore])
AT_CHECK([ovsdb-client get-schema-version unix:socket ordinals], [0], [5.1.3
])
+AT_CHECK([ovsdb-client get-schema-cksum unix:socket ordinals], [0], [12345678 9
+])
OVSDB_SERVER_SHUTDOWN
AT_CLEANUP