# -*- coding: utf-8 -*-
import random
import itertools
from cached_property import cached_property
from wrapanapi.containers.route import Route as ApiRoute
from cfme.common import WidgetasticTaggable, TagPageView
from cfme.containers.provider import (Labelable, ContainerObjectAllBaseView,
ContainerObjectDetailsBaseView)
from cfme.utils.appliance.implementations.ui import navigator, CFMENavigateStep
from navmazing import NavigateToAttribute, NavigateToSibling
from cfme.utils.appliance import Navigatable
[docs]class RouteAllView(ContainerObjectAllBaseView):
SUMMARY_TEXT = "Routes"
[docs]class RouteDetailsView(ContainerObjectDetailsBaseView):
pass
[docs]class Route(WidgetasticTaggable, Labelable, Navigatable):
PLURAL = 'Routes'
all_view = RouteAllView
details_view = RouteDetailsView
def __init__(self, name, project_name, provider, appliance=None):
self.name = name
self.project_name = project_name
self.provider = provider
Navigatable.__init__(self, appliance=appliance)
@cached_property
def mgmt(self):
return ApiRoute(self.provider.mgmt, self.name, self.project_name)
@classmethod
[docs] def get_random_instances(cls, provider, count=1, appliance=None):
"""Generating random instances."""
route_list = provider.mgmt.list_route()
random.shuffle(route_list)
return [cls(obj.name, obj.project_name, provider, appliance=appliance)
for obj in itertools.islice(route_list, count)]
@navigator.register(Route, 'All')
[docs]class All(CFMENavigateStep):
prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn')
VIEW = RouteAllView
[docs] def step(self):
self.prerequisite_view.navigation.select('Compute', 'Containers', 'Routes')
[docs] def resetter(self):
# Reset view and selection
self.view.toolbar.view_selector.select("List View")
self.view.paginator.reset_selection()
@navigator.register(Route, 'Details')
[docs]class Details(CFMENavigateStep):
prerequisite = NavigateToSibling('All')
VIEW = RouteDetailsView
[docs] def step(self):
self.prerequisite_view.entities.get_entity(name=self.obj.name,
project_name=self.obj.project_name).click()
@navigator.register(Route, 'EditTags')