ctdb-tools: "ctdb nodestatus" should only display header for "all"
authorMartin Schwenke <martin@meltin.net>
Wed, 24 May 2017 10:27:58 +0000 (20:27 +1000)
committerMartin Schwenke <martins@samba.org>
Thu, 25 May 2017 23:14:17 +0000 (01:14 +0200)
The "Number of nodes:" header should only be displayed when "all" is
specified.  This is how the command behaved in Samba <= 4.4.

Printing the number of nodes is not helpful and is rather confusing in
the default case where only the status of the current node is printed.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12802

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tools/ctdb.c

index 14b6957e1f0ced0865df4fcea1fce5dc07ee694a..0890992cc3402df9229eeaf40a5cf8cf5bfe5de8 100644 (file)
@@ -802,7 +802,8 @@ static void print_nodemap_machine(TALLOC_CTX *mem_ctx,
 }
 
 static void print_nodemap(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
-                         struct ctdb_node_map *nodemap, uint32_t mypnn)
+                         struct ctdb_node_map *nodemap, uint32_t mypnn,
+                         bool print_header)
 {
        struct ctdb_node_and_flags *node;
        int num_deleted_nodes = 0;
@@ -814,11 +815,14 @@ static void print_nodemap(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
                }
        }
 
-       if (num_deleted_nodes == 0) {
-               printf("Number of nodes:%d\n", nodemap->num);
-       } else {
-               printf("Number of nodes:%d (including %d deleted nodes)\n",
-                      nodemap->num, num_deleted_nodes);
+       if (print_header) {
+               if (num_deleted_nodes == 0) {
+                       printf("Number of nodes:%d\n", nodemap->num);
+               } else {
+                       printf("Number of nodes:%d "
+                              "(including %d deleted nodes)\n",
+                              nodemap->num, num_deleted_nodes);
+               }
        }
 
        for (i=0; i<nodemap->num; i++) {
@@ -844,7 +848,7 @@ static void print_status(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
 {
        int i;
 
-       print_nodemap(mem_ctx, ctdb, nodemap, mypnn);
+       print_nodemap(mem_ctx, ctdb, nodemap, mypnn, true);
 
        if (vnnmap->generation == INVALID_GENERATION) {
                printf("Generation:INVALID\n");
@@ -5651,6 +5655,7 @@ static int control_nodestatus(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        const char *nodestring = NULL;
        struct ctdb_node_map *nodemap;
        int ret, i;
+       bool print_hdr = false;
 
        if (argc > 1) {
                usage("nodestatus");
@@ -5658,6 +5663,9 @@ static int control_nodestatus(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
 
        if (argc == 1) {
                nodestring = argv[0];
+               if (strcmp(nodestring, "all") == 0) {
+                       print_hdr = true;
+               }
        }
 
        if (! parse_nodestring(mem_ctx, ctdb, nodestring, &nodemap)) {
@@ -5667,7 +5675,7 @@ static int control_nodestatus(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (options.machinereadable) {
                print_nodemap_machine(mem_ctx, ctdb, nodemap, ctdb->cmd_pnn);
        } else {
-               print_nodemap(mem_ctx, ctdb, nodemap, ctdb->cmd_pnn);
+               print_nodemap(mem_ctx, ctdb, nodemap, ctdb->cmd_pnn, print_hdr);
        }
 
        ret = 0;