Source code for cfme.containers.container

# -*- coding: utf-8 -*-
import random
import itertools

from navmazing import NavigateToSibling, NavigateToAttribute

from widgetastic_manageiq import Accordion, ManageIQTree, View, Table
from widgetastic_patternfly import VerticalNavigation
from widgetastic.widget import Text
from widgetastic.xpath import quote
from widgetastic.utils import Version, VersionPick

from cfme.containers.provider import (ContainerObjectAllBaseView, ContainerObjectDetailsBaseView)
from cfme.common import WidgetasticTaggable, TagPageView
from cfme.utils.appliance import Navigatable
from cfme.utils.appliance.implementations.ui import CFMENavigateStep, navigator
from cfme.utils import version


[docs]class ContainerAllView(ContainerObjectAllBaseView): """Containers All view""" summary = Text(VersionPick({ Version.lowest(): '//h3[normalize-space(.) = {}]'.format(quote('All Containers')), '5.8': '//h1[normalize-space(.) = {}]'.format(quote('Containers')) })) containers = Table(locator="//div[@id='list_grid']//table") @View.nested class Filters(Accordion): # noqa ACCORDION_NAME = "Filters" @View.nested class Navigation(VerticalNavigation): DIV_LINKS_MATCHING = './/div/ul/li/a[contains(text(), {txt})]' def __init__(self, parent, logger=None): VerticalNavigation.__init__(self, parent, '#Container_def_searches', logger=logger) tree = ManageIQTree() @property def is_displayed(self): return self.summary.is_displayed
[docs]class ContainerDetailsView(ContainerObjectDetailsBaseView): pass
[docs]class Container(WidgetasticTaggable, Navigatable): PLURAL = 'Containers' all_view = ContainerAllView details_view = ContainerDetailsView def __init__(self, name, pod, appliance=None): self.name = name self.pod = pod Navigatable.__init__(self, appliance=appliance) @property def project_name(self): return self.pod.project_name @classmethod
[docs] def get_random_instances(cls, provider, count=1, appliance=None): """Generating random instances.""" containers_list = provider.mgmt.list_container() random.shuffle(containers_list) return [cls(obj.name, obj.cg_name, appliance=appliance) for obj in itertools.islice(containers_list, count)]
@navigator.register(Container, 'All')
[docs]class ContainerAll(CFMENavigateStep): VIEW = ContainerAllView prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn')
[docs] def step(self): self.prerequisite_view.navigation.select('Compute', 'Containers', 'Containers')
[docs] def resetter(self): if version.current_version() < '5.8': self.view.Filters.tree.click_path('All Containers') else: self.view.Filters.Navigation.select('ALL (Default)') # Reset view and selection self.view.toolbar.view_selector.select("List View") self.view.paginator.reset_selection()
@navigator.register(Container, 'Details')
[docs]class ContainerDetails(CFMENavigateStep): VIEW = ContainerDetailsView prerequisite = NavigateToSibling('All')
[docs] def step(self): self.prerequisite_view.entities.get_entity(name=self.obj.name, pod_name=self.obj.pod).click()
@navigator.register(Container, 'EditTags')
[docs]class ContainerEditTags(CFMENavigateStep): VIEW = TagPageView prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.toolbar.policy.item_select('Edit Tags')
@navigator.register(Container, 'Timelines')
[docs]class ContainerTimeLines(CFMENavigateStep): prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.toolbar.monitoring.item_select('Timelines')
@navigator.register(Container, 'Utilization')
[docs]class ContainerUtilization(CFMENavigateStep): prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.toolbar.monitoring.item_select('Utilization')