/* $Header$
+ *
+ * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
+ * For copying and distribution information, please see the file
+ * <mit-copyright.h>.
*/
#include <stdio.h>
#include <strings.h>
#include <ctype.h>
-#include <sms.h>
-#include <sms_app.h>
+#include <moira.h>
+#include <moira_site.h>
#include <menu.h>
#include "mit-copyright.h"
#include "defs.h"
#include "f_defs.h"
#include "globals.h"
-#include "infodefs.h"
extern char *whoami;
static char buf[BUFSIZ];
-char *unparse_interval(), *canonicalize_hostname(), *pgets();
+char *unparse_interval(), *canonicalize_hostname();
char *atot();
#define DCM_ENABLE_FLAG 0
-genable(argc, argv, hint)
+genable(argc, argv, info)
int argc;
char **argv;
-int *hint;
+char **info;
{
- *hint = atoi(argv[0]);
- return(SMS_CONT);
+ info[1] = strsave(argv[0]);
+ return(MR_CONT);
}
EnableDcm(argc, argv)
int argc;
char **argv;
{
- char *qargv[2];
- int value, status;
+ int status;
+ char *info[3];
- qargv[0] = "dcm_enable";
- if (status = sms_query("get_value", 1, qargv, genable, (char *)&value))
+ info[0] = "dcm_enable";
+ if (status = do_mr_query("get_value", 1, info, genable, info))
com_err(whoami, status, " while getting value of dcm_enable");
- sprintf(buf, "%d", value);
- qargv[1] = pgets("Enable value", buf);
- if (status = sms_query("update_value", 2, qargv, Scream, NULL))
+ if (GetValueFromUser("Enable value", &info[1]) == SUB_ERROR)
+ return(DM_NORMAL);
+ if (status = do_mr_query("update_value", 2, info, Scream, NULL))
com_err(whoami, status, " while updating value of dcm_enable");
- free(qargv[1]);
+ FreeAndClear(&info[0], FALSE);
+ FreeAndClear(&info[1], TRUE);
return(DM_NORMAL);
}
{
char tmp[64], *dfgen;
- Put_message("Name Type Owner Modified");
- sprintf(tmp, "%s:%s", argv[11], argv[12]);
- sprintf(buf, "%-10s %-8s %-14s by %s on %s with %s", argv[0], argv[6],
- tmp, argv[14], argv[13], argv[15]);
+ Put_message("Name Type Owner Modified");
+ sprintf(tmp, "%s:%s", argv[SVC_ACE_TYPE], argv[SVC_ACE_NAME]);
+ sprintf(buf, "%-10s %-8s %-11s by %s on %s with %s", argv[SVC_SERVICE],
+ argv[SVC_TYPE], tmp, argv[SVC_MODBY], argv[SVC_MODTIME],
+ argv[SVC_MODWITH]);
Put_message(buf);
sprintf(buf, " Interval %s, Target:%s, Script:%s",
- unparse_interval(atoi(argv[1])), argv[2], argv[3]);
+ unparse_interval(atoi(argv[SVC_INTERVAL])), argv[SVC_TARGET],
+ argv[SVC_SCRIPT]);
Put_message(buf);
- if (atoi(argv[9]))
- sprintf(tmp, "Error %d: %s", atoi(argv[9]), argv[10]);
+ if (atoi(argv[SVC_HARDERROR]))
+ sprintf(tmp, "Error %d: %s", atoi(argv[SVC_HARDERROR]), argv[SVC_ERRMSG]);
else
strcpy(tmp, "No error");
- dfgen = strsave(atot(argv[4]));
- sprintf(buf, " Generated %s; Last Checked %s", dfgen, atot(argv[5]));
+ dfgen = strsave(atot(argv[SVC_DFGEN]));
+ sprintf(buf, " Generated %s; Last Checked %s", dfgen,
+ atot(argv[SVC_DFCHECK]));
free(dfgen);
Put_message(buf);
- sprintf(buf, " %s/%s/%s", atoi(argv[7]) ? "Enabled" : "Disabled",
- atoi(argv[8]) ? "InProgress" : "Idle", tmp);
+ sprintf(buf, " %s/%s/%s", atoi(argv[SVC_ENABLE]) ? "Enabled" : "Disabled",
+ atoi(argv[SVC_INPROGRESS]) ? "InProgress" : "Idle", tmp);
Put_message(buf);
Put_message("");
- return(SMS_CONT);
+ return(MR_CONT);
}
int status;
qargv[0] = argv[1];
- if (status = sms_query("get_server_info", 1, qargv, shserv, NULL))
+ if (status = do_mr_query("get_server_info", 1, qargv, shserv, NULL))
com_err(whoami, status, " while getting server info");
return(DM_NORMAL);
}
int argc;
char **argv;
{
- char *qargv[8], tmp[BUFSIZ];
int status;
+ char *info[SC_END], **askserv();
- qargv[0] = argv[1];
- qargv[1] = pgets("Interval", "1440");
- sprintf(tmp, "/tmp/%s.out", argv[1]);
- qargv[2] = pgets("Target", tmp);
- sprintf(tmp, "/u1/sms/bin/%s.sh", argv[1]);
- qargv[3] = pgets("Script", tmp);
- qargv[4] = pgets("Service type", "UNIQUE");
- qargv[5] = pgets("Enable", "1");
- qargv[6] = pgets("ACE type", "list");
- qargv[7] = pgets("ACE name", "dbadmin");
- if (status = sms_query("add_server_info", 8, qargv, Scream, NULL))
+ initserv(argv[1], info);
+ if (askserv(info) == NULL) {
+ Put_message("Aborted.");
+ return(DM_NORMAL);
+ }
+ if (status = do_mr_query("add_server_info", SC_END, info, Scream, NULL))
com_err(whoami, status, " while updating server info");
+ FreeInfo(info);
return(DM_NORMAL);
}
+char **askserv(info)
+char **info;
+{
+ if (GetValueFromUser("Interval", &info[SC_INTERVAL]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Target", &info[SC_TARGET]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Script", &info[SC_SCRIPT]) == SUB_ERROR)
+ return(NULL);
+ if (GetTypeFromUser("Service type", "service", &info[SC_TYPE]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Enable", &info[SC_ENABLE]) == SUB_ERROR)
+ return(NULL);
+ if (GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]) ==
+ SUB_ERROR)
+ return(NULL);
+ if (strcasecmp("none", info[SC_ACE_TYPE]))
+ if (GetValueFromUser("Ace name", &info[SC_ACE_NAME]) == SUB_ERROR)
+ return(NULL);
+ return(info);
+}
+
gserv(argc, argv, cargv)
int argc;
char **argv;
char **cargv;
{
- cargv[0] = strsave(argv[0]);
- cargv[1] = strsave(argv[1]);
- cargv[2] = strsave(argv[2]);
- cargv[3] = strsave(argv[3]);
- cargv[4] = strsave(argv[6]);
- cargv[5] = strsave(argv[7]);
- cargv[6] = strsave(argv[11]);
- cargv[7] = strsave(argv[12]);
- return(SMS_CONT);
+ cargv[SC_SERVICE] = strsave(argv[SVC_SERVICE]);
+ cargv[SC_INTERVAL] = strsave(argv[SVC_INTERVAL]);
+ cargv[SC_TARGET] = strsave(argv[SVC_TARGET]);
+ cargv[SC_SCRIPT] = strsave(argv[SVC_SCRIPT]);
+ cargv[SC_TYPE] = strsave(argv[SVC_TYPE]);
+ cargv[SC_ENABLE] = strsave(argv[SVC_ENABLE]);
+ cargv[SC_ACE_TYPE] = strsave(argv[SVC_ACE_TYPE]);
+ cargv[SC_ACE_NAME] = strsave(argv[SVC_ACE_NAME]);
+ cargv[SC_END] = NULL;
+ return(MR_CONT);
}
-
-char *pgets(prompt, def)
-char *prompt;
-char *def;
+initserv(name, argv)
+char *name;
+char **argv;
{
- char ibuf[BUFSIZ];
-
- PromptWithDefault(prompt, ibuf, BUFSIZ, def);
- return(strsave(ibuf));
+ char tmp[BUFSIZ];
+
+ argv[SC_SERVICE] = strsave(name);
+ argv[SC_INTERVAL] = strsave("1440");
+ sprintf(tmp, "/tmp/%s.out", name);
+ argv[SC_TARGET] = strsave(tmp);
+ sprintf(tmp, "%s/%s.sh", BIN_DIR, name);
+ argv[SC_SCRIPT] = strsave(tmp);
+ argv[SC_TYPE] = strsave("UNIQUE");
+ argv[SC_ENABLE] = strsave("1");
+ argv[SC_ACE_TYPE] = strsave("LIST");
+ argv[SC_ACE_NAME] = strsave("dbadmin");
+ argv[SC_END] = NULL;
}
int argc;
char **argv;
{
- char *qargv[8];
+ char *qargv[SC_END];
int status;
qargv[0] = (char *)argv[1];
- if (status = sms_query("get_server_info", 1, qargv,gserv,(char *)qargv)) {
+ if (status = do_mr_query("get_server_info", 1,
+ qargv, gserv, (char *)qargv)) {
com_err(whoami, status, " while getting server info");
return(DM_NORMAL);
}
- qargv[1] = pgets("Interval", qargv[1]);
- qargv[2] = pgets("Target", qargv[2]);
- qargv[3] = pgets("Script", qargv[3]);
- qargv[4] = pgets("Service type", qargv[4]);
- qargv[5] = pgets("Enable", qargv[5]);
- qargv[6] = pgets("ACE type", qargv[6]);
- qargv[7] = pgets("ACE name", qargv[7]);
- if (status = sms_query("update_server_info", 8, qargv, Scream, NULL))
+ if (askserv(qargv) == NULL) {
+ Put_message("Aborted.");
+ return(DM_NORMAL);
+ }
+ if (status = do_mr_query("update_server_info", SC_END, qargv, Scream, NULL))
com_err(whoami, status, " while updating server info");
return(DM_NORMAL);
}
{
char tmp[64], *ltt;
- sprintf(buf, "%s:%s mod by %s on %s with %s", argv[1], argv[0],
- argv[14], argv[13], argv[15]);
+ sprintf(buf, "%s:%s mod by %s on %s with %s", argv[SH_MACHINE],
+ argv[SH_SERVICE], argv[SH_MODBY], argv[SH_MODTIME],
+ argv[SH_MODWITH]);
Put_message(buf);
- if (atoi(argv[6]))
- sprintf(tmp, "Error %d: %s", atoi(argv[6]), argv[7]);
+ if (atoi(argv[SH_HOSTERROR]))
+ sprintf(tmp, "Error %d: %s", atoi(argv[SH_HOSTERROR]), argv[SH_ERRMSG]);
else
strcpy(tmp, "No error");
sprintf(buf, " %s/%s/%s/%s/%s",
- atoi(argv[2]) ? "Enabled" : "Disabled",
- atoi(argv[4]) ? "Success" : "Failure",
- atoi(argv[5]) ? "InProgress" : "Idle",
- atoi(argv[3]) ? "Override" : "Normal", tmp);
+ atoi(argv[SH_ENABLE]) ? "Enabled" : "Disabled",
+ atoi(argv[SH_SUCCESS]) ? "Success" : "Failure",
+ atoi(argv[SH_INPROGRESS]) ? "InProgress" : "Idle",
+ atoi(argv[SH_OVERRIDE]) ? "Override" : "Normal", tmp);
Put_message(buf);
Put_message(" Last Try Last Success Value1 Value2 Value3");
- ltt = strsave(atot(argv[8]));
- sprintf(buf, " %-20s %-20s %-9d %-9d %s", ltt, atot(argv[9]),
- atoi(argv[10]), atoi(argv[11]), argv[12]);
+ ltt = strsave(atot(argv[SH_LASTTRY]));
+ sprintf(buf, " %-20s %-20s %-9d %-9d %s", ltt, atot(argv[SH_LASTSUCCESS]),
+ atoi(argv[SH_VALUE1]), atoi(argv[SH_VALUE2]), argv[SH_VALUE3]);
free(ltt);
Put_message(buf);
Put_message("");
- return(SMS_CONT);
+ return(MR_CONT);
}
int argc;
char **argv;
{
- char *qargv[1];
+ char *qargv[2];
int status;
- qargv[0] = argv[1];
- qargv[1] = canonicalize_hostname(argv[2]);
- if (status = sms_query("get_server_host_info", 2, qargv, shhost, NULL))
+ qargv[SHI_SERVICE] = argv[1];
+ qargv[SHI_MACHINE] = canonicalize_hostname(argv[2]);
+ if (status = do_mr_query("get_server_host_info", 2, qargv, shhost, NULL))
com_err(whoami, status, " getting server/host info");
return(DM_NORMAL);
}
char **argv;
{
int status;
- if (status = sms_query("reset_server_error", 1, &argv[1], Scream, NULL))
+ if (status = do_mr_query("reset_server_error", 1, &argv[1], Scream, NULL))
com_err(whoami, status, " while resetting server error");
return(DM_NORMAL);
}
char **argv;
{
int status;
- char *qargv[5];
+ char *qargv[6], buf[BUFSIZ];
+ sprintf(buf, "Reset state for service %s (Y/N)", argv[1]);
+ if (!Confirm(buf))
+ return(DM_NORMAL);
qargv[0] = argv[1];
qargv[1] = "0";
qargv[2] = "0";
qargv[3] = "0";
qargv[4] = "0";
qargv[5] = "";
- if (status = sms_query("set_server_internal_flags", 6, qargv, Scream, NULL))
+ if (status = do_mr_query("set_server_internal_flags", 6, qargv,
+ Scream, NULL))
com_err(whoami, status, " while resetting server error");
return(DM_NORMAL);
}
int status;
argv[2] = canonicalize_hostname(argv[2]);
- if (status = sms_query("reset_server_host_error",2, &argv[1], Scream, NULL))
+ if (status = do_mr_query("reset_server_host_error", 2, &argv[1],
+ Scream, NULL))
com_err(whoami, status, " while resetting server/host error");
return(DM_NORMAL);
}
char **argv;
{
int status;
- char *qargv[9];
+ char *qargv[9], buf[BUFSIZ];
+ sprintf(buf, "Reset state for service %s on host %s (Y/N)", argv[1],
+ canonicalize_hostname(argv[2]));
+ if (!Confirm(buf))
+ return(DM_NORMAL);
qargv[0] = argv[1];
qargv[1] = canonicalize_hostname(argv[2]);
qargv[2] = "0";
qargv[6] = "";
qargv[7] = "0";
qargv[8] = "0";
- if (status = sms_query("set_server_host_internal", 9, qargv, Scream, NULL))
+ if (status = do_mr_query("set_server_host_internal", 9, qargv,
+ Scream, NULL))
com_err(whoami, status, " while resetting server/host error");
return(DM_NORMAL);
}
int status;
argv[2] = canonicalize_hostname(argv[2]);
- if (status = sms_query("set_server_host_override",2,&argv[1], Scream, NULL))
+ if (status = do_mr_query("set_server_host_override", 2, &argv[1],
+ Scream, NULL))
com_err(whoami, status, " while setting server/host override");
return(DM_NORMAL);
}
char **argv;
char **cargv;
{
- cargv[0] = strsave(argv[0]);
- cargv[1] = strsave(argv[1]);
- cargv[2] = strsave(argv[2]);
- cargv[3] = strsave(argv[10]);
- cargv[4] = strsave(argv[11]);
- cargv[5] = strsave(argv[12]);
- return(SMS_CONT);
+ cargv[SHI_SERVICE] = strsave(argv[SH_SERVICE]);
+ cargv[SHI_MACHINE] = strsave(argv[SH_MACHINE]);
+ cargv[SHI_ENABLE] = strsave(argv[SH_ENABLE]);
+ cargv[SHI_VALUE1] = strsave(argv[SH_VALUE1]);
+ cargv[SHI_VALUE2] = strsave(argv[SH_VALUE2]);
+ cargv[SHI_VALUE3] = strsave(argv[SH_VALUE3]);
+ cargv[SHI_END] = NULL;
+ return(MR_CONT);
+}
+
+
+inithost(info)
+char **info;
+{
+ info[SHI_MACHINE] = strsave(canonicalize_hostname(info[SH_MACHINE]));
+ info[SHI_ENABLE] = strsave("1");
+ info[SHI_VALUE1] = strsave("0");
+ info[SHI_VALUE2] = strsave("0");
+ info[SHI_VALUE3] = strsave("");
+ info[SHI_END] = NULL;
+}
+
+
+char **askhost(info)
+char **info;
+{
+ if (GetValueFromUser("Enable", &info[SHI_ENABLE]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Value 1", &info[SHI_VALUE1]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Value 2", &info[SHI_VALUE2]) == SUB_ERROR)
+ return(NULL);
+ if (GetValueFromUser("Value 3", &info[SHI_VALUE3]) == SUB_ERROR)
+ return(NULL);
+ return(info);
}
int argc;
char **argv;
{
- char *qargv[6];
+ char *info[SHI_END];
int status;
- qargv[0] = (char *)argv[1];
- qargv[1] = canonicalize_hostname(argv[2]);
- if (status = sms_query("get_server_host_info", 2, qargv, ghost,
- (char *)qargv)) {
+ info[SHI_SERVICE] = strsave(argv[1]);
+ info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
+ if (status = do_mr_query("get_server_host_info", 2, info, ghost,
+ (char *)info)) {
com_err(whoami, status, " while getting server/host info");
return(DM_NORMAL);
}
- qargv[1] = canonicalize_hostname(argv[2]);
- qargv[2] = pgets("Enable", qargv[2]);
- qargv[3] = pgets("Value 1", qargv[3]);
- qargv[4] = pgets("Value 2", qargv[4]);
- qargv[5] = pgets("Value 3", qargv[5]);
- if (status = sms_query("update_server_host_info", 6, qargv, Scream, NULL))
+ if (askhost(info) == NULL) {
+ Put_message("Aborted.");
+ return(DM_NORMAL);
+ }
+ if (status = do_mr_query("update_server_host_info", SHI_END, info,
+ Scream, NULL))
com_err(whoami, status, " while updating server/host info");
+ FreeInfo(info);
return(DM_NORMAL);
}
int argc;
char **argv;
{
- char *qargv[6];
+ char *info[SHI_END];
int status;
- qargv[0] = argv[1];
- qargv[1] = canonicalize_hostname(argv[2]);
- qargv[2] = pgets("Enable", "1");
- qargv[3] = pgets("Value 1", "0");
- qargv[4] = pgets("Value 2", "0");
- qargv[5] = pgets("Value 3", "");
- if (status = sms_query("add_server_host_info", 6, qargv, Scream, NULL))
+ info[SHI_SERVICE] = strsave(argv[1]);
+ info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
+ inithost(info);
+ if (askhost(info) == NULL) {
+ Put_message("Aborted.");
+ return(DM_NORMAL);
+ }
+ if (status = do_mr_query("add_server_host_info", SHI_END, info,
+ Scream, NULL))
com_err(whoami, status, " while adding server/host info");
+ FreeInfo(info);
return(DM_NORMAL);
}
{
int status;
- if (status = sms_query("delete_server_info", 1, &argv[1], Scream, NULL))
+ if (status = do_mr_query("delete_server_info", 1, &argv[1], Scream, NULL))
com_err(whoami, status, " while deleting server info");
return(DM_NORMAL);
}
int status;
argv[2] = canonicalize_hostname(argv[2]);
- if (status = sms_query("delete_server_host_info",2, &argv[1], Scream, NULL))
+ if (status = do_mr_query("delete_server_host_info", 2, &argv[1],
+ Scream, NULL))
com_err(whoami, status, " while deleting server/host info");
return(DM_NORMAL);
}
sprintf(buf, "Service %s", argv[0]);
Put_message(buf);
(*count)++;
- return(SMS_CONT);
+ return(MR_CONT);
}
phost(argc, argv, count)
sprintf(buf, "Host %s:%s", argv[0], argv[1]);
Put_message(buf);
(*count)++;
- return(SMS_CONT);
+ return(MR_CONT);
}
argv[0] = argv[2] = "DONTCARE";
argv[1] = "TRUE";
- if ((status = sms_query("qualified_get_server", 3, argv, pserv,
- (char *)&count)) &&
- status != SMS_NO_MATCH)
+ if ((status = do_mr_query("qualified_get_server", 3, argv, pserv,
+ (char *)&count)) &&
+ status != MR_NO_MATCH)
com_err(whoami, status, " while getting servers");
argv[0] = "*";
argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
argv[4] = "TRUE";
- if ((status = sms_query("qualified_get_server_host",6,argv,phost,
- (char *)&count)) &&
- status != SMS_NO_MATCH)
+ if ((status = do_mr_query("qualified_get_server_host",6,argv,phost,
+ (char *)&count)) &&
+ status != MR_NO_MATCH)
com_err(whoami, status, " while getting server/hosts");
if (!count)
strcpy(buf, "Nothing is in progress at this time");
argv[0] = argv[1] = "DONTCARE";
argv[2] = "TRUE";
- if ((status = sms_query("qualified_get_server", 3, argv, pserv,
- (char *)&count)) &&
- status != SMS_NO_MATCH)
+ if ((status = do_mr_query("qualified_get_server", 3, argv, pserv,
+ (char *)&count)) &&
+ status != MR_NO_MATCH)
com_err(whoami, status, " while getting servers");
argv[0] = "*";
argv[1] = argv[2] = argv[3] = argv[4] = "DONTCARE";
argv[5] = "TRUE";
- if ((status = sms_query("qualified_get_server_host",6,argv,phost,
- (char *)&count)) &&
- status != SMS_NO_MATCH)
+ if ((status = do_mr_query("qualified_get_server_host",6,argv,phost,
+ (char *)&count)) &&
+ status != MR_NO_MATCH)
com_err(whoami, status, " while getting server/hosts");
if (!count)
strcpy(buf, "Nothing has failed at this time");
Dcm()
{
int status;
- if (status = sms_do_update())
+ if (status = mr_do_update())
com_err(whoami, status, " while triggering update");
return(DM_NORMAL);
}