In [ ]:
# adding provider and the rest of staff necessary for working with timelines
from cfme.utils.generators import random_vm_name
from cfme.utils.providers import get_crud

prov = get_crud('vsphere6-nested')
if not prov.exists:
    prov.create()

vm = appliance.collections.infra_vms.instantiate(name=random_vm_name("tl", max_length=16), provider=prov)
print("vm name: {}".format(vm.name))
if vm.exists:
    vm.delete_from_provider()
vm.create_on_provider()

In [ ]:
# generating some power activity management events
prov.mgmt.wait_vm_running(vm.name)
prov.mgmt.stop_vm(vm.name)
prov.mgmt.wait_vm_stopped(vm.name)
prov.mgmt.start_vm(vm.name)
prov.mgmt.wait_vm_running(vm.name)

In [ ]:
# timelines filter setup and obtaining all displayed power activity events
from utils.appliance.implementations.ui import navigate_to
tl_view  = navigate_to(vm, 'Timelines')
tl_view.filter.event_type.select_by_visible_text('Management Events')
tl_view.filter.event_category.fill('Power Activity')
tl_view.filter.time_position.select_by_visible_text('centered')
tl_view.filter.apply.click()

all_vm_events = tl_view.chart.get_events('Power Activity')
# checking which events we have there
for evt in all_vm_events:
    print(evt.source_vm, evt.event_type, evt.event_source)

In [ ]:
# obtaining the same vm events from provider entity
tl_view  = navigate_to(prov, 'Timelines')
# Management Events and Power Activity are already chosen by default
tl_view.filter.time_position.select_by_visible_text('centered')
tl_view.filter.apply.click()

prov_events = tl_view.chart.get_events()
vm_related_events = [evt for evt in prov_events if hasattr(evt, 'source_vm') and evt.source_vm==vm.name]
for evt in vm_related_events:
    print(evt.source_vm, evt.event_type, evt.event_source)

In [ ]:
#to be continued
# todo: policy events