class StackDetailsEntities(View): """The entties on the detail page""" breadcrumb = BreadCrumb() title = Text('//div[@id="main-content"]//h1') properties = SummaryTable(title='Properties') lifecycle = SummaryTable(title='Lifecycle') relationships = SummaryTable(title='Relationships') smart_management = SummaryTable(title='Smart Management')
class entities(View): # noqa """ Represents details page when it's switched to Summary/Table view """ properties = SummaryTable(title="Properties") relationships = SummaryTable(title="Relationships") smart_management = SummaryTable(title="Smart Management") firewall_rules = Table( locator= '//th[normalize-space(.) = "Firewall Rules"]/ancestor::table[1]')
class DomainDetailsEntities(View): """Entities on the details page""" breadcrumb = BreadCrumb() title = Text(TITLE_LOCATOR) properties = SummaryTable(title='Properties') relationships = SummaryTable(title='Relationships') smart_management = SummaryTable(title='Smart Management') flash = FlashMessages(FLASH_MESSAGE_LOCATOR)
class KeyPairDetailsEntities(View): breadcrumb = BreadCrumb() title = Text('//div[@id="main-content"]//h1') flash = FlashMessages('.//div[@id="flash_msg_div"]' '/div[@id="flash_text_div" or contains(@class, "flash_text_div")]') properties = SummaryTable(title='Properties') relationships = SummaryTable(title='Relationships') smart_management = SummaryTable(title='Smart Management')
class summary(Tab): # noqa TAB_NAME = 'Summary' properties = SummaryTable(title='Properties') environment = SummaryTable(title='Environment') operating_system = SummaryTable(title='Operating System') tenancy = SummaryTable(title='Tenancy') smart_management = SummaryTable(title='Smart Management')
class ProviderDetailsSummaryView(View): """ represents Details page when it is switched to Summary aka Tables view """ properties = SummaryTable(title="Properties") status = SummaryTable(title="Status") relationships = SummaryTable(title="Relationships") overview = SummaryTable(title="Overview") smart_management = SummaryTable(title="Smart Management")
class ClusterDetailsEntities(View): """A cluster properties on the details page""" breadcrumb = BreadCrumb() title = Text('//div[@id="main-content"]//h1') relationships = SummaryTable(title='Relationships') totals_for_hosts = SummaryTable(title='Totals for Hosts') totals_for_vms = SummaryTable(title='Totals for VMs') configuration = SummaryTable(title='Configuration') smart_management = SummaryTable(title='Smart Management')
class entities(View): # noqa """ represents Details page when it is switched to Summary aka Tables view """ properties = SummaryTable(title="Properties") registered_vms = SummaryTable(title="Information for Registered VMs") relationships = SummaryTable(title="Relationships") content = SummaryTable(title="Content") smart_management = SummaryTable(title="Smart Management")
class retirement(WaitTab): # noqa TAB_NAME = 'Retirement' results = SummaryTable(title='Results') plays = Table('.//table[./thead/tr/th[contains(@align, "left") and ' 'normalize-space(.)="Plays"]]') details = SummaryTable(title='Details') credentials = SummaryTable(title='Credentials') standard_output = Text('.//div[h3[normalize-space(.)="Standard Output"]]' '//div[contains(@class, "term-container")]')
class entities(View): # noqa """ Represents details page when it's switched to Summary/Table view """ # TODO: remove all SummaryTables in favor of ParametrizedSummaryTable when safe properties = SummaryTable(title="Properties") relationships = SummaryTable(title="Relationships") status = SummaryTable(title="Status") overview = SummaryTable(title="Overview") smart_management = SummaryTable(title="Smart Management") summary = ParametrizedSummaryTable
class TenantDetailsEntities(View): """The entities on the details page""" breadcrumb = BreadCrumb() title = Text('//div[@id="main-content"]//h1') relationships = SummaryTable(title='Relationships') quotas = SummaryTable(title='Quotas') smart_management = SummaryTable(title='Smart Management') # element attributes changed from id to class in upstream-fine+, capture both with locator flash = FlashMessages('.//div[@id="flash_msg_div"]' '/div[@id="flash_text_div" or contains(@class, "flash_text_div")]')
class CredentialDetailsView(CredentialsBaseView): configuration = Dropdown("Configuration") download = Button(title="Download summary in PDF format") properties = SummaryTable("Properties") relationships = SummaryTable("Relationships") credential_options = SummaryTable("Credential Options") @property def is_displayed(self): return (self.in_ansible_credentials and self.title.text == "{} (Summary)".format(self.context["object"].name))
class ClusterDetailsEntities(View): """A cluster properties on the details page""" breadcrumb = BreadCrumb() title = Text('//div[@id="main-content"]//h1') relationships = SummaryTable(title='Relationships') totals_for_hosts = SummaryTable(title='Totals for Hosts') totals_for_vms = SummaryTable(title='Totals for VMs') configuration = SummaryTable(title='Configuration') smart_management = SummaryTable(title='Smart Management') # element attributes changed from id to class in upstream-fine+, capture both with locator flash = FlashMessages('.//div[@id="flash_msg_div"]' '/div[@id="flash_text_div" or contains(@class, "flash_text_div")]')
class MyServiceDetailView(MyServicesView): title = Text("#explorer_title_text") properties_detail = SummaryTable(title='Properties') lifecycle_detail = SummaryTable(title='Lifecycle') relationships_detail = SummaryTable(title='Relationships') vm_detail = SummaryTable(title='Totals for Service VMs ') smart_mgmt_detail = SummaryTable(title='Smart Management') @property def is_displayed(self): return (self.in_myservices and self.myservice.is_opened and self.title.text == 'Service "{}"'.format( self.context['object'].name))
class InstanceDetailsView(CloudInstanceView): tag = SummaryTable(title='Smart Management') @property def is_displayed(self): expected_name = self.context['object'].name expected_provider = self.context['object'].provider.name try: # Not displayed when the instance is archived relationships = self.entities.summary('Relationships') relationship_provider_name = relationships.get_text_of( 'Cloud Provider') return (self.in_cloud_instance and self.entities.title.text == f'Instance "{expected_name}"' and relationship_provider_name == expected_provider) except (NameError, NoSuchElementException): logger.warning( 'No "Cloud Provider" Relationship, assume instance view not displayed' ) # for archived instances the relationship_provider_name is removed from the summary # table return (self.in_cloud_instance and self.entities.title.text == f'Instance "{expected_name}"') toolbar = View.nested(InstanceDetailsToolbar) sidebar = View.nested(InstanceAccordion) entities = View.nested(VMDetailsEntities)
class InstanceDetailsView(CloudInstanceView): tag = SummaryTable(title='Smart Management') @property def is_displayed(self): expected_name = self.context['object'].name expected_provider = self.context['object'].provider.name try: # Not displayed when the instance is archived relationships = self.entities.summary('Relationships') relationship_provider_name = relationships.get_text_of( 'Cloud Provider') except (NameError, NoSuchElementException): logger.warning( 'No "Cloud Provider" Relationship, assume instance view not displayed' ) raise NotImplementedError( "This view has no unique markers for is_displayed check") return (self.in_cloud_instance and self.entities.title.text == 'Instance "{}"'.format(expected_name) and relationship_provider_name == expected_provider) toolbar = View.nested(InstanceDetailsToolbar) sidebar = View.nested(InstanceAccordion) entities = View.nested(VMDetailsEntities)
class HostDetailsEntities(View): """Represents Details page.""" properties = SummaryTable(title="Properties") relationships = SummaryTable(title="Relationships") compliance = SummaryTable(title="Compliance") configuration = SummaryTable(title="Configuration") smart_management = SummaryTable(title="Smart Management") security = SummaryTable(title="Security") authentication_status = SummaryTable(title="Authentication Status") openstack_hardware = SummaryTable(title="Openstack Hardware")
class PhysicalServerDetailsEntities(View): """Represents Details page.""" properties = SummaryTable(title="Properties") networks = SummaryTable(title="Networks") relationships = SummaryTable(title="Relationships") power_management = SummaryTable(title="Power Management") assets = SummaryTable(title="Assets") firmware = SummaryTable(title="Firmware") network_devices = SummaryTable(title="Network Devices") smart = SummaryTable(title="Smart Management")
class ImageDetailsEntities(View): title = Text( '//div[@id="main-content"]//h1//span[@id="explorer_title_text"]') properties = SummaryTable(title='Properties') lifecycle = SummaryTable(title='Lifecycle') relationships = SummaryTable(title='Relationships') compliance = SummaryTable(title='Compliance') power_management = SummaryTable(title='Power Management') security = SummaryTable(title='Security') configuration = SummaryTable(title='Configuration') smart_management = SummaryTable(title='Smart Management')
class ContainerObjectDetailsEntities(View): properties = SummaryTable(title="Properties") status = SummaryTable(title="Status") relationships = SummaryTable(title="Relationships") overview = SummaryTable(title="Overview") smart_management = SummaryTable(title="Smart Management") labels = SummaryTable(title="Labels")
class details(Tab): # noqa properties = SummaryTable(title='Properties') lifecycle = SummaryTable(title='Lifecycle') relationships = SummaryTable(title='Relationships') vm = SummaryTable(title='Totals for Service VMs ') smart_mgmt = SummaryTable(title='Smart Management') generic_objects = SummaryTable(title='Generic Objects')
class PhysicalSwitchDetailsEntities(View): """Represents Details page.""" properties = SummaryTable(title="Properties") management_networks = SummaryTable(title="Management Networks") relationships = SummaryTable(title="Relationships") power_management = SummaryTable(title="Power Management") firmwares = SummaryTable(title="Firmwares") ports = SummaryTable(title="Ports")
class MyServiceDetailsEntities(View): """Represents Details page.""" # TODO: use a ParametrizedSummaryTable eventually to do this summary = ParametrizedView.nested(ParametrizedSummaryTable) properties = SummaryTable(title='Properties') lifecycle = SummaryTable(title='Lifecycle') relationships = SummaryTable(title='Relationships') vm = SummaryTable(title='Totals for Service VMs ') smart_management = SummaryTable(title='Smart Management') generic_objects = SummaryTable(title='Generic Objects')
class DetailsEntitiesAnsibleCatalogItemView(View): title = Text(".//span[@id='explorer_title_text']") basic_information = SummaryForm("Basic Information") custom_image = FileInput("upload_image") upload = Button("Upload") smart_management = SummaryTable("Smart Management") @View.nested class provisioning(Tab): # noqa info = SummaryForm("Provisioning Info") variables_and_default_values = Table(".//div[@id='provisioning']//table") @View.nested class retirement(Tab): # noqa info = SummaryForm("Retirement Info") variables_and_default_values = Table(".//div[@id='retirement']//table")
class ImageDetailsView(CloudInstanceView): """View for an Image""" toolbar = View.nested(ImageToolbar) sidebar = View.nested(InstanceAccordion) entities = View.nested(ImageDetailsEntities) tag = SummaryTable(title='Smart Management') # to satisfy WidgetasticTagable, CHANGEME @property def is_displayed(self): accordion = self.sidebar.images_by_provider relationships = self.entities.relationships return ( self.in_cloud_instance and accordion.is_opened and accordion.tree.selected_item.text == self.context['object'].provider.name and relationships.get_text_of('Cloud Provider') == self.context['object'].provider.name and self.entities.title.text == 'Image "{}"'.format(self.context['object'].name))
class DetailsAnsibleCatalogItemView(ServicesCatalogView): title = Text(".//span[@id='explorer_title_text']") basic_information = SummaryForm("Basic Information") custom_image = FileInput("upload_image") upload = Button("Upload") smart_management = SummaryTable("Smart Management") @View.nested class provisioning(Tab): # noqa info = SummaryForm("Provisioning Info") variables_and_default_values = Table(".//div[@id='provisioning']//table") @View.nested class retirement(Tab): # noqa info = SummaryForm("Retirement Info") variables_and_default_values = Table(".//div[@id='retirement']//table") @property def is_displayed(self): return ( self.in_explorer() and self.title.text == 'Service Catalog Item "{}"'.format(self.context["object"].name) )
class entities(View): # noqa basic_information = SummaryTable(title="Basic Information") pxe_image_menus = SummaryTable(title='PXE Image Menus')
class entities(View): # noqa basic_information = SummaryTable(title="Basic Information") script = ScriptBox(locator='//textarea[contains(@id, "script_data")]')
class entities(View): # noqa basic_information = SummaryTable(title="Basic Information")
class retirement(Tab): # noqa results = SummaryTable(title='Results') plays = SummaryTable(title='Plays') details = SummaryTable(title='Details') credentials = SummaryTable(title='Credentials') standart_output = Text('.//div[@id="provisioning"]//pre')