]> andersk Git - moira.git/blob - clients/moira/dcmmaint.c
fixed include files
[moira.git] / clients / moira / dcmmaint.c
1 /* $Header$
2  *
3  * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
4  * For copying and distribution information, please see the file
5  * <mit-copyright.h>.
6  */
7
8 #include <stdio.h>
9 #include <strings.h>
10 #include <ctype.h>
11 #include <sms.h>
12 #include <sms_app.h>
13 #include <menu.h>
14
15 #include "mit-copyright.h"
16 #include "defs.h"
17 #include "f_defs.h"
18 #include "globals.h"
19
20 extern char *whoami;
21 static char buf[BUFSIZ];
22 char *unparse_interval(), *canonicalize_hostname();
23 char *atot();
24
25 #define DCM_ENABLE_FLAG 0
26
27 genable(argc, argv, info)
28 int argc;
29 char **argv;
30 char **info;
31 {
32     info[1] = strsave(argv[0]);
33     return(SMS_CONT);
34 }
35
36 EnableDcm(argc, argv)
37 int argc;
38 char **argv;
39 {
40     int status;
41     char *info[3];
42
43     info[0] = "dcm_enable";
44     if (status = do_sms_query("get_value", 1, info, genable, info))
45       com_err(whoami, status, " while getting value of dcm_enable");
46     GetValueFromUser("Enable value", &info[1]);
47     if (status = do_sms_query("update_value", 2, info, Scream, NULL))
48       com_err(whoami, status, " while updating value of dcm_enable");
49     FreeAndClear(&info[0], FALSE);
50     FreeAndClear(&info[1], TRUE);
51     return(DM_NORMAL);
52 }
53
54
55 int shserv(argc, argv)
56 int argc;
57 char **argv;
58 {
59     char tmp[64], *dfgen;
60
61     Put_message("Name       Type     Owner       Modified");
62     sprintf(tmp, "%s:%s", argv[SVC_ACE_TYPE], argv[SVC_ACE_NAME]);
63     sprintf(buf, "%-10s %-8s %-11s by %s on %s with %s", argv[SVC_SERVICE],
64             argv[SVC_TYPE], tmp, argv[SVC_MODBY], argv[SVC_MODTIME],
65             argv[SVC_MODWITH]);
66     Put_message(buf);
67     sprintf(buf, "  Interval %s, Target:%s, Script:%s",
68             unparse_interval(atoi(argv[SVC_INTERVAL])), argv[SVC_TARGET],
69             argv[SVC_SCRIPT]);
70     Put_message(buf);
71     if (atoi(argv[SVC_HARDERROR]))
72       sprintf(tmp, "Error %d: %s", atoi(argv[SVC_HARDERROR]), argv[SVC_ERRMSG]);
73     else
74       strcpy(tmp, "No error");
75     dfgen = strsave(atot(argv[SVC_DFGEN]));
76     sprintf(buf, "  Generated %s; Last Checked %s", dfgen,
77             atot(argv[SVC_DFCHECK]));
78     free(dfgen);
79     Put_message(buf);
80     sprintf(buf, "  %s/%s/%s", atoi(argv[SVC_ENABLE]) ? "Enabled" : "Disabled",
81             atoi(argv[SVC_INPROGRESS]) ? "InProgress" : "Idle", tmp);
82     Put_message(buf);
83     Put_message("");
84     return(SMS_CONT);
85 }
86
87
88 showserv(argc, argv)
89 int argc;
90 char **argv;
91 {
92     char *qargv[1];
93     int status; 
94  
95     qargv[0] = argv[1];
96     if (status = do_sms_query("get_server_info", 1, qargv, shserv, NULL))
97       com_err(whoami, status, " while getting server info");
98     return(DM_NORMAL);
99 }
100
101
102 char *unparse_interval(i)
103 int i;
104 {
105     static char uibuf[10];
106
107     sprintf(uibuf, "%02d:%02d:00", i / 60, i % 60);
108     return(uibuf);
109 }
110
111 addserv(argc, argv)
112 int argc;
113 char **argv;
114 {
115     int status;
116     char *info[8];
117
118     initserv(argv[1], info);
119     askserv(info);
120     if (status = do_sms_query("add_server_info", 8, info, Scream, NULL))
121       com_err(whoami, status, " while updating server info");
122     FreeInfo(info);
123     return(DM_NORMAL);
124 }
125
126 askserv(info)
127 char **info;
128 {
129     GetValueFromUser("Interval", &info[SC_INTERVAL]);
130     GetValueFromUser("Target", &info[SC_TARGET]);
131     GetValueFromUser("Script", &info[SC_SCRIPT]);
132     GetTypeFromUser("Service type", "service", &info[SC_TYPE]);
133     GetValueFromUser("Enable", &info[SC_ENABLE]);
134     GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]);
135     if (strcasecmp("none", info[SC_ACE_TYPE]))
136       GetValueFromUser("Ace name", &info[SC_ACE_NAME]);
137 }
138
139
140 gserv(argc, argv, cargv)
141 int argc;
142 char **argv;
143 char **cargv;
144 {
145     cargv[SC_SERVICE] = strsave(argv[SVC_SERVICE]);
146     cargv[SC_INTERVAL] = strsave(argv[SVC_INTERVAL]);
147     cargv[SC_TARGET] = strsave(argv[SVC_TARGET]);
148     cargv[SC_SCRIPT] = strsave(argv[SVC_SCRIPT]);
149     cargv[SC_TYPE] = strsave(argv[SVC_TYPE]);
150     cargv[SC_ENABLE] = strsave(argv[SVC_ENABLE]);
151     cargv[SC_ACE_TYPE] = strsave(argv[SVC_ACE_TYPE]);
152     cargv[SC_ACE_NAME] = strsave(argv[SVC_ACE_NAME]);
153     cargv[SC_END] = NULL;
154     return(SMS_CONT);
155 }
156
157 initserv(name, argv)
158 char *name;
159 char **argv;
160 {
161     char tmp[BUFSIZ];
162
163     argv[SC_SERVICE] = strsave(name);
164     argv[SC_INTERVAL] = strsave("1440");
165     sprintf(tmp, "/tmp/%s.out", name);
166     argv[SC_TARGET] = strsave(tmp);
167     sprintf(tmp, "/u1/sms/bin/%s.sh", name);
168     argv[SC_SCRIPT] = strsave(tmp);
169     argv[SC_TYPE] = strsave("UNIQUE");
170     argv[SC_ENABLE] = strsave("1");
171     argv[SC_ACE_TYPE] = strsave("LIST");
172     argv[SC_ACE_NAME] = strsave("dbadmin");
173     argv[SC_END] = NULL;
174 }
175
176
177 updateserv(argc, argv)
178 int argc;
179 char **argv;
180 {
181     char *qargv[9];
182     int status;
183
184     qargv[0] = (char *)argv[1];
185     if (status = do_sms_query("get_server_info", 1,
186                               qargv, gserv, (char *)qargv)) {
187         com_err(whoami, status, " while getting server info");
188         return(DM_NORMAL);
189     }
190     askserv(qargv);
191     if (status = do_sms_query("update_server_info", 8, qargv, Scream, NULL))
192       com_err(whoami, status, " while updating server info");
193     return(DM_NORMAL);
194 }
195
196
197 int shhost(argc, argv)
198 int argc;
199 char **argv;
200 {
201     char tmp[64], *ltt;
202
203     sprintf(buf, "%s:%s  mod by %s on %s with %s", argv[SH_MACHINE],
204             argv[SH_SERVICE], argv[SH_MODBY], argv[SH_MODTIME],
205             argv[SH_MODWITH]);
206     Put_message(buf);
207     if (atoi(argv[SH_HOSTERROR]))
208       sprintf(tmp, "Error %d: %s", atoi(argv[SH_HOSTERROR]), argv[SH_ERRMSG]);
209     else
210       strcpy(tmp, "No error");
211     sprintf(buf, "  %s/%s/%s/%s/%s",
212             atoi(argv[SH_ENABLE]) ? "Enabled" : "Disabled",
213             atoi(argv[SH_SUCCESS]) ? "Success" : "Failure",
214             atoi(argv[SH_INPROGRESS]) ? "InProgress" : "Idle",
215             atoi(argv[SH_OVERRIDE]) ? "Override" : "Normal", tmp);
216     Put_message(buf);
217     Put_message("  Last Try             Last Success         Value1    Value2    Value3");
218     ltt = strsave(atot(argv[SH_LASTTRY]));
219     sprintf(buf, "  %-20s %-20s %-9d %-9d %s", ltt, atot(argv[SH_LASTSUCCESS]),
220             atoi(argv[SH_VALUE1]), atoi(argv[SH_VALUE2]), argv[SH_VALUE3]);
221     free(ltt);
222     Put_message(buf);
223     Put_message("");
224     return(SMS_CONT);
225 }
226
227
228 showhost(argc, argv)
229 int argc;
230 char **argv;
231 {
232     char *qargv[2];
233     int status;
234
235     qargv[SHI_SERVICE] = argv[1];
236     qargv[SHI_MACHINE] = canonicalize_hostname(argv[2]);
237     if (status = do_sms_query("get_server_host_info", 2, qargv, shhost, NULL))
238       com_err(whoami, status, " getting server/host info");
239     return(DM_NORMAL);
240 }
241
242
243 resetsrverr(argc, argv)
244 int argc;
245 char  **argv;
246 {
247     int status;
248     if (status = do_sms_query("reset_server_error", 1, &argv[1], Scream, NULL))
249       com_err(whoami, status, " while resetting server error");
250     return(DM_NORMAL);
251 }
252
253
254 resetsrvc(argc, argv)
255 int argc;
256 char **argv;
257 {
258     int status;
259     char *qargv[5];
260
261     qargv[0] = argv[1];
262     qargv[1] = "0";
263     qargv[2] = "0";
264     qargv[3] = "0";
265     qargv[4] = "0";
266     qargv[5] = "";
267     if (status = do_sms_query("set_server_internal_flags", 6, qargv,
268                               Scream, NULL))
269       com_err(whoami, status, " while resetting server error");
270     return(DM_NORMAL);
271 }
272
273
274 resethosterr(argc, argv)
275 int argc;
276 char  **argv;
277 {
278     int status;
279
280     argv[2] = canonicalize_hostname(argv[2]);
281     if (status = do_sms_query("reset_server_host_error", 2, &argv[1],
282                               Scream, NULL))
283       com_err(whoami, status, " while resetting server/host error");
284     return(DM_NORMAL);
285 }
286
287
288 resethost(argc, argv)
289 int argc;
290 char **argv;
291 {
292     int status;
293     char *qargv[9];
294
295     qargv[0] = argv[1];
296     qargv[1] = canonicalize_hostname(argv[2]);
297     qargv[2] = "0";
298     qargv[3] = "0";
299     qargv[4] = "0";
300     qargv[5] = "0";
301     qargv[6] = "";
302     qargv[7] = "0";
303     qargv[8] = "0";
304     if (status = do_sms_query("set_server_host_internal", 9, qargv,
305                               Scream, NULL))
306       com_err(whoami, status, " while resetting server/host error");
307     return(DM_NORMAL);
308 }
309
310
311 sethostor(argc, argv)
312 int argc;
313 char  **argv;
314 {
315     int status;
316
317     argv[2] = canonicalize_hostname(argv[2]);
318     if (status = do_sms_query("set_server_host_override", 2, &argv[1],
319                               Scream, NULL))
320       com_err(whoami, status, " while setting server/host override");
321     return(DM_NORMAL);
322 }
323
324
325 ghost(argc, argv, cargv)
326 int argc;
327 char **argv;
328 char **cargv;
329 {
330     cargv[SHI_SERVICE] = strsave(argv[SH_SERVICE]);
331     cargv[SHI_MACHINE] = strsave(argv[SH_MACHINE]);
332     cargv[SHI_ENABLE] = strsave(argv[SH_ENABLE]);
333     cargv[SHI_VALUE1] = strsave(argv[SH_VALUE1]);
334     cargv[SHI_VALUE2] = strsave(argv[SH_VALUE2]);
335     cargv[SHI_VALUE3] = strsave(argv[SH_VALUE3]);
336     cargv[SHI_END] = NULL;
337     return(SMS_CONT);
338 }
339
340
341 inithost(info)
342 char **info;
343 {
344     info[SHI_MACHINE] = strsave(canonicalize_hostname(info[SH_MACHINE]));
345     info[SHI_ENABLE] = strsave("1");
346     info[SHI_VALUE1] = strsave("0");
347     info[SHI_VALUE2] = strsave("0");
348     info[SHI_VALUE3] = strsave("");
349     info[SHI_END] = NULL;
350 }
351
352
353 askhost(info)
354 char **info;
355 {
356     GetValueFromUser("Enable", &info[SHI_ENABLE]);
357     GetValueFromUser("Value 1", &info[SHI_VALUE1]);
358     GetValueFromUser("Value 2", &info[SHI_VALUE2]);
359     GetValueFromUser("Value 3", &info[SHI_VALUE3]);
360 }
361
362
363 updatehost(argc, argv)
364 int argc;
365 char **argv;
366 {
367     char *info[SHI_END+1];
368     int status;
369
370     info[SHI_SERVICE] = strsave(argv[1]);
371     info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
372     if (status = do_sms_query("get_server_host_info", 2, info, ghost, 
373                               (char *)info)) {
374         com_err(whoami, status, " while getting server/host info");
375         return(DM_NORMAL);
376     }
377     askhost(info);
378     if (status = do_sms_query("update_server_host_info", SHI_END, info,
379                               Scream, NULL))
380       com_err(whoami, status, " while updating server/host info");
381     FreeInfo(info);
382     return(DM_NORMAL);
383 }
384
385
386 addhost(argc, argv)
387 int argc;
388 char **argv;
389 {
390     char *info[SHI_END+1];
391     int status;
392
393     info[SHI_SERVICE] = strsave(argv[1]);
394     info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
395     inithost(info);
396     askhost(info);
397     if (status = do_sms_query("add_server_host_info", 6, info, Scream, NULL))
398       com_err(whoami, status, " while adding server/host info");
399     FreeInfo(info);
400     return(DM_NORMAL);
401 }
402
403
404 delserv(argc, argv)
405 int argc;
406 char **argv;
407 {
408     int status;
409
410     if (status = do_sms_query("delete_server_info", 1, &argv[1], Scream, NULL))
411       com_err(whoami, status, " while deleting server info");
412     return(DM_NORMAL);
413 }
414
415
416 delhost(argc, argv)
417 int argc;
418 char **argv;
419 {
420     int status;
421
422     argv[2] = canonicalize_hostname(argv[2]);
423     if (status = do_sms_query("delete_server_host_info", 2, &argv[1],
424                               Scream, NULL))
425       com_err(whoami, status, " while deleting server/host info");
426     return(DM_NORMAL);
427 }
428
429
430 pserv(argc, argv, count)
431 int argc;
432 char **argv;
433 int *count;
434 {
435     sprintf(buf, "Service %s", argv[0]);
436     Put_message(buf);
437     (*count)++;
438     return(SMS_CONT);
439 }
440
441 phost(argc, argv, count)
442 int argc;
443 char **argv;
444 int *count;
445 {
446     sprintf(buf, "Host %s:%s", argv[0], argv[1]);
447     Put_message(buf);
448     (*count)++;
449     return(SMS_CONT);
450 }
451
452
453 InProgress()
454 {
455     char *argv[6];
456     int status, count = 0;
457
458     argv[0] = argv[2] = "DONTCARE";
459     argv[1] = "TRUE";
460     if ((status = do_sms_query("qualified_get_server", 3, argv, pserv, 
461                                (char *)&count)) &&
462         status != SMS_NO_MATCH)
463       com_err(whoami, status, " while getting servers");
464     argv[0] = "*";
465     argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
466     argv[4] = "TRUE";
467     if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
468                                (char *)&count)) &&
469         status != SMS_NO_MATCH)
470       com_err(whoami, status, " while getting server/hosts");
471     if (!count)
472       strcpy(buf, "Nothing is in progress at this time");
473     else
474       sprintf(buf, "%d update%s in progress at this time", count,
475               count == 1 ? "" : "s");
476     Put_message(buf);
477     return(DM_NORMAL);
478 }
479
480 DcmFailed()
481 {
482     char *argv[6];
483     int status, count = 0;
484
485     argv[0] = argv[1] = "DONTCARE";
486     argv[2] = "TRUE";
487     if ((status = do_sms_query("qualified_get_server", 3, argv, pserv, 
488                                (char *)&count)) &&
489         status != SMS_NO_MATCH)
490       com_err(whoami, status, " while getting servers");
491     argv[0] = "*";
492     argv[1] = argv[2] = argv[3] = argv[4] = "DONTCARE";
493     argv[5] = "TRUE";
494     if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
495                                (char *)&count)) &&
496         status != SMS_NO_MATCH)
497       com_err(whoami, status, " while getting server/hosts");
498     if (!count)
499       strcpy(buf, "Nothing has failed at this time");
500     else
501       sprintf(buf, "%d thing%s ha%s failed at this time", count,
502               count == 1 ? "" : "s", count == 1 ? "s" : "ve");
503     Put_message(buf);
504     return(DM_NORMAL);
505 }
506
507
508 Dcm()
509 {
510     int status;
511     if (status = sms_do_update())
512       com_err(whoami, status, " while triggering update");
513     return(DM_NORMAL);
514 }
515
516
517 char *atot(itime)
518 char *itime;
519 {
520     int time;
521     char *ct, *ctime();
522
523     time = atoi(itime);
524     ct = ctime(&time);
525     ct[24] = 0;
526     return(&ct[4]);
527 }
This page took 0.068903 seconds and 5 git commands to generate.