From 3f4dc876fc6d0acd070ccf01143a395b755fd494 Mon Sep 17 00:00:00 2001 From: egghead Date: Sat, 21 Sep 2013 18:09:31 +0000 Subject: [PATCH] supervisorctl module: adding support for custom supervisord installations Supervisord can be installed at the user level or system level. Installating as a user is particularly useful for systems without root access. Adds the ability to provide a custom supervisorctl executable path, supporting custom installations --- library/web_infrastructure/supervisorctl | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/library/web_infrastructure/supervisorctl b/library/web_infrastructure/supervisorctl index fbbb2f7f06..f73d803e9d 100644 --- a/library/web_infrastructure/supervisorctl +++ b/library/web_infrastructure/supervisorctl @@ -18,6 +18,7 @@ # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . # +import os DOCUMENTATION = ''' --- @@ -62,6 +63,14 @@ options: required: true default: null choices: [ "present", "started", "stopped", "restarted" ] + supervisorctl_path: + description: + - Path to supervisorctl executable to use + required: false + default: null + version_added: "1.4" +requirements: + - supervisorctl requirements: [ ] author: Matt Wright ''' @@ -85,6 +94,7 @@ def main(): server_url=dict(required=False), username=dict(required=False), password=dict(required=False), + supervisorctl_path=dict(required=False), state=dict(required=True, choices=['present', 'started', 'restarted', 'stopped']) ) @@ -96,8 +106,16 @@ def main(): server_url = module.params.get('server_url') username = module.params.get('username') password = module.params.get('password') + supervisorctl_path = module.params.get('supervisorctl_path') - supervisorctl_args = [ module.get_bin_path('supervisorctl', True) ] + if supervisorctl_path: + supervisorctl_path = os.path.expanduser(supervisorctl_path) + if os.path.exists(supervisorctl_path) and module.is_executable(supervisorctl_path): + supervisorctl_args = [ supervisorctl_path ] + else: + module.fail_json(msg="Provided path to supervisorctl does not exist or isn't executable: %s" % ctl_path) + else: + supervisorctl_args = [ module.get_bin_path('supervisorctl', True) ] if config: supervisorctl_args.extend(['-c', config])