summaryrefslogtreecommitdiffstats
path: root/build/lib/Bcfg2/Client/Tools/Action.py
diff options
context:
space:
mode:
Diffstat (limited to 'build/lib/Bcfg2/Client/Tools/Action.py')
-rw-r--r--build/lib/Bcfg2/Client/Tools/Action.py83
1 files changed, 0 insertions, 83 deletions
diff --git a/build/lib/Bcfg2/Client/Tools/Action.py b/build/lib/Bcfg2/Client/Tools/Action.py
deleted file mode 100644
index 452788f94..000000000
--- a/build/lib/Bcfg2/Client/Tools/Action.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""Action driver"""
-__revision__ = '$Revision$'
-
-import Bcfg2.Client.Tools
-
-"""
-<Action timing='pre|post|both'
- name='name'
- command='cmd text'
- when='always|modified'
- status='ignore|check'/>
-<PostInstall name='foo'/>
- => <Action timing='post'
- when='modified'
- name='n'
- command='foo'
- status='ignore'/>
-"""
-
-
-class Action(Bcfg2.Client.Tools.Tool):
- """Implement Actions"""
- name = 'Action'
- __handles__ = [('PostInstall', None), ('Action', None)]
- __req__ = {'PostInstall': ['name'],
- 'Action': ['name', 'timing', 'when', 'command', 'status']}
-
- def RunAction(self, entry):
- """This method handles command execution and status return."""
- if not self.setup['dryrun']:
- if self.setup['interactive']:
- prompt = ('Run Action %s, %s: (y/N): ' %
- (entry.get('name'), entry.get('command')))
- if raw_input(prompt) not in ['y', 'Y']:
- return False
- if self.setup['servicemode'] == 'build':
- if entry.get('build', 'true') == 'false':
- self.logger.debug("Action: Deferring execution of %s due to build mode" % (entry.get('command')))
- return False
- self.logger.debug("Running Action %s" % (entry.get('name')))
- rc = self.cmd.run(entry.get('command'))[0]
- self.logger.debug("Action: %s got rc %s" % (entry.get('command'), rc))
- entry.set('rc', str(rc))
- if entry.get('status', 'check') == 'ignore':
- return True
- else:
- return rc == 0
- else:
- self.logger.debug("In dryrun mode: not running action:\n %s" %
- (entry.get('name')))
- return False
-
- def VerifyAction(self, dummy, _):
- """Actions always verify true."""
- return True
-
- def VerifyPostInstall(self, dummy, _):
- """Actions always verify true."""
- return True
-
- def InstallAction(self, entry):
- """Run actions as pre-checks for bundle installation."""
- if entry.get('timing') != 'post':
- return self.RunAction(entry)
- return True
-
- def InstallPostInstall(self, entry):
- return self.InstallAction(self, entry)
-
- def BundleUpdated(self, bundle, states):
- """Run postinstalls when bundles have been updated."""
- for postinst in bundle.findall("PostInstall"):
- self.cmd.run(postinst.get('name'))
- for action in bundle.findall("Action"):
- if action.get('timing') in ['post', 'both']:
- states[action] = self.RunAction(action)
-
- def BundleNotUpdated(self, bundle, states):
- """Run Actions when bundles have not been updated."""
- for action in bundle.findall("Action"):
- if action.get('timing') in ['post', 'both'] and \
- action.get('when') != 'modified':
- states[action] = self.RunAction(action)