From 6f80cd54416141829e951cdd8abc25db93746386 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Wed, 24 Dec 2014 19:07:08 +0900 Subject: [PATCH] Add option "--initdb-no-pwprompt" Previously repmgr passed the -W flag to initdb, which forced manual input of a password; this option removes the -W flag to make repetitive testing easier. --- repmgr.c | 12 +++++++++--- repmgr.h | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/repmgr.c b/repmgr.c index 8a9482c0..fbafda0e 100644 --- a/repmgr.c +++ b/repmgr.c @@ -112,6 +112,7 @@ main(int argc, char **argv) {"ignore-rsync-warning", no_argument, NULL, 'I'}, {"min-recovery-apply-delay", required_argument, NULL, 'r'}, {"verbose", no_argument, NULL, 'v'}, + {"initdb-no-pwprompt", no_argument, NULL, 1}, {NULL, 0, NULL, 0} }; @@ -212,6 +213,9 @@ main(int argc, char **argv) case 'v': runtime_options.verbose = true; break; + case 1: + runtime_options.initdb_no_pwprompt = true; + break; default: usage(); exit(ERR_BAD_CONFIG); @@ -1716,8 +1720,10 @@ do_witness_create(void) if (!runtime_options.superuser[0]) strncpy(runtime_options.superuser, "postgres", MAXLEN); - sprintf(script, "%s/pg_ctl %s -D %s init -o \"-W -U %s\"", options.pg_bindir, - options.pgctl_options, runtime_options.dest_dir, runtime_options.superuser); + sprintf(script, "%s/pg_ctl %s -D %s init -o \"%s-U %s\"", options.pg_bindir, + options.pgctl_options, runtime_options.dest_dir, + runtime_options.initdb_no_pwprompt ? "" : "-W ", + runtime_options.superuser); log_info("Initialize cluster for witness: %s.\n", script); r = system(script); @@ -1955,7 +1961,7 @@ help(const char *progname) " to happen\n")); printf(_(" -W, --wait wait for a master to appear\n")); printf(_(" -r, --min-recovery-apply-delay=VALUE enable recovery time delay, value has to be a valid time atom (e.g. 5min)")); - + printf(_(" --initdb-no-pwprompt don't require superuser password when running initdb\n")); printf(_("\n%s performs some tasks like clone a node, promote it or making follow\n"), progname); printf(_("another node and then exits.\n\n")); printf(_("COMMANDS:\n")); diff --git a/repmgr.h b/repmgr.h index 8548cbfd..c7c43f1e 100644 --- a/repmgr.h +++ b/repmgr.h @@ -62,6 +62,7 @@ typedef struct bool force; bool wait_for_master; bool ignore_rsync_warn; + bool initdb_no_pwprompt; char masterport[MAXLEN]; char localport[MAXLEN]; @@ -72,6 +73,6 @@ typedef struct char min_recovery_apply_delay[MAXLEN]; } t_runtime_options; -#define T_RUNTIME_OPTIONS_INITIALIZER { "", "", "", "", "", "", "", DEFAULT_WAL_KEEP_SEGMENTS, false, false, false, false, "", "", 0, "" } +#define T_RUNTIME_OPTIONS_INITIALIZER { "", "", "", "", "", "", "", DEFAULT_WAL_KEEP_SEGMENTS, false, false, false, false, false, "", "", 0, "" } #endif