class details(SatTab): # Basic information name = EditableEntry(name='Name') uuid = ReadOnlyEntry(name='UUID') description = EditableEntry(name='Description') type = ReadOnlyEntry(name='Type') katello_agent = ReadOnlyEntry(name='Katello Agent') virtual_guests = ReadOnlyEntry(name='Virtual Guests') registered_through = ReadOnlyEntry(name='Registered Through') # Subscriptions subscription_status = ReadOnlyEntry(name='Subscription Status') details = ReadOnlyEntry(name='Details') auto_attach = EditableEntryCheckbox(name='Auto-Attach') service_level = EditableEntrySelect(name='Service Level') # Content Host Properties os = ReadOnlyEntry(name='OS') architecture = ReadOnlyEntry(name='Architecture') number_of_cpus = ReadOnlyEntry(name='Number of CPUs') sockets = ReadOnlyEntry(name='Sockets') cores_per_socket = ReadOnlyEntry(name='Cores per Socket') ram = ReadOnlyEntry(name='RAM (GB)') virtual_guest = ReadOnlyEntry(name='Virtual Guest') # Installable Errata security = ReadOnlyEntry(name='Security') bug_fix = ReadOnlyEntry(name='Bug Fix') enhancement = ReadOnlyEntry(name='Enhancement') # Content Host Content release_version = EditableEntrySelect(name='Release Version') content_view = EditableEntrySelect(name='Content View') lce = ParametrizedView.nested(LCESelectorGroup) # Content Host Status registered = ReadOnlyEntry(name='Registered') registered_by = ReadOnlyEntry(name='Registered By') last_checkin = ReadOnlyEntry(name='Last Checkin')
class details(SatTab): name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') description = EditableEntry(name='Description') unauthenticated_pull = EditableEntryCheckbox( name='Unauthenticated Pull') registry_name_pattern = EditableEntry(name='Registry Name Pattern')
class details(SatTab): name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') description = EditableEntry(name='Description') composite = ReadOnlyEntry(name='Composite?') force_puppet = EditableEntryCheckbox(name='Force Puppet Environment') solve_dependencies = EditableEntryCheckbox(name='Solve Dependencies')
class details(SatTab): name = EditableEntry(name='Name') description = EditableEntry(name='Description') hosts_limit = EditableLimitEntry(name='Host Limit') service_level = EditableEntrySelect(name='Service Level') lce = ParametrizedView.nested(LCESelectorGroup) content_view = EditableEntrySelect(name='Content View')
class details(SatTab): name = EditableEntry(name='Name') description = EditableEntry(name='Description') date_time = EditableDateTime(name='Start Date') next_sync = ReadOnlyEntry(name='Next Sync') enabled = EditableEntryCheckbox(name='Sync Enabled') interval = EditableEntrySelect(name='Interval') products_count = ReadOnlyEntry(name='Products')
class DockerRepository(View): registry_url = EditableEntry(name='Registry URL') upstream_repo_name = EditableEntry(name='Upstream Repository') repo_name = ReadOnlyEntry(name='Name') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP')
class PuppetRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_username = EditableEntry(name='Upstream Username') upstream_password = EditableEntry(name='Upstream Password') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') published_at = ReadOnlyEntry(name='Published At')
class details(SatTab): name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') gpg_key = EditableEntrySelect(name='GPG Key') ssl_ca_cert = EditableEntrySelect(name='SSL CA Cert') ssl_client_cert = EditableEntrySelect(name='SSL Client Cert') ssl_client_key = EditableEntrySelect(name='SSL Client Key') description = EditableEntry(name='Description') repos_count = ReadOnlyEntry(name='Number of Repositories') tasks_count = ReadOnlyEntry(name='Active Tasks') sync_plan = EditableEntrySelect(name='Sync Plan')
class YumRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_username = EditableEntry(name='Upstream Username') upstream_password = EditableEntry(name='Upstream Password') metadata_type = EditableEntrySelect(name='Yum Metadata Checksum') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') gpg_key = EditableEntrySelect(name='GPG Key') download_policy = EditableEntrySelect(name='Download Policy')
class DockerRepository(View): registry_url = EditableEntry(name='Registry URL') upstream_repo_name = EditableEntry(name='Upstream Repository') repo_name = ReadOnlyEntry(name='Name') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry(name='Upstream Authorization') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass
class HostCollectionEditView(BaseLoggedInView): title = Text("//h3[contains(., 'Basic Information')]") name = EditableEntry(name='Name') description = EditableEntry(name='Description') @property def is_displayed(self): return self.browser.wait_for_element( self.title, exception=False) is not None @View.nested class hosts(SatTab): TAB_NAME = 'Hosts' resources = View.nested(AddRemoveResourcesView)
class details(SatTab): name = EditableEntry(name='Name') description = EditableEntry(name='Description') content_hosts = ReadOnlyEntry( locator=(".//dt[contains(., 'Content Hosts')]/following-sibling" "::dd/a[not(contains(@class, 'ng-hide'))][1]") ) content_host_limit = EditableLimitEntry(name='Content Host Limit') # Package Installation, Removal, and Update manage_packages = Text(".//a[@ng-click='openPackagesModal()']") # Errata Installation install_errata = Text(".//a[@ng-click='openErrataModal()']") # Change assigned Lifecycle Environment or Content View change_assigned_content = Text( ".//a[@ng-click='openEnvironmentModal()']")
class AnsibleCollectionRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') upstream_url = EditableEntry(name='Upstream URL') requirements = EditableEntry(name='Requirements') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry(name='Upstream Authorization') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]") http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass
class FileRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') unprotected = EditableEntryCheckbox(name='Unprotected') mirroring_policy = EditableEntrySelect(name='Mirroring Policy')
class OstreeRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') published_at = ReadOnlyEntry(name='Published At')
class details(SatTab): # Basic information name = EditableEntry(name='Name') uuid = ReadOnlyEntry(name='Subscription UUID') bios_uuid = ReadOnlyEntry(name='BIOS UUID') description = EditableEntry(name='Description') type = ReadOnlyEntry(name='Type') katello_agent = ReadOnlyEntry(name='Katello Agent') virtual_guests = ReadOnlyEntry(name='Virtual Guests') registered_through = ReadOnlyEntry(name='Registered Through') # Subscriptions subscription_status = ReadOnlyEntry(name='Subscription Status') details = ReadOnlyEntry(name='Details') auto_attach = EditableEntryCheckbox(name='Auto-Attach') # System Purpose system_purpose_status = ReadOnlyEntry(name='System Purpose Status') service_level = EditableEntrySelect(name='Service Level (SLA)') usage_type = EditableEntrySelect(name='Usage Type') role = EditableEntrySelect(name='Role') addons = EditableEntryMultiCheckbox(name='Add ons') # Content Host Properties os = ReadOnlyEntry( locator= ".//dt[.='OS']/following-sibling::dd[not(contains(@class, 'ng-hide'))]" ) architecture = ReadOnlyEntry(name='Architecture') number_of_cpus = ReadOnlyEntry(name='Number of CPUs') sockets = ReadOnlyEntry(name='Sockets') cores_per_socket = ReadOnlyEntry(name='Cores per Socket') ram = ReadOnlyEntry(name='RAM (GB)') virtual_guest = ReadOnlyEntry(name='Virtual Guest') # Installable Errata security = ReadOnlyEntry(name='Security') bug_fix = ReadOnlyEntry(name='Bug Fix') enhancement = ReadOnlyEntry(name='Enhancement') # Content Host Content release_version = EditableEntrySelect(name='Release Version') content_view = EditableEntrySelect(name='Content View') lce = ParametrizedView.nested(LCESelectorGroup) # Content Host Status registered = ReadOnlyEntry(name='Registered') registered_by = ReadOnlyEntry(name='Registered By') last_checkin = ReadOnlyEntry(name='Last Checkin')
class OstreeRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry(name='Upstream Authorization') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') published_at = ReadOnlyEntry(name='Published At') http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass
class ActivationKeyEditView(BaseLoggedInView): return_to_all = Text("//a[text()='Activation Keys']") name = EditableEntry(name='Name') description = EditableEntry(name='Description') host_limit = EditableEntry(name='Host Limit') service_level = EditableEntrySelect(name='Service Level') action_list = SelectActionList() dialog = ConfirmationDialog() lce = LCESelector() @property def is_displayed(self): return self.browser.wait_for_element(self.return_to_all, exception=False) is not None @View.nested class subscriptions(SatTab): @View.nested class resources(AddRemoveResourcesView): checkbox_locator = ( './/table//tr[td[normalize-space(.)="%s"]]' '/following-sibling::tr//input[@type="checkbox"]')
class PuppetRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') published_at = ReadOnlyEntry(name='Published At') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]")
class YumRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') os_restrict = EditableEntrySelect(name='Restrict to OS version') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_url = EditableEntry(name='Upstream URL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') metadata_type = EditableEntrySelect(name='Yum Metadata Checksum') retain_package_versions = EditableEntry(name='Retain package versions') http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') ignore_srpms = EditableEntryCheckbox(name='Ignore SRPMs') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') unprotected = EditableEntryCheckbox(name='Unprotected') gpg_key = EditableEntrySelect(name='GPG Key') download_policy = EditableEntrySelect(name='Download Policy') mirroring_policy = EditableEntrySelect(name='Mirroring Policy') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]") proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass
class YumRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') metadata_type = EditableEntrySelect(name='Yum Metadata Checksum') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') gpg_key = EditableEntrySelect(name='GPG Key') download_policy = EditableEntrySelect(name='Download Policy') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]")
class PuppetRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry(name='Upstream Authorization') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') published_at = ReadOnlyEntry(name='Published At') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]") http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass
class details(SatTab): name = EditableEntry(name='Name') description = EditableEntry(name='Description')
class details(SatTab): name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') description = EditableEntry(name='Description') composite = ReadOnlyEntry(name='Composite?') force_puppet = EditableEntryCheckbox(name='Force Puppet')
class RepositoryEditView(BaseLoggedInView): breadcrumb = BreadCrumb() actions = ActionsDropdown("//div[contains(@class, 'btn-group')]") dialog = ConfirmationDialog() name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') repo_type = ReadOnlyEntry(name='Type') repo_content = ConditionalSwitchableView(reference='repo_type') content_counts = SatTableWithUnevenStructure( locator='.//table[//th[normalize-space(.)="Content Type"]]', column_locator='./*' ) @repo_content.register('docker') class DockerRepository(View): registry_url = EditableEntry(name='Registry URL') upstream_repo_name = EditableEntry(name='Upstream Repository') repo_name = ReadOnlyEntry(name='Name') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass @repo_content.register('yum') class YumRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') metadata_type = EditableEntrySelect(name='Yum Metadata Checksum') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') gpg_key = EditableEntrySelect(name='GPG Key') download_policy = EditableEntrySelect(name='Download Policy') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]") http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass @repo_content.register('puppet') class PuppetRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') published_at = ReadOnlyEntry(name='Published At') upload_content = FileInput(name='content[]') upload = Text("//button[contains(., 'Upload')]") http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass @repo_content.register('ostree') class OstreeRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_authorization = AuthorizationEntry( name='Upstream Authorization') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') published_at = ReadOnlyEntry(name='Published At') http_proxy_policy = EditableEntrySelect(name='HTTP Proxy') proxy_policy = ConditionalSwitchableView(reference='http_proxy_policy') @proxy_policy.register(True, default=True) class NoSpecificHttpProxy(View): pass @property def is_displayed(self): breadcrumb_loaded = self.browser.wait_for_element( self.breadcrumb, exception=False) return ( breadcrumb_loaded and self.breadcrumb.locations[0] == 'Products' # repositories do not have tabs, so if we are deep inside some # specific repository (e.g. in repository packages) - there's no # turn back, so we can't treat any level deeper than repository # details like details' sub-tab and self.breadcrumb.locations[-2] == 'Repositories' and self.breadcrumb.read() != 'New Repository' )
class details(SatTab): name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') description = EditableEntry(name='Description')
class RepositoryEditView(BaseLoggedInView): breadcrumb = BreadCrumb() actions = ActionsDropdown("//div[contains(@class, 'btn-group')]") dialog = ConfirmationDialog() name = EditableEntry(name='Name') label = ReadOnlyEntry(name='Label') repo_type = ReadOnlyEntry(name='Type') repo_content = ConditionalSwitchableView(reference='repo_type') content_counts = SatContentCountsTable() @repo_content.register('docker') class DockerRepository(View): registry_url = EditableEntry(name='Registry URL') upstream_repo_name = EditableEntry(name='Upstream Repository') repo_name = ReadOnlyEntry(name='Name') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_username = EditableEntry(name='Upstream Username') upstream_password = EditableEntry(name='Upstream Password') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') @repo_content.register('yum') class YumRepository(View): arch_restrict = EditableEntrySelect(name='Restrict to architecture') upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_username = EditableEntry(name='Upstream Username') upstream_password = EditableEntry(name='Upstream Password') metadata_type = EditableEntrySelect(name='Yum Metadata Checksum') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') gpg_key = EditableEntrySelect(name='GPG Key') download_policy = EditableEntrySelect(name='Download Policy') @repo_content.register('puppet') class PuppetRepository(View): upstream_url = EditableEntry(name='Upstream URL') verify_ssl = EditableEntryCheckbox(name='Verify SSL') upstream_username = EditableEntry(name='Upstream Username') upstream_password = EditableEntry(name='Upstream Password') mirror_on_sync = EditableEntryCheckbox(name='Mirror on Sync') ignore_global_proxy = EditableEntryCheckbox( name='Ignore Global HTTP Proxy') publish_via_https = ReadOnlyEntry(name='Publish via HTTPS') publish_via_http = EditableEntryCheckbox(name='Publish via HTTP') published_at = ReadOnlyEntry(name='Published At') @property def is_displayed(self): breadcrumb_loaded = self.browser.wait_for_element(self.breadcrumb, exception=False) return ( breadcrumb_loaded and self.breadcrumb.locations[0] == 'Products' # repositories do not have tabs, so if we are deep inside some # specific repository (e.g. in repository packages) - there's no # turn back, so we can't treat any level deeper than repository # details like details' sub-tab and self.breadcrumb.locations[-2] == 'Repositories' and self.breadcrumb.read() != 'New Repository')
class details(SatTab): name = EditableEntry(name='Name') content_type = ReadOnlyEntry(name='Type') content = EditableEntry(name='Content') products = ReadOnlyEntry(name='Products') repos = ReadOnlyEntry(name='Repositories')