glfsheal: add a '--nolog' flag
....and if set, change the log level to GF_LOG_NONE. This is useful for monitoring applications which invoke the heal info set of commands once every minute, leading to un-necessary glfsheal* logs in /var/log/glusterfs/. For example, we can now run `gluster volume heal <VOLNAME> info --nolog` `gluster volume heal <VOLNAME> info split-brain --nolog` etc. The default log level is still retained at GF_LOG_INFO. The patch also changes glfsheal internally to accept '--xml' instead of 'xml'. Note: The --nolog flag is *not* displayed in the help anywhere, for the sake of consistency in how the other flags are not displayed anywhere in the help. fixes: bz#1643519 Change-Id: Ia08b6aa6e4a0548379db7e313dd4411ebc66f206 Signed-off-by: Ravishankar N <ravishankar@redhat.com>
This commit is contained in:
parent
b346c84ad5
commit
fc9889d037
@ -2844,7 +2844,7 @@ cli_launch_glfs_heal(int heal_op, dict_t *options)
|
||||
switch (heal_op) {
|
||||
case GF_SHD_OP_INDEX_SUMMARY:
|
||||
if (global_state->mode & GLUSTER_MODE_XML) {
|
||||
runner_add_args(&runner, "xml", NULL);
|
||||
runner_add_args(&runner, "--xml", NULL);
|
||||
}
|
||||
break;
|
||||
case GF_SHD_OP_SBRAIN_HEAL_FROM_BIGGER_FILE:
|
||||
@ -2866,7 +2866,7 @@ cli_launch_glfs_heal(int heal_op, dict_t *options)
|
||||
case GF_SHD_OP_SPLIT_BRAIN_FILES:
|
||||
runner_add_args(&runner, "split-brain-info", NULL);
|
||||
if (global_state->mode & GLUSTER_MODE_XML) {
|
||||
runner_add_args(&runner, "xml", NULL);
|
||||
runner_add_args(&runner, "--xml", NULL);
|
||||
}
|
||||
break;
|
||||
case GF_SHD_OP_GRANULAR_ENTRY_HEAL_ENABLE:
|
||||
@ -2876,13 +2876,15 @@ cli_launch_glfs_heal(int heal_op, dict_t *options)
|
||||
case GF_SHD_OP_HEAL_SUMMARY:
|
||||
runner_add_args(&runner, "info-summary", NULL);
|
||||
if (global_state->mode & GLUSTER_MODE_XML) {
|
||||
runner_add_args(&runner, "xml", NULL);
|
||||
runner_add_args(&runner, "--xml", NULL);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
if (global_state->mode & GLUSTER_MODE_GLFSHEAL_NOLOG)
|
||||
runner_add_args(&runner, "--nolog", NULL);
|
||||
ret = runner_start(&runner);
|
||||
if (ret == -1)
|
||||
goto out;
|
||||
|
@ -345,6 +345,11 @@ cli_opt_parse(char *opt, struct cli_state *state)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(opt, "nolog") == 0) {
|
||||
state->mode |= GLUSTER_MODE_GLFSHEAL_NOLOG;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(opt, "wignore-partition") == 0) {
|
||||
state->mode |= GLUSTER_MODE_WIGNORE_PARTITION;
|
||||
return 0;
|
||||
|
@ -61,6 +61,7 @@ typedef enum {
|
||||
#define GLUSTER_MODE_XML (1 << 2)
|
||||
#define GLUSTER_MODE_WIGNORE (1 << 3)
|
||||
#define GLUSTER_MODE_WIGNORE_PARTITION (1 << 4)
|
||||
#define GLUSTER_MODE_GLFSHEAL_NOLOG (1 << 5)
|
||||
|
||||
#define GLUSTERD_GET_QUOTA_LIST_MOUNT_PATH(abspath, volname, path) \
|
||||
do { \
|
||||
|
@ -40,6 +40,9 @@ xmlDocPtr glfsh_doc = NULL;
|
||||
ret = 0; \
|
||||
} while (0)
|
||||
|
||||
#define MODE_XML (1 << 0)
|
||||
#define MODE_NO_LOG (1 << 1)
|
||||
|
||||
typedef struct num_entries {
|
||||
uint64_t num_entries;
|
||||
uint64_t pending_entries;
|
||||
@ -1508,6 +1511,28 @@ glfsh_info_t glfsh_xml_output = {
|
||||
.end = glfsh_xml_end};
|
||||
#endif
|
||||
|
||||
static void
|
||||
parse_flags(int *argc, char **argv, int *flags)
|
||||
{
|
||||
int i = 0;
|
||||
char *opt = NULL;
|
||||
int count = 0;
|
||||
|
||||
for (i = 0; i < *argc; i++) {
|
||||
opt = strtail(argv[i], "--");
|
||||
if (!opt)
|
||||
continue;
|
||||
if (strcmp(opt, "nolog") == 0) {
|
||||
*flags |= MODE_NO_LOG;
|
||||
count++;
|
||||
} else if (strcmp(opt, "xml") == 0) {
|
||||
*flags |= MODE_XML;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
*argc = *argc - count;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -1523,6 +1548,8 @@ main(int argc, char **argv)
|
||||
char *op_errstr = NULL;
|
||||
char *socket_filepath = NULL;
|
||||
gf_xl_afr_op_t heal_op = -1;
|
||||
gf_loglevel_t log_level = GF_LOG_INFO;
|
||||
int flags = 0;
|
||||
|
||||
if (argc < 2) {
|
||||
printf(USAGE_STR, argv[0]);
|
||||
@ -1535,6 +1562,13 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
volname = argv[1];
|
||||
|
||||
parse_flags(&argc, argv, &flags);
|
||||
if (flags & MODE_NO_LOG)
|
||||
log_level = GF_LOG_NONE;
|
||||
if (flags & MODE_XML)
|
||||
is_xml = 1;
|
||||
|
||||
switch (argc) {
|
||||
case 2:
|
||||
heal_op = GF_SHD_OP_INDEX_SUMMARY;
|
||||
@ -1542,9 +1576,6 @@ main(int argc, char **argv)
|
||||
case 3:
|
||||
if (!strcmp(argv[2], "split-brain-info")) {
|
||||
heal_op = GF_SHD_OP_SPLIT_BRAIN_FILES;
|
||||
} else if (!strcmp(argv[2], "xml")) {
|
||||
heal_op = GF_SHD_OP_INDEX_SUMMARY;
|
||||
is_xml = 1;
|
||||
} else if (!strcmp(argv[2], "granular-entry-heal-op")) {
|
||||
heal_op = GF_SHD_OP_GRANULAR_ENTRY_HEAL_ENABLE;
|
||||
} else if (!strcmp(argv[2], "info-summary")) {
|
||||
@ -1556,15 +1587,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if ((!strcmp(argv[2], "split-brain-info")) &&
|
||||
(!strcmp(argv[3], "xml"))) {
|
||||
heal_op = GF_SHD_OP_SPLIT_BRAIN_FILES;
|
||||
is_xml = 1;
|
||||
} else if ((!strcmp(argv[2], "info-summary")) &&
|
||||
(!strcmp(argv[3], "xml"))) {
|
||||
heal_op = GF_SHD_OP_HEAL_SUMMARY;
|
||||
is_xml = 1;
|
||||
} else if (!strcmp(argv[2], "bigger-file")) {
|
||||
if (!strcmp(argv[2], "bigger-file")) {
|
||||
heal_op = GF_SHD_OP_SBRAIN_HEAL_FROM_BIGGER_FILE;
|
||||
file = argv[3];
|
||||
} else if (!strcmp(argv[2], "latest-mtime")) {
|
||||
@ -1601,7 +1624,15 @@ main(int argc, char **argv)
|
||||
glfsh_output = &glfsh_human_readable;
|
||||
if (is_xml) {
|
||||
#if (HAVE_LIB_XML)
|
||||
glfsh_output = &glfsh_xml_output;
|
||||
if ((heal_op == GF_SHD_OP_INDEX_SUMMARY) ||
|
||||
(heal_op == GF_SHD_OP_SPLIT_BRAIN_FILES) ||
|
||||
(heal_op == GF_SHD_OP_HEAL_SUMMARY)) {
|
||||
glfsh_output = &glfsh_xml_output;
|
||||
} else {
|
||||
printf(USAGE_STR, argv[0]);
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
#else
|
||||
/*No point doing anything, just fail the command*/
|
||||
exit(EXIT_FAILURE);
|
||||
@ -1647,7 +1678,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
snprintf(logfilepath, sizeof(logfilepath),
|
||||
DEFAULT_HEAL_LOG_FILE_DIRECTORY "/glfsheal-%s.log", volname);
|
||||
ret = glfs_set_logging(fs, logfilepath, GF_LOG_INFO);
|
||||
ret = glfs_set_logging(fs, logfilepath, log_level);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
gf_asprintf(&op_errstr,
|
||||
|
Loading…
x
Reference in New Issue
Block a user