# -*- coding: utf-8 -*-
import random
from cached_property import cached_property
from navmazing import NavigateToSibling, NavigateToAttribute
from wrapanapi.containers.image_registry import ImageRegistry as ApiImageRegistry
from cfme.common import WidgetasticTaggable, TagPageView
from cfme.containers.provider import (navigate_and_get_rows, ContainerObjectAllBaseView,
ContainerObjectDetailsBaseView)
from cfme.utils.appliance import Navigatable
from cfme.utils.appliance.implementations.ui import CFMENavigateStep, navigator
[docs]class ImageRegistryAllView(ContainerObjectAllBaseView):
SUMMARY_TEXT = "Image Registries"
[docs]class ImageRegistryDetailsView(ContainerObjectDetailsBaseView):
pass
[docs]class ImageRegistry(WidgetasticTaggable, Navigatable):
PLURAL = 'Image Registries'
all_view = ImageRegistryAllView
details_view = ImageRegistryDetailsView
def __init__(self, host, provider, appliance=None):
self.host = host
self.provider = provider
Navigatable.__init__(self, appliance=appliance)
@cached_property
def mgmt(self):
return ApiImageRegistry(self.provider.mgmt, self.name, self.host, None)
@property
def name(self):
return self.host
@classmethod
[docs] def get_random_instances(cls, provider, count=1, appliance=None):
"""Generating random instances."""
ir_rows_list = navigate_and_get_rows(provider, cls, count, silent_failure=True)
random.shuffle(ir_rows_list)
return [cls(row.host.text, provider, appliance=appliance)
for row in ir_rows_list]
@navigator.register(ImageRegistry, 'All')
[docs]class ImageRegistryAll(CFMENavigateStep):
VIEW = ImageRegistryAllView
prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn')
[docs] def step(self):
self.prerequisite_view.navigation.select('Compute', 'Containers', 'Image Registries')
[docs] def resetter(self):
# Reset view and selection
self.view.toolbar.view_selector.select("List View")
self.view.paginator.reset_selection()
@navigator.register(ImageRegistry, 'Details')
[docs]class ImageRegistryDetails(CFMENavigateStep):
VIEW = ImageRegistryDetailsView
prerequisite = NavigateToSibling('All')
[docs] def step(self):
self.prerequisite_view.entities.get_entity(host=self.obj.host).click()
@navigator.register(ImageRegistry, 'EditTags')