diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2007-12-02 01:33:14 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2007-12-02 01:33:14 +0000 |
commit | 54da813bc88a19e7227e30b4160de6aa6ccb7d7b (patch) | |
tree | 4fbde440258573dadd1efa725e6888d0d685e1a1 /src | |
parent | ab6ac030488c8c1cc8cd9c537f5e468b3d0e2678 (diff) | |
download | bcfg2-54da813bc88a19e7227e30b4160de6aa6ccb7d7b.tar.gz bcfg2-54da813bc88a19e7227e30b4160de6aa6ccb7d7b.tar.bz2 bcfg2-54da813bc88a19e7227e30b4160de6aa6ccb7d7b.zip |
Harden frame against tool driver syntax errors (Related to #507) [bugfix]
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4020 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/Client/Frame.py | 7 | ||||
-rw-r--r-- | src/lib/Client/Tools/DebInit.py | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/Client/Frame.py b/src/lib/Client/Frame.py index b19594402..b341d65fd 100644 --- a/src/lib/Client/Frame.py +++ b/src/lib/Client/Frame.py @@ -61,10 +61,15 @@ class Frame: for tool in tools: tool_class = "Bcfg2.Client.Tools.%s" % tool try: - tclass[tool] = getattr(__import__(tool_class, globals(), locals(), ['*']), + tclass[tool] = getattr(__import__(tool_class, globals(), + locals(), ['*']), tool) except ImportError: continue + except: + self.logger.error("Tool %s unexpectedly failed to load" % tool, + exc_info=1) + for tool in tclass.values(): try: diff --git a/src/lib/Client/Tools/DebInit.py b/src/lib/Client/Tools/DebInit.py index 9f52861a4..a07ffb08c 100644 --- a/src/lib/Client/Tools/DebInit.py +++ b/src/lib/Client/Tools/DebInit.py @@ -45,8 +45,12 @@ class DebInit(Bcfg2.Client.Tools.SvcTool): self.cmd.run("/usr/sbin/invoke-rc.d %s stop" % (entry.get('name'))) cmdrc = self.cmd.run("/usr/sbin/update-rc.d -f %s remove" % entry.get('name'))[0] else: - cmdrc = self.cmd.run("/usr/sbin/update-rc.d %s defaults" % \ - (entry.get('name')))[0] + if entry.get('start', False): + cmd = "/usr/sbin/update-rc.d %%s start %s 2 3 4 5 . stop %s 0 1 6" + cmd = cmd % (entry.get('start'), entry.get('stop', '20')) + else: + cmd = "/usr/sbin/update-rc.d %s defaults" + cmdrc = self.cmd.run(cmd % (entry.get('name')))[0] return cmdrc == 0 def FindExtra(self): |