mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #2571 from Tinche/service
Service module changed to terminate early if only enabled specified
This commit is contained in:
commit
307c9d132c
1 changed files with 23 additions and 9 deletions
|
@ -37,7 +37,8 @@ options:
|
||||||
description:
|
description:
|
||||||
- C(started)/C(stopped) are idempotent actions that will not run
|
- C(started)/C(stopped) are idempotent actions that will not run
|
||||||
commands unless necessary. C(restarted) will always bounce the
|
commands unless necessary. C(restarted) will always bounce the
|
||||||
service. C(reloaded) will always reload.
|
service. C(reloaded) will always reload. At least one of state
|
||||||
|
and enabled are required.
|
||||||
pattern:
|
pattern:
|
||||||
required: false
|
required: false
|
||||||
version_added: "0.7"
|
version_added: "0.7"
|
||||||
|
@ -50,7 +51,9 @@ options:
|
||||||
required: false
|
required: false
|
||||||
choices: [ "yes", "no" ]
|
choices: [ "yes", "no" ]
|
||||||
description:
|
description:
|
||||||
- Whether the service should start on boot.
|
- Whether the service should start on boot. At least one of state and
|
||||||
|
enabled are required.
|
||||||
|
|
||||||
arguments:
|
arguments:
|
||||||
description:
|
description:
|
||||||
- Additional arguments provided on the command line
|
- Additional arguments provided on the command line
|
||||||
|
@ -64,6 +67,8 @@ examples:
|
||||||
code: "service: name=httpd state=restarted"
|
code: "service: name=httpd state=restarted"
|
||||||
- description: Example action to reload service httpd, in all cases
|
- description: Example action to reload service httpd, in all cases
|
||||||
code: "service: name=httpd state=reloaded"
|
code: "service: name=httpd state=reloaded"
|
||||||
|
- description: Example action to enable service httpd, and not touch the running state
|
||||||
|
code: "service: name=httpd enabled=yes"
|
||||||
- description: Example action to start service foo, based on running process /usr/bin/foo
|
- description: Example action to start service foo, based on running process /usr/bin/foo
|
||||||
code: "service: name=foo pattern=/usr/bin/foo state=started"
|
code: "service: name=foo pattern=/usr/bin/foo state=started"
|
||||||
- description: Example action to restart network service for interface eth0
|
- description: Example action to restart network service for interface eth0
|
||||||
|
@ -738,7 +743,7 @@ class SunOSService(Service):
|
||||||
self.module.fail_json(msg='unable to find svcs binary')
|
self.module.fail_json(msg='unable to find svcs binary')
|
||||||
|
|
||||||
self.svcadm_cmd = self.module.get_bin_path('svcadm', True)
|
self.svcadm_cmd = self.module.get_bin_path('svcadm', True)
|
||||||
|
|
||||||
if not self.svcadm_cmd:
|
if not self.svcadm_cmd:
|
||||||
self.module.fail_json(msg='unable to find svcadm binary')
|
self.module.fail_json(msg='unable to find svcadm binary')
|
||||||
|
|
||||||
|
@ -789,9 +794,9 @@ class SunOSService(Service):
|
||||||
enabled = True
|
enabled = True
|
||||||
if line.find("temporary") != -1:
|
if line.find("temporary") != -1:
|
||||||
temporary = True
|
temporary = True
|
||||||
|
|
||||||
startup_enabled = (enabled and not temporary) or (not enabled and temporary)
|
startup_enabled = (enabled and not temporary) or (not enabled and temporary)
|
||||||
|
|
||||||
if self.enable and startup_enabled:
|
if self.enable and startup_enabled:
|
||||||
return
|
return
|
||||||
elif (not self.enable) and (not startup_enabled):
|
elif (not self.enable) and (not startup_enabled):
|
||||||
|
@ -813,8 +818,8 @@ class SunOSService(Service):
|
||||||
self.module.fail_json(msg=stdout)
|
self.module.fail_json(msg=stdout)
|
||||||
|
|
||||||
self.changed = True
|
self.changed = True
|
||||||
|
|
||||||
|
|
||||||
def service_control(self):
|
def service_control(self):
|
||||||
status = self.get_sunos_svcs_status()
|
status = self.get_sunos_svcs_status()
|
||||||
|
|
||||||
|
@ -838,7 +843,7 @@ class SunOSService(Service):
|
||||||
subcmd = "restart"
|
subcmd = "restart"
|
||||||
elif self.action == 'restart' and status != 'online':
|
elif self.action == 'restart' and status != 'online':
|
||||||
subcmd = "enable -rst"
|
subcmd = "enable -rst"
|
||||||
|
|
||||||
return self.execute_command("%s %s %s" % (self.svcadm_cmd, subcmd, self.name))
|
return self.execute_command("%s %s %s" % (self.svcadm_cmd, subcmd, self.name))
|
||||||
|
|
||||||
|
|
||||||
|
@ -856,6 +861,8 @@ def main():
|
||||||
),
|
),
|
||||||
supports_check_mode=True
|
supports_check_mode=True
|
||||||
)
|
)
|
||||||
|
if module.params['state'] is None and module.params['enabled'] is None:
|
||||||
|
module.fail_json(msg="Neither 'state' nor 'enabled' set")
|
||||||
|
|
||||||
service = Service(module)
|
service = Service(module)
|
||||||
|
|
||||||
|
@ -870,7 +877,6 @@ def main():
|
||||||
err = ''
|
err = ''
|
||||||
result = {}
|
result = {}
|
||||||
result['name'] = service.name
|
result['name'] = service.name
|
||||||
result['state'] = service.state
|
|
||||||
|
|
||||||
# Find service management tools
|
# Find service management tools
|
||||||
service.get_service_tools()
|
service.get_service_tools()
|
||||||
|
@ -880,6 +886,14 @@ def main():
|
||||||
# FIXME: ideally this should detect if we need to toggle the enablement state, though
|
# FIXME: ideally this should detect if we need to toggle the enablement state, though
|
||||||
# it's unlikely the changed handler would need to fire in this case so it's a minor thing.
|
# it's unlikely the changed handler would need to fire in this case so it's a minor thing.
|
||||||
service.service_enable()
|
service.service_enable()
|
||||||
|
result['enabled'] = service.enable
|
||||||
|
|
||||||
|
if module.params['state'] is None:
|
||||||
|
# Not changing the running state, so bail out now.
|
||||||
|
result['changed'] = service.changed
|
||||||
|
module.exit_json(**result)
|
||||||
|
|
||||||
|
result['state'] = service.state
|
||||||
|
|
||||||
# Collect service status
|
# Collect service status
|
||||||
if service.pattern:
|
if service.pattern:
|
||||||
|
|
Loading…
Reference in a new issue