diff options
author | martinko | 2012-07-25 08:51:25 +0000 |
---|---|---|
committer | martinko | 2012-07-25 08:51:25 +0000 |
commit | 14110608cf88677ad08ee9c3144d564d0af0581d (patch) | |
tree | 03ecde1f4ba5519954900f521541f850d1ba639a | |
parent | 575e5cdfac67151301cec4f8355066ec0a75cb78 (diff) |
scripts/scriptmgr.py: status command can optionally be more selective
-rwxr-xr-x | scripts/scriptmgr.py | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/scripts/scriptmgr.py b/scripts/scriptmgr.py index 58e60ec9..5cba34c0 100755 --- a/scripts/scriptmgr.py +++ b/scripts/scriptmgr.py @@ -54,11 +54,11 @@ command_usage = """ %prog [options] INI CMD [subcmd args] Commands: - start [-a | -t=service | jobname ...] start job(s) - stop [-a | -t=service | jobname ...] stop job(s) - restart [-a | -t=service | jobname ...] restart job(s) - reload [-a | -t=service | jobname ...] send reload signal - status + start -a | -t=service | jobname [...] start job(s) + stop -a | -t=service | jobname [...] stop job(s) + restart -a | -t=service | jobname [...] restart job(s) + reload -a | -t=service | jobname [...] send reload signal + status [-a | -t=service | jobname ...] """ def job_sort_cmp(j1, j2): @@ -150,8 +150,13 @@ class ScriptMgr(skytools.DBScript): self.job_list.append(job) self.job_map[job['job_name']] = job - def cmd_status(self): - for job in self.job_list: + def cmd_status (self, jobs): + for jn in jobs: + try: + job = self.job_map[jn] + except KeyError: + self.log.error ("Unknown job: %s", jn) + continue os.chdir(job['cwd']) cf = skytools.Config(job['service'], job['config']) pidfile = job['pidfile'] @@ -167,8 +172,13 @@ class ScriptMgr(skytools.DBScript): else: print(" STOPPED [%s] %s" % (svc, name)) - def cmd_info(self): - for job in self.job_list: + def cmd_info (self, jobs): + for jn in jobs: + try: + job = self.job_map[jn] + except KeyError: + self.log.error ("Unknown job: %s", jn) + continue print(job) def cmd_start(self, job_name): @@ -254,12 +264,18 @@ class ScriptMgr(skytools.DBScript): self.job_list = [] self.job_map = {} self.load_jobs() + self.job_list.sort(job_sort_cmp) if len(self.args) < 2: print("need command") sys.exit(1) + cmd = self.args[1] jobs = self.args[2:] + + if cmd in ["status", "info"] and len(jobs) == 0 and not self.options.type: + self.options.all = True + if len(jobs) == 0 and self.options.all: for job in self.job_list: jobs.append(job['job_name']) @@ -268,14 +284,11 @@ class ScriptMgr(skytools.DBScript): if job['service'] == self.options.type: jobs.append(job['job_name']) - self.job_list.sort(job_sort_cmp) - - cmd = self.args[1] if cmd == "status": - self.cmd_status() + self.cmd_status(jobs) return elif cmd == "info": - self.cmd_info() + self.cmd_info(jobs) return if len(jobs) == 0: |