From 062a5551e0bda150c9483d44358fdf23d48ae807 Mon Sep 17 00:00:00 2001 From: Alexander Braverman Masis Date: Wed, 21 Mar 2018 11:34:24 +0200 Subject: [PATCH] ManageIQ module - provider refresh (#37573) --- .../manageiq/manageiq_provider.py | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/remote_management/manageiq/manageiq_provider.py b/lib/ansible/modules/remote_management/manageiq/manageiq_provider.py index c021b60d87..773623dde9 100644 --- a/lib/ansible/modules/remote_management/manageiq/manageiq_provider.py +++ b/lib/ansible/modules/remote_management/manageiq/manageiq_provider.py @@ -27,8 +27,8 @@ description: options: state: description: - - absent - provider should not exist, present - provider should be present. - choices: ['absent', 'present'] + - absent - provider should not exist, present - provider should be present, refresh - provider will be refreshed + choices: ['absent', 'present', 'refresh'] default: 'present' name: description: The provider's name. @@ -771,12 +771,28 @@ class ManageIQProvider(object): changed=True, msg="successfully created the provider %s: %s" % (name, result['results'])) + def refresh(self, provider, name): + """ Trigger provider refresh. + + Returns: + a short message describing the operation executed. + """ + try: + url = '%s/providers/%s' % (self.api_url, provider['id']) + result = self.client.post(url, action='refresh') + except Exception as e: + self.module.fail_json(msg="failed to refresh provider %s: %s" % (name, str(e))) + + return dict( + changed=True, + msg="refreshing provider %s" % name) + def main(): zone_id = None endpoints = [] argument_spec = dict( - state=dict(choices=['absent', 'present'], default='present'), + state=dict(choices=['absent', 'present', 'refresh'], default='present'), name=dict(required=True), zone=dict(default='default'), provider_region=dict(), @@ -797,7 +813,8 @@ def main(): module = AnsibleModule( argument_spec=argument_spec, required_if=[ - ('state', 'present', ['provider'])], + ('state', 'present', ['provider']), + ('state', 'refresh', ['name'])], required_together=[ ['host_default_vnc_port_start', 'host_default_vnc_port_end'] ], @@ -869,6 +886,15 @@ def main(): host_default_vnc_port_start, host_default_vnc_port_end, subscription, project, uid_ems, tenant_mapping_enabled, api_version) + # refresh provider (trigger sync) + if state == "refresh": + if provider: + res_args = manageiq_provider.refresh(provider, name) + else: + res_args = dict( + changed=False, + msg="provider %s: does not exist in manageiq" % (name)) + module.exit_json(**res_args)