def test_action_tag(request, vm, vm_off, policy_for_testing): """ Tests action tag Metadata: test_flag: actions, provision """ if any(tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in vm.crud.get_tags()): vm.crud.remove_tag(("Service Level", "Gold")) tag_assign_action = actions.Action( fauxfactory.gen_alphanumeric(), action_type="Tag", action_values={"tag": ("My Company Tags", "Service Level", "Gold")}) policy_for_testing.assign_actions_to_event("VM Power On", [tag_assign_action]) @request.addfinalizer def finalize(): policy_for_testing.assign_events() tag_assign_action.delete() vm.start_vm() try: wait_for(lambda: any(tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in vm.crud.get_tags()), num_sec=600, message="tag presence check") except TimedOutError: pytest.fail("Tags were not assigned!")
def test_action_create_snapshots_and_delete_them(request, assign_policy_for_testing, vm, vm_on, vm_crud_refresh): """ This test tests actions 'Create a Snapshot' (custom) and 'Delete all Snapshots'. This test sets the policy that it makes snapshot of VM after it's powered off and then it cycles several time that it generates a couple of snapshots. Then the 'Delete all Snapshots' is assigned to power on event, VM is powered on and it waits for all snapshots to disappear. Metadata: test_flag: actions, provision """ # Set up the policy and prepare finalizer snapshot_name = fauxfactory.gen_alphanumeric() snapshot_create_action = actions.Action( fauxfactory.gen_alphanumeric(), action_type="Create a Snapshot", action_values={"snapshot_name": snapshot_name}) assign_policy_for_testing.assign_actions_to_event("VM Power Off", [snapshot_create_action]) @request.addfinalizer def finalize(): assign_policy_for_testing.assign_events() snapshot_create_action.delete() def create_one_snapshot(n): """ Args: n: Sequential number of snapshot for logging. """ # Power off to invoke snapshot creation snapshots_before = vm.crud.total_snapshots vm.stop_vm() vm_crud_refresh() wait_for(lambda: vm.crud.total_snapshots > snapshots_before, num_sec=800, message="wait for snapshot %d to appear" % (n + 1), delay=5) current_snapshot = vm.crud.current_snapshot_name logger.debug('Current Snapshot Name: {}'.format(current_snapshot)) assert current_snapshot == snapshot_name vm.start_vm() vm_crud_refresh() for i in range(4): create_one_snapshot(i) assign_policy_for_testing.assign_events() vm.stop_vm() vm_crud_refresh() assign_policy_for_testing.assign_actions_to_event("VM Power On", ["Delete all Snapshots"]) # Power on to invoke all snapshots deletion vm.start_vm() vm_crud_refresh() wait_for(lambda: vm.crud.total_snapshots == 0, num_sec=800, message="wait for snapshots to be deleted", delay=5)
def test_action_crud(): action = actions.Action( fauxfactory.gen_alphanumeric(), action_type="Tag", action_values={"tag": ("My Company Tags", "Department", "Accounting")}) # CR action.create() # U with update(action): action.description = "w00t w00t" # D action.delete()
def test_action_create_snapshot_and_delete_last(request, assign_policy_for_testing, vm, vm_on, vm_crud_refresh): """ This test tests actions 'Create a Snapshot' (custom) and 'Delete Most Recent Snapshot'. This test sets the policy that it makes snapshot of VM after it's powered off and when it is powered back on, it deletes the last snapshot. Metadata: test_flag: actions, provision """ if not hasattr(vm.crud, "total_snapshots"): pytest.skip("This provider does not support snapshots yet!") # Set up the policy and prepare finalizer snapshot_name = fauxfactory.gen_alphanumeric() snapshot_create_action = actions.Action( fauxfactory.gen_alphanumeric(), action_type="Create a Snapshot", action_values={"snapshot_name": snapshot_name}) assign_policy_for_testing.assign_actions_to_event("VM Power Off", [snapshot_create_action]) assign_policy_for_testing.assign_actions_to_event( "VM Power On", ["Delete Most Recent Snapshot"]) @request.addfinalizer def finalize(): assign_policy_for_testing.assign_events() snapshot_create_action.delete() snapshots_before = vm.crud.total_snapshots # Power off to invoke snapshot creation vm.stop_vm() vm_crud_refresh() wait_for(lambda: vm.crud.total_snapshots > snapshots_before, num_sec=800, message="wait for snapshot appear", delay=5) assert vm.crud.current_snapshot_description == "Created by EVM Policy Action" assert vm.crud.current_snapshot_name == snapshot_name # Snapshot created and validated, so let's delete it snapshots_before = vm.crud.total_snapshots # Power on to invoke last snapshot deletion vm.start_vm() wait_for(lambda: vm.crud.total_snapshots < snapshots_before, num_sec=800, message="wait for snapshot deleted", delay=5)
def test_action_untag(request, assign_policy_for_testing, vm, vm_off, vm_crud_refresh): """ Tests action untag Metadata: test_flag: actions, provision """ if not any(tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in vm.crud.get_tags()): vm.crud.add_tag(("Service Level", "Gold"), single_value=True) @request.addfinalizer def _remove_tag(): if any(tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in vm.crud.get_tags()): vm.crud.remove_tag(("Service Level", "Gold")) tag_unassign_action = actions.Action( fauxfactory.gen_alphanumeric(), action_type="Remove Tags", action_values={"remove_tag": ["Service Level"]}) assign_policy_for_testing.assign_actions_to_event("VM Power On", [tag_unassign_action]) @request.addfinalizer def finalize(): assign_policy_for_testing.assign_events() tag_unassign_action.delete() vm.start_vm() vm_crud_refresh() try: wait_for(lambda: not any(tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in vm.crud.get_tags()), num_sec=600, message="tag presence check") except TimedOutError: pytest.fail("Tags were not unassigned!")
def setup_for_alerts(request, alerts, event=None, vm_name=None, provider=None): """This function takes alerts and sets up CFME for testing it. If event and further args are not specified, it won't create the actions and policy profiles. Args: request: py.test funcarg request alerts: Alert objects event: Event to hook on (VM Power On, ...) vm_name: VM name to use for policy filtering provider: funcarg provider """ alert_profile = alert_profiles.VMInstanceAlertProfile( "Alert profile for {}".format(vm_name), alerts ) alert_profile.create() request.addfinalizer(alert_profile.delete) alert_profile.assign_to("The Enterprise") if event is not None: action = actions.Action( "Evaluate Alerts for {}".format(vm_name), "Evaluate Alerts", action_values={"alerts_to_evaluate": alerts} ) action.create() request.addfinalizer(action.delete) policy = policies.VMControlPolicy( "Evaluate Alerts policy for {}".format(vm_name), scope="fill_field(VM and Instance : Name, INCLUDES, {})".format(vm_name) ) policy.create() request.addfinalizer(policy.delete) policy_profile = policy_profiles.PolicyProfile( "Policy profile for {}".format(vm_name), [policy] ) policy_profile.create() request.addfinalizer(policy_profile.delete) policy.assign_actions_to_event(event, [action]) provider.assign_policy_profiles(policy_profile.description) request.addfinalizer(lambda: provider.unassign_policy_profiles(policy_profile.description))