scriptmgr: more error checking, dont die on user mistakes
authorMarko Kreen <markokr@gmail.com>
Mon, 16 Jul 2007 14:15:48 +0000 (14:15 +0000)
committerMarko Kreen <markokr@gmail.com>
Mon, 16 Jul 2007 14:15:48 +0000 (14:15 +0000)
scripts/scriptmgr.py

index 2ee742b285dd0a4397f2ce5a9c3e93595b9b9aeb..8aeb6fba5ded93b44ad5cebcdb50daf092e12a43 100755 (executable)
@@ -119,6 +119,9 @@ class ScriptMgr(skytools.DBScript):
             print job
 
     def cmd_start(self, job_name):
+        if job_name not in self.job_map:
+            self.log.error('Unknown job: '+job_name)
+            return 1
         job = self.job_map[job_name]
         if job['disabled']:
             self.log.info("Skipping %s" % job_name)
@@ -139,6 +142,9 @@ class ScriptMgr(skytools.DBScript):
             return 0
 
     def cmd_stop(self, job_name):
+        if job_name not in self.job_map:
+            self.log.error('Unknown job: '+job_name)
+            return
         job = self.job_map[job_name]
         if job['disabled']:
             self.log.info("Skipping %s" % job_name)
@@ -147,6 +153,9 @@ class ScriptMgr(skytools.DBScript):
         self.signal_job(job, signal.SIGINT)
 
     def cmd_reload(self, job_name):
+        if job_name not in self.job_map:
+            self.log.error('Unknown job: '+job_name)
+            return
         job = self.job_map[job_name]
         if job['disabled']:
             self.log.info("Skipping %s" % job_name)
@@ -159,7 +168,10 @@ class ScriptMgr(skytools.DBScript):
         pidfile = job['pidfile']
         if os.path.isfile(pidfile):
             pid = int(open(pidfile).read())
-            os.kill(pid, sig)
+            try:
+                os.kill(pid, sig)
+            except Exception, det:
+                self.log.warning("Signaling %s failed: %s" % (job['job_name'], str(det)))
         else:
             self.log.warning("Job %s not running" % job['job_name'])