def test_provision_from_template(provider, testing_instance, soft_assert): """ Tests instance provision from template Metadata: test_flag: provision """ instance, inst_args, image = testing_instance instance.create(**inst_args) logger.info('Waiting for cfme provision request for vm %s', instance.name) row_description = 'Provision from [{}] to [{}]'.format(image, instance.name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=1500, delay=20) except Exception as e: requests.debug_requests() raise e assert normalize_text(row.status.text) == 'ok' and \ normalize_text(row.request_state.text) == 'finished', \ "Provisioning failed with the message {}".format(row.last_message.text) instance.wait_to_appear(timeout=800) provider.refresh_provider_relationships() logger.info("Refreshing provider relationships and power states") refresh_timer = RefreshTimer(time_for_refresh=300) wait_for(provider.is_refreshed, [refresh_timer], message="is_refreshed", num_sec=1000, delay=60, handle_exception=True) soft_assert(instance.does_vm_exist_on_provider(), "Instance wasn't provisioned")
def test_provision_from_template(request, setup_provider, provider, testing_instance, soft_assert): """ Tests instance provision from template Metadata: test_flag: provision """ instance, inst_args, image = testing_instance instance.create(**inst_args) logger.info('Waiting for cfme provision request for vm %s', instance.name) row_description = 'Provision from [{}] to [{}]'.format( image, instance.name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=1500, delay=20) except Exception as e: requests.debug_requests() raise e assert normalize_text(row.status.text) == 'ok' and \ normalize_text(row.request_state.text) == 'finished', \ "Provisioning failed with the message {}".format(row.last_message.text) instance.wait_to_appear(timeout=800) provider.refresh_provider_relationships() logger.info("Refreshing provider relationships and power states") refresh_timer = RefreshTimer(time_for_refresh=300) wait_for(provider.is_refreshed, [refresh_timer], message="is_refreshed", num_sec=1000, delay=60, handle_exception=True) soft_assert(instance.does_vm_exist_on_provider(), "Instance wasn't provisioned")
def do_vm_provisioning(template_name, provider_crud, vm_name, provisioning_data, request, provider_mgmt, provider_key, smtp_test, num_sec=1500, wait=True): # generate_tests makes sure these have values sel.force_navigate('infrastructure_provision_vms', context={ 'provider': provider_crud, 'template_name': template_name, }) note = ('template %s to vm %s on provider %s' % (template_name, vm_name, provider_crud.key)) provisioning_data.update({ 'email': '*****@*****.**', 'first_name': 'Template', 'last_name': 'Provisioner', 'notes': note, }) fill(provisioning_form, provisioning_data, action=provisioning_form.submit_button) flash.assert_no_errors() if not wait: return # Wait for the VM to appear on the provider backend before proceeding to ensure proper cleanup logger.info('Waiting for vm %s to appear on provider %s', vm_name, provider_crud.key) wait_for(provider_mgmt.does_vm_exist, [vm_name], handle_exception=True, num_sec=600) # nav to requests page happens on successful provision logger.info('Waiting for cfme provision request for vm %s' % vm_name) row_description = 'Provision from [%s] to [%s]' % (template_name, vm_name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=num_sec, delay=20) except Exception as e: requests.debug_requests() raise e assert row.last_message.text == version.pick( {version.LOWEST: 'VM Provisioned Successfully', "5.3": 'Vm Provisioned Successfully', }) # Wait for e-mails to appear def verify(): if current_version() >= "5.4": approval = dict(subject_like="%%Your Virtual Machine configuration was Approved%%") else: approval = dict(text_like="%%Your Virtual Machine Request was approved%%") return ( len( smtp_test.get_emails(**approval) ) > 0 and len( smtp_test.get_emails( subject_like="Your virtual machine request has Completed - VM:%%%s" % vm_name ) ) > 0 ) wait_for(verify, message="email receive check", delay=5)
def do_vm_provisioning(template_name, provider, vm_name, provisioning_data, request, smtp_test, num_sec=1500, wait=True): # generate_tests makes sure these have values sel.force_navigate('infrastructure_provision_vms', context={ 'provider': provider, 'template_name': template_name, }) note = ('template %s to vm %s on provider %s' % (template_name, vm_name, provider.key)) provisioning_data.update({ 'email': '*****@*****.**', 'first_name': 'Template', 'last_name': 'Provisioner', 'notes': note, }) fill(provisioning_form, provisioning_data, action=provisioning_form.submit_button) flash.assert_no_errors() if not wait: return # Wait for the VM to appear on the provider backend before proceeding to ensure proper cleanup logger.info('Waiting for vm %s to appear on provider %s', vm_name, provider.key) wait_for(provider.mgmt.does_vm_exist, [vm_name], handle_exception=True, num_sec=600) # nav to requests page happens on successful provision logger.info('Waiting for cfme provision request for vm %s' % vm_name) row_description = 'Provision from [%s] to [%s]' % (template_name, vm_name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=num_sec, delay=20) except Exception as e: requests.debug_requests() raise e assert row.last_message.text == version.pick( {version.LOWEST: 'VM Provisioned Successfully', "5.3": 'Vm Provisioned Successfully', }) # Wait for e-mails to appear def verify(): if current_version() >= "5.4": approval = dict(subject_like="%%Your Virtual Machine configuration was Approved%%") else: approval = dict(text_like="%%Your Virtual Machine Request was approved%%") return ( len( smtp_test.get_emails(**approval) ) > 0 and len( smtp_test.get_emails( subject_like="Your virtual machine request has Completed - VM:%%%s" % vm_name ) ) > 0 ) wait_for(verify, message="email receive check", delay=5)
def do_vm_provisioning(template_name, provider, vm_name, provisioning_data, request, smtp_test, num_sec=1500, wait=True): # generate_tests makes sure these have values vm = Vm(name=vm_name, provider=provider, template_name=template_name) navigate_to(vm, 'ProvisionVM') note = ('template {} to vm {} on provider {}'.format(template_name, vm_name, provider.key)) provisioning_data.update({ 'email': '*****@*****.**', 'first_name': 'Template', 'last_name': 'Provisioner', 'notes': note, }) fill(provisioning_form, provisioning_data, action=provisioning_form.submit_button) flash.assert_no_errors() if not wait: return # Provision Re important in this test logger.info('Waiting for cfme provision request for vm %s', vm_name) row_description = 'Provision from [{}] to [{}]'.format(template_name, vm_name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=num_sec, delay=20) except Exception as e: requests.debug_requests() raise e assert normalize_text(row.status.text) == 'ok' \ and normalize_text( row.request_state.text) == 'finished', \ "Provisioning failed with the message {}".format(row.last_message.text) # Wait for the VM to appear on the provider backend before proceeding to ensure proper cleanup logger.info('Waiting for vm %s to appear on provider %s', vm_name, provider.key) wait_for(provider.mgmt.does_vm_exist, [vm_name], handle_exception=True, num_sec=600) if smtp_test: # Wait for e-mails to appear def verify(): approval = dict(subject_like="%%Your Virtual Machine configuration was Approved%%") expected_text = "Your virtual machine request has Completed - VM:%%{}".format(vm_name) return ( len(smtp_test.get_emails(**approval)) > 0 and len(smtp_test.get_emails(subject_like=expected_text)) > 0 ) wait_for(verify, message="email receive check", delay=30)
def do_vm_provisioning( template_name, provider, vm_name, provisioning_data, request, smtp_test, num_sec=1500, wait=True ): # generate_tests makes sure these have values vm = Vm(name=vm_name, provider=provider, template_name=template_name) navigate_to(vm, "ProvisionVM") note = "template {} to vm {} on provider {}".format(template_name, vm_name, provider.key) provisioning_data.update( { "email": "*****@*****.**", "first_name": "Template", "last_name": "Provisioner", "notes": note, } ) fill(provisioning_form, provisioning_data, action=provisioning_form.submit_button) flash.assert_no_errors() if not wait: return # Wait for the VM to appear on the provider backend before proceeding to ensure proper cleanup logger.info("Waiting for vm %s to appear on provider %s", vm_name, provider.key) wait_for(provider.mgmt.does_vm_exist, [vm_name], handle_exception=True, num_sec=600) # nav to requests page happens on successful provision logger.info("Waiting for cfme provision request for vm %s", vm_name) row_description = "Provision from [{}] to [{}]".format(template_name, vm_name) cells = {"Description": row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=num_sec, delay=20) except Exception as e: requests.debug_requests() raise e assert normalize_text(row.status.text) == "ok" and normalize_text(row.request_state.text) == "finished" if smtp_test: # Wait for e-mails to appear def verify(): approval = dict(subject_like="%%Your Virtual Machine configuration was Approved%%") expected_text = "Your virtual machine request has Completed - VM:%%{}".format(vm_name) return ( len(smtp_test.get_emails(**approval)) > 0 and len(smtp_test.get_emails(subject_like=expected_text)) > 0 ) wait_for(verify, message="email receive check", delay=5)
def do_vm_provisioning(template_name, provider, vm_name, provisioning_data, request, smtp_test, num_sec=1500, wait=True): # generate_tests makes sure these have values vm = Vm(name=vm_name, provider=provider, template_name=template_name) navigate_to(vm, 'ProvisionVM') note = ('template {} to vm {} on provider {}'.format( template_name, vm_name, provider.key)) provisioning_data.update({ 'email': '*****@*****.**', 'first_name': 'Template', 'last_name': 'Provisioner', 'notes': note, }) fill(provisioning_form, provisioning_data, action=provisioning_form.submit_button) flash.assert_no_errors() if not wait: return # Wait for the VM to appear on the provider backend before proceeding to ensure proper cleanup logger.info('Waiting for vm %s to appear on provider %s', vm_name, provider.key) wait_for(provider.mgmt.does_vm_exist, [vm_name], handle_exception=True, num_sec=600) # nav to requests page happens on successful provision logger.info('Waiting for cfme provision request for vm %s', vm_name) row_description = 'Provision from [{}] to [{}]'.format( template_name, vm_name) cells = {'Description': row_description} try: row, __ = wait_for(requests.wait_for_request, [cells], fail_func=requests.reload, num_sec=num_sec, delay=20) except Exception as e: requests.debug_requests() raise e assert normalize_text(row.status.text) == 'ok' \ and normalize_text( row.request_state.text) == 'finished' if smtp_test: # Wait for e-mails to appear def verify(): approval = dict( subject_like= "%%Your Virtual Machine configuration was Approved%%") expected_text = "Your virtual machine request has Completed - VM:%%{}".format( vm_name) return (len(smtp_test.get_emails(**approval)) > 0 and len(smtp_test.get_emails(subject_like=expected_text)) > 0) wait_for(verify, message="email receive check", delay=30)