Repository URL to install this package:
Version:
6.0.0 ▾
|
#!/usr/bin/python
# Copyright (c) 2018-2019 Red Hat, Inc.
# Copyright (c) 2020 Infoblox, Inc.
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = '''
---
module: nios_restartservices
author: "Mauricio Teixeira (@badnetmask)"
short_description: Restart grid services.
version_added: "1.1.0"
description:
- Restart grid services.
- When invoked without any options, will restart ALL services on the
default restart group IF NEEDED.
requirements:
- infoblox-client
extends_documentation_fragment: infoblox.nios_modules.nios
notes:
- This module supports C(check_mode).
options:
groups:
description:
- The list of the Service Restart Groups to restart.
required: false
type: list
elements: str
members:
description:
- The list of the Grid Members to restart.
required: false
type: list
elements: str
mode:
description:
- The restart method in case of grid restart.
required: false
type: str
choices:
- GROUPED
- SEQUENTIAL
- SIMULTANEOUS
restart_option:
description:
- Controls whether services are restarted unconditionally or when needed
required: false
type: str
default: RESTART_IF_NEEDED
choices:
- RESTART_IF_NEEDED
- FORCE_RESTART
services:
description:
- The list of services the restart applicable to.
required: false
type: list
elements: str
default: ALL
choices:
- ALL
- DNS
- DHCP
- DHCPV4
- DHCPV6
'''
EXAMPLES = '''
- name: Restart all grid services if needed.
infoblox.nios_modules.nios_restartservices:
provider:
host: "{{ inventory_hostname_short }}"
username: admin
password: admin
connection: local
- name: Restart DNS service if needed.
infoblox.nios_modules.nios_restartservices:
services:
- DNS
provider:
host: "{{ inventory_hostname_short }}"
username: admin
password: admin
connection: local
'''
RETURN = ''' # '''
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.six import iteritems
from ..module_utils.api import WapiModule
from ..module_utils.api import normalize_ib_spec
def main():
''' Main entry point for module execution
'''
ib_spec = dict(
groups=dict(type='list', elements='str'),
members=dict(type='list', elements='str'),
mode=dict(type='str', choices=['GROUPED', 'SEQUENTIAL',
'SIMULTANEOUS']),
restart_option=dict(type='str', default='RESTART_IF_NEEDED',
choices=['RESTART_IF_NEEDED', 'FORCE_RESTART']),
services=dict(type='list', elements='str', default=['ALL'],
choices=['ALL', 'DNS', 'DHCP', 'DHCPV4', 'DHCPV6'])
)
argument_spec = dict(
provider=dict(required=True)
)
argument_spec.update(normalize_ib_spec(ib_spec))
argument_spec.update(WapiModule.provider_spec)
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True)
wapi = WapiModule(module)
# restart is a grid function, so we need to properly format
# the arguments before sending the command
restart_params = module.params
del restart_params['provider']
if restart_params['groups'] is None:
del restart_params['groups']
if restart_params['members'] is None:
del restart_params['members']
if restart_params['mode'] is None:
del restart_params['mode']
grid_obj = wapi.get_object('grid')
if grid_obj is None:
module.fail_json(msg='Failed to get NIOS grid information.')
result = wapi.call_func('restartservices', grid_obj[0]['_ref'], restart_params)
module.exit_json(**result)
if __name__ == '__main__':
main()