diff options
-rw-r--r-- | src/lib/Client/Frame.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/Client/Frame.py b/src/lib/Client/Frame.py index 92fa3ca7b..a164e9d2e 100644 --- a/src/lib/Client/Frame.py +++ b/src/lib/Client/Frame.py @@ -80,10 +80,15 @@ class Frame: if not self.dryrun: for cfile in [cfl for cfl in config.findall(".//ConfigFile") \ if cfl.get('name') in self.__important__]: - tool = [t for t in self.tools if t.handlesEntry(cfile)][0] - self.states[cfile] = tool.VerifyConfigFile(cfile, []) - if not self.states[cfile]: - tool.InstallConfigFile(cfile) + tl= [t for t in self.tools if t.handlesEntry(cfile) \ + and t.canVerify(cfile)] + if tl: + if not tl[0].VerifyConfigFile(cfile, []): + try: + self.states[cfile] = tool.InstallConfigFile(cfile) + except: + self.logger.error("Unexpected tool failure", + exc_info=1) # find entries not handled by any tools problems = [entry for struct in config for entry in struct if entry not in self.handled] |