Source code for cfme.containers.project

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

from wrapanapi.containers.project import Project as ApiProject

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 CFMENavigateStep, navigator
from navmazing import NavigateToAttribute, NavigateToSibling


[docs]class ProjectAllView(ContainerObjectAllBaseView): SUMMARY_TEXT = "Projects"
[docs]class ProjectDetailsView(ContainerObjectDetailsBaseView): pass
[docs]class Project(WidgetasticTaggable, Labelable, Navigatable): PLURAL = 'Projects' all_view = ProjectAllView details_view = ProjectDetailsView def __init__(self, name, provider, appliance=None): self.name = name self.provider = provider Navigatable.__init__(self, appliance=appliance) @cached_property def mgmt(self): return ApiProject(self.provider.mgmt, self.name) @classmethod
[docs] def get_random_instances(cls, provider, count=1, appliance=None): """Generating random instances.""" project_list = provider.mgmt.list_project() random.shuffle(project_list) return [cls(obj.name, provider, appliance=appliance) for obj in itertools.islice(project_list, count)]
@navigator.register(Project, 'All')
[docs]class All(CFMENavigateStep): prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn') VIEW = ProjectAllView
[docs] def step(self): self.prerequisite_view.navigation.select('Compute', 'Containers', 'Projects')
[docs] def resetter(self): # Reset view and selection self.view.toolbar.view_selector.select("List View") if self.view.paginator.is_displayed: self.view.paginator.reset_selection()
@navigator.register(Project, 'Details')
[docs]class Details(CFMENavigateStep): VIEW = ProjectDetailsView prerequisite = NavigateToSibling('All')
[docs] def step(self): self.prerequisite_view.entities.get_entity(name=self.obj.name).click()
@navigator.register(Project, 'EditTags')
[docs]class ImageRegistryEditTags(CFMENavigateStep): VIEW = TagPageView prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.toolbar.policy.item_select('Edit Tags')