diff options
author | Scott Moser <smoser@nelson> | 2010-01-06 12:39:47 -0500 |
---|---|---|
committer | Scott Moser <smoser@nelson> | 2010-01-06 12:39:47 -0500 |
commit | ca3cafbb65655bf0de40e8a44b608932694a5594 (patch) | |
tree | fe0360e5af37d5b6a22055ed87c63db86230525e /ec2init | |
parent | 86b6aad19f3796402dbc2f6e90a47081e8b309a0 (diff) | |
download | vyos-cloud-init-ca3cafbb65655bf0de40e8a44b608932694a5594.tar.gz vyos-cloud-init-ca3cafbb65655bf0de40e8a44b608932694a5594.zip |
add cloud-init-run-module and ec2init/execute.py
cloud-init-run-module handles some boilerplate code for running
items on a 'frequency'. It has the following usefulness
- a config module can be put into ec2init dir and implement a 'run'
method that takes a list of arguments and the path to a config file
- it handles invoking module.run() only at a given frequency
This is similar to karmic's ec2init's "run_once_ever" or run_once_per_ami
execute.py is an example module that executes the arguments given to it
An example usage in an upstart job would be with a 'exec' line like:
exec cloud-init-run-module once_per_ami clean-core execute rm /var/run/core
The above would then run the command 'rm /var/run/core' only once
Diffstat (limited to 'ec2init')
-rw-r--r-- | ec2init/execute.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/ec2init/execute.py b/ec2init/execute.py new file mode 100644 index 00000000..d7386663 --- /dev/null +++ b/ec2init/execute.py @@ -0,0 +1,14 @@ +def run(list,cfg): + import subprocess + subprocess.Popen(list).communicate() + retcode = subprocess.call(list) + + if retcode == 0: + return + + if retcode < 0: + str="Cmd terminated by signal %s\n" % -retcode + else: + str="Cmd returned %s\n" % retcode + str+=' '.join(list) + raise Exception(str) |