From f93427cdde4b201478cff147b197bb12f8221362 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 29 Dec 2009 17:05:23 +0100 Subject: [PATCH] daemons: handle arguments correctly and uniformly Of all daemons, only rapi did abort when given argument. None of our daemons use any arguments, but they accepted them blindly. This is a very bad experience for the user. This patch adds checking and exiting in all daemons, in a uniform way. One other option would have been to add a flag to GenericMain (noargs=True). Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Olivier Tharan <olive@google.com> --- daemons/ganeti-confd | 4 ++++ daemons/ganeti-masterd | 4 ++++ daemons/ganeti-noded | 12 +++++++++++- daemons/ganeti-rapi | 6 +++--- daemons/ganeti-watcher | 6 +++++- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/daemons/ganeti-confd b/daemons/ganeti-confd index de1270090..27b11a477 100755 --- a/daemons/ganeti-confd +++ b/daemons/ganeti-confd @@ -329,6 +329,10 @@ def CheckConfd(options, args): """Initial checks whether to run exit with a failure. """ + if args: # confd doesn't take any arguments + print >> sys.stderr, ("Usage: %s [-f] [-d] [-b ADDRESS]" % sys.argv[0]) + sys.exit(constants.EXIT_FAILURE) + # TODO: collapse HMAC daemons handling in daemons GenericMain, when we'll # have more than one. if not os.path.isfile(constants.HMAC_CLUSTER_KEY): diff --git a/daemons/ganeti-masterd b/daemons/ganeti-masterd index 295141022..81becca22 100755 --- a/daemons/ganeti-masterd +++ b/daemons/ganeti-masterd @@ -538,6 +538,10 @@ def CheckMasterd(options, args): """Initial checks whether to run or exit with a failure. """ + if args: # masterd doesn't take any arguments + print >> sys.stderr, ("Usage: %s [-f] [-d]" % sys.argv[0]) + sys.exit(constants.EXIT_FAILURE) + ssconf.CheckMaster(options.debug) # If CheckMaster didn't fail we believe we are the master, but we have to diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded index 4e24224ca..9aa71870c 100755 --- a/daemons/ganeti-noded +++ b/daemons/ganeti-noded @@ -787,6 +787,16 @@ class NodeHttpServer(http.server.HttpServer): # pylint: disable-msg=R0904 return backend.ValidateHVParams(hvname, hvparams) +def CheckNoded(_, args): + """Initial checks whether to run or exit with a failure. + + """ + if args: # noded doesn't take any arguments + print >> sys.stderr, ("Usage: %s [-f] [-d] [-p port] [-b ADDRESS]" % + sys.argv[0]) + sys.exit(constants.EXIT_FAILURE) + + def ExecNoded(options, args): """Main node daemon function, executed with the PID file held. @@ -824,7 +834,7 @@ def main(): dirs = [(val, constants.RUN_DIRS_MODE) for val in constants.SUB_RUN_DIRS] dirs.append((constants.LOG_OS_DIR, 0750)) dirs.append((constants.LOCK_DIR, 1777)) - daemon.GenericMain(constants.NODED, parser, dirs, None, ExecNoded) + daemon.GenericMain(constants.NODED, parser, dirs, CheckNoded, ExecNoded) if __name__ == '__main__': diff --git a/daemons/ganeti-rapi b/daemons/ganeti-rapi index 48816c10e..8fd5265b4 100755 --- a/daemons/ganeti-rapi +++ b/daemons/ganeti-rapi @@ -187,9 +187,9 @@ def CheckRapi(options, args): """Initial checks whether to run or exit with a failure. """ - if len(args) != 0: - print >> sys.stderr, "Usage: %s [-f] [-d] [-p port] [-b ADDRESS]" % \ - sys.argv[0] + if args: # rapi doesn't take any arguments + print >> sys.stderr, ("Usage: %s [-f] [-d] [-p port] [-b ADDRESS]" % + sys.argv[0]) sys.exit(constants.EXIT_FAILURE) ssconf.CheckMaster(options.debug) diff --git a/daemons/ganeti-watcher b/daemons/ganeti-watcher index d82b8ba00..6c97d40b7 100755 --- a/daemons/ganeti-watcher +++ b/daemons/ganeti-watcher @@ -470,7 +470,11 @@ def main(): """ global client # pylint: disable-msg=W0603 - options, _ = ParseOptions() + options, args = ParseOptions() + + if args: # watcher doesn't take any arguments + print >> sys.stderr, ("Usage: %s [-f] " % sys.argv[0]) + sys.exit(constants.EXIT_FAILURE) utils.SetupLogging(constants.LOG_WATCHER, debug=options.debug, stderr_logging=options.debug) -- GitLab