Source code for cfme.containers.template

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

from navmazing import NavigateToAttribute, NavigateToSibling
from wrapanapi.containers.template import Template as ApiTemplate

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


[docs]class TemplateAllView(ContainerObjectAllBaseView): SUMMARY_TEXT = "Container Templates"
[docs]class TemplateDetailsView(ContainerObjectDetailsBaseView): pass
[docs]class Template(WidgetasticTaggable, Labelable, Navigatable): PLURAL = 'Templates' all_view = TemplateAllView details_view = TemplateDetailsView 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 ApiTemplate(self.provider.mgmt, self.name, self.project_name) @classmethod
[docs] def get_random_instances(cls, provider, count=1, appliance=None): """Generating random instances.""" template_list = provider.mgmt.list_template() random.shuffle(template_list) return [cls(obj.name, obj.project_name, provider, appliance=appliance) for obj in itertools.islice(template_list, count)]
@navigator.register(Template, 'All')
[docs]class All(CFMENavigateStep): prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn') VIEW = TemplateAllView
[docs] def step(self): self.prerequisite_view.navigation.select('Compute', 'Containers', 'Container Templates')
[docs] def resetter(self): # Reset view and selection self.view.toolbar.view_selector.select("List View") self.view.paginator.reset_selection()
@navigator.register(Template, 'Details')
[docs]class Details(CFMENavigateStep): prerequisite = NavigateToSibling('All') VIEW = TemplateDetailsView
[docs] def step(self): self.prerequisite_view.entities.get_entity(name=self.obj.name, project_name=self.obj.project_name).click()
@navigator.register(Template, 'EditTags')
[docs]class ImageRegistryEditTags(CFMENavigateStep): VIEW = TagPageView prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.toolbar.policy.item_select('Edit Tags')