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