Commit 3852b991 by Dag Wieers

Allow adding additional arguments to service module

Some services allow additional arguments to be provided on the command line. This patch makes it possible.
parent 0ab3bd00
......@@ -52,17 +52,23 @@ options:
choices: [ "yes", "no" ]
description:
- Whether the service should start on boot.
arguments:
description:
- Additional arguments provided on the command line
aliases: [ 'args' ]
examples:
- code: "service: name=httpd state=started"
description: Example action from Ansible Playbooks
- code: "service: name=httpd state=stopped"
description: Example action from Ansible Playbooks
- code: "service: name=httpd state=restarted"
description: Example action from Ansible Playbooks
- code: "service: name=httpd state=reloaded"
description: Example action from Ansible Playbooks
- code: "service: name=foo pattern=/usr/bin/foo state=started"
description: Example action from Ansible Playbooks
- description: Example action to start service httpd, if not running
code: "service: name=httpd state=started"
- description: Example action to stop service httpd, if running
code: "service: name=httpd state=stopped"
- description: Example action to restart service httpd, in all cases
code: "service: name=httpd state=restarted"
- description: Example action to reload service httpd, in all cases
code: "service: name=httpd state=reloaded"
- description: Example action to start service foo, based on running process /usr/bin/foo
code: "service: name=foo pattern=/usr/bin/foo state=started"
- description: Example action to restart network service for interface eth0
code: "service: name=network state=restarted args=eth0"
'''
import platform
......@@ -123,8 +129,8 @@ def _find_binaries(m,name):
else:
INITCTL = None
def _get_service_status(name, pattern):
rc, status_stdout, status_stderr = _run("%s %s status" % (SERVICE, name))
def _get_service_status(name, pattern, arguments):
rc, status_stdout, status_stderr = _run("%s %s status %s" % (SERVICE, name, arguments))
# set the running state to None because we don't know it yet
running = None
......@@ -258,7 +264,8 @@ def main():
name = dict(required=True),
state = dict(choices=['running', 'started', 'stopped', 'restarted', 'reloaded']),
pattern = dict(required=False, default=None),
enabled = dict(choices=BOOLEANS)
enabled = dict(choices=BOOLEANS),
arguments = dict(aliases=['args']),
)
)
......@@ -266,6 +273,7 @@ def main():
state = module.params['state']
pattern = module.params['pattern']
enable = module.boolean(module.params.get('enabled', None))
arguments = module.params.get('arguments', '')
# Set PS options here if 'ps auxww' will not work on
# target platform
......@@ -279,7 +287,7 @@ def main():
# ===========================================
# get service status
running = _get_service_status(name, pattern)
running = _get_service_status(name, pattern, arguments)
# ===========================================
# Some common variables
......@@ -329,14 +337,14 @@ def main():
reload = "reload"
if state in ['started', 'running']:
rc_state, stdout, stderr = _run("%s %s" % (svc_cmd,start))
rc_state, stdout, stderr = _run("%s %s %s" % (svc_cmd, start, arguments))
elif state == 'stopped':
rc_state, stdout, stderr = _run("%s %s" % (svc_cmd,stop))
rc_state, stdout, stderr = _run("%s %s %s" % (svc_cmd, stop, arguments))
elif state == 'reloaded':
rc_state, stdout, stderr = _run("%s %s" % (svc_cmd,reload))
rc_state, stdout, stderr = _run("%s %s %s" % (svc_cmd, reload, arguments))
elif state == 'restarted':
rc1, stdout1, stderr1 = _run("%s %s" % (svc_cmd,stop))
rc2, stdout2, stderr2 = _run("%s %s" % (svc_cmd,start))
rc1, stdout1, stderr1 = _run("%s %s %s" % (svc_cmd, stop, arguments))
rc2, stdout2, stderr2 = _run("%s %s %s" % (svc_cmd, start, arguments))
if rc1 != 0 and rc2 == 0:
rc_state = rc + rc2
stdout = stdout2
......@@ -359,7 +367,7 @@ def main():
if state:
result['state'] = state
rc, stdout, stderr = _run("%s status" % (svc_cmd))
rc, stdout, stderr = _run("%s status %s" % (svc_cmd, arguments))
module.exit_json(**result)
# this is magic, see lib/ansible/module_common.py
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment