ctdb: support --machinereadable (-Y) for scriptstatus
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 7 Dec 2009 15:01:53 +0000 (01:31 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 7 Dec 2009 15:01:53 +0000 (01:31 +1030)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
tools/ctdb.c

index ae6438e85c6dee5a443988f6a6b41b0a66f59884..c9b0d78dcd9191431308520fd8161227faa88524 100644 (file)
@@ -740,7 +740,11 @@ static int control_scriptstatus(struct ctdb_context *ctdb, int argc, const char
                return ret;
        }
 
-       printf("%d scripts were executed last monitoring cycle\n", script_status->num_scripts);
+       if (options.machinereadable) {
+               printf(":Name:Code:Status:Start:End:Error Output...:\n");
+       } else {
+               printf("%d scripts were executed last monitoring cycle\n", script_status->num_scripts);
+       }
        for (i=0; i<script_status->num_scripts; i++) {
                const char *status = NULL;
 
@@ -759,6 +763,18 @@ static int control_scriptstatus(struct ctdb_context *ctdb, int argc, const char
                                status = "ERROR";
                        break;
                }
+               if (options.machinereadable) {
+                       printf("%s:%i:%s:%lu.%06lu:%lu.%06lu:%s:\n",
+                              script_status->scripts[i].name,
+                              script_status->scripts[i].status,
+                              status,
+                              (long)script_status->scripts[i].start.tv_sec,
+                              (long)script_status->scripts[i].start.tv_usec,
+                              (long)script_status->scripts[i].finished.tv_sec,
+                              (long)script_status->scripts[i].finished.tv_usec,
+                              script_status->scripts[i].output);
+                       continue;
+               }
                if (status)
                        printf("%-20s Status:%s    ",
                               script_status->scripts[i].name, status);