def main(): argument_spec = vmware_argument_spec() 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'] 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) # Accept the upgrade EULA if module.check_mode: module.exit_json(changed=False, debug_out='Upgrade EULA will be' ' accepted.', id=mgr_hostname) try: (rc, resp) = request(manager_url+ '/upgrade/eula/accept', 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 accept end user license' ' agreement. Error[%s].' % to_native(err)) time.sleep(5) module.exit_json(changed=True, result=resp, message='End user license agreement' ' is accepted.')
def main(): argument_spec = vmware_argument_spec() argument_spec.update(timeout=dict(type='int', required=False), component_type=dict(required=True, choices=['mp', 'host', 'edge'])) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) 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'] timeout = module.params['timeout'] component_type= module.params['component_type'] 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) #if state == 'present': # Runs pre upgrade checks if module.check_mode: module.exit_json(changed=False, debug_out='Post upgrade checks will be executed.', id='Pre upgrade checks') try: (rc, resp) = request(manager_url + '/upgrade/%s?action=execute_post_upgrade_' 'checks' % component_type.upper(), 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 execute post upgrade checks. Error[%s]." % to_native(err)) try: if timeout is None: wait_for_post_upgrade_checks_to_execute(manager_url, '/upgrade/upgrade-unit-groups' '/aggregate-info', mgr_username, mgr_password, validate_certs, component_type) else: wait_for_post_upgrade_checks_to_execute(manager_url, '/upgrade/upgrade-unit-groups' '/aggregate-info', mgr_username, mgr_password, validate_certs, component_type, timeout) except Exception as err: module.fail_json(msg='Error while polling for execution of post upgrade' ' checks. Error [%s]' % to_native(err)) time.sleep(5) changed = True try: (rc, resp) = request(manager_url+ '/upgrade/upgrade-unit-groups/aggregate-info', url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs) except Exception as err: module.fail_json(msg='Post upgrade checks were executed successfully but error' ' occured while retrieving the results. Error [%s]' % (to_native(err))) module.exit_json(changed=changed, message='Post upgrade checks are performed successfully:\n' '----------------------------\n' + str(resp))
def main(): argument_spec = vmware_argument_spec() argument_spec.update(component_type=dict(type='str', required=True, choices=['host', 'edge', 'mp']), parallel=dict(type='bool', required=False), pause_after_each_group=dict(type='bool', required=False), pause_on_error=dict(type='bool', required=False), state=dict(required=True, choices=['present', 'absent'])) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) upgrade_plan_params = clean_and_get_params(module.params.copy(), ['component_type']) 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'] component_type = module.params['component_type'] 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) if state == 'present': # update the default upgrade plan if module.check_mode: module.exit_json(changed=False, debug_out='Upgrade Plan will be modified.' ' parallel: %s, pause_after_each_group: %s, pause_on_error: %s' % (module.params['parallel'], module.params['pause_after_each_group'], module.params['pause_on_error']), id=module.params['component_type']) request_data = json.dumps(upgrade_plan_params) try: (rc, resp) = request(manager_url+ '/upgrade/plan/%s/settings' % component_type.upper(), 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 update upgrade plan. Error[%s]." % to_native(err)) time.sleep(5) module.exit_json(changed=True, message="Upgrade plan is updated.") elif state == 'absent': # reset to default upgrade plan try: (rc, resp) = request(manager_url+ '/upgrade/plan?action=reset&' 'component_type=%s' % component_type.upper(), 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 while reseting the upgrade plan. Error[%s]." % to_native(err)) time.sleep(5) module.exit_json(changed=True, message="Upgrade plan is reset.")
def main(): argument_spec = vmware_argument_spec() 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'] 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 UC if module.check_mode: module.exit_json(changed=False, debug_out='Upgrade Coordinator ' 'will be upgraded.', id=mgr_hostname) try: (rc, resp) = request(manager_url + '/upgrade?action=upgrade_uc', 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 upgrade UC. Error[%s].' % to_native(err)) time.sleep(5) try: wait_for_operation_to_execute(manager_url, '/upgrade/uc-upgrade-status', mgr_username, mgr_password, validate_certs, ['state'], ['SUCCESS'], ['FAILED']) except Exception as err: module.fail_json(msg='Error while upgrading UC. Error [%s]' % to_native(err)) module.exit_json(changed=True, result=resp, message='UC is upgraded' ' successfully.')
def main(): argument_spec = vmware_argument_spec() argument_spec.update(timeout=dict(type='int', required=False), state=dict(required=True, choices=['present', 'absent'])) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) upgrade_prechecks_params = clean_and_get_params(module.params.copy(), ['timeout']) 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'] timeout = module.params['timeout'] 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) if state == 'present': # Runs pre upgrade checks if module.check_mode: module.exit_json(changed=False, debug_out='Pre upgrade checks will be executed.', id='Pre upgrade checks') request_data = json.dumps(upgrade_prechecks_params) try: (rc, resp) = request(manager_url + '/upgrade?action=execute_pre_upgrade_checks', 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 execute pre upgrade checks. Error[%s]." % to_native(err)) try: if timeout is None: wait_for_pre_upgrade_checks_to_execute(manager_url, '/upgrade/status-summary', mgr_username, mgr_password, validate_certs) else: wait_for_pre_upgrade_checks_to_execute(manager_url, '/upgrade/status-summary', mgr_username, mgr_password, validate_certs, timeout) except Exception as err: module.fail_json(msg='Error while polling for execution of pre upgrade' ' checks. Error [%s]' % to_native(err)) time.sleep(5) changed = False try: (rc, resp) = request(manager_url+ '/upgrade/pre-upgrade-checks?format=csv', url_username=mgr_username, url_password=mgr_password, validate_certs=validate_certs) except Exception as err: module.fail_json(msg='Pre upgrade checks were executed successfully but error' ' occured while retrieving the results. Error [%s]' % (to_native(err))) module.exit_json(changed=changed, message='Pre upgrade checks are performed successfully:\n' '----------------------------\n' + str(resp)) elif state == 'absent': # Aborts pre upgrade checks try: (rc, resp) = request(manager_url + '/upgrade?action=abort_pre_upgrade_checks', 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 abort running pre upgrade checks. Error[%s]." % to_native(err)) time.sleep(5) module.exit_json(changed=True, message="Upgrade prechecks are aborted.")
def main(): argument_spec = vmware_argument_spec() argument_spec.update(paused_upgrade=dict(type='bool', required=True)) 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'] paused_upgrade = module.params['paused_upgrade'] 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) if module.check_mode: if paused_upgrade: module.exit_json(changed=False, debug_out='NSX-T will upgrade with pauses.') else: module.exit_json(changed=False, debug_out='NSX-T will upgrade without pauses.') # If paused_upgrade is not true i.e auto mode if not paused_upgrade: while True: upgrade_status = get_upgrade_status(module, manager_url, mgr_username, mgr_password, validate_certs) if upgrade_status == 'NOT_STARTED': try: (rc, resp) = request(manager_url + '/upgrade/plan?action=start', 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 while upgrading. Error[%s]." % to_native(err)) else: try: (rc, resp) = request(manager_url + '/upgrade/plan?action=continue', 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 while upgrading. Error[%s]." % to_native(err)) time.sleep(10) while True: try: can_continue, is_failed = check_continuity( module, manager_url, mgr_username, mgr_password, validate_certs) decide_next_step(module, manager_url, mgr_username, mgr_password, validate_certs, can_continue, is_failed) if can_continue and not is_failed: break time.sleep(10) except Exception as err: module.fail_json(msg='Upgrade failed. Error: [%s]' % to_native(err)) else: # Paused upgrade i.e manual mode upgrade_status = get_upgrade_status(module, manager_url, mgr_username, mgr_password, validate_certs) if upgrade_status == 'NOT_STARTED': try: (rc, resp) = request(manager_url + '/upgrade/plan?action=start', 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 while upgrading. Error[%s]." % to_native(err)) else: try: (rc, resp) = request(manager_url + '/upgrade/plan?action=continue', 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 while upgrading. Error[%s]." % to_native(err)) time.sleep(10) while True: try: can_continue, is_failed = check_continuity( module, manager_url, mgr_username, mgr_password, validate_certs) decide_next_step(module, manager_url, mgr_username, mgr_password, validate_certs, can_continue, is_failed) if can_continue and not is_failed: break time.sleep(10) except Exception as err: module.fail_json(msg='Upgrade failed. Error: [%s]' % to_native(err)) module.exit_json(changed=True, message='A component has been upgraded successfully.' ' Whole system is not. Please run the module' ' again till the time whole system is' ' not upgraded.')
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)