dovecot-2.0: doveadm: Added "director ring status" command.

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 29 06:18:43 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.0/rev/00f9dd706a90
changeset: 12890:00f9dd706a90
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 29 06:18:26 2011 +0300
description:
doveadm: Added "director ring status" command.

diffstat:

 src/doveadm/doveadm-director.c |  37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diffs (54 lines):

diff -r 63680f6e21a2 -r 00f9dd706a90 src/doveadm/doveadm-director.c
--- a/src/doveadm/doveadm-director.c	Mon Aug 29 06:18:16 2011 +0300
+++ b/src/doveadm/doveadm-director.c	Mon Aug 29 06:18:26 2011 +0300
@@ -547,6 +547,41 @@
 	director_disconnect(ctx);
 }
 
+static void cmd_director_ring_status(int argc, char *argv[])
+{
+	struct director_context *ctx;
+	const char *line, *const *args;
+	unsigned long l;
+
+	ctx = cmd_director_init(argc, argv, "a:", cmd_director_status);
+
+	doveadm_print_init(DOVEADM_PRINT_TYPE_TABLE);
+	doveadm_print_header_simple("director ip");
+	doveadm_print_header_simple("port");
+	doveadm_print_header_simple("type");
+	doveadm_print_header_simple("last failed");
+
+	director_send(ctx, "DIRECTOR-LIST\n");
+	while ((line = i_stream_read_next_line(ctx->input)) != NULL) {
+		if (*line == '\0')
+			break;
+		T_BEGIN {
+			args = t_strsplit(line, "\t");
+			if (str_array_length(args) >= 4 &&
+			    str_to_ulong(args[3], &l) == 0) {
+				doveadm_print(args[0]);
+				doveadm_print(args[1]);
+				doveadm_print(args[2]);
+				if (l == 0)
+					doveadm_print("never");
+				else
+					doveadm_print(unixdate2str(l));
+			}
+		} T_END;
+	}
+	director_disconnect(ctx);
+}
+
 struct doveadm_cmd doveadm_cmd_director[] = {
 	{ cmd_director_status, "director status",
 	  "[-a <director socket path>] [<user>]" },
@@ -561,6 +596,8 @@
 	{ cmd_director_flush, "director flush",
 	  "[-a <director socket path>] <host>|all" },
 	{ cmd_director_dump, "director dump",
+	  "[-a <director socket path>]" },
+	{ cmd_director_ring_status, "director ring status",
 	  "[-a <director socket path>]" }
 };
 


More information about the dovecot-cvs mailing list