2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

ovsdb: Add "comment" feature to transactions and make ovs-vsctl use them.

The idea here is that transaction comments get copied to the ovsdb-server's
transaction log, which can then make it clear later why a particular change
was made to the database, to ease debugging.
This commit is contained in:
Ben Pfaff
2009-12-16 13:30:53 -08:00
parent 5f98eed4eb
commit d171b5846f
9 changed files with 120 additions and 1 deletions

View File

@@ -23,6 +23,7 @@
#include <stdlib.h>
#include "bitmap.h"
#include "dynamic-string.h"
#include "json.h"
#include "jsonrpc.h"
#include "ovsdb-data.h"
@@ -80,6 +81,7 @@ struct ovsdb_idl_txn {
struct hmap txn_rows;
enum ovsdb_idl_txn_status status;
bool dry_run;
struct ds comment;
};
static struct vlog_rate_limit syntax_rl = VLOG_RATE_LIMIT_INIT(1, 5);
@@ -793,9 +795,19 @@ ovsdb_idl_txn_create(struct ovsdb_idl *idl)
txn->status = TXN_INCOMPLETE;
hmap_init(&txn->txn_rows);
txn->dry_run = false;
ds_init(&txn->comment);
return txn;
}
void
ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *txn, const char *s)
{
if (txn->comment.length) {
ds_put_char(&txn->comment, '\n');
}
ds_put_cstr(&txn->comment, s);
}
void
ovsdb_idl_txn_set_dry_run(struct ovsdb_idl_txn *txn)
{
@@ -809,6 +821,7 @@ ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *txn)
hmap_remove(&txn->idl->outstanding_txns, &txn->hmap_node);
}
ovsdb_idl_txn_abort(txn);
ds_destroy(&txn->comment);
free(txn);
}
@@ -1039,6 +1052,13 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
}
}
if (txn->comment.length) {
struct json *op = json_object_create();
json_object_put_string(op, "op", "comment");
json_object_put_string(op, "comment", ds_cstr(&txn->comment));
json_array_add(operations, op);
}
if (txn->dry_run) {
struct json *op = json_object_create();
json_object_put_string(op, "op", "abort");