3 * smadmin - status/manager admin
4 * Usage: smadmin -[tdDr] [-a dbserver] host
7 * -D update database list
9 * -x tell manager to exit
10 * -a server add server to list of up databases
15 #include "../db_client/db_client.h"
19 "Usage: smadmin -[tdDrx] [-a server] host",
20 " -t : get status table",
21 " -d : get database replica list",
22 " -D : update database replica list",
23 " -r : restart manager",
25 " -a server : record server as a database server",
30 { "Close", "Up", "Unknown", "ReadOnly", "Down", "Unregistered"};
32 int main(int argc, char *argv[])
35 extern CLIENT *status_client;
50 while ((arg=getopt(argc, argv, "tdDrxa:"))!= EOF)
53 case 't': get_tab=1; break;
54 case 'd': get_db=1; break;
55 case 'D': update_db=1; break;
56 case 'r': restart=1; break;
57 case 'x': doexit = 1; break;
58 case 'a': server = optarg; break;
60 fprintf(stderr,"smadmin: Unknown option.");
65 if (get_tab+get_db+update_db+restart+doexit+(server!=NULL) != 1)
67 fprintf(stderr, "smadmin: must give examply one flag.\n");
73 fprintf(stderr, "smadmin: not host name given\n");
79 fprintf(stderr, "smadmin: only one host name may be given\n");
84 if (strcmp(host, ".")==0)
87 status_client = clnt_create(host, BOOK_STATUS, BOOKVERS, "udp");
88 if (status_client == NULL)
90 fprintf(stderr, "smadmin: cannot connect to %s\n", host);
97 if (collect_tab(&tab, status_client)== -1)
99 fprintf(stderr, "smadmin: cannot collect table\n");
103 print_tab(&tab, stdout);
107 database_list *dblist;
109 dblist = get_databases_2(NULL, status_client);
112 fprintf(stderr, "smadmin: cannot get database list\n");
116 for (i=0 ; i<dblist->database_list_len ; i++)
118 printf("%-20s %s\n", dblist->database_list_val[i].name,
119 statuses[dblist->database_list_val[i].state]);
130 pid = restart_helper_2(&dummy, status_client);
132 printf("manager restarted with pid %d\n", *pid);
135 fprintf(stderr,"smadmin: manager restart failed\n");
141 if (status_die_2(NULL, status_client) == NULL)
143 fprintf(stderr, "smadmin: could not send kill command to book_status on %s.\n", host );
152 if (set_database_2(&dbi, status_client) == NULL)
154 fprintf(stderr, "smadmin: could not register %s as a server.\n", server);