def test_appliance_console_cli_external_auth(auth_type, ipa_crud, configured_appliance): """ Polarion: assignee: sbulage caseimportance: high initialEstimate: 1/4h """ evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() cmd_set = 'appliance_console_cli --extauth-opts="/authentication/{}=true"'.format( auth_type) assert configured_appliance.ssh_client.run_command(cmd_set) evm_tail.validate_logs() evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() cmd_unset = 'appliance_console_cli --extauth-opts="/authentication/{}=false"'.format( auth_type) assert configured_appliance.ssh_client.run_command(cmd_unset) evm_tail.validate_logs()
def test_external_auth(auth_type, ipa_crud, app_creds): evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type)], hostname=ipa_crud.address, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command = 'appliance_console_cli --extauth-opts="/authentication/{}=true"'.format( auth_type) ipa_crud.ssh_client.run_command(command) evm_tail.validate_logs() evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type)], hostname=ipa_crud.address, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command2 = 'appliance_console_cli --extauth-opts="/authentication/{}=false"'.format( auth_type) ipa_crud.ssh_client.run_command(command2) evm_tail.validate_logs()
def test_appliance_console_cli_external_auth(auth_type, ipa_crud, app_creds, configured_appliance): """ Polarion: assignee: sbulage caseimportance: high initialEstimate: 1/4h """ evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() cmd_set = 'appliance_console_cli --extauth-opts="/authentication/{}=true"'.format(auth_type) assert configured_appliance.ssh_client.run_command(cmd_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() cmd_unset = 'appliance_console_cli --extauth-opts="/authentication/{}=false"'.format(auth_type) assert configured_appliance.ssh_client.run_command(cmd_unset) evm_tail.validate_logs()
def test_appliance_console_external_auth(auth_type, app_creds, ipa_crud, configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. '' clears info screen, 3. '11' change ext auth options, 4. 'auth_type' auth type to change, 5. '4' apply changes.""" # TODO this depends on the auth_type options being disabled when the test is run # TODO it assumes that first switch is to true, then false. evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() command_set = ('ap', '', '11', auth_type.index, '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() command_set = ('ap', '', '11', auth_type.index, '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_appliance_console_external_auth_all(app_creds, ipa_crud, configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. '' clears info screen, 3. '12/15' change ext auth options, 4. 'auth_type' auth type to change, 5. '4' apply changes.""" evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to true.*', '.*saml_enabled to true.*', '.*local_login_disabled to true.*'], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '11', '1', '2', '3', '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to false.*', '.*saml_enabled to false.*', '.*local_login_disabled to false.*'], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '11', '1', '2', '3', '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_appliance_console_cli_external_auth(auth_type, ipa_crud, app_creds, configured_appliance): evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() cmd_set = 'appliance_console_cli --extauth-opts="/authentication/{}=true"'.format( auth_type) assert configured_appliance.ssh_client.run_command(cmd_set) evm_tail.validate_logs() evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() cmd_unset = 'appliance_console_cli --extauth-opts="/authentication/{}=false"'.format( auth_type) assert configured_appliance.ssh_client.run_command(cmd_unset) evm_tail.validate_logs()
def middleware_evm_log_no_error(): evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', skip_patterns=['.*ERROR.*API.*MIQ(Api::ApiController.api_error).*'], failure_patterns=['.*ERROR.*']) evm_tail.fix_before_start() yield evm_tail.validate_logs()
def test_appliance_console_external_auth(auth_type, ipa_crud, configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. RETURN clears info screen, 3. '13' change ext auth options, 4. 'auth_type' auth type to change, 5. '4' apply changes. Polarion: assignee: mnadeem caseimportance: high casecomponent: Auth initialEstimate: 1/4h """ # TODO this depends on the auth_type options being disabled when the test is run # TODO it assumes that first switch is to true, then false. evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, '13', auth_type.index, '5', RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set, timeout=30) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, '13', auth_type.index, '5', RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set, timeout=30) evm_tail.validate_logs()
def test_black_console_external_auth_all(app_creds, ipa_crud): """'ap' launches appliance_console, '' clears info screen, '12/15' change ext auth options, 'auth_type' auth type to change, '4' apply changes.""" evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*sso_enabled to true.*', '.*saml_enabled to true.*', '.*local_login_disabled to true.*' ], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() opt = '12' if ipa_crud.version >= "5.8" else '15' command_set = ('ap', '', opt, '1', '2', '3', '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*sso_enabled to false.*', '.*saml_enabled to false.*', '.*local_login_disabled to false.*' ], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() opt = '12' if ipa_crud.version >= "5.8" else '15' command_set = ('ap', '', opt, '1', '2', '3', '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_appliance_console_external_auth(auth_type, app_creds, ipa_crud, configured_appliance): """'ap' launches appliance_console, '' clears info screen, '11' change ext auth options, 'auth_type' auth type to change, '4' apply changes.""" # TODO this depends on the auth_type options being disabled when the test is run # TODO it assumes that first switch is to true, then false. evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() command_set = ('ap', '', '11', auth_type.index, '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['sshpass']) evm_tail.fix_before_start() command_set = ('ap', '', '11', auth_type.index, '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_black_console_external_auth(auth_type, app_creds, ipa_crud): """'ap' launches appliance_console, '' clears info screen, '12/15' change ext auth options, 'auth_type' auth type to change, '4' apply changes.""" evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() opt = '12' if ipa_crud.version >= "5.8" else '15' command_set = ('ap', '', opt, auth_type.index, '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() opt = '12' if ipa_crud.version >= "5.8" else '15' command_set = ('ap', '', opt, auth_type.index, '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_appliance_console_external_auth_all(app_creds, ipa_crud, configured_appliance): """'ap' launches appliance_console, '' clears info screen, '12/15' change ext auth options, 'auth_type' auth type to change, '4' apply changes.""" evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to true.*', '.*saml_enabled to true.*', '.*local_login_disabled to true.*'], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '11', '1', '2', '3', '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to false.*', '.*saml_enabled to false.*', '.*local_login_disabled to false.*'], hostname=configured_appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '11', '1', '2', '3', '4') configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_appliance_console_external_auth(auth_type, app_creds, ipa_crud): """'ap' launches appliance_console, '' clears info screen, '12' change ext auth options, 'auth_type' auth type to change, '4' apply changes.""" evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '12', auth_type.index, '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command_set = ('ap', '', '12', auth_type.index, '4') ipa_crud.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_action_prevent_host_ssa(request, appliance, host, host_policy): """Tests preventing Smart State Analysis on a host. This test sets the policy that prevents host analysis. Bugzilla: 1437910 Metadata: test_flag: actions, provision Polarion: assignee: jdupuy initialEstimate: 1/4h casecomponent: Control """ host_policy.assign_actions_to_event("Host Analysis Request", ["Prevent current event from proceeding"]) @request.addfinalizer def _cleanup(): host_policy.unassign_events("Host Analysis Request") policy_result = LogValidator( "/var/www/miq/vmdb/log/policy.log", matched_patterns=[ '.*Prevent current event from proceeding.*Host Analysis Request.*{}'.format(host.name) ] ) policy_result.fix_before_start() view = navigate_to(host, "Details") def _scan(): return view.entities.summary("Relationships").get_text_of("Drift History") original = _scan() view.toolbar.configuration.item_select("Perform SmartState Analysis", handle_alert=True) view.flash.assert_success_message('"{}": Analysis successfully initiated'.format(host.name)) try: wait_for( lambda: _scan() != original, num_sec=60, delay=5, fail_func=view.browser.refresh, message="Check if Drift History field is changed", ) except TimedOutError: policy_result.validate_logs() else: pytest.fail("CFME did not prevent analysing the Host {}".format(host.name))
def test_configuration_database_garbage_collection(appliance): """ Navigate to Settings -> Configuration -> Diagnostics -> CFME Region -> Database Submit Run database Garbage Collection Now a check UI/logs for errors. """ evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*Queued the action: \[Database GC\] being run for user:.*'], failure_patterns=['.*ERROR.*']) evm_tail.fix_before_start() view = navigate_to(appliance.server.zone.region, 'Database') view.submit_db_garbage_collection_button.click() view.flash.assert_message('Database Garbage Collection successfully initiated') evm_tail.validate_logs()
def test_external_auth(auth_type, ipa_crud, app_creds): evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command = 'appliance_console_cli --extauth-opts="/authentication/{}=true"'.format(auth_type) ipa_crud.ssh_client.run_command(command) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type)], hostname=ipa_crud.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail.fix_before_start() command2 = 'appliance_console_cli --extauth-opts="/authentication/{}=false"'.format(auth_type) ipa_crud.ssh_client.run_command(command2) evm_tail.validate_logs()
def test_appliance_console_external_auth_all(configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. RETURN clears info screen, 3. '13' change ext auth options, 4. 'auth_type' auth type to change, 5. '5' apply changes. Polarion: assignee: sbulage caseimportance: high initialEstimate: 1/4h """ evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*sso_enabled to true.*', '.*saml_enabled to true.*', '.*local_login_disabled to true.*' ], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, TimedCommand('13', 20), '1', '2', TimedCommand('5', 20), RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*sso_enabled to false.*', '.*saml_enabled to false.*', '.*local_login_disabled to false.*' ], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, TimedCommand('13', 20), '1', '2', TimedCommand('5', 20), RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_action_prevent_ssa(request, appliance, configure_fleecing, vm, vm_on, policy_for_testing): """Tests preventing Smart State Analysis. This test sets the policy that prevents VM analysis. Bugzilla: 1433084 Metadata: test_flag: actions, provision Polarion: assignee: jdupuy initialEstimate: 1/4h casecomponent: Control """ policy_for_testing.assign_actions_to_event("VM Analysis Request", ["Prevent current event from proceeding"]) @request.addfinalizer def _cleanup(): policy_for_testing.unassign_events("VM Analysis Request") policy_result = LogValidator( "/var/www/miq/vmdb/log/policy.log", matched_patterns=[ '.*Prevent current event from proceeding.*VM Analysis Request.*{}'.format(vm.name) ] ) policy_result.fix_before_start() wait_for_ssa_enabled(vm) try: do_scan(vm) except TimedOutError: policy_result.validate_logs() else: pytest.fail("CFME did not prevent analysing the VM {}".format(vm.name))
def test_task_id_for_method_automation_log(request, generic_catalog_item): """ Polarion: assignee: ghubale initialEstimate: 1/30h caseimportance: medium caseposneg: positive testtype: functional startsin: 5.10 casecomponent: Automate tags: automate setup: 1. Add existing or new automate method to newly created domain or create generic service testSteps: 1. Run that instance using simulation or order service catalog item 2. See automation log expectedResults: 1. 2. Task id should be included in automation log for method logs. Bugzilla: 1592428 """ result = LogValidator( "/var/www/miq/vmdb/log/automation.log", matched_patterns=[".*Q-task_id.*"] ) result.fix_before_start() service_request = generic_catalog_item.appliance.rest_api.collections.service_templates.get( name=generic_catalog_item.name ).action.order() request.addfinalizer(service_request.action.delete) # Need to wait until automation logs with 'Q-task_id' are generated, which happens after the # service_request becomes active. wait_for(lambda: service_request.request_state == "active", fail_func=service_request.reload, timeout=60, delay=3) result.validate_logs()
def test_appliance_console_external_auth(auth_type, ipa_crud, configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. RETURN clears info screen, 3. '13' change ext auth options, 4. 'auth_type' auth type to change, 5. '4' apply changes. Polarion: assignee: sbulage caseimportance: high initialEstimate: 1/4h """ # TODO this depends on the auth_type options being disabled when the test is run # TODO it assumes that first switch is to true, then false. evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to true.*'.format(auth_type.option)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, '13', auth_type.index, '5', RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set, timeout=30) evm_tail.validate_logs() evm_tail = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*{} to false.*'.format(auth_type.option)], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, '13', auth_type.index, '5', RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set, timeout=30) evm_tail.validate_logs()
def test_appliance_console_external_auth_all(configured_appliance): """ Commands: 1. 'ap' launches appliance_console, 2. RETURN clears info screen, 3. '13' change ext auth options, 4. 'auth_type' auth type to change, 5. '5' apply changes. Polarion: assignee: mnadeem caseimportance: high casecomponent: Auth initialEstimate: 1/4h """ evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to true.*', '.*saml_enabled to true.*', '.*local_login_disabled to true.*'], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, TimedCommand('13', 20), '1', '2', TimedCommand('5', 20), RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs() evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*sso_enabled to false.*', '.*saml_enabled to false.*', '.*local_login_disabled to false.*'], hostname=configured_appliance.hostname) evm_tail.fix_before_start() command_set = ('ap', RETURN, TimedCommand('13', 20), '1', '2', TimedCommand('5', 20), RETURN, RETURN) configured_appliance.appliance_console.run_commands(command_set) evm_tail.validate_logs()
def test_pause_and_resume_single_provider_api(appliance, provider, from_collections, app_creds, soft_assert, request): """ Test enabling and disabling a single provider via the CFME API through the ManageIQ API Client collection and entity classes. RFE: BZ 1507812 Polarion: assignee: juwatts caseimportance: medium initialEstimate: 1/6h """ evm_tail_disable = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*Disabling EMS \[{}\] id \[{}\].*'.format( provider.name, str(provider.id)) ], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_disable.fix_before_start() if from_collections: rep_disable = appliance.collections.containers_providers.pause_providers( provider) # collections class returns a list of dicts containing the API response. soft_assert(rep_disable[0].get('success'), 'Disabling provider {} failed'.format(provider.name)) else: rep_disable = provider.pause() # entity class returns a dict containing the API response soft_assert(rep_disable.get('success'), 'Disabling provider {} failed'.format(provider.name)) soft_assert(not provider.is_provider_enabled, 'Provider {} is still enabled'.format(provider.name)) evm_tail_disable.validate_logs() # Verify all monitoring workers have been shut down assert wait_for( lambda: not check_ems_state_in_diagnostics(appliance, provider)) # Create a project on the OpenShift provider via wrapanapi project_name = fauxfactory.gen_alpha(8).lower() provider.mgmt.create_project(name=project_name) @request.addfinalizer def _finalize(): provider.mgmt.delete_project(name=project_name) project = appliance.collections.container_projects.instantiate( name=project_name, provider=provider) # Trigger an appliance refresh provider.refresh_provider_relationships() soft_assert( not project.exists, 'Project {} exists even though provider has been disabled'.format( project_name)) evm_tail_enable = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=[ '.*Enabling EMS \[{}\] id \[{}\].*'.format(provider.name, str(provider.id)) ], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_enable.fix_before_start() if from_collections: rep_enable = appliance.collections.containers_providers.resume_providers( provider) soft_assert(rep_enable[0].get('success'), 'Enabling provider {} failed'.format(provider.name)) else: rep_enable = provider.resume() soft_assert(rep_enable.get('success'), 'Enabling provider {} failed'.format(provider.name)) soft_assert(provider.is_provider_enabled, 'Provider {} is still disabled'.format(provider.name)) evm_tail_enable.validate_logs() provider.refresh_provider_relationships() soft_assert( project.exists, 'Project {} does not exists even though provider has been enabled'. format(project_name))
def test_send_email_method(smtp_test, klass): """ Polarion: assignee: ghubale initialEstimate: 1/20h startsin: 5.10 casecomponent: Automate Bugzilla: 1688500 1702304 """ mail_to = fauxfactory.gen_email() mail_cc = fauxfactory.gen_email() mail_bcc = fauxfactory.gen_email() # Ruby code to send emails script = ( 'to = "{mail_to}"\n' 'subject = "Hello"\n' 'body = "Hi"\n' 'bcc = "{mail_bcc}"\n' 'cc = "{mail_cc}"\n' 'content_type = "message"\n' 'from = "*****@*****.**"\n' "$evm.execute(:send_email, to, from, subject, body, {{:bcc => bcc, :cc => cc," ":content_type => content_type}})" ) script = script.format(mail_cc=mail_cc, mail_bcc=mail_bcc, mail_to=mail_to) # Adding schema for executing method - send_email which helps to send emails klass.schema.add_fields({'name': 'execute', 'type': 'Method', 'data_type': 'String'}) # Adding method - send_email for sending mails method = klass.methods.create( name=fauxfactory.gen_alphanumeric(), display_name=fauxfactory.gen_alphanumeric(), location='inline', script=script) # Adding instance to call automate method - send_email instance = klass.instances.create( name=fauxfactory.gen_alphanumeric(), display_name=fauxfactory.gen_alphanumeric(), description=fauxfactory.gen_alphanumeric(), fields={'execute': {'value': method.name}} ) result = LogValidator( "/var/www/miq/vmdb/log/evm.log", matched_patterns=[ '.*:to=>"{mail_to}".*.*:cc=>"{mail_cc}".*.*:bcc=>"{mail_bcc}".*'.format( mail_to=mail_to, mail_cc=mail_cc, mail_bcc=mail_bcc ) ], ) result.fix_before_start() # Executing automate method - send_email using simulation simulate( appliance=klass.appliance, attributes_values={ "namespace": klass.namespace.name, "class": klass.name, "instance": instance.name, }, message="create", request="Call_Instance", execute_methods=True, ) result.validate_logs() # TODO(GH-8820): This issue should be fixed to check mails sent to person in 'cc' and 'bcc' # Check whether the mail sent via automate method really arrives wait_for(lambda: len(smtp_test.get_emails(to_address=mail_to)) > 0, num_sec=60, delay=10)
def test_pause_and_resume_single_provider_api(appliance, provider, from_collections, app_creds, soft_assert, request): """ Test enabling and disabling a single provider via the CFME API through the ManageIQ API Client collection and entity classes. RFE: BZ 1507812 Polarion: assignee: juwatts caseimportance: medium initialEstimate: 1/6h """ evm_tail_disable = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*Disabling EMS \[{}\] id \[{}\].*' .format(provider.name, str(provider.id))], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_disable.fix_before_start() if from_collections: rep_disable = appliance.collections.containers_providers.pause_providers(provider) # collections class returns a list of dicts containing the API response. soft_assert(rep_disable[0].get('success'), 'Disabling provider {} failed' .format(provider.name)) else: rep_disable = provider.pause() # entity class returns a dict containing the API response soft_assert(rep_disable.get('success'), 'Disabling provider {} failed' .format(provider.name)) soft_assert(not provider.is_provider_enabled, 'Provider {} is still enabled' .format(provider.name)) evm_tail_disable.validate_logs() # Verify all monitoring workers have been shut down assert wait_for(lambda: not check_ems_state_in_diagnostics(appliance, provider)) # Create a project on the OpenShift provider via wrapanapi project_name = fauxfactory.gen_alpha(8).lower() provider.mgmt.create_project(name=project_name) @request.addfinalizer def _finalize(): provider.mgmt.delete_project(name=project_name) project = appliance.collections.container_projects.instantiate(name=project_name, provider=provider) # Trigger an appliance refresh provider.refresh_provider_relationships() soft_assert(not project.exists, 'Project {} exists even though provider has been disabled' .format(project_name)) evm_tail_enable = LogValidator('/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*Enabling EMS \[{}\] id \[{}\].*' .format(provider.name, str(provider.id))], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_enable.fix_before_start() if from_collections: rep_enable = appliance.collections.containers_providers.resume_providers(provider) soft_assert(rep_enable[0].get('success'), 'Enabling provider {} failed' .format(provider.name)) else: rep_enable = provider.resume() soft_assert(rep_enable.get('success'), 'Enabling provider {} failed'.format(provider.name)) soft_assert(provider.is_provider_enabled, 'Provider {} is still disabled'.format(provider.name)) evm_tail_enable.validate_logs() provider.refresh_provider_relationships() soft_assert(project.exists, 'Project {} does not exists even though provider has been enabled' .format(project_name))
def test_blacklisted_container_events(request, appliance, provider, app_creds): """ Test that verifies that container events can be blacklisted. Polarion: assignee: juwatts caseimportance: medium casecomponent: Containers initialEstimate: 1/6h """ project_name = fauxfactory.gen_alpha(8).lower() # Create a project namespace provider.mgmt.create_project(name=project_name) provider.mgmt.wait_project_exist(name=project_name) request.addfinalizer(lambda: appliance_cleanup(provider=provider, appliance=appliance, namespace=project_name)) evm_tail_no_blacklist = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*event\_type\=\>\"POD\_CREATED\".*'], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_no_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) rails_result_no_blacklist = get_blacklisted_event_names(appliance) assert "POD_CREATED" not in rails_result_no_blacklist evm_tail_no_blacklist.validate_logs() delete_pod(provider=provider, namespace=project_name) appliance.update_advanced_settings( {"ems": {"ems_openshift": {"blacklisted_event_names": ["POD_CREATED"]}}} ) appliance.evmserverd.restart() appliance.wait_for_web_ui() rails_result_blacklist = get_blacklisted_event_names(appliance) assert "POD_CREATED" in rails_result_blacklist evm_tail_blacklist = LogValidator( '/var/www/miq/vmdb/log/evm.log', failure_patterns=['.*event\_type\=\>\"POD\_CREATED\".*'], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) evm_tail_blacklist.validate_logs() delete_pod(provider=provider, namespace=project_name) restore_advanced_settings(appliance=appliance) rails_destroy_blacklist = appliance.ssh_client.run_rails_console( "BlacklistedEvent.where(:event_name => 'POD_CREATED').destroy_all") assert rails_destroy_blacklist.success rails_result_default = get_blacklisted_event_names(appliance) assert "POD_CREATED" not in rails_result_default appliance.evmserverd.restart() appliance.wait_for_web_ui() evm_tail_no_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) # After restarting evm, there was a delay in logging for a brief period. validate_logs() was # being called before the log event was created and causing the test to fail. validate_logs() # calls pytest.fail, so using wait_for() here was not possible since there is no exception to # catch. Only option was to add a short sleep here. time.sleep(10) evm_tail_no_blacklist.validate_logs()
def test_blacklisted_container_events(request, appliance, provider, app_creds): """ Test that verifies that container events can be blacklisted. Polarion: assignee: juwatts caseimportance: medium casecomponent: Containers initialEstimate: 1/6h """ project_name = fauxfactory.gen_alpha(8).lower() # Create a project namespace provider.mgmt.create_project(name=project_name) provider.mgmt.wait_project_exist(name=project_name) request.addfinalizer(lambda: appliance_cleanup( provider=provider, appliance=appliance, namespace=project_name)) evm_tail_no_blacklist = LogValidator( '/var/www/miq/vmdb/log/evm.log', matched_patterns=['.*event\_type\=\>\"POD\_CREATED\".*'], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_no_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) rails_result_no_blacklist = get_blacklisted_event_names(appliance) assert "POD_CREATED" not in rails_result_no_blacklist evm_tail_no_blacklist.validate_logs() delete_pod(provider=provider, namespace=project_name) appliance.update_advanced_settings({ "ems": { "ems_openshift": { "blacklisted_event_names": ["POD_CREATED"] } } }) appliance.evmserverd.restart() appliance.wait_for_web_ui() rails_result_blacklist = get_blacklisted_event_names(appliance) assert "POD_CREATED" in rails_result_blacklist evm_tail_blacklist = LogValidator( '/var/www/miq/vmdb/log/evm.log', failure_patterns=['.*event\_type\=\>\"POD\_CREATED\".*'], hostname=appliance.hostname, username=app_creds['sshlogin'], password=app_creds['password']) evm_tail_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) evm_tail_blacklist.validate_logs() delete_pod(provider=provider, namespace=project_name) restore_advanced_settings(appliance=appliance) rails_destroy_blacklist = appliance.ssh_client.run_rails_console( "BlacklistedEvent.where(:event_name => 'POD_CREATED').destroy_all") assert rails_destroy_blacklist.success rails_result_default = get_blacklisted_event_names(appliance) assert "POD_CREATED" not in rails_result_default appliance.evmserverd.restart() appliance.wait_for_web_ui() evm_tail_no_blacklist.fix_before_start() create_pod(provider=provider, namespace=project_name) # After restarting evm, there was a delay in logging for a brief period. validate_logs() was # being called before the log event was created and causing the test to fail. validate_logs() # calls pytest.fail, so using wait_for() here was not possible since there is no exception to # catch. Only option was to add a short sleep here. time.sleep(10) evm_tail_no_blacklist.validate_logs()