def find_quadicon(self, **kwargs): """Find and return a quadicon belonging to a specific instance TODO: remove this method and refactor callers to use view entities instead Args: Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not kwargs.get('do_not_navigate', False): navigate_to(self, 'All') # Make sure we're looking at the quad grid view = self.browser.create_view(InstanceAllView) view.toolbar.view_selector.select('Grid View') # Keeping paginator iteration here to create Quadicon object # using entities.get_first_entity won't give the quadicon object we need for compatibility for _ in view.entities.paginator.pages(): quadicon = Quadicon(self.name, "instance") if quadicon.exists: if kwargs.get('mark', False): sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format(self.name))
def find_quadicon( self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False): """Find and return a quadicon belonging to a specific instance Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: InstanceNotFound """ if not do_not_navigate: if from_any_provider: sel.force_navigate("clouds_instances") elif not self.provider_crud.load_all_provider_instances(): raise InstanceNotFound("No instances for the provider!") toolbar.set_vms_grid_view() elif refresh: sel.refresh() if not paginator.page_controls_exist(): raise InstanceNotFound("Instance '{}' not found in UI!".format(self.name)) paginator.results_per_page(1000) for page in paginator.pages(): quadicon = Quadicon(self.name, "instance") if sel.is_displayed(quadicon): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format(self.name))
def _find_quadicon(self, is_vm=True, do_not_navigate=False, mark=False, refresh=True): """Find and return a quadicon belonging to a specific vm Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmNotFound """ quadicon = Quadicon(self.name, "vm") if not do_not_navigate: if is_vm: self.provider_crud.load_all_provider_vms() else: self.provider_crud.load_all_provider_templates() toolbar.set_vms_grid_view() elif refresh: sel.refresh() if not paginator.page_controls_exist(): if is_vm: raise VmNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) paginator.results_per_page(1000) for page in paginator.pages(): if sel.is_displayed(quadicon): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmNotFound("VM '{}' not found in UI!".format(self.name))
def delete(self): """Remove template from CFME VMDB""" sel.force_navigate("clouds_images") quad = Quadicon(self.name, 'image') sel.check(quad.checkbox()) cfg_btn('Remove selected items from the VMDB', invokes_alert=True) sel.handle_alert()
def find_quadicon(self, **kwargs): """Find and return a quadicon belonging to a specific instance TODO: remove this method and refactor callers to use view entities instead Args: Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not kwargs.get('do_not_navigate', False): navigate_to(self, 'All') # Make sure we're looking at the quad grid view = self.browser.create_view(InstanceAllView) view.toolbar.view_selector.select('Grid View') # Keeping paginator iteration here to create Quadicon object # using entities.get_first_entity won't give the quadicon object we need for compatibility for _ in view.entities.paginator.pages(): quadicon = Quadicon(self.name, "instance") if quadicon.exists: if kwargs.get('mark', False): sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format( self.name))
def delete(self): """Remove template from CFME VMDB""" sel.force_navigate("clouds_images") quad = Quadicon(self.name, 'image') sel.check(quad.checkbox()) cfg_btn('Remove selected items from the VMDB', invokes_alert=True) sel.handle_alert()
def _check_repo(name, callback=None): if current_version() >= '5.4': quadicon = Quadicon(name, "repository") sel.check(quadicon.checkbox()) else: sel.check(sel.element('.//img', root=_repo_row(name)[0])) if callback: return callback()
def find_quadicon(self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False, use_search=True): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: # TODO implement as navigate_to when cfme.infra.virtual_machines has destination navigate_to(self, 'All') elif self.is_vm: navigate_to(self, 'AllForProvider', use_resetter=False) else: navigate_to(self, 'AllForProvider', use_resetter=False) toolbar.select('Grid View') else: # Search requires navigation, we shouldn't use it then use_search = False if refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format( self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format( self.name)) paginator.results_per_page(1000) if use_search: try: if not search.has_quick_search_box(): # TODO rework search for archived/orphaned VMs if self.is_vm: navigate_to(self, 'AllForProvider', use_resetter=False) else: navigate_to(self, 'AllForProvider', use_resetter=False) search.normal_search(self.name) except Exception as e: logger.warning("Failed to use search: %s", str(e)) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format( self.name))
def find_quadicon( self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False, use_search=True): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: # TODO implement as navigate_to when cfme.infra.virtual_machines has destination sel.force_navigate(self.ALL_LIST_LOCATION) elif self.is_vm: self.provider.load_all_provider_vms() else: self.provider.load_all_provider_templates() toolbar.select('Grid View') else: # Search requires navigation, we shouldn't use it then use_search = False if refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) # this is causing some issues in 5.5.0.9, commenting out for a bit # paginator.results_per_page(1000) if use_search: try: if not search.has_quick_search_box(): # We don't use provider-specific page (vm_templates_provider_branch) here # as those don't list archived/orphaned VMs if self.is_vm: navigate_to(self.provider, 'Instances') else: navigate_to(self.provider, self.provider.templates_destination_name) search.normal_search(self.name) except Exception as e: logger.warning("Failed to use search: %s", str(e)) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon( self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False, use_search=True): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: sel.force_navigate(self.ALL_LIST_LOCATION) elif self.is_vm: self.provider.load_all_provider_vms() else: self.provider.load_all_provider_templates() toolbar.select('Grid View') else: # Search requires navigation, we shouldn't use it then use_search = False if refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) # this is causing some issues in 5.5.0.9, commenting out for a bit # paginator.results_per_page(1000) if use_search: try: if not search.has_quick_search_box(): # We don't use provider-specific page (vm_templates_provider_branch) here # as those don't list archived/orphaned VMs if self.is_vm: sel.force_navigate(self.provider.instances_page_name) else: sel.force_navigate(self.provider.templates_page_name) search.normal_search(self.name) except Exception as e: logger.warning("Failed to use search: %s", str(e)) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon( self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False, use_search=True): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: # TODO implement as navigate_to when cfme.infra.virtual_machines has destination navigate_to(self, 'All') elif self.is_vm: navigate_to(self, 'AllForProvider', use_resetter=False) else: navigate_to(self, 'AllForProvider', use_resetter=False) toolbar.select('Grid View') else: # Search requires navigation, we shouldn't use it then use_search = False if refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) paginator.results_per_page(1000) if use_search: try: if not search.has_quick_search_box(): # TODO rework search for archived/orphaned VMs if self.is_vm: navigate_to(self, 'AllForProvider', use_resetter=False) else: navigate_to(self, 'AllForProvider', use_resetter=False) search.normal_search(self.name) except Exception as e: logger.warning("Failed to use search: %s", str(e)) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon(self, *args, **kwargs): """Find and return a quadicon belonging to a specific instance Args: Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not kwargs.get('do_not_navigate', False): navigate_to(self, 'All') tb.select('Grid View') for page in paginator.pages(): quadicon = Quadicon(self.name, "instance") if quadicon.exists: if kwargs.get('mark', False): sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format(self.name))
def find_quadicon(self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: sel.force_navigate(self.ALL_LIST_LOCATION) elif self.is_vm: self.provider.load_all_provider_vms() else: self.provider.load_all_provider_templates() toolbar.select('Grid View') elif refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format( self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format( self.name)) # this is causing some issues in 5.5.0.9, commenting out for a bit # paginator.results_per_page(1000) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format( self.name))
def find_quadicon(self, *args, **kwargs): """Find and return a quadicon belonging to a specific instance Args: Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not kwargs.get('do_not_navigate', False): navigate_to(self, 'All') tb.select('Grid View') for page in paginator.pages(): quadicon = Quadicon(self.name, "instance") if quadicon.exists: if kwargs.get('mark', False): sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format( self.name))
def find_quadicon(self, do_not_navigate=False, mark=False, refresh=True): """Find and return a quadicon belonging to a specific vm Args: vm: Host name as displayed at the quadicon Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not do_not_navigate: self.provider_crud.load_all_provider_vms() toolbar.set_vms_grid_view() if refresh: sel.refresh() for page in paginator.pages(): quadicon = Quadicon(self.name, "vm") if sel.is_displayed(quadicon): if mark: sel.click(quadicon.checkbox()) return quadicon else: raise NoVmFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon(self, do_not_navigate=False, mark=False, refresh=True): """Find and return a quadicon belonging to a specific vm Args: vm: Host name as displayed at the quadicon Returns: :py:class:`cfme.web_ui.Quadicon` instance """ if not do_not_navigate: self.provider_crud.load_all_provider_vms() toolbar.set_vms_grid_view() if refresh: sel.refresh() for page in paginator.pages(): quadicon = Quadicon(self.name, "vm") if sel.is_displayed(quadicon): if mark: sel.click(quadicon.checkbox()) return quadicon else: raise NoVmFound("VM '{}' not found in UI!".format(self.name))
def _find_quadicon( self, is_vm=True, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmNotFound """ quadicon = Quadicon(self.name, "vm") if not do_not_navigate: if from_any_provider: if is_vm: sel.force_navigate("infra_vms") else: sel.force_navigate("infra_templates") elif is_vm: self.provider_crud.load_all_provider_vms() else: self.provider_crud.load_all_provider_templates() toolbar.set_vms_grid_view() elif refresh: sel.refresh() if not paginator.page_controls_exist(): if is_vm: raise VmNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) paginator.results_per_page(1000) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmNotFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon(self, **kwargs): """Find and return a quadicon belonging to a specific instance Args: Returns: :py:class:`cfme.web_ui.Quadicon` instance """ # TODO refactor a bit when quadicon is widget if not kwargs.get('do_not_navigate', False): navigate_to(self, 'All') # Make sure we're looking at the quad grid view = self.browser.create_view(InstanceAllView) view.toolbar.view_selector.select('Grid View') for _ in view.paginator.pages(): quadicon = Quadicon(self.name, "instance") if quadicon.exists: if kwargs.get('mark', False): sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format( self.name))
def find_quadicon( self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False): """Find and return a quadicon belonging to a specific vm Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: VmOrInstanceNotFound """ quadicon = Quadicon(self.name, self.quadicon_type) if not do_not_navigate: if from_any_provider: sel.force_navigate(self.ALL_LIST_LOCATION) elif self.is_vm: self.provider.load_all_provider_vms() else: self.provider.load_all_provider_templates() toolbar.select('Grid View') elif refresh: sel.refresh() if not paginator.page_controls_exist(): if self.is_vm: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name)) else: raise TemplateNotFound("Template '{}' not found in UI!".format(self.name)) # this is causing some issues in 5.5.0.9, commenting out for a bit # paginator.results_per_page(1000) for page in paginator.pages(): if sel.is_displayed(quadicon, move_to=True): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise VmOrInstanceNotFound("VM '{}' not found in UI!".format(self.name))
def find_quadicon(self, do_not_navigate=False, mark=False, refresh=True, from_any_provider=False): """Find and return a quadicon belonging to a specific instance Args: from_any_provider: Whether to look for it anywhere (root of the tree). Useful when looking up archived or orphaned VMs Returns: :py:class:`cfme.web_ui.Quadicon` instance Raises: InstanceNotFound """ if not do_not_navigate: if from_any_provider: sel.force_navigate("clouds_instances") elif not self.provider_crud.load_all_provider_instances(): raise InstanceNotFound("No instances for the provider!") toolbar.set_vms_grid_view() elif refresh: sel.refresh() if not paginator.page_controls_exist(): raise InstanceNotFound("Instance '{}' not found in UI!".format( self.name)) paginator.results_per_page(1000) for page in paginator.pages(): quadicon = Quadicon(self.name, "instance") if sel.is_displayed(quadicon): if mark: sel.check(quadicon.checkbox()) return quadicon else: raise InstanceNotFound("Instance '{}' not found in UI!".format( self.name))