def main(): argument_spec = vmware_argument_spec() argument_spec.update(node_name=dict(required=True, type='str')) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) mgr_hostname = module.params['hostname'] mgr_username = module.params['username'] mgr_password = module.params['password'] validate_certs = module.params['validate_certs'] manager_node_name = module.params['node_name'] manager_url = 'https://{}/api/v1'.format(mgr_hostname) manager_node_id = get_id_from_display_name_results(module, manager_url, '/cluster/nodes/deployments', mgr_username, mgr_password, validate_certs, ['deployment_config','hostname'], ['vm_id'], manager_node_name) changed = False try: (rc, resp) = request(manager_url + '/cluster/nodes/%s/repo_sync/status' % manager_node_id, headers=dict(Accept='application/json'), url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs, ignore_errors=True) except Exception as err: module.fail_json(msg='Error accessing manager node repo sync ' 'status. Error [%s]' % (to_native(err))) module.exit_json(changed=changed, **resp)
def update_group_parameters(module, manager_url, mgr_username, mgr_password, validate_certs, upgrade_group_parameters): if upgrade_group_parameters.__contains__('upgrade_units'): for upgrade_unit in upgrade_group_parameters['upgrade_units']: host_name = upgrade_unit.pop('host_name', None) upgrade_unit_id = get_id_from_display_name_results( module, manager_url, '/upgrade/upgrade-units', mgr_username, mgr_password, validate_certs, ['display_name'], ['id'], host_name) upgrade_unit['id'] = upgrade_unit_id return upgrade_group_parameters
def main(): argument_spec = vmware_argument_spec() argument_spec.update(description=dict(type='str', required=False), display_name=dict(type='str', required=True), enabled=dict(type='bool', required=False, default=True), extended_configuration=dict(type='list', required=False), parallel=dict(type='bool', required=False, default=True), resource_type=dict(type='str', required=False), tags=dict(type='list', required=False), type=dict(type='str', required=True), upgrade_unit_count=dict(type='int', required=False), upgrade_units=dict(type='list', required=False), state=dict(required=True, choices=['present', 'absent'])) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) upgrade_group_params = clean_and_get_params(module.params.copy()) state = module.params['state'] mgr_hostname = module.params['hostname'] mgr_username = module.params['username'] mgr_password = module.params['password'] validate_certs = module.params['validate_certs'] headers = dict(Accept="application/json") headers['Content-Type'] = 'application/json' mgr_hostname = get_upgrade_orchestrator_node(module, mgr_hostname, mgr_username, mgr_password, headers, validate_certs) manager_url = 'https://{}/api/v1'.format(mgr_hostname) upgrade_group_params = update_group_parameters(module, manager_url, mgr_username, mgr_password, validate_certs, upgrade_group_params) upgrade_unit_group_id = get_id_from_display_name_results( module, manager_url, '/upgrade/upgrade-unit-groups', mgr_username, mgr_password, validate_certs, ['display_name'], ['id'], upgrade_group_params['display_name'], False) if state == 'present': # create a new upgrade group or modify the existing one if module.check_mode: module.exit_json( changed=False, debug_out='A new upgrade unit will be created with' ' name: %s' % module.params['display_name']) request_data = json.dumps(upgrade_group_params) if upgrade_unit_group_id is None: try: (rc, resp) = request(manager_url + '/upgrade/upgrade-unit-groups', data=request_data, headers=headers, method='POST', url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs, ignore_errors=True) except Exception as err: module.fail_json( msg="Failed to add upgrade group. Error[%s]." % to_native(err)) time.sleep(5) module.exit_json(changed=True, message="Upgrade group is added successfully.") else: try: (rc, resp) = request(manager_url + '/upgrade/upgrade-unit-' 'groups/%s' % upgrade_unit_group_id, data=request_data, headers=headers, method='PUT', url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs, ignore_errors=True) except Exception as err: module.fail_json( msg="Failed to modify upgrade group. Error[%s]." % to_native(err)) time.sleep(5) module.exit_json(changed=True, message='Upgrade group with group id ' '%s is updated.' % upgrade_unit_group_id) elif state == 'absent': # remove an existing upgrade group try: (rc, resp) = request(manager_url + '/upgrade/upgrade-unit-groups' '/%s' % upgrade_unit_group_id, data='', headers=headers, method='DELETE', url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs, ignore_errors=True) except Exception as err: module.fail_json(msg='Failed while deleting the upgrade' ' group. Error[%s].' % to_native(err)) time.sleep(5) module.exit_json(changed=True, message='Upgrade group with group id ' '%s is deleted.' % upgrade_unit_group_id)