AirGun¶
AirGun is a Python library which is build over Widgetastic and navmazing to make Satellite 6 UI testing easier.
AirGun is written in Python 3 and do not plan to support Python 2. AirGun supports Satellite 6.4 and above and Foreman 1.17 and above (with vertical navigation).
This page provides a summary of information about AirGun.
Contents
More in-depth coverage is provided in other sections.
Building documentation locally¶
To build documentation locally, use:
pip install -r requirements-optional.txt
make docs-html
You might also try to run spell check:
pip install -r requirements-optional.txt
make docs-spelling
API Reference¶
This page contains auto-generated API reference documentation 1.
airgun
¶
Subpackages¶
airgun.entities
¶
Subpackages¶
airgun.entities.rhai
¶airgun.entities.rhai.action
¶Navigate to Red Hat Access Insights Actions screen. |
airgun.entities.rhai.base
¶AirGun's version of |
- exception airgun.entities.rhai.base.InsightsOrganizationPageError¶
Raised when navigating to insight plugin pages and the organization is not selected or the current selected organization has no manifest.
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.Raise Error if Destination view is not displayed or Organization Error page is displayed.
airgun.entities.rhai.inventory
¶Navigate to Insights Inventory screen. |
|
Navigate to Insights Inventory screen. |
- class airgun.entities.rhai.inventory.InventoryHostEntity(browser)¶
- endpoint_path = /redhat_access/insights/inventory¶
- property total_systems¶
Get number of all systems.
- search(host_name)¶
Search a certain host.
- read(entity_name, widget_names=None)¶
Read host details, optionally read only the widgets in widget_names.
- class airgun.entities.rhai.inventory.AllHosts(obj, navigate_obj, logger=None)¶
Navigate to Insights Inventory screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.rhai.inventory.HostDetails(obj, navigate_obj, logger=None)¶
Navigate to Insights Inventory screen.
- Parameters
entity_name – hostname
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.rhai.manage
¶Navigate to Red Hat Access Insights Manage screen. |
airgun.entities.rhai.overview
¶AirGun's version of |
- class airgun.entities.rhai.overview.OverviewEntity(browser)¶
- endpoint_path = /redhat_access/insights¶
- read(widget_names=None)¶
- class airgun.entities.rhai.overview.OverviewDetails(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.rhai.plan
¶Navigate to Insights Planner screen. |
|
Navigate to Insights Plan builder screen. |
|
Navigate to Insights plan details screen. |
- class airgun.entities.rhai.plan.PlanEntity(browser)¶
- endpoint_path = /redhat_access/insights/planner¶
- create(name, rules)¶
Create a new RHAI Plan entity.
- delete(entity_name)¶
Delete RHAI Plan entity.
- update(entity_name, values)¶
Update RHAI Plan entity.
- run_playbook(entity_name, customize=False, customize_values=None)¶
Run Ansible playbook associated with given plan
- class airgun.entities.rhai.plan.AllPlans(obj, navigate_obj, logger=None)¶
Navigate to Insights Planner screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.rhai.plan.AddPlan(obj, navigate_obj, logger=None)¶
Navigate to Insights Plan builder screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.rhai.plan.PlanDetails(obj, navigate_obj, logger=None)¶
Navigate to Insights plan details screen.
- Parameters
entity_name – plan name
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.rhai.rule
¶Navigate to Red Hat Access Insights Rules screen. |
Submodules¶
airgun.entities.activationkey
¶Navigate to All Activation Keys page |
|
Navigate to New Activation Key page |
|
Navigate to Edit Activation Key page |
- class airgun.entities.activationkey.ActivationKeyEntity(browser)¶
- endpoint_path = /activation_keys¶
- create(values)¶
Create new activation key entity
- delete(entity_name)¶
Remove existing activation key entity
- search(value)¶
Search for activation key
- read(entity_name, widget_names=None)¶
Read all values for created activation key entity
- update(entity_name, values)¶
Update necessary values for activation key
- add_subscription(entity_name, subscription_name)¶
Add subscription to activation key
- Parameters
entity_name – Activation key name
subscription_name – Name of subscription to be added to activation key
- add_host_collection(entity_name, hc_name)¶
Add host collection to activation key
- Parameters
entity_name – Activation key name
hc_name – Name of host collection to be added to activation key
- remove_host_collection(entity_name, hc_name)¶
Remove host collection from activation key
- Parameters
entity_name – Activation key name
hc_name – Name of host collection to be removed from activation key
- class airgun.entities.activationkey.ShowAllActivationKeys(obj, navigate_obj, logger=None)¶
Navigate to All Activation Keys page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.activationkey.AddNewActivationKey(obj, navigate_obj, logger=None)¶
Navigate to New Activation Key page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.activationkey.EditExistingActivationKey(obj, navigate_obj, logger=None)¶
Navigate to Edit Activation Key page
- Parameters
entity_name – name of the activation key
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.ansible_role
¶Main Ansible roles entity |
|
Navigate to the Ansible Roles page |
|
Navigate to the Import Roles page |
- class airgun.entities.ansible_role.AnsibleRolesEntity(browser)¶
Main Ansible roles entity
- endpoint_path = /ansible/ansible_roles¶
- search(value)¶
Search for existing Ansible Role
- delete(entity_name)¶
Delete Ansible Role from Satellite
- property imported_roles_count¶
Return the number of Ansible roles currently imported into Satellite
- import_all_roles()¶
Import all available roles and return the number of roles that were available at import time
airgun.entities.ansible_variable
¶Main Ansible variables entity |
|
Navigate to Ansible Variables page |
|
Navigate to Create Ansible Variable page |
- class airgun.entities.ansible_variable.AnsibleVariablesEntity(browser)¶
Main Ansible variables entity
- endpoint_path = /ansible/ansible_variables¶
- search(value)¶
Search for existing Ansible variable
- delete(entity_name)¶
Delete Ansible variable from Satellite
- read_total_variables()¶
Returns the number of Ansible variables currently in Satellite
- create(values)¶
Create a new Ansible variable with minimum inputs
- create_with_overrides(values)¶
Create a new Ansible variable that is managed by Satellite
- class airgun.entities.ansible_variable.ShowAllVariables(obj, navigate_obj, logger=None)¶
Navigate to Ansible Variables page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.ansible_variable.NewAnsibleVariable(obj, navigate_obj, logger=None)¶
Navigate to Create Ansible Variable page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.architecture
¶Navigate to All Architectures page |
|
Navigate to Create Architecture page |
|
Navigate to Edit Architecture page |
- class airgun.entities.architecture.ArchitectureEntity(browser)¶
- endpoint_path = /architectures¶
- create(values)¶
Create new architecture entity
- search(value)¶
Search for architecture entity
- read(entity_name, widget_names=None)¶
Read all values for created architecture entity
- update(entity_name, values)¶
Update necessary values for architecture
- delete(entity_name)¶
Remove existing architecture entity
- class airgun.entities.architecture.ShowAllArchitectures(obj, navigate_obj, logger=None)¶
Navigate to All Architectures page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.architecture.AddNewArchitecture(obj, navigate_obj, logger=None)¶
Navigate to Create Architecture page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.architecture.EditArchitecture(obj, navigate_obj, logger=None)¶
Navigate to Edit Architecture page
- Parameters
entity_name – name of the architecture
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.audit
¶Navigate to Audit screen that contains all log entries |
airgun.entities.base
¶airgun.entities.bookmark
¶Navigate to All Bookmarks screen. |
|
Navigate to Edit Bookmark screen. |
|
Generate search query and row filtering query from bookmark name and |
- airgun.entities.bookmark._gen_queries(entity_name, controller=None)¶
Generate search query and row filtering query from bookmark name and controller if passed.
- class airgun.entities.bookmark.BookmarkEntity(browser)¶
- endpoint_path = /bookmarks¶
- delete(entity_name, controller=None)¶
Delete existing bookmark
- search(query)¶
Search for bookmark
- read(entity_name, controller=None, widget_names=None)¶
Read bookmark values
- update(entity_name, values, controller=None)¶
Update existing bookmark
- class airgun.entities.bookmark.ShowAllBookmarks(obj, navigate_obj, logger=None)¶
Navigate to All Bookmarks screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.bookmark.EditBookmark(obj, navigate_obj, logger=None)¶
Navigate to Edit Bookmark screen.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Using a given entity_name, navigate to edit page from prerequisite
- Parameters
entity_name – name of bookmark
controller – (optional) name of controller for bookmark
airgun.entities.cloud_insights
¶Navigate to main Red Hat Insights page |
|
Navigate to main Red Hat Insights page |
|
Navigate to Job Invocation screen. |
- class airgun.entities.cloud_insights.CloudInsightsEntity(browser)¶
- endpoint_path = /foreman_rh_cloud/insights_cloud¶
- search(value)¶
Search for ‘query’ and return matched hostnames/recommendations.
- Parameters
value – text to filter (default: no filter)
- remediate(entity_name)¶
Remediate hosts based on search input.
- sync_hits()¶
Sync RH Cloud - Insights recommendations.
- read(widget_names=None)¶
Read all values for created activation key entity
- save_token_sync_hits(value)¶
Update Insights cloud view.
- update(values)¶
Update RH Cloud - Insights view.
- run_job()¶
Run remediation job
- class airgun.entities.cloud_insights.SaveCloudTokenView(obj, navigate_obj, logger=None)¶
Navigate to main Red Hat Insights page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.cloud_inventory
¶Navigate to main Inventory Upload page |
- class airgun.entities.cloud_inventory.CloudInventoryEntity(browser)¶
- endpoint_path = /foreman_rh_cloud/inventory_upload¶
- read(entity_name=None, widget_names=None)¶
- configure_cloud_connector()¶
Configure Cloud Connector
- is_cloud_connector_configured()¶
Check if Cloud Connector is configured
- sync_inventory_status()¶
Sync Inventory status
- generate_report(entity_name)¶
- download_report(entity_name)¶
- update(values)¶
Update Inventory Upload view.
airgun.entities.computeprofile
¶Navigate to All Compute Profiles page |
|
Navigate to Create Compute Profile page |
|
Navigate to Edit Compute Profile page that basically does rename only |
|
Navigate to list of Compute Resources for particular Compute Profile |
- class airgun.entities.computeprofile.ComputeProfileEntity(browser)¶
- endpoint_path = /compute_profiles¶
- create(values)¶
Create new compute profile entity
- search(value)¶
Search for compute profile entity and return table row that contains that entity
- rename(old_name, new_name)¶
Rename specific compute profile
- delete(entity_name)¶
Delete specific compute profile
- list_resources(entity_name)¶
List of compute resources that applied to specific compute profile
- class airgun.entities.computeprofile.ShowAllComputeProfiles(obj, navigate_obj, logger=None)¶
Navigate to All Compute Profiles page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeprofile.AddNewComputeProfile(obj, navigate_obj, logger=None)¶
Navigate to Create Compute Profile page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeprofile.RenameComputeProfile(obj, navigate_obj, logger=None)¶
Navigate to Edit Compute Profile page that basically does rename only
- Parameters
entity_name – name of the compute profile to be renamed
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeprofile.ListComputeResources(obj, navigate_obj, logger=None)¶
Navigate to list of Compute Resources for particular Compute Profile
- Parameters
entity_name – name of the compute profile to be listed
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.computeresource
¶AirGun's version of |
|
AirGun's version of |
|
AirGun's version of |
|
AirGun's version of |
|
AirGun's version of |
|
AirGun's version of |
|
Base class for image create and edit views, that need to dynamically define the view type |
|
Base class for image create and edit views, that need to dynamically define the view type |
|
Base class for image create and edit views, that need to dynamically define the view type |
- class airgun.entities.computeresource.ComputeResourceEntity(browser)¶
- endpoint_path = /compute_resources¶
- create(values)¶
Create new compute resource entity
- search(value)¶
Search for compute resource entity and return table row that contains that entity
- edit(name, values)¶
Edit specific compute resource values
- read(entity_name, widget_names=None)¶
Read all values for existing compute resource entity
- delete(value)¶
Delete specific compute profile
- list_vms(entity_name, expected_vm_name=None)¶
Returns all the VMs on the CR or VM with specified name
- search_virtual_machine(entity_name, value)¶
Search for compute resource virtual machine.
- vm_status(entity_name, vm_name)¶
Returns True if the machine is running, False otherwise
- vm_poweron(entity_name, vm_name)¶
Starts the specified VM
- vm_poweroff(entity_name, vm_name)¶
Stops the specified VM
- vm_import(entity_name, vm_name, hostgroup, location)¶
Imports the specified VM
- update_computeprofile(entity_name, compute_profile, values)¶
Update specific compute profile attributes through CR detail view
- read_computeprofile(entity_name, compute_profile, widget_names=None)¶
Read specific compute profile attributes through CR detail view
- create_image(entity_name, values)¶
Create a compute resource image.
- search_images(entity_name, value)¶
Search for compute resource images.
- read_image(entity_name, image_name, widget_names=None)¶
Read from compute resource image edit view.
- update_image(entity_name, image_name, values)¶
Update compute resource image properties.
- class airgun.entities.computeresource.ShowAllComputeResources(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeresource.AddNewComputeResource(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeresource.EditExistingComputeResource(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Select Compute resource tab for initialization
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- class airgun.entities.computeresource.ComputeResourceDetail(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- class airgun.entities.computeresource.ComputeResourceProfileDetail(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeresource.ComputeResourceVMImport(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeresource.ComputeResourceImageProvider(obj, navigate_obj, logger=None)¶
Base class for image create and edit views, that need to dynamically define the view type (that depend from compute resource provider) before reaching navigation destination.
- PROVIDER_VIEWS¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- class airgun.entities.computeresource.ComputeResourceImageCreate(obj, navigate_obj, logger=None)¶
Base class for image create and edit views, that need to dynamically define the view type (that depend from compute resource provider) before reaching navigation destination.
- PROVIDER_VIEWS¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.computeresource.ComputeResourceImageEdit(obj, navigate_obj, logger=None)¶
Base class for image create and edit views, that need to dynamically define the view type (that depend from compute resource provider) before reaching navigation destination.
- PROVIDER_VIEWS¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.configgroup
¶Navigate to All Config Groups screen. |
|
Navigate to Create new Config Group screen. |
|
Navigate to Edit Config Group screen. |
- class airgun.entities.configgroup.ConfigGroupEntity(browser)¶
- endpoint_path = /foreman_puppet/config_groups¶
- create(values)¶
Create new config group
- search(value)¶
Search for existing config group
- read(entity_name, widget_names=None)¶
Read existing config group
- update(entity_name, values)¶
Update config group
- delete(entity_name)¶
Delete config group
- class airgun.entities.configgroup.ShowAllConfigGroups(obj, navigate_obj, logger=None)¶
Navigate to All Config Groups screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.configgroup.AddNewConfigGroup(obj, navigate_obj, logger=None)¶
Navigate to Create new Config Group screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.configgroup.EditConfigGroup(obj, navigate_obj, logger=None)¶
Navigate to Edit Config Group screen.
- Parameters
entity_name – name of config group
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.containerimagetag
¶Navigate to All Container Image Tags screen. |
|
Navigate to Container Image Tag details page |
- class airgun.entities.containerimagetag.ContainerImageTagEntity(browser)¶
- endpoint_path = /docker_tags¶
- search(value)¶
Search for specific Container Image Tag
- Parameters
value – search query to type into search field
- Returns
container image tag that match
- read(entity_name, widget_names=None)¶
Reads details of specific Container Image Tag
- Parameters
entity_name – name of Container Image Tag
- Returns
dict with properties of Container Image Tag
- class airgun.entities.containerimagetag.ShowAllContainerImageTags(obj, navigate_obj, logger=None)¶
Navigate to All Container Image Tags screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.containerimagetag.ContainerImageTagDetails(obj, navigate_obj, logger=None)¶
Navigate to Container Image Tag details page
Args: entity_name: name of Container Image Tag
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.contentcredential
¶Navigate to All Content Credentials page |
|
Navigate to Create Content Credential page |
|
Navigate to Content Credential details screen. |
- class airgun.entities.contentcredential.ContentCredentialEntity(browser)¶
- endpoint_path = /content_credentials¶
- create(values)¶
Create new content credentials entity
- delete(entity_name)¶
Delete existing content credentials entity
- search(value)¶
search for content credentials entity
- read(entity_name, widget_names=None)¶
Read content credentials entity values
- update(entity_name, values)¶
Update content credentials entity values
- get_product_details(entity_name, product_name)¶
Get entity values for a product which associated to gpg key
- Parameters
entity_name – Gpg key name
product_name – Name of associated product
- class airgun.entities.contentcredential.ShowAllContentCredentials(obj, navigate_obj, logger=None)¶
Navigate to All Content Credentials page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentcredential.AddNewContentCredential(obj, navigate_obj, logger=None)¶
Navigate to Create Content Credential page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentcredential.EditContentCredential(obj, navigate_obj, logger=None)¶
Navigate to Content Credential details screen.
- Parameters
entity_name – name of content credential to edit
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.contenthost
¶Navigate to All Content Hosts screen. |
|
Navigate to Content Host details screen. |
|
Navigate to Errata details screen. |
- class airgun.entities.contenthost.ContentHostEntity(browser)¶
- endpoint_path = /content_hosts¶
- delete(entity_name)¶
Delete existing content host
- search(value)¶
Search for specific content host
- read_all(widget_names=None)¶
Read all values from content host title page. Optionally, read only the widgets in widget_names.
- read(entity_name, widget_names=None)¶
Read content host details, optionally read only the widgets in widget_names.
- execute_package_action(entity_name, action_type, value, installed_via='rex')¶
Execute remote package action on a content host.
The installation method is not set here, but the path changes according to the method used. For katello-agent, the Content Hosts’ Task tab displays the progress. If REX is used, the Job Invocation view displays the progress. In 6.10, REX became the default method.
- Parameters
entity_name – content host name to remotely execute package action on
action_type – remote action to execute. Can be one of 5: ‘Package Install’, ‘Package Update’, ‘Package Remove’, ‘Group Install’ or ‘Group Remove’
value – Package or package group group name to remotely install/upgrade/remove (depending on action_type)
installed_via – what installation method was used (REX or katello-agent)
- Returns
Returns a dict containing task status details
- bulk_set_syspurpose(hosts, values)¶
Set system purpose for multiple hosts
- execute_module_stream_action(entity_name, action_type, module_name, stream_version, customize=False, customize_values=None)¶
Execute remote module_stream action on a content
- Parameters
entity_name – content host name
action_type – remote action to execute on content host. Action value can be one of them e.g. ‘Enable’, ‘Disable’, ‘Install’, ‘Update’, ‘Remove’, ‘Reset’
module_name – Module Stream name to remotely install/upgrade/remove (depending on action_type)
stream_version – String with Stream Version of Module
customize – Boolean indicating if additional custom action should be called
customize_values – Dict with custom actions to run. Mandatory if customize is True
- Returns
Returns a dict containing job status details
- search_package(entity_name, package_name)¶
Search for specific package installed in content host
- search_module_stream(entity_name, module_name, stream_version=None, status='All')¶
Search for specific package installed in content host
- install_errata(entity_name, errata_id, install_via=None)¶
Install errata on a content host
- Parameters
name – content host name to apply errata on
errata_id – errata id or title, e.g. ‘RHEA-2012:0055’
install_via (str) – via which mean to install errata. Available options: “katello”, “rex”, “rex_customize”
- Returns
Returns a dict containing task status details
- search_errata(entity_name, errata_id, environment=None)¶
Search for specific errata applicable for content host.
- read_errata_details(entity_name, errata_id, environment=None)¶
Read Details for specific errata applicable for content host.
- export()¶
Export content hosts list.
- Return str
path to saved file
- add_subscription(entity_name, subscription_name)¶
Add a subscription to content host.
- update(entity_name, values)¶
Update content host values.
- class airgun.entities.contenthost.ShowAllContentHosts(obj, navigate_obj, logger=None)¶
Navigate to All Content Hosts screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contenthost.EditContentHost(obj, navigate_obj, logger=None)¶
Navigate to Content Host details screen.
- Parameters
entity_name – name of content host
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Navigate to Errata details screen.
- Parameters
entity_name – name of content host
errata_id – id of errata
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.contentview
¶Navigate to All Content Views screen. |
|
Navigate to New Content View screen. |
|
Navigate to Edit Content View screen. |
|
Navigate to Delete Content View screen by selecting appropriate action |
|
Navigate to Copy Content View screen by selecting appropriate action in |
|
Navigate to Content View Publish screen. |
|
Navigate to Content View Promote screen. |
|
Navigate to Content View Version details screen. |
|
Navigate to Content View Version removal screen by selecting |
- class airgun.entities.contentview.ContentViewEntity(browser)¶
- endpoint_path = /legacy/content_views¶
- create(values)¶
Create a new content view
- delete(entity_name)¶
Delete existing content view
- copy(entity_name, new_name)¶
Make a copy of existing content view
- search(value)¶
Search for content view
- read(entity_name, widget_names=None)¶
Read content view values, optionally only the widgets in widget_names will be read.
- update(entity_name, values)¶
Update existing content view
- add_yum_repo(entity_name, repo_name)¶
Add YUM repository to content view
- add_docker_repo(entity_name, repo_name)¶
Add docker repository to content view
- add_cv(entity_name, cv_name)¶
Add content view to selected composite content view.
- add_ostree_repo(entity_name, repo_name)¶
Add OSTree repository to content view
- remove_ostree_repo(entity_name, repo_name)¶
Remove OSTree repository from content view
- publish(entity_name, values=None)¶
Publishes to create new version of CV and promotes the contents to ‘Library’ environment.
- Returns
dict with new content view version table row; contains keys like ‘Version’, ‘Status’, ‘Environments’ etc.
- promote(entity_name, version_name, lce_name)¶
Promotes the selected version of content view to given environment.
- Returns
dict with new content view version table row; contains keys like ‘Version’, ‘Status’, ‘Environments’ etc.
- read_version(entity_name, version_name, widget_names=None)¶
Read content view version values
- search_version(entity_name, query)¶
Search for content view version
- search_version_package(entity_name, version_name, query, repo=None)¶
Search for a package inside content view version
- search_version_module_stream(entity_name, version_name, query, repo=None)¶
Search for a module stream inside content view version
- remove_version(entity_name, version_name, completely=True, lces=None)¶
Remove content view version.
- Parameters
entity_name (str) – content view name
version_name (str) – content view version name
completely (bool) – complete content view version removal if True or just disassociating from all lifecycle environments otherwise
lces (list optional) – list of lifecycle environment names to select on content view version removal screen
- class airgun.entities.contentview.ShowAllContentViews(obj, navigate_obj, logger=None)¶
Navigate to All Content Views screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.AddNewContentView(obj, navigate_obj, logger=None)¶
Navigate to New Content View screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.EditContentView(obj, navigate_obj, logger=None)¶
Navigate to Edit Content View screen.
- Parameters
entity_name – name of content view
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.DeleteContentView(obj, navigate_obj, logger=None)¶
Navigate to Delete Content View screen by selecting appropriate action on Edit Content View screen.
- Parameters
entity_name – name of content view
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.CopyContentView(obj, navigate_obj, logger=None)¶
Navigate to Copy Content View screen by selecting appropriate action in Content View Details screen.
- Parameters
entity_name – name of content view
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.PublishContentViewVersion(obj, navigate_obj, logger=None)¶
Navigate to Content View Publish screen.
- Parameters
entity_name – name of content view
- VIEW¶
- prerequisite(*args, **kwargs)¶
Open Content View first.
- step(*args, **kwargs)¶
Dismiss alerts if present to uncover ‘Publish’ button, then click it.
- class airgun.entities.contentview.PromoteContentViewVersion(obj, navigate_obj, logger=None)¶
Navigate to Content View Promote screen.
- Parameters
entity_name – name of content view
version_name – name of content view version to promote
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.ContentViewVersionDetails(obj, navigate_obj, logger=None)¶
Navigate to Content View Version details screen.
- Parameters
entity_name – name of content view
version_name – name of content view version
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentview.RemoveContentViewVersion(obj, navigate_obj, logger=None)¶
Navigate to Content View Version removal screen by selecting corresponding action in content view versions table.
- Parameters
entity_name – name of content view
version_name – name of content view version to remove
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.contentview_new
¶Navigate to All Content Views screen. |
|
Navigate to Create content view. |
- class airgun.entities.contentview_new.NewContentViewEntity(browser)¶
- endpoint_path = /content_views¶
- create(values)¶
Create a new content view
- search(value)¶
Search for content view
airgun.entities.contentviewfilter
¶Navigate to All Content View Filters screen by proceeding through |
|
Navigate to New Content View Filter screen. |
|
Navigate to Edit Content View Filter screen. |
- class airgun.entities.contentviewfilter.ContentViewFilterEntity(browser)¶
- create(cv_name, values)¶
Create a new content view filter
- delete(cv_name, filter_name)¶
Delete existing content view filter
- search(cv_name, value)¶
Search for content view filter
- read(cv_name, filter_name, widget_names=None)¶
Read content view filter values
- update(cv_name, filter_name, values)¶
Update content view filter.
- update_repositories(cv_name, filter_name, repositories=None)¶
Update affected by content view filter repositories.
- add_package_rule(cv_name, filter_name, rpm_name, architecture, version)¶
Add package rule to RPM content view filter.
- _find_rpm_rules(table, rpm_name=None, architecture=None, version=None)¶
Form proper rpm rows list according to search criteria
- Parameters
table – specify table where rows should be searched for
rpm_name – RPM package name
architecture – RPM architecture name
version – RPM version
- Returns
rows list
- update_package_rule(cv_name, filter_name, rpm_name, new_values, architecture=None, version=None)¶
Update package rule of RPM content view filter.
- Parameters
cv_name (str) – content view name
filter_name (str) – content view filter name
rpm_name (str) – existing package (RPM) name
new_values (dict) – dictionary with new values where keys are the same as column names on UI: ‘RPM Name’, ‘Architecture’, ‘Version’.
architecture (str optional) – filter package rule by its architecture
version (str optional) – filter package rule by its version (string value with exact correspondence to UI)
- search_package_rule(cv_name, filter_name, query)¶
Search for specific package rule in RPM content view filter.
- remove_package_rule(cv_name, filter_name, rpm_name, architecture=None, version=None)¶
Remove specific package rule from RPM content view filter.
- Parameters
cv_name (str) – content view name
filter_name (str) – content view filter name
rpm_name (str) – existing package (RPM) name
architecture (str optional) – filter package rule by its architecture
version (str optional) – filter package rule by its version (string value with exact correspondence to UI)
- add_errata(cv_name, filter_name, errata_id=None, search_filters=None)¶
Add errata to errata content view filter.
- Parameters
cv_name (str) – content view name
filter_name (str) – content view filter name
errata_id (str optional) – errata ID. If not provided - all available will be added instead (taking into consideration applied search filters)
search_filters (dict) – search filters to apply before adding errata. Dictionary where keys are widget names and values are widget values accordingly
- add_package_group(cv_name, filter_name, package_group)¶
Add package group to package group content view filter.
- class airgun.entities.contentviewfilter.ShowAllContentViewFilters(obj, navigate_obj, logger=None)¶
Navigate to All Content View Filters screen by proceeding through Content View -> Yum Content -> Filters tab.
- Parameters
cv_name – name of content view
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentviewfilter.AddNewContentViewFilter(obj, navigate_obj, logger=None)¶
Navigate to New Content View Filter screen.
- Parameters
cv_name – name of content view
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.contentviewfilter.EditContentViewFilter(obj, navigate_obj, logger=None)¶
Navigate to Edit Content View Filter screen.
- Parameters
cv_name – name of content view
filter_name – name of content view filter
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- resetter(*args, **kwargs)¶
Refresh the page as it won’t be possible to read dynamically added/updated package filter rows otherwise.
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.dashboard
¶Navigate to Dashboard page |
- class airgun.entities.dashboard.DashboardEntity(browser)¶
- search(value)¶
Initiate search procedure that applied on all dashboard widgets. Return widgets values as a result
- read(widget_name)¶
Read specific widget value
- read_all()¶
Read all dashboard widgets values
- action(values)¶
Perform action against specific widget. In most cases, re-direction to another entity is happened
- class airgun.entities.dashboard.OpenDashboard(obj, navigate_obj, logger=None)¶
Navigate to Dashboard page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Disable auto-refresh feature for dashboard entity each time navigation to the page is finished
airgun.entities.discoveredhosts
¶Navigate to All Discovered hosts screen. |
|
Navigate to Discovered Host details screen. |
|
Navigate to Action page by selecting checkboxes for necessary discovered |
|
AirGun's version of |
- class airgun.entities.discoveredhosts.DiscoveredHostsEntity(browser)¶
- endpoint_path = /discovered_hosts¶
- wait_for_entity(entity_name)¶
Wait for a host to be discovered providing the expected entity_name
- Note: When no discovered host exists is in the system, the search box
does not exist in the DOM, and as we are waiting for a host to be discovered we have to ensure that the view became searchable.
:raise TimedOutError if the view will not became searchable in time :raise TimedOutError if the host is not discovered in time :returns the entity table row columns values
- search(value)¶
Search for ‘value’ and return discovery hosts values that match.
- Parameters
value (str) – filter text.
- delete(entity_name)¶
Delete discovered host with name entity_name
- read(entity_name, widget_names=None)¶
Return a dict with properties of discovered host.
- provision(entity_name, host_group, organization, location, quick=True, host_values=None)¶
Provision a discovered host with name entity_name.
- Parameters
entity_name (str) – The discovered host name.
host_group (str) – The hostgroup to select for the host provisioning.
organization (str) – The Organization to select for the host provisioning.
location (str) – the Location to select for host provisioning.
quick (bool) – Whether to proceed to provisioning with default values. If not a custom host edit dialog will appear to edit the custom values.
host_values (dict) – The custom host provisioning values to fill the custom host view that appear in case of not quick procedure.
- apply_action(action_name, entities_list, values=None)¶
Apply action name for discovered hosts.
- class airgun.entities.discoveredhosts.ShowAllDiscoveredHosts(obj, navigate_obj, logger=None)¶
Navigate to All Discovered hosts screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.discoveredhosts.ShowDiscoveredHostDetailsView(obj, navigate_obj, logger=None)¶
Navigate to Discovered Host details screen.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.discoveredhosts.DiscoveredHostsSelectAction(obj, navigate_obj, logger=None)¶
Navigate to Action page by selecting checkboxes for necessary discovered hosts and then clicking on the action name button in ‘Select Action’ dropdown.
- Parameters
action_name – the action name to select from dropdown button
entities_list – list of discovered hosts that need to apply action on.
- ACTIONS_VIEWS¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.discoveryrule
¶Navigate to All Discovery rules screen. |
|
Navigate to Create Discovery rule page. |
|
Navigate to Edit Discovery rule page. |
|
Navigate to discovery rule entity Associated/Discovered Hosts page by |
- class airgun.entities.discoveryrule.DiscoveryRuleEntity(browser)¶
- endpoint_path = /discovery_rules¶
- create(values)¶
Create new Discovery rule
- Parameters
values – Parameters to be assigned to discovery rule, Name, Search, Host Group and Priority should be provided
- delete(entity_name)¶
Delete corresponding Discovery rule
- Parameters
entity_name (str) – name of the corresponding discovery rule
- read(entity_name, widget_names=None)¶
Reads content of corresponding Discovery rule
- Parameters
entity_name (str) – name of the corresponding discovery rule
- Returns
dict representing tabs, with nested dicts representing fields and values
- read_all()¶
Reads the whole discovery rules table.
- Returns
list of table rows, each row is dict, attribute as key with correct value
- update(entity_name, values)¶
Update existing Discovery rule
- Parameters
entity_name (str) – name of the corresponding discovery rule
values – parameters to be changed at discovery rule
- enable(entity_name)¶
Enable corresponding Discovery rule
- Parameters
entity_name (str) – name of the corresponding discovery rule
- disable(entity_name)¶
Disable corresponding Discovery rule
- Parameters
entity_name (str) – name of the corresponding discovery rule
- read_discovered_hosts(entity_name, widget_names=None)¶
Read Discovered hosts corresponding to Discovery rule search field.
- Parameters
entity_name (str) – name of the discovery rule entity
- Returns
The discovered hosts view properties
- read_associated_hosts(entity_name, widget_names=None)¶
Read Discovery rule associated hosts.
- Parameters
entity_name – name of the discovery rule entity
- Returns
The hosts view properties
- class airgun.entities.discoveryrule.ShowAllDiscoveryRules(obj, navigate_obj, logger=None)¶
Navigate to All Discovery rules screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.discoveryrule.AddNewDiscoveryRule(obj, navigate_obj, logger=None)¶
Navigate to Create Discovery rule page.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.discoveryrule.EditDiscoveryRule(obj, navigate_obj, logger=None)¶
Navigate to Edit Discovery rule page.
- Parameters
entity_name – name of the discovery rule
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.discoveryrule.DiscoveredRuleHosts(obj, navigate_obj, logger=None)¶
Navigate to discovery rule entity Associated/Discovered Hosts page by clicking on the action name of the entity dropdown button.
- Args:
action_name: the action name to select from dropdown button. entity_name: name of the discovery rule entity.
- ACTIONS_VIEWS¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.domain
¶Navigate to All Domains page |
|
Navigate to Create Domain page |
|
Navigate to Edit Domain page |
- class airgun.entities.domain.DomainEntity(browser)¶
- endpoint_path = /domains¶
- create(values)¶
Create a new domain.
- search(value)¶
Search for ‘value’ and return domain names that match.
- Parameters
value – text to filter (default: no filter)
- read(entity_name, widget_names=None)¶
Return dict with properties of domain.
- update(entity_name, values)¶
Update an existing domain.
- add_parameter(entity_name, param_name, param_value)¶
Add new parameter to existing domain entity
- Parameters
entity_name – Domain name to be edited
param_name – Name of a parameter to be added
param_value – Value of a parameter to be added
- remove_parameter(entity_name, param_name)¶
Remove parameter from existing domain entity
- Parameters
entity_name – Domain name to be edited
param_name – Name of a parameter to be removed
- delete(entity_name)¶
Delete existing domain entity
- class airgun.entities.domain.ShowAllDomains(obj, navigate_obj, logger=None)¶
Navigate to All Domains page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.domain.AddNewDomain(obj, navigate_obj, logger=None)¶
Navigate to Create Domain page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.domain.EditDomain(obj, navigate_obj, logger=None)¶
Navigate to Edit Domain page
- Parameters
entity_name – name of the domain
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.errata
¶Navigate to All Erratum screen. |
|
Navigate to Errata details page. |
- class airgun.entities.errata.ErrataEntity(browser)¶
- endpoint_path = /errata¶
- search(value, applicable=True, installable=False, repo=None)¶
Search for specific errata.
- read(entity_name, applicable=False, installable=False, repo=None, environment=None, widget_names=None)¶
Read errata details.
- Parameters
- Returns
dict representing tabs, with nested dicts representing fields and values
- Return type
- install(entity_name, host_name)¶
Install errata on content host.
- class airgun.entities.errata.ShowAllErratum(obj, navigate_obj, logger=None)¶
Navigate to All Erratum screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.errata.ErrataDetails(obj, navigate_obj, logger=None)¶
Navigate to Errata details page.
- Parameters
entity_name – id or title of errata
- Optional Args:
applicable: whether to filter errata by only applicable ones installable: whether to filter errata by only installable ones repo: name of repository to filter errata by
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.filter
¶Navigate to All Role Filters page by pressing 'Filters' button on Roles |
|
Navigate to role's Create Filter page |
|
Navigate to role's Edit Filter page |
- class airgun.entities.filter.FilterEntity(browser)¶
- create(role_name, values)¶
Create new filter for specific role
- search(role_name, value)¶
Search for filter assigned to the role
- read(role_name, entity_name, widget_names=None)¶
Read values for specific filter
- read_all(role_name)¶
Read all the available role filters table values
- read_permissions(role_name)¶
Return all role filters permissions as a dict with resources as keys and permission names as values.
- update(role_name, entity_name, values)¶
Update filter values
- delete(role_name, entity_name)¶
Delete specific filter from role
- class airgun.entities.filter.ShowAllFilters(obj, navigate_obj, logger=None)¶
Navigate to All Role Filters page by pressing ‘Filters’ button on Roles List view.
- Parameters
role_name – name of role
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.filter.AddNewFilter(obj, navigate_obj, logger=None)¶
Navigate to role’s Create Filter page
- Parameters
role_name – name of role
entity_name – name of filter
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.filter.EditFilter(obj, navigate_obj, logger=None)¶
Navigate to role’s Edit Filter page
- Parameters
role_name – name of role
entity_name – name of filter
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.hardware_model
¶Navigate to All Hardware Model screen. |
|
Navigate to Create new Hardware Model screen. |
|
Navigate to Edit Hardware Model screen. |
- class airgun.entities.hardware_model.HardwareModelEntity(browser)¶
- endpoint_path = /models¶
- create(values)¶
Create new hardware model
- search(value)¶
Search for specific hardware model
- read(entity_name, widget_names=None)¶
Read values for existing hardware model
- update(entity_name, values)¶
Update hardware model values
- delete(entity_name, err_message='')¶
Delete hardware model
err_message - expected when dialog throws an error, error message is checked
- class airgun.entities.hardware_model.ShowAllHardwareModels(obj, navigate_obj, logger=None)¶
Navigate to All Hardware Model screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hardware_model.AddNewHardwareModel(obj, navigate_obj, logger=None)¶
Navigate to Create new Hardware Model screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hardware_model.EditHardwareModel(obj, navigate_obj, logger=None)¶
Navigate to Edit Hardware Model screen.
- Parameters
entity_name – name of hardware model
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.host
¶Navigate to All Hosts page |
|
Navigate to Create Host page |
|
Navigate to Register Host page |
|
Navigate to Host Details page by clicking on necessary host name in the |
|
Navigate to Edit Host page by clicking on 'Edit' button for specific |
|
Navigate to Action page by selecting checkboxes for necessary hosts and |
|
Navigate to Insights recommendations page |
|
Navigate to Insights tab on host details page |
- class airgun.entities.host.HostEntity(browser)¶
- endpoint_path = /hosts¶
- HELPER_CLASS¶
- create(values)¶
Create new host entity
- get_register_command(values, full_read=None)¶
Get curl command generated on Register Host page
- search(value)¶
Search for existing host entity
- host_status(value)¶
Get Host status
- get_details(entity_name, widget_names=None)¶
Read host values from Host Details page, optionally only the widgets in widget_names will be read.
- read(entity_name, widget_names=None)¶
Read host values from Host Edit page
- read_all()¶
Read all values from hosts title page
- update(entity_name, values)¶
Update an existing host with values
- delete(entity_name, cancel=False)¶
Delete host from the system
- delete_interface(entity_name, interface_id)¶
Delete host network interface.
- Parameters
entity_name – The host name to delete the network interface from
interface_id – The network interface identifier.
- read_yaml_output(entity_name)¶
Get puppet external nodes YAML dump for specific host
- read_insights_recommendations(entity_name)¶
Get Insights recommendations for host
- insights_tab(entity_name)¶
Get details from Insights tab
- _select_action(action_name, entities_list)¶
Navigate to all entities, select the entities, and returns the view of the selected action name from main entity select action dropdown.
- apply_action(action_name, entities_list, values=None)¶
Apply action name for host/hosts
- export()¶
Export hosts list.
- Return str
path to saved file
- schedule_remote_job(entities_list, values, timeout=60, wait_for_results=True)¶
Apply Schedule Remote Job action to the hosts names in entities_list
- Parameters
entities_list – The host names to apply the remote job.
values – the values to fill The Job invocation view.
timeout – The time to wait for the job to finish.
wait_for_results – Whether to wait for the job to finish execution.
- Returns
The job invocation status view values
- play_ansible_roles(entities_list, timeout=60, wait_for_results=True)¶
- Play Ansible Roles on hosts names in entities_list
If keyword ‘All’ is supplied instead of list, all hosts are selected using the checkbox from table header
- Parameters
entities_list – The host names to play the ansible roles on.
timeout – The time to wait for the job to finish.
wait_for_results – Whether to wait for the job to finish execution.
- Returns
The job invocation status view values
- delete_hosts(entities_list, timeout=60, wait_for_results=True)¶
Delete all hosts from entities list If keyword ‘All’ is supplied instead of list, all hosts are selected using the checkbox from table header
- get_puppet_class_parameter_value(entity_name, name)¶
Read host Puppet class parameter value.
- Parameters
entity_name – The host name for which to read the parameter.
name – the parameter name.
- set_puppet_class_parameter_value(entity_name, name, value)¶
Set Puppet class parameter value
- class airgun.entities.host.ShowAllHosts(obj, navigate_obj, logger=None)¶
Navigate to All Hosts page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.AddNewHost(obj, navigate_obj, logger=None)¶
Navigate to Create Host page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.RegisterHost(obj, navigate_obj, logger=None)¶
Navigate to Register Host page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.ShowHostDetails(obj, navigate_obj, logger=None)¶
Navigate to Host Details page by clicking on necessary host name in the table
- Parameters
entity_name – name of the host
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.EditHost(obj, navigate_obj, logger=None)¶
Navigate to Edit Host page by clicking on ‘Edit’ button for specific host in the table
- Parameters
entity_name – name of the host
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.HostsSelectAction(obj, navigate_obj, logger=None)¶
- Navigate to Action page by selecting checkboxes for necessary hosts and
then clicking on the action name button in ‘Select Action’ dropdown.
- Parameters
action_name – the action name to select from dropdown button
entities_list – list of hosts that need to be modified
- ACTIONS_VIEWS¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.host.ShowRecommendations(obj, navigate_obj, logger=None)¶
Navigate to Insights recommendations page
- VIEW¶
- class airgun.entities.host.InsightsTab(obj, navigate_obj, logger=None)¶
Navigate to Insights tab on host details page
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.host_new
¶Navigate to Host Details page by clicking on necessary host name in the table |
- class airgun.entities.host_new.NewHostEntity(browser)¶
- create(values)¶
Create new host entity
- get_details(entity_name, widget_names=None)¶
Read host values from Host Details page, optionally only the widgets in widget_names will be read.
- schedule_job(entity_name, values)¶
Schedule a remote execution on selected host
- get_packages(entity_name, search='')¶
Filter installed packages on host
- install_package(entity_name, package)¶
Installs package on host using the installation modal
- apply_package_action(entity_name, package_name, action)¶
Apply action to selected package based on the package_name
- get_errata_by_type(entity_name, type)¶
List errata based on type and return table
- apply_erratas(entity_name, search)¶
Apply errata on selected host based on errata_id
- get_module_streams(entity_name, search)¶
Filter module streams
- apply_module_streams_action(entity_name, module_stream, action)¶
Apply action to selected Module stream based on the module_stream
- class airgun.entities.host_new.ShowNewHostDetails(obj, navigate_obj, logger=None)¶
Navigate to Host Details page by clicking on necessary host name in the table
- Parameters
entity_name – name of the host
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.hostcollection
¶AirGun's version of |
|
AirGun's version of |
|
AirGun's version of |
- class airgun.entities.hostcollection.HostCollectionEntity(browser)¶
- endpoint_path = /host_collections¶
- create(values)¶
Create a host collection
- delete(entity_name)¶
Delete the host collection entity.
- search(value)¶
Search for ‘value’ and return host collections that match.
- read(entity_name, widget_names=None)¶
Return a dict with properties of host collection.
- update(entity_name, values)¶
Update host collection properties with values.
- associate_host(entity_name, host_name)¶
Associate a host with host collection
- manage_packages(entity_name, content_type='Package', packages=None, action='install', action_via='via Katello Agent', job_values=None)¶
Manage host collection packages.
- Parameters
entity_name (str) – The host collection name.
content_type (str) – The content type to apply action on. Available options: Package, Package Group.
packages (str) – a list of packages separated by a space to apply the action on.
action (str) – The action to apply. Available options: install, update, update_all, delete.
action_via (str) – Via which mean to apply action. Available options: “via Katello Agent”, “via remote execution”, “via remote execution - customize first”
job_values (dict) – Remote Execution Job custom form values. When action_via is: “via remote execution - customize first”, the new remote execution job form is opened and we can set custom values.
- search_applicable_hosts(entity_name, errata_id)¶
Check for search URI in Host Collection errata view.
- install_errata(entity_name, errata_id, install_via='via Katello agent', job_values=None)¶
Install host collection errata
- Parameters
entity_name (str) – The host collection name.
errata_id (str) – the errata id to install.
install_via (str) – Via which mean to install errata. Available options: “via Katello Agent”, “via remote execution”, “via remote execution - customize first”
job_values (dict) – Remote Execution Job custom form values. When install_via is: “via remote execution - customize first”, the new remote execution job form is opened and we can set custom values.
- Returns
Task details view values when install “via kattelo agent” else returns job status view values.
- manage_module_streams(entity_name, action_type, module_name, stream_version, customize=False, customize_values=None)¶
Manage module streams :param str entity_name: The host collection name. :param action_type: remote action to execute on content host. Action value can be one of them e.g. ‘Enable’, ‘Disable’, ‘Install’, ‘Update’, ‘Remove’, ‘Reset’
- Parameters
module_name (str) – Module Stream name to remotely install/upgrade/remove (depending on action_type)
stream_version (str) – String with Stream Version of Module
customize – Boolean indicating if additional custom action should be called
customize_values – Dict with custom actions to run. Mandatory if customize is True
- Returns
Returns a dict containing job status details
- class airgun.entities.hostcollection.ShowAllHostCollections(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hostcollection.AddNewHostCollections(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hostcollection.EditHostCollections(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.hostgroup
¶Navigate to All Host Groups page |
|
Navigate to Create Host Group page |
|
Navigate to Edit Host Group page by clicking entity name in the table |
- class airgun.entities.hostgroup.HostGroupEntity(browser)¶
- endpoint_path = /hostgroups¶
- create(values)¶
Create new host group entity
- search(value)¶
Search for existing host group entity
- read(entity_name, widget_names=None)¶
Read values from host group edit page
- read_all()¶
Read values from host groups title page
- delete(entity_name)¶
Delete host group from the system
- update(entity_name, values)¶
Edit an existing host group
- class airgun.entities.hostgroup.ShowAllHostGroups(obj, navigate_obj, logger=None)¶
Navigate to All Host Groups page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hostgroup.AddNewHostGroup(obj, navigate_obj, logger=None)¶
Navigate to Create Host Group page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.hostgroup.EditHostGroup(obj, navigate_obj, logger=None)¶
Navigate to Edit Host Group page by clicking entity name in the table
- Parameters
entity_name – name of the host group
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.http_proxy
¶Navigate to All http-proxy page |
|
Navigate to Create HTTP Proxy page |
|
Navigate to Edit HTTP Proxy page |
- class airgun.entities.http_proxy.HTTPProxyEntity(browser)¶
- endpoint_path = /http_proxies¶
- create(values)¶
Create a new http-proxy.
- search(value)¶
Search for ‘value’ and return http-proxy names that match.
- Parameters
value – text to filter (default: no filter)
- read(entity_name, widget_names=None)¶
Return dict with properties of http-proxy.
- update(entity_name, values)¶
Update an existing http-proxy.
- delete(entity_name)¶
Delete existing http-proxy entity
- class airgun.entities.http_proxy.ShowAllHTTPProxy(obj, navigate_obj, logger=None)¶
Navigate to All http-proxy page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.http_proxy.AddNewHTTPProxy(obj, navigate_obj, logger=None)¶
Navigate to Create HTTP Proxy page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.http_proxy.EditHTTPProxy(obj, navigate_obj, logger=None)¶
Navigate to Edit HTTP Proxy page
- Parameters
entity_name – name of the HTTP Proxy
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.job_invocation
¶Navigate to All Job Invocations screen. |
|
Navigate to Create new Job Invocation screen. |
|
Navigate to Job Invocation status screen. |
- class airgun.entities.job_invocation.JobInvocationEntity(browser)¶
- endpoint_path = /job_invocations¶
- run(values)¶
Run specific job
- search(value)¶
Search for specific job invocation
- read(entity_name, host_name, widget_names=None)¶
Read values for scheduled or already executed job
- wait_job_invocation_state(entity_name, host_name, expected_state='succeeded')¶
Check job invocation state from table view
- class airgun.entities.job_invocation.ShowAllJobs(obj, navigate_obj, logger=None)¶
Navigate to All Job Invocations screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.job_invocation.RunNewJob(obj, navigate_obj, logger=None)¶
Navigate to Create new Job Invocation screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.job_invocation.JobStatus(obj, navigate_obj, logger=None)¶
Navigate to Job Invocation status screen.
- Parameters
entity_name – name of the job
host_name – name of the host to which job was applied
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.job_template
¶Navigate to All Job Templates screen. |
|
Navigate to Create new Job Template screen. |
|
Navigate to Edit Job Template screen. |
|
Navigate to Read Job Template screen. |
|
Navigate to Clone Job Template screen. |
- class airgun.entities.job_template.JobTemplateEntity(browser)¶
- endpoint_path = /job_templates¶
- create(values)¶
Create new job template
- search(value)¶
Search for specific job template
- read(entity_name, editor_view_option=None, widget_names=None)¶
Read Job template values from job template Edit view.
- Parameters
entity_name – Job template name
editor_view_option – The edit view option to set.
widget_names – Read only the widgets in widget_names (Optional)
- update(entity_name, values)¶
Update necessary values for existing job template
- clone(entity_name, values)¶
Clone existing job template
- delete(entity_name)¶
Delete job template
- class airgun.entities.job_template.ShowAllTemplates(obj, navigate_obj, logger=None)¶
Navigate to All Job Templates screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.job_template.AddNewTemplate(obj, navigate_obj, logger=None)¶
Navigate to Create new Job Template screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.job_template.EditTemplate(obj, navigate_obj, logger=None)¶
Navigate to Edit Job Template screen.
- Parameters
entity_name – name of job template
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.job_template.ReadTemplate(obj, navigate_obj, logger=None)¶
Navigate to Read Job Template screen.
- Parameters
entity_name – name of job template
editor_view_option – The edit view option to set.
Describes steps that takes place before any prerequisite after navigation takes place.
This is a default and is generally overridden.
- class airgun.entities.job_template.CloneTemplate(obj, navigate_obj, logger=None)¶
Navigate to Clone Job Template screen.
- Parameters
entity_name – name of job template to be cloned
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.ldap_authentication
¶Navigate to All LDAP Authentication sources screen. |
|
Navigate to Create LDAP Authentication screen. |
|
Navigate to Edit LDAP Authentication screen. |
- class airgun.entities.ldap_authentication.LDAPAuthenticationEntity(browser)¶
- endpoint_path = /auth_sources¶
- create(values)¶
Create new LDAP Authentication source
- read(entity_name, widget_names=None)¶
Read all values for existing LDAP Authentication source
- read_table_row(entity_name)¶
Read values for corresponding table row from LDAP Authentication title page. Return None in case row is not present in the table
- update(entity_name, values)¶
Update existing LDAP Authentication source
- delete(entity_name)¶
Delete corresponding LDAP Authentication source
- test_connection(values)¶
Testing FQDN for test connection
- read_auth_source_counts(auth_source_type)¶
Read values for corresponding auth source card count
- class airgun.entities.ldap_authentication.ShowAllLDAPSources(obj, navigate_obj, logger=None)¶
Navigate to All LDAP Authentication sources screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.ldap_authentication.AddNewLDAPSource(obj, navigate_obj, logger=None)¶
Navigate to Create LDAP Authentication screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.ldap_authentication.EditLDAPSource(obj, navigate_obj, logger=None)¶
Navigate to Edit LDAP Authentication screen.
- Parameters
entity_name – name of LDAP Authenication source
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.lifecycleenvironment
¶Navigate to All Lifecycle Environments page |
|
Navigate to New Lifecycle Environment Path page |
|
Navigate to New Lifecycle Environment page |
|
Navigate to Edit Lifecycle Environment page |
- class airgun.entities.lifecycleenvironment.LCEEntity(browser)¶
- endpoint_path = /lifecycle_environments¶
- create_environment_path(values)¶
- create_environment(values, entity_name)¶
- create(values, prior_entity_name=None)¶
Create new lifecycle environment :param values: Parameters to be assigned to lce, at least name should be provided :param prior_entity_name: Specify entity name which should be a parent to lifecycle environment that created in a chain
- read(entity_name, widget_names=None)¶
Read specific lifecycle environment details from its Edit page
- read_all()¶
Read all available lifecycle environments details from generic lifecycle environments page
- update(entity_name='Library', values=None)¶
Update existing lifecycle environment values
- delete(entity_name)¶
Deletes existing lifecycle environment entity
- search_package(entity_name, package_name, cv_name=None, repo_name=None)¶
Search for specific package inside lifecycle environment
- search_module_stream(entity_name, module_name, cv_name=None, repo_name=None)¶
Search for specific module stream inside lifecycle environment
- class airgun.entities.lifecycleenvironment.ShowAllLCE(obj, navigate_obj, logger=None)¶
Navigate to All Lifecycle Environments page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.lifecycleenvironment.AddNewLCEPath(obj, navigate_obj, logger=None)¶
Navigate to New Lifecycle Environment Path page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.lifecycleenvironment.AddNewLCE(obj, navigate_obj, logger=None)¶
Navigate to New Lifecycle Environment page
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.lifecycleenvironment.EditLCE(obj, navigate_obj, logger=None)¶
Navigate to Edit Lifecycle Environment page
- Parameters
entity_name – name of the lifecycle environment
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.location
¶Navigate to All Locations page |
|
Navigate to Create Location page |
|
Navigate to Edit Location page |
|
Select Location from menu |
- class airgun.entities.location.LocationEntity(browser)¶
- endpoint_path = /locations¶
- create(values)¶
Create new location entity
- delete(entity_name)¶
Delete existing location
- read(entity_name, widget_names=None)¶
Read specific location details
- search(value)¶
Search for location entity
- update(entity_name, values)¶
Update necessary values for location
- select(loc_name)¶
Select necessary location from context menu on the top of the page
- class airgun.entities.location.ShowAllLocations(obj, navigate_obj, logger=None)¶
Navigate to All Locations page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.location.AddNewLocation(obj, navigate_obj, logger=None)¶
Navigate to Create Location page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.location.EditLocation(obj, navigate_obj, logger=None)¶
Navigate to Edit Location page
- Parameters
entity_name – name of the location
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.location.SelectLocationContext(obj, navigate_obj, logger=None)¶
Select Location from menu
- Parameters
loc_name – name of the location
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.login
¶AirGun's version of |
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
airgun.entities.media
¶Navigate to All Medium screen. |
|
Navigate to Create new Media screen. |
|
Navigate to Edit Media screen. |
- class airgun.entities.media.MediaEntity(browser)¶
- endpoint_path = /media¶
- create(values)¶
Create new media
- search(value)¶
Search for specific media
- read(entity_name, widget_names=None)¶
Read values for existing media
- update(entity_name, values)¶
Update media values
- delete(entity_name)¶
Delete media
- class airgun.entities.media.ShowAllMedium(obj, navigate_obj, logger=None)¶
Navigate to All Medium screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.media.AddNewMedia(obj, navigate_obj, logger=None)¶
Navigate to Create new Media screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.media.EditMedia(obj, navigate_obj, logger=None)¶
Navigate to Edit Media screen.
- Parameters
entity_name – name of media
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.modulestream
¶navigate to Module Streams Page |
|
Navigate to Module Stream Details page by clicking on |
- class airgun.entities.modulestream.ModuleStreamEntity(browser)¶
- endpoint_path = /module_streams¶
- class airgun.entities.modulestream.ShowAllModuleStreams(obj, navigate_obj, logger=None)¶
navigate to Module Streams Page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.modulestream.ShowModuleStreamsDetails(obj, navigate_obj, logger=None)¶
Navigate to Module Stream Details page by clicking on necessary module name in the table
- Parameters
entity_name – The module name.
module_version – The version of module stream.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Describes steps that takes place before any prerequisite after navigation takes place.
This is a default and is generally overridden.
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
airgun.entities.organization
¶Navigate to All Organizations page |
|
Navigate to Create Organization page |
|
Navigate to Edit Organization page |
|
Select Organization from menu |
- class airgun.entities.organization.OrganizationEntity(browser)¶
- endpoint_path = /organizations¶
- create(values)¶
Create new organization entity
- delete(entity_name)¶
Delete existing organization
- read(entity_name, widget_names=None)¶
Read specific organization details
- search(value)¶
Search for organization entity
- update(entity_name, values)¶
Update necessary values for organization
- select(org_name)¶
Select necessary organization from context menu on the top of the page
- class airgun.entities.organization.ShowAllOrganizations(obj, navigate_obj, logger=None)¶
Navigate to All Organizations page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.organization.AddNewOrganization(obj, navigate_obj, logger=None)¶
Navigate to Create Organization page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.organization.EditOrganization(obj, navigate_obj, logger=None)¶
Navigate to Edit Organization page
- Parameters
entity_name – name of the organization
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.organization.SelectOrganizationContext(obj, navigate_obj, logger=None)¶
Select Organization from menu
- Parameters
org_name – name of the organization
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Handle alert screen if it’s present
airgun.entities.os
¶Navigate to All Operating Systems page |
|
Navigate to Create Operating System page |
|
Navigate to Edit Operating System page |
- class airgun.entities.os.OperatingSystemEntity(browser)¶
- endpoint_path = /operatingsystems¶
- create(values)¶
Create new operating system entity
- delete(entity_name, cancel=False)¶
Remove existing operating system entity
- search(value)¶
Search for operating system entity
- read(entity_name, widget_names=None)¶
Read all values for created operating system entity
- update(entity_name, values)¶
Update necessary values for operating system
- class airgun.entities.os.ShowAllOperatingSystems(obj, navigate_obj, logger=None)¶
Navigate to All Operating Systems page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.os.AddNewOperatingSystem(obj, navigate_obj, logger=None)¶
Navigate to Create Operating System page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.os.EditOperatingSystem(obj, navigate_obj, logger=None)¶
Navigate to Edit Operating System page
- Parameters
entity_name – name of the operating system
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.oscapcontent
¶Navigate to All SCAP Contents screen. |
|
Navigate to upload new SCAP Content page. |
|
Navigate to edit existing SCAP Content page. |
- class airgun.entities.oscapcontent.OSCAPContentEntity(browser)¶
- endpoint_path = /compliance/scap_contents¶
- create(values)¶
Create new SCAP Conent
- Parameters
values – Parameters to be assigned to new SCAP content, manadatory values are Title and Scap file.
- delete(entity_name)¶
Delete corresponding SCAP Content
- Parameters
entity_name – title of the corresponding SCAP Content
- search(title)¶
Search for SCAP Content
- Parameters
title – title of the corresponding SCAP Content
- Returns
result of the SCAP Content search
- read(entity_name, widget_names=None)¶
Reads the content of corresponding SCAP Content
- Parameters
entity_name – specify corresponding SCAP Content
- Returns
dict representing tabs, with nested dicts representing fields
- update(entity_name, values)¶
Updates instance of SCAP Content with new values
- Parameters
entity_name – specify corresponding SCAP Content
values – updates individual parameters of SCAP Content instance
- class airgun.entities.oscapcontent.ShowAllSCAPContents(obj, navigate_obj, logger=None)¶
Navigate to All SCAP Contents screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscapcontent.UploadNewSCAPContent(obj, navigate_obj, logger=None)¶
Navigate to upload new SCAP Content page.
- VIEW¶
- prerequisite¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscapcontent.EditSCAPContent(obj, navigate_obj, logger=None)¶
Navigate to edit existing SCAP Content page.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.oscappolicy
¶Navigate to All SCAP Policies screen. |
|
Navigate to upload new SCAP Policies page. |
|
Navigate to edit existing SCAP Policy page. |
|
To get data from SCAPPolicyDetail view |
- class airgun.entities.oscappolicy.OSCAPPolicyEntity(browser)¶
- endpoint_path = /compliance/policies¶
- create(values)¶
Creates new OSCAP Policy
- Parameters
values – Parameters to be assigned to new SCAP policy, mandatory values are Name, Scap Content and Period, with chosen date when policy is going to repeat
- delete(entity_name)¶
Delete corresponding SCAP Policy
- Parameters
entity_name – name of the corresponding SCAP Policy
- search(entity_name)¶
Search for SCAP Policy
- Parameters
entity_name – name of the corresponding SCAP Policy
- Returns
result of the SCAP Policy search
- details(entity_name, widget_names=None)¶
- Read the content from corresponding SCAP Policy dashboard,
clicking on the Name of SCAP Policy shows the dashboard
- Parameters
entity_name –
- Returns
dictionary with values from SCAP Policy Details View
- read(entity_name, widget_names=None)¶
Reads the values of corresponding SCAP Policy - edit menu
- Parameters
entity_name – specifies corresponding SCAP Policy
- Returns
dict representing tabs, with nested dicts representing fields
- update(entity_name, values)¶
Updates instance of SCAP Policy with new values
- Parameters
entity_name – specifies corresponding SCAP Policy
values – updates individual parameters of corresponding SCAP Policy
- class airgun.entities.oscappolicy.ShowAllSCAPPolicies(obj, navigate_obj, logger=None)¶
Navigate to All SCAP Policies screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscappolicy.NewSCAPPolicy(obj, navigate_obj, logger=None)¶
Navigate to upload new SCAP Policies page.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscappolicy.EditSCAPPolicy(obj, navigate_obj, logger=None)¶
Navigate to edit existing SCAP Policy page.
Args: entity_name: name of SCAP policy
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscappolicy.DetailsSCAPPolicy(obj, navigate_obj, logger=None)¶
To get data from SCAPPolicyDetail view
Args: entity_name: name of SCAP policy
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.oscaptailoringfile
¶Navigate to All SCAP Tailoring File screen. |
|
Navigate to upload new SCAP Tailoring File page. |
|
Navigate to edit existing SCAP Tailoring File page. |
- class airgun.entities.oscaptailoringfile.OSCAPTailoringFileEntity(browser)¶
- endpoint_path = /compliance/tailoring_files¶
- create(values)¶
Creates new SCAP Tailoring File
- Parameters
values – Parameters to be assigned to new SCAP Tailoring File, mandatory values are Name and Scap file.
- delete(entity_name)¶
Delete corresponding SCAP Tailoring File
- Parameters
entity_name – name of the corresponding SCAP Tailoring File
- search(entity_name)¶
Search for SCAP Tailoring File
- Parameters
entity_name – name of the corresponding SCAP Tailoring File
- Returns
result of the SCAP Tailoring File search
- read(entity_name, widget_names=None)¶
Reads the content of corresponding SCAP Tailoring File
- Parameters
entity_name – specify corresponding SCAP Tailoring File
- Returns
dict representing tabs, with nested dicts representing fields
- update(entity_name, values)¶
Updates instance of SCAP Tailoring File with new values
- Parameters
entity_name – specify corresponding SCAP Tailoring File
values – updates individual parameters of corresponding SCAP Tailoring File
- class airgun.entities.oscaptailoringfile.ShowAllSCAPTailoringFiles(obj, navigate_obj, logger=None)¶
Navigate to All SCAP Tailoring File screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscaptailoringfile.UploadNewSCAPTailoringFile(obj, navigate_obj, logger=None)¶
Navigate to upload new SCAP Tailoring File page.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.oscaptailoringfile.EditSCAPTailoringFile(obj, navigate_obj, logger=None)¶
Navigate to edit existing SCAP Tailoring File page.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.package
¶navigate to Packages Page |
|
Navigate to Package Details page by clicking on necessary package name |
- class airgun.entities.package.PackageEntity(browser)¶
- endpoint_path = /packages¶
- search(query, repository='All Repositories', applicable=False, upgradable=False)¶
Search for package in the indicated repository
- class airgun.entities.package.ShowAllPackages(obj, navigate_obj, logger=None)¶
navigate to Packages Page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.package.ShowPackageDetails(obj, navigate_obj, logger=None)¶
Navigate to Package Details page by clicking on necessary package name in the table
- Parameters
entity_name – The package name.
repository – The package repository name.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
airgun.entities.partitiontable
¶Navigate to All Partition Tables page |
|
Navigate to Create Partition Table page |
|
Navigate to Edit Partition Table page |
|
Navigate to Create Partition Table page for cloned entity |
- class airgun.entities.partitiontable.PartitionTableEntity(browser)¶
- endpoint_path = /templates/ptables¶
- create(values)¶
Create new partition table entity
- read(entity_name, widget_names=None)¶
Read all values for created partition table entity
- search(value)¶
Search for partition table entity
- update(entity_name, values)¶
Update partition table entity
- clone(entity_name, values)¶
Clone existing partition table entity
- lock(entity_name)¶
Lock partition table entity
- unlock(entity_name)¶
Unlock partition table entity
- delete(entity_name)¶
Delete existing partition table
- class airgun.entities.partitiontable.ShowAllPartitionTables(obj, navigate_obj, logger=None)¶
Navigate to All Partition Tables page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.partitiontable.AddNewPartitionTable(obj, navigate_obj, logger=None)¶
Navigate to Create Partition Table page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.partitiontable.EditPartitionTable(obj, navigate_obj, logger=None)¶
Navigate to Edit Partition Table page
- Parameters
entity_name – name of the partition table
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.partitiontable.ClonePartitionTable(obj, navigate_obj, logger=None)¶
Navigate to Create Partition Table page for cloned entity
- Parameters
entity_name – name of the partition table to be cloned
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.product
¶Navigate to the page that contains all Products |
|
Navigate to Create New Product page |
|
Navigate to Edit Product page. |
|
Navigate to Repo Discovery page for Product entity. |
|
Navigate to Action page by selecting checkboxes for necessary Products and |
- class airgun.entities.product.ProductEntity(browser)¶
- endpoint_path = /products¶
- create(values, sync_plan_values=None)¶
Creates new product from UI.
- Parameters
sync_plan_values – dict with values for creating sync_plan from product create page
- delete(entity_name)¶
Deletes product from UI
- search(value)¶
Search for specific product
- read(entity_name, widget_names=None)¶
Read all values for already created product
- update(entity_name, values)¶
Updates product from UI
- discover_repo(values)¶
Repo discovery procedure
- synchronize(entity_name)¶
Synchronize product
- manage_http_proxy(entities_list, values)¶
Manage HTTP Proxy for product/products
- Parameters
entities_list – The product names to perform Manage HTTP Proxy action.
values – dict containing http_proxy_policy and http_proxy values. eg: {‘http_proxy_policy’: ‘No HTTP Proxy’}, {‘http_proxy_policy’: ‘Global Default’}, {‘http_proxy_policy’: ‘Use specific HTTP Proxy’, ‘http_proxy’: ‘proxy_name’}
- advanced_sync(entities_list, sync_type)¶
Advanced Sync for product/products
- Parameters
entities_list – The product names to perform Advanced Sync action.
sync_type – value containing sync type. eg: sync_type=”optimized”, sync_type=”complete”
- verify_content_checksum(entities_list)¶
Verify Content Checksum for product/products
- Parameters
entities_list – The product names to perform Verify Content Checksum action.
- class airgun.entities.product.ShowAllProducts(obj, navigate_obj, logger=None)¶
Navigate to the page that contains all Products
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.product.AddNewProduct(obj, navigate_obj, logger=None)¶
Navigate to Create New Product page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.product.EditProduct(obj, navigate_obj, logger=None)¶
Navigate to Edit Product page.
- Parameters
entity_name – name of the product to be updated
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.product.ProductRepoDiscovery(obj, navigate_obj, logger=None)¶
Navigate to Repo Discovery page for Product entity.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.product.ProductsSelectAction(obj, navigate_obj, logger=None)¶
- Navigate to Action page by selecting checkboxes for necessary Products and
then clicking on the action name button in ‘Select Action’ dropdown.
- Parameters
action_name – the action name to select from dropdown button
entities_list – list of Products that need to be modified
- ACTIONS_VIEWS¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.provisioning_template
¶Navigate to all Provisioning Templates screen. |
|
Navigate to Create new Provisioning Template screen. |
|
Navigate to Edit Provisioning Template screen. |
|
Navigate to Create Provisioning Template screen for cloned entity |
- class airgun.entities.provisioning_template.ProvisioningTemplateEntity(browser)¶
- endpoint_path = /templates/provisioning_templates¶
- create(values)¶
Create new provisioning template
- search(value)¶
Search for existing provisioning template
- read(entity_name, widget_names=None)¶
Read provisioning template values
- clone(entity_name, values)¶
Clone existing provisioning template
- lock(entity_name)¶
Lock provisioning template for editing
- unlock(entity_name)¶
Unlock provisioning template for editing
- is_locked(entity_name)¶
Check if provisioning template is locked for editing
- update(entity_name, values)¶
Update provisioning template
- delete(entity_name)¶
Delete provisioning template
- class airgun.entities.provisioning_template.ShowAllProvisioningTemplates(obj, navigate_obj, logger=None)¶
Navigate to all Provisioning Templates screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.provisioning_template.AddNewProvisioningTemplate(obj, navigate_obj, logger=None)¶
Navigate to Create new Provisioning Template screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.provisioning_template.EditProvisioningTemplate(obj, navigate_obj, logger=None)¶
Navigate to Edit Provisioning Template screen.
- Parameters
entity_name – name of provisioning template to edit
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.provisioning_template.CloneProvisioningTemplate(obj, navigate_obj, logger=None)¶
Navigate to Create Provisioning Template screen for cloned entity
- Parameters
entity_name – name of provisioning template to clone
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.puppet_class
¶Navigate to All Puppet Classes screen. |
|
Navigate to Edit Puppet Class screen. |
- class airgun.entities.puppet_class.PuppetClassEntity(browser)¶
- endpoint_path = /foreman_puppet/puppetclasses¶
- search(value)¶
Search for puppet class entity
- read(entity_name, widget_names=None)¶
Read puppet class entity values
- read_smart_class_parameter(entity_name, parameter_name)¶
Read smart class parameter values for specific puppet class
- update(entity_name, values)¶
Update puppet class values
- delete(entity_name)¶
Delete puppet class entity
- class airgun.entities.puppet_class.ShowAllPuppetClasses(obj, navigate_obj, logger=None)¶
Navigate to All Puppet Classes screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.puppet_class.EditPuppetClass(obj, navigate_obj, logger=None)¶
Navigate to Edit Puppet Class screen.
- Parameters
entity_name – name of puppet class
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.puppet_environment
¶Navigate to All Puppet Environment screen. |
|
Navigate to Create Puppet Environment screen. |
|
Navigate to Edit Puppet Environment screen. |
|
Navigate to Import Puppet Environment screen. |
- class airgun.entities.puppet_environment.PuppetEnvironmentEntity(browser)¶
- endpoint_path = /foreman_puppet/environments¶
- create(values)¶
Create puppet environment entity
- read(entity_name, widget_names=None)¶
Read puppet environment entity values
- update(entity_name, values)¶
Update puppet environment values
- delete(value)¶
Delete puppet environment entity
- search(value)¶
Search for puppet environment entity
- import_environments(value)¶
Import puppet environments
- class airgun.entities.puppet_environment.ShowAllPuppetEnvironmentsView(obj, navigate_obj, logger=None)¶
Navigate to All Puppet Environment screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.puppet_environment.AddNewPuppetEnvironmentView(obj, navigate_obj, logger=None)¶
Navigate to Create Puppet Environment screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.puppet_environment.EditPuppetEnvironmentView(obj, navigate_obj, logger=None)¶
Navigate to Edit Puppet Environment screen.
- Parameters
entity_name – name of puppet environment
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.puppet_environment.ImportPuppetEnvironmentView(obj, navigate_obj, logger=None)¶
Navigate to Import Puppet Environment screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.redhat_repository
¶Navigate to the page that contains Red Hat products repositories |
- class airgun.entities.redhat_repository.RedHatRepositoryEntity(browser)¶
- endpoint_path = /redhat_repositories¶
- search(value, category='Available', types=None)¶
Search RH repositories.
- read(entity_name=None, category='Available', recommended_repo=None)¶
Read RH Repositories values.
- Parameters
entity_name – The repository name
category – The repository category to search, options: Available, Enabled
recommended_repo – on/off RH recommended repositories
- enable(entity_name, arch, version=None)¶
Enable a redhat repository.
- class airgun.entities.redhat_repository.ShowAllRepositories(obj, navigate_obj, logger=None)¶
Navigate to the page that contains Red Hat products repositories
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.report_template
¶Navigate to all Report Templates screen. |
|
Navigate to Create new Report Template screen. |
|
Navigate to Edit Report Template screen. |
|
Navigate to Create Report Template screen for cloned entity |
|
Navigate to Generate a Report Template. |
- class airgun.entities.report_template.ReportTemplateEntity(browser)¶
- endpoint_path = /templates/report_templates¶
- create(values)¶
Create new report template
- search(value)¶
Search for existing report template
- read(entity_name, widget_names=None)¶
Read report template values
- clone(entity_name, values)¶
Clone existing report template
- lock(entity_name)¶
Lock report template for editing
- unlock(entity_name)¶
Unlock report template for editing
- is_locked(entity_name)¶
Check if report template is locked for editing
- export(entity_name)¶
Export report template.
- Return str
path to saved file
- generate(entity_name, values={})¶
Generate report template
- Return str
path to saved file
- schedule(entity_name, values={})¶
Schedule report template
- update(entity_name, values)¶
Update report template
- delete(entity_name)¶
Delete report template
- class airgun.entities.report_template.ShowAllReportTemplates(obj, navigate_obj, logger=None)¶
Navigate to all Report Templates screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.report_template.AddNewReportTemplate(obj, navigate_obj, logger=None)¶
Navigate to Create new Report Template screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.report_template.EditReportTemplate(obj, navigate_obj, logger=None)¶
Navigate to Edit Report Template screen.
- Parameters
entity_name – name of report template to edit
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.report_template.CloneReportTemplate(obj, navigate_obj, logger=None)¶
Navigate to Create Report Template screen for cloned entity
- Parameters
entity_name – name of report template to clone
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.report_template.GenerateReportTemplate(obj, navigate_obj, logger=None)¶
Navigate to Generate a Report Template.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.repository
¶Navigate to All Product Repositories page by pressing 'Repositories' |
|
Navigate to Create Product Repository page |
|
Navigate to Edit Product Repository page |
|
Trigger repository synchronization and proceed to product task details |
|
Open repository details page and click 'Packages' link from 'Content |
- class airgun.entities.repository.RepositoryEntity(browser)¶
- property global_default_http_proxy¶
Look up the default http proxy and return the string that a user would select for HTTP Proxy Policy when creating or updating a repository.
- create(product_name, values)¶
Create new repository for product
- search(product_name, value)¶
Search for specific product repository
- read(product_name, entity_name, widget_names=None)¶
Read values for repository
- update(product_name, entity_name, values)¶
Update product repository values
- upload_content(product_name, entity_name, file_name)¶
Upload a new content to existing repository
- delete(product_name, entity_name)¶
Delete specific product repository
- synchronize(product_name, entity_name)¶
Synchronize repository
- remove_all_packages(product_name, entity_name)¶
Remove all packages from repository
- class airgun.entities.repository.ShowAllRepositories(obj, navigate_obj, logger=None)¶
Navigate to All Product Repositories page by pressing ‘Repositories’ Tab on Product Edit View page
- Parameters
product_name – name of product
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.repository.AddNewRepository(obj, navigate_obj, logger=None)¶
Navigate to Create Product Repository page
- Parameters
product_name – name of product
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.repository.EditRepository(obj, navigate_obj, logger=None)¶
Navigate to Edit Product Repository page
- Parameters
product_name – name of product
entity_name – name of repository
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.repository.SyncRepository(obj, navigate_obj, logger=None)¶
Trigger repository synchronization and proceed to product task details page
- Parameters
product_name – name of product
entity_name – name of repository
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.repository.RepositoryPackages(obj, navigate_obj, logger=None)¶
Open repository details page and click ‘Packages’ link from ‘Content Counts’ table to proceed to Packages page.
- Parameters
product_name – name of product
entity_name – name of repository
- VIEW¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.rhsso_login
¶AirGun's version of |
- class airgun.entities.rhsso_login.RHSSOLoginEntity(browser)¶
- login(values, external_login=False, totp=None)¶
- logout()¶
- get_two_factor_login_code(values, url)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
airgun.entities.role
¶Navigate to All Roles page |
|
Navigate to Create New Role page |
|
Navigate to Edit Role page |
|
Navigate to Clone Role page |
- class airgun.entities.role.RoleEntity(browser)¶
- endpoint_path = /roles¶
- create(values)¶
Create new role
- search(value)¶
- read(entity_name, widget_names=None)¶
Read role values
- update(entity_name, values)¶
Update role with provided values
- delete(entity_name)¶
Delete role from the system
- clone(entity_name, values)¶
Clone role with entity_name with new properties values
- class airgun.entities.role.ShowAllRoles(obj, navigate_obj, logger=None)¶
Navigate to All Roles page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.role.AddNewRole(obj, navigate_obj, logger=None)¶
Navigate to Create New Role page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.role.EditRole(obj, navigate_obj, logger=None)¶
Navigate to Edit Role page
- Parameters
entity_name – name of role
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.role.CloneRole(obj, navigate_obj, logger=None)¶
Navigate to Clone Role page
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.settings
¶Navigate to All Settings page |
- class airgun.entities.settings.SettingsEntity(browser)¶
- endpoint_path = /settings¶
- search(value)¶
Search for necessary settings entry
- read(property_name)¶
Read settings values
- update(property_name, value)¶
Update setting property with provided value
- send_test_mail(property_name)¶
Send the mail to the recipient
- permission_denied()¶
Return permission denied error text
airgun.entities.smart_class_parameter
¶Navigate to All Smart Class Parameter screen. |
|
Navigate to Edit Smart Class Parameter screen. |
- class airgun.entities.smart_class_parameter.SmartClassParameterEntity(browser)¶
- endpoint_path = /foreman_puppet/puppetclass_lookup_keys¶
- search(value)¶
Search for smart class parameter entity and return table row that contains that entity
- read(entity_name, widget_names=None)¶
Read all values for existing smart class parameter entity
- update(entity_name, values)¶
Update specific smart class parameter values
- class airgun.entities.smart_class_parameter.ShowAllSmartClassParameters(obj, navigate_obj, logger=None)¶
Navigate to All Smart Class Parameter screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.smart_class_parameter.EditSmartClassParameter(obj, navigate_obj, logger=None)¶
Navigate to Edit Smart Class Parameter screen.
- Parameters
entity_name – name of smart class parameter
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.subnet
¶Navigate to All Subnets screen. |
|
Navigate to Create new Subnet screen. |
|
Navigate to Edit Subnet screen. |
- class airgun.entities.subnet.SubnetEntity(browser)¶
- endpoint_path = /subnets¶
- create(values)¶
Create new subnet
- search(value)¶
Search for specific subnet
- read(entity_name, widget_names=None)¶
Read values for existing subnet
- update(entity_name, values)¶
Update subnet values
- delete(entity_name)¶
Delete subnet
- class airgun.entities.subnet.ShowAllSubnets(obj, navigate_obj, logger=None)¶
Navigate to All Subnets screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subnet.AddNewSubnet(obj, navigate_obj, logger=None)¶
Navigate to Create new Subnet screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subnet.EditSubnet(obj, navigate_obj, logger=None)¶
Navigate to Edit Subnet screen.
- Parameters
entity_name – name of subnet
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.subscription
¶To ensure that we reached the destination, some targets need extra post navigation tasks |
|
Navigate to Subscriptions main page |
|
Navigate to 'Manage Manifest' dialog box on Subscriptions main page |
|
Navigate to 'Delete Manifest Confirmation' dialog box on |
|
Navigate to Add Subscriptions page |
|
Navigate to Subscriptions' Details page |
- class airgun.entities.subscription.SubscriptionEntity(browser)¶
- endpoint_path = /subscriptions¶
- _wait_for_process_to_finish(name, has_manifest=False, timeout=600, ignore_error_messages=None)¶
Helper ensuring that task (upload / delete manifest / subscription) has finished. Run after action invoking task to leave Satellite in usable state. Currently waits for three events. Since page is written asynchronously, they can happen in any order. :param name: Name of running task :param has_manifest: Should manifest exist after task ended? :param timeout: Waiting timeout :param ignore_error_messages: A List of strings representing the error messages to ignore.
- property has_manifest¶
Is there manifest present in current organization? :return: boolean value indicating whether manifest is present May be None if user can’t verify reliably if manifest is uploaded or not due to missing permissions
- add_manifest(manifest_file, ignore_error_messages=None)¶
Upload manifest file :param manifest_file: Path to manifest file :param ignore_error_messages: List of error messages to ignore
- refresh_manifest()¶
Refresh manifest
- delete_manifest(ignore_error_messages=None)¶
Delete manifest from current organization
- read_delete_manifest_message()¶
Read message displayed on ‘Confirm delete manifest’ dialog
- add(entity_name, quantity=1)¶
Attach new subscriptions :param entity_name: Name of subscription to attach :param quantity: Number of subscriptions to attach
- search(value)¶
search for subscription
- filter_columns(columns=None)¶
Filters column headers :param columns: dict mapping column name to boolean value :return: tuple of the name of the headers
- provided_products(entity_name, virt_who=False)¶
Read list of all products provided by subscription. :param entity_name: Name of subscription :param virt_who: Whether this is a virt who client subscription. :return: List of strings with product names
- content_products(entity_name, virt_who=False)¶
Read list of products provided by subscription for subscribed content hosts. :param entity_name: Name of subscription :param virt_who: Whether this is a virt who client subscription. :return: List of strings with product names (may be empty)
- abstract update(entity_name, values)¶
Stub method provided for consistency with other Airgun entities. This operation was never implemented in Robottelo (no test requires it).
- delete(entity_name)¶
Remove subscription :param entity_name: Name of subscription
To ensure that we reached the destination, some targets need extra post navigation tasks
Describes steps that takes place before any prerequisite after navigation takes place.
This is a default and is generally overridden.
- class airgun.entities.subscription.SubscriptionList(obj, navigate_obj, logger=None)¶
Navigate to Subscriptions main page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subscription.ManageManifest(obj, navigate_obj, logger=None)¶
Navigate to ‘Manage Manifest’ dialog box on Subscriptions main page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subscription.DeleteManifestConfirmation(obj, navigate_obj, logger=None)¶
Navigate to ‘Delete Manifest Confirmation’ dialog box on Subscriptions main page Dialog box appearance is animated. wait_for ensures that we interact with content only after animation has finished
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subscription.AddSubscription(obj, navigate_obj, logger=None)¶
Navigate to Add Subscriptions page
- VIEW¶
- prerequisite¶
- am_i_here(*args, **kwargs)¶
Describes if the navigation is already at the requested destination.
By default, airgun relies on view’s
is_displayed
property to determine whether navigation succeeded. If positional argumententity_name
was passed and view hasBreadCrumb
widget, it will also ensure second location in breadcrumb is provided entity name.This method may be overridden on specific entity’s NavigateStep level for more complex logic if needed.
- Returns
whether navigator is at requested destination or not.
- Return type
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.subscription.SubscriptionDetails(obj, navigate_obj, logger=None)¶
Navigate to Subscriptions’ Details page
- Parameters
entity_name – name of Subscription
virt_who – Whether this is a virt who client subscription.
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.sync_status
¶AirGun's version of |
- class airgun.entities.sync_status.SyncStatusEntity(browser)¶
- endpoint_path = /katello/sync_management¶
- read(widget_names=None)¶
Read all widgets at Sync status entity
- synchronize(repository_paths, timeout=3600)¶
Synchronize repositories
- Parameters
repository_paths – A list of repositories to synchronize where each element of the list is path to repository represented by a list or tuple.
timeout – time to wait for all repositories to be synchronized.
Usage:
synchronize([('product1', 'repo1'), ('product1', 'repo2'), ('product2', 'repo2'), ('Red Hat Enterprise Linux Server', '7.5', 'x86_64', 'Red Hat Enterprise Linux 7 Server RPMs x86_64 7.5'), ('Red Hat Satellite Capsule', 'Red Hat Satellite Capsule 6.2 for RHEL 7 Server RPMs x86_64')])
- Returns
the results text in RESULT columns
- class airgun.entities.sync_status.ShowAllHostCollections(obj, navigate_obj, logger=None)¶
AirGun’s version of
navmazing.NavigateStep
with custom implementations of navmazing.NavigateStep.am_i_here and navmazing.NavigateStep.go and ability to work with views.- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.sync_templates
¶Navigate to Import/Export Templates page |
|
Navigate to Import/Export Templates page |
- class airgun.entities.sync_templates.SyncTemplatesEntity(browser)¶
- endpoint_path = /template_syncs¶
- sync(values)¶
Import Export Switch Action Entity
Navigate to Import/Export Templates page
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
Navigate to Import/Export Templates page
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
airgun.entities.syncplan
¶Navigate to All Sync Plans screen. |
|
Navigate to New Sync Plan screen. |
|
Navigate to Edit Sync Plan screen. |
- class airgun.entities.syncplan.SyncPlanEntity(browser)¶
- endpoint_path = /sync_plans¶
- create(values)¶
Create new sync plan
- delete(entity_name)¶
Delete existing sync plan
- search(value)¶
Search for sync plan
- read(entity_name, widget_names=None)¶
Read values for created sync plan
- update(entity_name, values)¶
Update sync plan with necessary values
- class airgun.entities.syncplan.ShowAllSyncPlans(obj, navigate_obj, logger=None)¶
Navigate to All Sync Plans screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.syncplan.AddNewSyncPlan(obj, navigate_obj, logger=None)¶
Navigate to New Sync Plan screen.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.syncplan.EditSyncPlan(obj, navigate_obj, logger=None)¶
Navigate to Edit Sync Plan screen.
- Parameters
entity_name – name of sync plan
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.task
¶Navigate to All Tasks page |
|
Navigate to Task Details screen. |
- class airgun.entities.task.TaskEntity(browser)¶
- endpoint_path = /foreman_tasks/tasks¶
- search(value)¶
Search for specific task
- read_all(widget_names=None)¶
Read all tasks widgets values from the title page. Or read specific widgets by adding ‘widget_names’ parameter
- read(entity_name, widget_names=None)¶
Read specific task values from details page
- set_chart_filter(chart_name, index=None)¶
Remove filter from searchbox and set filter from specific chart
- Parameters
index – index in ‘StoppedChart’ table, dict with ‘row’ number and ‘focus’ as column name
- total_items()¶
Get total items displayed in the table
- class airgun.entities.task.ShowAllTasks(obj, navigate_obj, logger=None)¶
Navigate to All Tasks page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.task.TaskDetails(obj, navigate_obj, logger=None)¶
Navigate to Task Details screen.
- Parameters
entity_name – name of the task
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.user
¶Navigate to All Users page |
|
Navigate to Create User page |
|
Navigate to Edit User page |
- class airgun.entities.user.UserEntity(browser)¶
- endpoint_path = /users¶
- create(values)¶
Create new user entity
- search(value)¶
Search for user entity
- read(entity_name, widget_names=None)¶
Read all values for created user entity
- update(entity_name, values)¶
Update necessary values for user
- delete(entity_name)¶
Remove existing user entity
- class airgun.entities.user.ShowAllUsers(obj, navigate_obj, logger=None)¶
Navigate to All Users page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.user.AddNewUser(obj, navigate_obj, logger=None)¶
Navigate to Create User page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.user.EditUser(obj, navigate_obj, logger=None)¶
Navigate to Edit User page
- Parameters
entity_name – name of the user
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.usergroup
¶Navigate to All User Groups page |
|
Navigate to Create User Group page |
|
Navigate to Edit User Group page |
- class airgun.entities.usergroup.UserGroupEntity(browser)¶
- endpoint_path = /usergroups¶
- create(values)¶
Create new user group entity
- search(value)¶
Search for user group entity
- read(entity_name, widget_names=None)¶
Read all values for created user group entity
- update(entity_name, values)¶
Update necessary values for user group
- delete(entity_name)¶
Remove existing user group entity
- refresh_external_group(entity_name, external_group_name)¶
Refresh external group.
- class airgun.entities.usergroup.ShowAllUserGroups(obj, navigate_obj, logger=None)¶
Navigate to All User Groups page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.usergroup.AddNewUserGroup(obj, navigate_obj, logger=None)¶
Navigate to Create User Group page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.usergroup.EditUserGroup(obj, navigate_obj, logger=None)¶
Navigate to Edit User Group page
- Parameters
entity_name – name of the user group
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.virtwho_configure
¶Navigate to All Activation Keys page |
|
Navigate to New Virtwho Configure page |
|
Navigate to Edit Virtwho Configure page |
|
Navigate to Details page by clicking on necessary name in the table |
- class airgun.entities.virtwho_configure.VirtwhoConfigureEntity(browser)¶
- endpoint_path = /foreman_virt_who_configure/configs¶
- _reset_values(values)¶
- check_create_permission()¶
Check if the config can be viewed/created
- check_update_permission(entity_name=None)¶
Check if the config can be deleted/edited
- create(values)¶
Create new virtwho configure entity
- search(value)¶
Search for virtwho configure
- edit(name, values)¶
Edit specific virtwho configure values
- read(entity_name, widget_names=None)¶
Read all values for existing virtwho configure entity
- delete(value)¶
Delete specific virtwho configure
- class airgun.entities.virtwho_configure.ShowAllVirtwhoConfigures(obj, navigate_obj, logger=None)¶
Navigate to All Activation Keys page
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.virtwho_configure.AddNewVirtwhoConfigure(obj, navigate_obj, logger=None)¶
Navigate to New Virtwho Configure page
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.virtwho_configure.EditExistingVirtwhoConfigure(obj, navigate_obj, logger=None)¶
Navigate to Edit Virtwho Configure page
- Parameters
entity_name – name of the virtwho configure
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.virtwho_configure.DetailsVirtwhoConfigure(obj, navigate_obj, logger=None)¶
Navigate to Details page by clicking on necessary name in the table
- Parameters
entity_name – name of the configure
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.entities.webhook
¶Navigate to All Webhooks screen. |
|
Navigate to Create Webhook page. |
|
Navigate to Edit Webhook page. |
|
Search for Webhook and confirm deletion in dialog. |
- class airgun.entities.webhook.WebhookEntity(browser)¶
- endpoint_path = /webhooks¶
- create(values)¶
Create new Webhook
- Parameters
values – Parameters to be assigned to a Webhook, Name, Subscribe to, Target URL, Template and HTTP Method should be provided
- delete(entity_name)¶
Delete corresponding Webhook
- Parameters
entity_name (str) – name of the corresponding Webhook
- search(entity_name)¶
Search for a specific Webhook
- class airgun.entities.webhook.ShowAllWebhooks(obj, navigate_obj, logger=None)¶
Navigate to All Webhooks screen.
- VIEW¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.webhook.AddNewWebhook(obj, navigate_obj, logger=None)¶
Navigate to Create Webhook page.
- VIEW¶
- prerequisite¶
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.webhook.EditWebhook(obj, navigate_obj, logger=None)¶
Navigate to Edit Webhook page.
- Parameters
entity_name – name of the Webhook
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
- class airgun.entities.webhook.DeleteWebhook(obj, navigate_obj, logger=None)¶
Search for Webhook and confirm deletion in dialog.
- Parameters
entity_name – name of the Webhook
- VIEW¶
- prerequisite(*args, **kwargs)¶
Describes a step that must be carried our prior to this one.
This often calls a previous navigate_to, often using one of the helpers, NavigateToSibling which will navigate to a given destination using the same object, or NavigateToAttribute which will navigate to a destination against an object describe by the attribute of the parent object.
This is a default and is generally overridden.
- step(*args, **kwargs)¶
Describes the work to be done to get to the destination after the prequisite is met.
This is a default and is generally overridden.
airgun.helpers
¶
Submodules¶
airgun.helpers.base
¶- class airgun.helpers.base.BaseEntityHelper(entity: airgun.entities.base.BaseEntity)¶
- property entity¶
- read_filled_view(navigation_name: str, navigation_kwargs: Dict = None, values: Dict[str, Any] = None, read_widget_names: List[str] = None) Dict[str, Any] ¶
Navigate to a form using ‘navigation_name’ and with parameters from ‘navigation_kwargs’, fill the form with values and then read values for widgets from ‘read_widget_names’ list if supplied otherwise read all widgets values.
Usage:
# In host entity: open create view, click host.reset_puppet_environment button and read # host.puppet_environment session.host.helper.read_filled_view( 'New', values={'host.reset_puppet_environment': True}, read_widget_names=['host.puppet_environment'], )
airgun.helpers.host
¶- class airgun.helpers.host.HostHelper(entity: airgun.entities.base.BaseEntity)¶
- read_create_view(values, read_widget_names=None)¶
Open create host view, fill entity fields with supplied values, and then return widgets values. Read values from ‘read_widget_names’ list if provided otherwise read values from all view widgets.
airgun.views
¶
Submodules¶
airgun.views.activationkey
¶View for the ActivationKeys page |
|
View for the ActivationKeys Create page |
|
View for the ActivationKeys Edit page |
- class airgun.views.activationkey.ActivationKeysView(parent, logger=None, **kwargs)¶
View for the ActivationKeys page
- title¶
- new¶
- table¶
- class airgun.views.activationkey.ActivationKeyCreateView(parent, logger=None, **kwargs)¶
View for the ActivationKeys Create page
- breadcrumb¶
- name¶
- hosts_limit¶
- description¶
- lce¶
- content_view¶
- submit¶
- class airgun.views.activationkey.ActivationKeyEditView(parent, logger=None, **kwargs)¶
View for the ActivationKeys Edit page
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- description¶
- hosts_limit¶
- service_level¶
- lce¶
- content_view¶
- class subscriptions(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class repository_sets(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Repository Sets¶
- table¶
- class host_collections(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Host Collections¶
- resources¶
- class content_hosts(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Associations¶
- SUB_ITEM = Content Hosts¶
- table¶
- breadcrumb¶
- actions¶
- dialog¶
airgun.views.ansible_role
¶Represents Paginator widget that includes per page selector, First/Last/Next/Prev buttons |
|
Main Ansible Roles view. Prior to importing any roles, only the import_button |
|
View while selecting Ansible roles to import. |
- class airgun.views.ansible_role.ImportPagination(parent, logger=None, **kwargs)¶
Represents Paginator widget that includes per page selector, First/Last/Next/Prev buttons and current page index/overall amount of pages. Mainly used with Table widget.
- PER_PAGE_BUTTON_DROPDOWN = .//div[button[@id='pagination-options-menu-toggle-2']]¶
- total_items¶
- class airgun.views.ansible_role.AnsibleRolesView(parent, logger=None, **kwargs)¶
Main Ansible Roles view. Prior to importing any roles, only the import_button is present, without the search widget or table.
- title¶
- import_button¶
- submit¶
- total_imported_roles¶
- table¶
- pagination¶
airgun.views.ansible_variable
¶Main Ansible Variables view |
|
Name-Value paired input elements which can be added, edited or removed. |
|
Interface table has Attribute type column that contains select field and |
|
View while creating a new Ansible Variable |
- class airgun.views.ansible_variable.AnsibleVariablesView(parent, logger=None, **kwargs)¶
Main Ansible Variables view
- title¶
- new_variable¶
- total_variables¶
- table¶
- pagination¶
- class airgun.views.ansible_variable.MatcherTable(parent, **kwargs)¶
Name-Value paired input elements which can be added, edited or removed.
It is essentially a table with text input widgets on each row, with an “Add New Parameter” button on the same page.
Example html representation:
<table class="table" id="global_parameters_table"> <tr class="fields " id="new_os_parameter_row"> <input placeholder="Name" type="text" ... id="..._name"> <textarea id="new_os_parameter_value" placeholder="Value" ...>
Locator example:
//input[@placeholder='Name'] //textarea[@placeholder='Value']
- add_new_value¶
- class airgun.views.ansible_variable.MatcherActions(parent, logger=None, **kwargs)¶
Interface table has Attribute type column that contains select field and text input field.
- matcher_key¶
- matcher_value¶
- class airgun.views.ansible_variable.NewAnsibleVariableView(parent, logger=None, **kwargs)¶
View while creating a new Ansible Variable
- class matcher_section(parent, logger=None, **kwargs)¶
‘Specify Matchers’ section
- add_matcher¶
- params¶
- before_fill(values)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- breadcrumb¶
- key¶
- description¶
- ansible_role¶
- override¶
- parameter_type¶
- default_value¶
- expand_optional_input_validator¶
- required¶
- validator_type¶
- validator_rule¶
- attribute_order¶
- merge_overrides¶
- merge_default¶
- avoid_duplicates¶
- submit¶
- cancel¶
- property expand_button¶
Return the Optional Input Validator section expander element
- property expanded¶
Check whether this section is expanded
- expand()¶
Expand the Optional Input Validator section
airgun.views.architecture
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.architecture.ArchitecturesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
airgun.views.audit
¶View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
Base view for Satellite pages |
- class airgun.views.audit.AuditEntry(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//div[@id='audit-list']/div/div[contains(@class, 'list-group-item')]¶
- user¶
- action_type¶
- resource_type¶
- resource_name¶
- created_at¶
- expander¶
- affected_organization¶
- affected_location¶
- action_summary¶
- comment¶
- property expanded¶
- read()¶
Reads the contents of the view and presents them as a dictionary.
- Returns
A
dict
ofwidget_name: widget_read_value
where the values are retrieved using theWidget.read()
.
- fill(values)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- class airgun.views.audit.AuditsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- searchbox¶
- entry¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- search(query)¶
airgun.views.bookmark
¶Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.bookmark.BookmarksView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- table¶
airgun.views.cloud_insights
¶RH Cloud Insights Landing page for adding RH Cloud Token. |
|
Remediation window view |
|
Main RH Cloud Insights view. |
- class airgun.views.cloud_insights.CloudTokenView(parent, logger=None, **kwargs)¶
RH Cloud Insights Landing page for adding RH Cloud Token.
- rhcloud_token¶
- save_token¶
- class airgun.views.cloud_insights.RemediationView(parent: widgetastic.types.ViewParent, component_id: str = '', logger: Optional[logging.Logger] = None, **kwargs)¶
Remediation window view
- OUIA_ID = OUIA-Generated-Modal-large-1¶
- remediate¶
- cancel¶
- table¶
- class airgun.views.cloud_insights.CloudInsightsView(parent, logger=None, **kwargs)¶
Main RH Cloud Insights view.
- title¶
- insights_sync_switcher¶
- remediate¶
- insights_dropdown¶
- select_all¶
- table¶
- select_all_hits¶
- clear_hits_selection¶
- pagination¶
- remediation_window¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
airgun.views.cloud_inventory
¶Cloud Inventory Upload Tab element. |
|
Item related to one organization on Cloud Inventory Upload page. |
|
Main RH Cloud Inventory Upload view. |
- class airgun.views.cloud_inventory.InventoryTab(parent, logger=None, **kwargs)¶
Cloud Inventory Upload Tab element.
This is lightweight subclass needed because Cloud Inventory Upload tabs contain icons, and widgetastic_patternfly Tab looks for exact match.
- TAB_LOCATOR¶
- child_widget_accessed(widget)¶
This hook is called when a child widget of current view is accessed.
One of useful examples is below. it allows us to switch between frames.
- Parameters
widget – The widget being accessed or
ParametrizedViewRequest
.
- class airgun.views.cloud_inventory.InventoryItemsView(parent=None, id=None, locator=None, logger=None)¶
Item related to one organization on Cloud Inventory Upload page.
- class generating(parent, logger=None, **kwargs)¶
Cloud Inventory Upload Tab element.
This is lightweight subclass needed because Cloud Inventory Upload tabs contain icons, and widgetastic_patternfly Tab looks for exact match.
- process¶
- restart¶
- terminal¶
- scheduled_run¶
- class uploading(parent, logger=None, **kwargs)¶
Cloud Inventory Upload Tab element.
This is lightweight subclass needed because Cloud Inventory Upload tabs contain icons, and widgetastic_patternfly Tab looks for exact match.
- process¶
- download_report¶
- terminal¶
- ROOT = .//dl[contains(@class, "pf-c-accordion account-list")]¶
- DESCRIPTION_LOCATOR = .//span[contains(@class, "pf-c-label pf-m-blue pf-m-outline account-icon")]¶
- STATUS_ELEMENTS = .//div[contains(@class, "status")]/div[contains(@class, "item")]¶
- property is_generating¶
- property is_uploading¶
- property status¶
- property is_active¶
- child_widget_accessed(widget)¶
This hook is called when a child widget of current view is accessed.
One of useful examples is below. it allows us to switch between frames.
- Parameters
widget – The widget being accessed or
ParametrizedViewRequest
.
- read(widget_names=None)¶
Reads the contents of the view and presents them as a dictionary.
- Returns
A
dict
ofwidget_name: widget_read_value
where the values are retrieved using theWidget.read()
.
- fill(values)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- class airgun.views.cloud_inventory.CloudInventoryListView(parent, logger=None, **kwargs)¶
Main RH Cloud Inventory Upload view.
- title¶
- auto_update¶
- obfuscate_hostnames¶
- obfuscate_ips¶
- exclude_packages¶
- cloud_connector¶
- reconfigure_cloud_connector¶
- sync_status¶
- inventory_list¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
airgun.views.common
¶Base view for Satellite pages |
|
Alert screen which appears when switching organization while organization-specific entity is |
|
Regular primary level |
|
Represent vertical tabs that usually used in location and organization |
|
Regular primary level |
|
Secondary level Tab, typically 'List/Remove' or 'Add' sub-tab inside |
|
Group of |
|
'List/Remove' tab, part of |
|
Secondary level Tab, typically 'List/Remove' or 'Add' sub-tab inside |
|
View which allows assigning/unassigning some resources to entity. |
|
A variant of |
|
Default view for template entity editor that can be present for example |
|
Mixin which adds |
|
Mixin which adds |
|
Common view for task details screen. Can be found for most of tasks for |
|
Bookmark creation modal window, available via searchbox dropdown -> |
|
Template Input item view |
- class airgun.views.common.BaseLoggedInView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- taxonomies¶
- flash¶
- validations¶
- dialog¶
- logout¶
- current_user¶
- permission_denied¶
- select_logout()¶
logout from satellite
- class airgun.views.common.WrongContextAlert(parent, logger=None, **kwargs)¶
Alert screen which appears when switching organization while organization-specific entity is opened.
- message¶
- back¶
- class airgun.views.common.SatTab(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- ROOT¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- read()¶
Do not attempt to read hidden tab contents
- class airgun.views.common.SatVerticalTab(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_LOCATOR¶
- class airgun.views.common.SatTabWithDropdown(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- ROOT¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- read()¶
Do not attempt to read hidden tab contents
- class airgun.views.common.SatSecondaryTab(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- ROOT¶
- TAB_LOCATOR¶
- class airgun.views.common.LCESelectorGroup(parent, logger=None, **kwargs)¶
Group of
airgun.widgets.LCESelector
, typically present on page for selecting desired lifecycle environment.Usage:
lce = View.nested(LCESelectorGroup) #or @View.nested class lce(LCESelectorGroup): pass
- ROOT = .//*[self::div or self::span][@path-selector='environments' or @path-selector='availableEnvironments']¶
- PARAMETERS = ['lce_name']¶
- LAST_ENV = .//div[contains(@class, 'path-selector')]/ul/li[last()]¶
- lce¶
- classmethod all(browser)¶
Helper method which returns list of tuples with all LCESelector names (last available environment is used as a name). It’s required for
read()
to work properly.
- fill(values=None)¶
Shortcut to pass the value to included
lce
airgun.widgets.LCESelector
widget. Usage remains the same asairgun.widgets.LCESelector
andwidgetastic.widget.ParametrizedView
required param is filled automatically from passed lifecycle environment’s name.Usage:
my_view.lce.fill({'PROD': True}) my_view.lce.fill({'PROD': 'Library'})
Value
True
orFalse
means to set corresponding checkbox value to the last checkbox available in widget (last lifecycle environment). If you want to select different lifecycle environment within the same route - pass its name as a value instead
- read()¶
Shortcut which returns value of included
lce
airgun.widgets.LCESelector
widget.Note that returned result will be wrapped in extra dict due to
widgetastic.widget.ParametrizedView
nature:{ 'DEV': {'Library': False, 'DEV': True}, 'QA': {'Library': False, 'IT': True}, 'PROD': {'Library': False, 'PROD': True}, }
- class airgun.views.common.ListRemoveTab(parent, logger=None, **kwargs)¶
‘List/Remove’ tab, part of
AddRemoveResourcesView
.- TAB_NAME = List/Remove¶
- searchbox¶
- remove_button¶
- table¶
- search(value)¶
Search for specific associated resource and return the results
- remove(value)¶
Remove specific associated resource
- fill(values)¶
Remove associated resource(s).
- read()¶
Return a list of associated resources
- class airgun.views.common.AddTab(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = Add¶
- searchbox¶
- add_button¶
- table¶
- search(value)¶
Search for specific available resource and return the results
- add(value)¶
Associate specific resource
- fill(values)¶
Associate resource(s)
- read()¶
Return a list of available resources
- class airgun.views.common.AddRemoveResourcesView(parent, logger=None, **kwargs)¶
View which allows assigning/unassigning some resources to entity. Contains two secondary level tabs ‘List/Remove’ and ‘Add’ with tables allowing managing resources for entity.
Usage:
@View.nested class resources(AddRemoveResourcesView): pass
- list_remove_tab¶
- add_tab¶
- add(values)¶
Assign some resource(s).
- remove(values)¶
Unassign some resource(s).
- read()¶
Read all table values from both resource tables
- class airgun.views.common.AddRemoveSubscriptionsView(parent, logger=None, **kwargs)¶
A variant of
AddRemoveResourcesView
for managing subscriptions. Subscriptions table has different structure - entity label is located in separate row apart from checkbox and other cells.- class list_remove_tab(parent, logger=None, **kwargs)¶
‘List/Remove’ tab, part of
AddRemoveResourcesView
.- table¶
- class airgun.views.common.TemplateEditor(parent, logger=None, **kwargs)¶
Default view for template entity editor that can be present for example on provisioning template of partition table pages. It contains from different options of content rendering and ace editor where you can actually provide your inputs
Usage:
editor = View.nested(TemplateEditor)
- ROOT = .//div[@id='editor-container']¶
- rendering_options¶
- import_template¶
- fullscreen¶
- editor¶
- class airgun.views.common.SearchableViewMixin¶
Mixin which adds
airgun.widgets.Search
widget andairgun.widgets.Search.search()
to your view. It’s useful for _most_ entities list views where searchbox and results table are present.Note that class which uses this mixin should have :attr: table attribute.
- searchbox¶
- welcome_message¶
- is_searchable()¶
Verify that search procedure can be executed against specific page. That means that we have search field present on the page and that page is not a welcome one
- class airgun.views.common.SearchableViewMixinPF4¶
Mixin which adds
airgun.widgets.Search
widget andairgun.widgets.Search.search()
to your view. It’s useful for _most_ entities list viewswhere searchbox and results table are present. Note that class which uses this mixin should have :attr: table attribute.
- searchbox¶
- blank_page¶
- is_searchable()¶
Verify that search procedure can be executed against specific page that is not blank
- class airgun.views.common.TaskDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
- breadcrumb¶
- action_type¶
- user¶
- started_at¶
- finished_at¶
- parameters¶
- state¶
- result¶
- progressbar¶
- details¶
- class airgun.views.common.BookmarkCreateView(parent, logger=None, **kwargs)¶
Bookmark creation modal window, available via searchbox dropdown -> Bookmark this search.
Has slightly different style for katello and foreman pages, thus some widgets have special locators.
- ROOT = .//div[contains(@class, 'modal-dialog')]¶
- title¶
- name¶
- query¶
- error_message¶
- public¶
- submit¶
- cancel¶
- class airgun.views.common.TemplateInputItem(parent, locator, logger=None)¶
Template Input item view
- class UserInputForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- advanced¶
- options¶
- description¶
- class FactValueForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- fact_name¶
- description¶
- class VariableValueForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- variable_name¶
- description¶
- class PuppetParameterForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- puppet_class_name¶
- puppet_parameter_name¶
- description¶
- remove_button¶
- name¶
- required¶
- input_type¶
- input_content¶
airgun.views.computeprofile
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.computeprofile.ComputeProfilesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.computeprofile.ComputeProfileCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- submit¶
airgun.views.computeresource
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Libvirt Compute Resource Profile "Network interface" item widget |
|
Libvirt Compute Resource profile "Storage" item widget |
|
RHV Compute Resource profile "Network interface" item widget |
|
RHV Compute Resource profile "Storage" item widget |
|
VMware Compute Resource Profile "Network interface" item widget |
|
VMware Compute Resource Profile "Storage Controller Volume" item widget |
|
VMware Compute Resource Profile SCSI Controller Volumes List |
|
VMware Compute Resource Profile Storage Controller item widget |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
A Generic Compute Resource Image create view. |
|
A Generic Mixin Resource Image edit view. |
|
RHV Compute resource Image create view. |
|
RHV Compute resource Image edit view. |
|
VMWare ComputeResource Image create View |
|
VMWare ComputeResource Image edit View |
- class airgun.views.computeresource.ComputeResourcesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- property is_displayed¶
Check if the right page is displayed
- class airgun.views.computeresource.ResourceProviderCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class EC2ProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class region(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- load_regions¶
- value¶
- before_fill(values=None)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- class http_proxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- value¶
- access_key¶
- secret_key¶
- class GCEProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class zone(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- load_zones¶
- value¶
- before_fill(values=None)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- class http_proxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- value¶
- google_project_id¶
- client_email¶
- certificate_path¶
- class LibvirtProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- url¶
- display_type¶
- console_passwords¶
- class OpenStackProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- url¶
- user¶
- password¶
- domain¶
- class RackspaceProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- url¶
- user¶
- api_key¶
- region¶
- class VMwareProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class datacenter(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- load_datacenters¶
- value¶
- before_fill(values=None)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- vcenter¶
- user¶
- password¶
- display_type¶
- vnc_console_passwords¶
- enable_caching¶
- class RHVProviderForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class datacenter(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- load_datacenters¶
- value¶
- before_fill(values=None)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- url¶
- user¶
- password¶
- certification_authorities¶
- class compute_resource(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Compute Resource¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- name¶
- description¶
- submit¶
- provider¶
- provider_content¶
- class airgun.views.computeresource.ResourceProviderEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class airgun.views.computeresource.ResourceProviderDetailView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class compute_resource(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Compute Resource¶
- ROOT = .//div[@id='primary']¶
- table¶
- class virtual_machines(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Virtual Machines¶
- ROOT = .//div[@id='vms']¶
- actions¶
- table¶
- class compute_profiles(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Compute profiles¶
- ROOT = .//div[@id='compute_profiles']¶
- table¶
- class images(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Images¶
- ROOT = .//div[@id='images']¶
- filterbox¶
- table¶
- breadcrumb¶
- submit¶
- create_image¶
- class airgun.views.computeresource.ComputeResourceLibvirtProfileNetworkItem(parent, locator, logger=None)¶
Libvirt Compute Resource Profile “Network interface” item widget
- network_type¶
- network¶
- nic_type¶
- class airgun.views.computeresource.ComputeResourceLibvirtProfileStorageItem(parent, locator, logger=None)¶
Libvirt Compute Resource profile “Storage” item widget
- storage_pool¶
- size¶
- storage_type¶
- class airgun.views.computeresource.ComputeResourceRHVProfileNetworkItem(parent, locator, logger=None)¶
RHV Compute Resource profile “Network interface” item widget
- name¶
- network¶
- interface_type¶
- class airgun.views.computeresource.ComputeResourceRHVProfileStorageItem(parent, locator, logger=None)¶
RHV Compute Resource profile “Storage” item widget
- class bootable(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//input[contains(@id, 'bootable')]¶
- _is_checked()¶
- read()¶
Reads the contents of the view and presents them as a dictionary.
- Returns
A
dict
ofwidget_name: widget_read_value
where the values are retrieved using theWidget.read()
.
- fill(value)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- size¶
- storage_domain¶
- preallocate_disk¶
- wipe_disk_after_delete¶
- disk_interface¶
- class airgun.views.computeresource.ComputeResourceVMwareProfileNetworkItem(parent, locator, logger=None)¶
VMware Compute Resource Profile “Network interface” item widget
- nic_type¶
- network¶
- class airgun.views.computeresource.ComputeResourceVMwareProfileControllerVolumeItem(parent, locator, logger=None)¶
VMware Compute Resource Profile “Storage Controller Volume” item widget
- storage_pod¶
- data_store¶
- disk_mode¶
- size¶
- thin_provision¶
- eager_zero¶
- remove_button¶
- class airgun.views.computeresource.ComputeResourceVMwareProfileControllerVolumeList(parent, logger=None, **kwargs)¶
VMware Compute Resource Profile SCSI Controller Volumes List
- ROOT = .¶
- ITEMS = .//div[@class='disk-container']¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- class airgun.views.computeresource.ComputeResourceVMwareProfileStorageItem(parent, locator, logger=None)¶
VMware Compute Resource Profile Storage Controller item widget
- controller¶
- remove_button¶
- disks¶
- class airgun.views.computeresource.ResourceProviderProfileView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class LibvirtResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class network_interfaces(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='network_interfaces']¶
- ITEM_WIDGET_CLASS¶
- class storage(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='storage_volumes']¶
- ITEMS = ./div/div[contains(@class, 'removable-item')]¶
- ITEM_WIDGET_CLASS¶
- cpus¶
- cpu_mode¶
- memory¶
- image¶
- class EC2ResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- flavor¶
- image¶
- availability_zone¶
- subnet¶
- security_groups¶
- managed_ip¶
- class GCEResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- machine_type¶
- image¶
- network¶
- external_ip¶
- default_disk_size¶
- class RHVResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class network_interfaces(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='network_interfaces']¶
- ITEM_WIDGET_CLASS¶
- class storage(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='storage_volumes']¶
- ITEMS = ./div/div[contains(@class, 'removable-item')]¶
- ITEM_WIDGET_CLASS¶
- cluster¶
- template¶
- instance_type¶
- cores¶
- sockets¶
- memory¶
- highly_available¶
- class VMwareResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class network_interfaces(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='network_interfaces']¶
- ITEM_WIDGET_CLASS¶
- class storage(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //div[contains(concat(' ', @class, ' '), ' vmware-storage-container ')]¶
- ITEMS = //div[contains(concat(' ', @class, ' '), ' controller-container ')]¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- cpus¶
- cores_per_socket¶
- memory¶
- firmware¶
- cluster¶
- resource_pool¶
- folder¶
- guest_os¶
- virtual_hw_version¶
- memory_hot_add¶
- cpu_hot_add¶
- cdrom_drive¶
- annotation_notes¶
- image¶
- breadcrumb¶
- compute_profile¶
- compute_resource¶
- provider_content¶
- submit¶
- property current_provider¶
Retrieve the provider name from the compute resource name.
Note: The provider name is always appended to the end of the compute resource name, for example: compute resource name “foo”
For RHV provider, the compute resource name will be displayed as: “foo (RHV)”
- For EC2 provider, the compute resource name will be displayed as:
“foo (ca-central-1-EC2)” where “ca-central-1” is the region.
- class airgun.views.computeresource.ResourceProviderVMImport(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- class airgun.views.computeresource.ComputeResourceGenericImageCreateView(parent, logger=None, **kwargs)¶
A Generic Compute Resource Image create view.
- breadcrumb¶
- name¶
- operating_system¶
- architecture¶
- username¶
- user_data¶
- password¶
- image¶
- submit¶
- class airgun.views.computeresource.ComputeResourceGenericImageEditViewMixin¶
A Generic Mixin Resource Image edit view.
- property is_displayed¶
- class airgun.views.computeresource.ComputeResourceRHVImageCreateView(parent, logger=None, **kwargs)¶
RHV Compute resource Image create view.
- class airgun.views.computeresource.ComputeResourceRHVImageEditView(parent, logger=None, **kwargs)¶
RHV Compute resource Image edit view.
- class airgun.views.computeresource.ComputeResourceVMwareImageCreateView(parent, logger=None, **kwargs)¶
VMWare ComputeResource Image create View
- class airgun.views.computeresource.ComputeResourceVMwareImageEditView(parent, logger=None, **kwargs)¶
VMWare ComputeResource Image edit View
airgun.views.configgroup
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.configgroup.ConfigGroupsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
airgun.views.containerimagetag
¶Base view for Satellite pages |
|
Common view for task details screen. Can be found for most of tasks for |
- class airgun.views.containerimagetag.ContainerImageTagsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- table¶
- class airgun.views.containerimagetag.ContainerImageTagDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- product¶
- repository¶
- class lce(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Lifecycle Environments¶
- table¶
- breadcrumb¶
airgun.views.contentcredential
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.contentcredential.ContentCredentialsTableView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.contentcredential.ContentCredentialCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- content_type¶
- content¶
- upload_file¶
- submit¶
- class airgun.views.contentcredential.ContentCredentialEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- content_type¶
- content¶
- products¶
- repos¶
- class products(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- table¶
- class repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- table¶
- breadcrumb¶
- remove¶
- dialog¶
airgun.views.contenthost
¶Small icon indicating subscription or katello-agent status. Can be |
|
Installable Updates Table Cell View for content host view Table |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Common view for task details screen. Can be found for most of tasks for |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.contenthost.StatusIcon(parent, locator=None, logger=None)¶
Small icon indicating subscription or katello-agent status. Can be colored in either green, yellow or red.
Example html representation:
<span ng-class="table.getHostStatusIcon(host.subscription_global_status)" class="red host-status pficon pficon-error-circle-o status-error"> </span>
Locator example:
//span[contains(@ng-class, 'host.subscription_global_status')] //i[contains(@ng-class, 'host.subscription_global_status')]
- property color¶
Returns string representing icon color: ‘red’, ‘yellow’, ‘green’ or ‘unknown’.
- read()¶
Returns current icon color
- class airgun.views.contenthost.InstallableUpdatesCellView(parent, logger=None, **kwargs)¶
Installable Updates Table Cell View for content host view Table
- class errata(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = ./a[contains(@ui-sref, 'errata')]¶
- security¶
- bug_fix¶
- enhancement¶
- ROOT = .¶
- class airgun.views.contenthost.ContentHostsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- export¶
- register¶
- actions¶
- dialog¶
- select_all¶
- table¶
- pagination¶
- class airgun.views.contenthost.ContentHostDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- uuid¶
- bios_uuid¶
- description¶
- type¶
- katello_agent¶
- virtual_guests¶
- registered_through¶
- subscription_status¶
- details¶
- auto_attach¶
- system_purpose_status¶
- service_level¶
- usage_type¶
- role¶
- addons¶
- os¶
- architecture¶
- number_of_cpus¶
- sockets¶
- cores_per_socket¶
- ram¶
- virtual_guest¶
- security¶
- bug_fix¶
- enhancement¶
- release_version¶
- content_view¶
- lce¶
- registered¶
- registered_by¶
- last_checkin¶
- class provisioning_details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Provisioning Details¶
- name¶
- status¶
- operating_system¶
- puppet_environment¶
- last_puppet_report¶
- model¶
- host_group¶
- class subscriptions(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- SUB_ITEM = Subscriptions¶
- status¶
- auto_attach¶
- run_auto_attach¶
- service_level¶
- resources¶
- class host_collections(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Host Collections¶
- resources¶
- class packages_actions(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Packages¶
- SUB_ITEM = Actions¶
- action_type¶
- name¶
- perform¶
- update_all_packages¶
- class packages_installed(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Packages¶
- SUB_ITEM = Installed¶
- remove_selected¶
- table¶
- class packages_applicable(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Packages¶
- SUB_ITEM = Applicable¶
- upgrade_selected¶
- update_all_packages¶
- table¶
- class errata(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- lce_filter¶
- searchbox¶
- apply_selected¶
- recalculate¶
- table¶
- select_all¶
- pagination¶
- search(query, lce=None)¶
Apply available filters before proceeding with searching and automatically set proper search mask if errata id instead of errata title was passed.
- class module_streams(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Module Streams¶
- status_filter¶
- table¶
- search(query, status='All')¶
Searches for Module Streams. Apply available filters before proceeding with searching. By default ‘All’ is passed
- class repository_sets(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Repository Sets¶
- show_all¶
- limit_to_lce¶
- actions¶
- table¶
- read()¶
Sometimes no checkboxes are checked off by default, selecting “Show All” in such case.
- breadcrumb¶
- unregister¶
- dialog¶
- class airgun.views.contenthost.ContentHostTaskDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
- class airgun.views.contenthost.SyspurposeBulkActionView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- service_level¶
- role¶
- usage_type¶
- assign¶
airgun.views.contentview
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Secondary level Tab, typically 'List/Remove' or 'Add' sub-tab inside |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.contentview.ContentViewTableView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.contentview.ContentViewCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- label¶
- description¶
- composite_view¶
- solve_dependencies¶
- auto_publish¶
- submit¶
- class airgun.views.contentview.ContentViewCopyView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- new_name¶
- create¶
- class airgun.views.contentview.ContentViewRemoveView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- conflicts¶
- table¶
- remove¶
- cancel¶
- property conflicts_present¶
- class airgun.views.contentview.ContentViewEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- label¶
- description¶
- composite¶
- solve_dependencies¶
- class versions(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- searchbox¶
- table¶
- search(version_name)¶
Searches for content view version.
Searchbox can’t search by version name, only by id, that’s why in case version name was passed, it’s transformed into recognizable value before filling, for example:
'Version 1.0' -> 'version = 1'
- class content_views(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Content Views¶
- resources¶
- class repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Yum Content¶
- SUB_ITEM = Repositories¶
- resources¶
- class filters(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Yum Content¶
- SUB_ITEM = Filters¶
- new_filter¶
- remove_selected¶
- table¶
- class docker_repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
with dropdown.Usage:
@View.nested class mytab(SatTabWithDropdown): TAB_NAME = 'My Tab' SUB_ITEM = 'My Tab Dropdown Item'
- TAB_NAME = Container Images¶
- SUB_ITEM = Repositories¶
- resources¶
- class ostree_content(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = OSTree Content¶
- resources¶
- breadcrumb¶
- publish¶
- actions¶
- dialog¶
- class airgun.views.contentview.ContentViewVersionPublishView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- version¶
- description¶
- force_metadata_regeneration¶
- save¶
- cancel¶
- class airgun.views.contentview.EntitySearchView(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- repo_filter¶
- searchbox¶
- table¶
- class airgun.views.contentview.ContentViewVersionDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class yum_repositories(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = Yum Repositories¶
- table¶
- class docker_repositories(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = Docker Repositories¶
- table¶
- class rpm_packages(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = rpm Packages¶
- class module_streams(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = Module Streams¶
- class errata(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- table¶
- class details(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- description¶
- environments¶
- breadcrumb¶
- class airgun.views.contentview.ContentViewVersionPromoteView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- lce¶
- description¶
- force_metadata_regeneration¶
- promote¶
- cancel¶
- class airgun.views.contentview.ContentViewVersionRemoveView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- table¶
- completely¶
- next¶
- cancel¶
airgun.views.contentview_new
¶Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.contentview_new.NewContentViewTableView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- create_content_view¶
- table¶
- class airgun.views.contentview_new.NewContentViewCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class component(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- component_tile¶
- solve_dependencies¶
- import_only¶
- child_widget_accessed(widget)¶
This hook is called when a child widget of current view is accessed.
One of useful examples is below. it allows us to switch between frames.
- Parameters
widget – The widget being accessed or
ParametrizedViewRequest
.
- class composite(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- composite_tile¶
- auto_publish¶
- child_widget_accessed(widget)¶
This hook is called when a child widget of current view is accessed.
One of useful examples is below. it allows us to switch between frames.
- Parameters
widget – The widget being accessed or
ParametrizedViewRequest
.
- title¶
- name¶
- label¶
- description¶
- submit¶
- cancel¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- after_fill(value)¶
Ensure ‘Create content view’ button is enabled after filling out the required fields
airgun.views.contentviewfilter
¶'Actions' column for content view filter rules. Can contain either |
|
'Version' column for content view filter rule. Depending on type (e.g. |
|
Content view filter variant of Editable Entry, main difference of which |
|
Affected repositories tab contains repositories count inside tab title, |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- airgun.views.contentviewfilter.ACTIONS_COLUMN = 4¶
- class airgun.views.contentviewfilter.CVFRuleActions(parent, logger=None, **kwargs)¶
‘Actions’ column for content view filter rules. Can contain either ‘Edit’ button or ‘Save’ and ‘Cancel’.
- edit¶
- save¶
- cancel¶
- class airgun.views.contentviewfilter.CVFRuleVersion(parent, logger=None, **kwargs)¶
‘Version’ column for content view filter rule. Depending on type (e.g. ‘Equal To’, ‘Greater Than’ etc) can have different set of inputs.
- class all_versions(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class equal_to(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- version¶
- class greater_than(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- min_version¶
- class less_than(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- max_version¶
- class range(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- min_version¶
- max_version¶
- rule_type¶
- rule¶
- version_text¶
- fill(values)¶
Custom fill to support passing values for all inputs in single tuple without the need to specify specific input name.
- Parameters
values (tuple) – tuple containing values for specific version type and its inputs, e.g. (‘Equal To’, ‘0.5’) or (‘Range’, ‘4.1’, ‘4.6’)
- read()¶
Custom read to return “summary” text value, not the dict with every included widget separately.
- class airgun.views.contentviewfilter.CVFEditableEntry(parent, locator=None, name=None, logger=None)¶
Content view filter variant of Editable Entry, main difference of which is
span
tags instead ofdd
anddt
.
- class airgun.views.contentviewfilter.AffectedRepositoriesTab(parent, logger=None, **kwargs)¶
Affected repositories tab contains repositories count inside tab title, making it impossible to rely on exact string value. Using
starts-with
instead.- TAB_NAME = Affected Repositories¶
- TAB_LOCATOR¶
- class airgun.views.contentviewfilter.ContentViewFiltersView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- new_filter¶
- remove_selected¶
- table¶
- class airgun.views.contentviewfilter.CreateYumFilterView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- content_type¶
- inclusion_type¶
- description¶
- save¶
- cancel¶
- class airgun.views.contentviewfilter.EditYumFilterView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- name¶
- description¶
- class rpm_filter(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class errata_filter(parent, logger=None, **kwargs)¶
Combines both ‘Errata by ID’ and ‘Errata by date and type’ filters as they can’t be easily distinguished on UI. For ‘Errata by ID’ filter ‘Add’ and ‘List/Remove’ tabs are available, for ‘Errata by date and type’ - only ‘Erratum Date Range’ tab is displayed.
- class add_tab(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- security¶
- enhancement¶
- bugfix¶
- date_type¶
- start_date¶
- end_date¶
- select_all¶
- search(query=None, filters=None)¶
Custom search which supports all errata filters.
- Parameters
query (str optional) – search query to type into search box. Optional as sometimes filtering is enough to find desired errata
filters (dict optional) – dictionary containing widget names and values to set (like with regular fill())
- add(errata_id=None, filters=None)¶
Add specific errata to filter or all available if id not provided.
- Parameters
errata_id (str optional) – ID of errata to add. If not provided - all available errata in table will be selected (especially useful together with filtering)
filters (dict optional) – dictionary containing widget names and values to set (like with regular fill())
- fill(errata_id=None, filters=None)¶
Associate resource(s)
- class erratum_date_range(parent, logger=None, **kwargs)¶
Secondary level Tab, typically ‘List/Remove’ or ‘Add’ sub-tab inside some primary tab.
Usage:
@View.nested class listremove(SatSecondaryTab): TAB_NAME = 'List/Remove'
- TAB_NAME = Erratum Date Range¶
- security¶
- enhancement¶
- bugfix¶
- date_type¶
- start_date¶
- end_date¶
- save¶
- cancel¶
- add(errata_id=None, filters=None)¶
- Add specific errata to filter or all available if id not
provided.
- Parameters
errata_id (str optional) – ID of errata to add. If not provided - all available errata in table will be selected (especially useful together with filtering)
filters (dict optional) – dictionary containing widget names and values to set (like with regular fill())
- read()¶
Read values from tabs depending on errata filter type (by id or daterange filter).
- class package_group_filter(parent, logger=None, **kwargs)¶
View which allows assigning/unassigning some resources to entity. Contains two secondary level tabs ‘List/Remove’ and ‘Add’ with tables allowing managing resources for entity.
Usage:
@View.nested class resources(AddRemoveResourcesView): pass
- class module_streams_filter(parent, logger=None, **kwargs)¶
View which allows assigning/unassigning some resources to entity. Contains two secondary level tabs ‘List/Remove’ and ‘Add’ with tables allowing managing resources for entity.
Usage:
@View.nested class resources(AddRemoveResourcesView): pass
- class affected_repositories(parent, logger=None, **kwargs)¶
Affected repositories tab contains repositories count inside tab title, making it impossible to rely on exact string value. Using
starts-with
instead.- filter_toggle¶
- product_filter¶
- searchbox¶
- update_repositories¶
- select_all¶
- table¶
- breadcrumb¶
- filter_type¶
- content_tabs¶
airgun.views.dashboard
¶List of name-value pairs. Each name element from every pair is clickable |
|
Return total hosts count from Host Configuration Status type of |
|
Widget refer to auto refresh functionality on dashboard |
|
Base view for Satellite pages |
- class airgun.views.dashboard.ItemValueList(parent, logger=None, **kwargs)¶
List of name-value pairs. Each name element from every pair is clickable
Example html representation:
<ul> <li> <a class="dashboard-links"...>Hosts with no reports</a> <h4>5</h4> </li>
- LABELS = .//li/a[@class='dashboard-links']¶
- LABEL = .//li/a[@class='dashboard-links'][normalize-space(.)='{}']¶
- VALUE = .//h4[preceding-sibling::a[contains(., '{}')]]¶
- read()¶
Return a dictionary where keys are widget criteria names and values are number of hosts that correspond to these criteria
- fill(value)¶
Click on specific criteria from the widget list
- class airgun.views.dashboard.TotalCount(parent, logger=None, **kwargs)¶
Return total hosts count from Host Configuration Status type of widgets
- total_count¶
- read()¶
Return hosts count from widget. Usually it is a string like ‘Total Hosts: 5’
- class airgun.views.dashboard.AutoRefresh(parent, logger=None, **kwargs)¶
Widget refer to auto refresh functionality on dashboard
- AUTO_REFRESH = //a[contains(@href, '/?auto_refresh')]¶
- read()¶
Return whether functionality is enabled or disabled
- fill(value)¶
Click on a button if state of the widget need to be changed
- class airgun.views.dashboard.DashboardView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class DiscoveredHosts(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Discovered Hosts']¶
- hosts¶
- hosts_count¶
- class HostConfigurationStatus(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Host Configuration Status for All']¶
- status_list¶
- total_count¶
- class TaskStatus(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Task Status']¶
- states¶
- fill(values)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- class LatestJobs(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Latest Jobs']¶
- jobs¶
- class HostConfigurationChart(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Host Configuration Chart for All']¶
- chart¶
- class ContentViews(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Content Views']¶
- content_views¶
- class SyncOverview(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Sync Overview']¶
- syncs¶
- class HostSubscription(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Host Subscription Status']¶
- subscriptions¶
- fill(values)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- class SubscriptionStatus(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Subscription Status']¶
- subscriptions¶
- class LatestErrata(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Latest Errata']¶
- erratas¶
- class NewHosts(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='New Hosts']¶
- hosts¶
- class HostCollections(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Host Collections']¶
- collections¶
- class LatestFailedTasks(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Latest Warning/Error Tasks']¶
- tasks¶
- fill(values)¶
Implementation of form filling.
This method goes through all widgets defined on this view one by one and calls their
fill
methods appropriately.None
values will be ignored.It will log any skipped fill items. It will log a warning if you pass any extra values for filling.
It will store the fill value in
last_fill_data
. The data will be “deflattened” to ensure uniformity.- Parameters
values – A dictionary of
widget_name: value_to_fill
.- Returns
bool
if the fill changed any value.
- class VirtWhoConfigStatus(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Virt-who Configs Status']¶
- config_status¶
- latest_config¶
- title¶
- manage¶
- refresh¶
- searchbox¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
airgun.views.discoveredhosts
¶Discovered hosts table that has a different no rows message location. |
|
Main discovered hosts view |
|
A Table column for Discovered host details Table Row |
|
A Table Row for Discovered host details Table |
|
A Table represented by two columns where the property name is the first |
|
Discovered Host details view |
|
Common dialog view for all discovered hosts actions |
|
Discovered hosts Auto Provision action dialog view |
|
Discovered hosts Assign Organization action dialog view |
|
Discovered hosts Assign Location action dialog view |
|
Discovered hosts Reboot dialog action view |
|
Discovered hosts Delete dialog action view |
|
Discovered host Provision action dialog view |
|
Discovered Host Edit Provisioning View, |
- class airgun.views.discoveredhosts.DiscoveredHostsViewTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
Discovered hosts table that has a different no rows message location.
Example html representation:
<div id="content"> <table ...> </table> No entries found </div>
- no_rows_message = //div[@id='content' and contains(., 'No entries found')]¶
- class airgun.views.discoveredhosts.DiscoveredHostsView(parent, logger=None, **kwargs)¶
Main discovered hosts view
- title¶
- actions¶
- table¶
- welcome_message¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- is_searchable()¶
Verify that search procedure can be executed against discovered hosts page. That means that we have search field present.
Note: When no discovered host exists in the system the search box does not exist in the DOM. Also there is no welcome_message.
- class airgun.views.discoveredhosts.DiscoveredHostDetailsTableColumn(parent, position, absolute_position=None, logger=None)¶
A Table column for Discovered host details Table Row
- __locator__()¶
- class airgun.views.discoveredhosts.DiscoveredHostDetailsTableRow(parent, index, logger=None)¶
A Table Row for Discovered host details Table
- Column¶
- class airgun.views.discoveredhosts.DiscoveredHostDetailsTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
A Table represented by two columns where the property name is the first column and the property value is the second column.
Example html representation:
<table> <tbody> <tr> <th><strong> architecture </strong></th> <td>x86_64</td> </tr> <tr> <th><strong> discovery_bootif </strong></th> <td>52:d2:5f:73:31:e2</td> </tr> <tr> <th><strong> discovery_bootip</strong></th> <td>10.8.212.60</td> </tr>
- Row¶
- read()¶
Transform rows to a dict {property_name: property_value …}.
- class airgun.views.discoveredhosts.DiscoveredHostDetailsView(parent, logger=None, **kwargs)¶
Discovered Host details view
- breadcrumb¶
- back¶
- actions¶
- delete¶
- expand_all¶
- interfaces¶
- highlights¶
- storage¶
- hardware¶
- network¶
- software¶
- miscellaneous¶
- class airgun.views.discoveredhosts.DiscoveredHostsActionDialog(parent, logger=None, **kwargs)¶
Common dialog view for all discovered hosts actions
- title¶
- table¶
- submit¶
- class airgun.views.discoveredhosts.DiscoveredHostsAutoProvisionDialog(parent, logger=None, **kwargs)¶
Discovered hosts Auto Provision action dialog view
- title¶
- class airgun.views.discoveredhosts.DiscoveredHostsAssignOrganizationDialog(parent, logger=None, **kwargs)¶
Discovered hosts Assign Organization action dialog view
- title¶
- organization¶
- class airgun.views.discoveredhosts.DiscoveredHostsAssignLocationDialog(parent, logger=None, **kwargs)¶
Discovered hosts Assign Location action dialog view
- title¶
- location¶
- class airgun.views.discoveredhosts.DiscoveredHostsRebootDialog(parent, logger=None, **kwargs)¶
Discovered hosts Reboot dialog action view
- title¶
- class airgun.views.discoveredhosts.DiscoveredHostsDeleteDialog(parent, logger=None, **kwargs)¶
Discovered hosts Delete dialog action view
- title¶
- class airgun.views.discoveredhosts.DiscoveredHostProvisionDialog(parent, logger=None, **kwargs)¶
Discovered host Provision action dialog view
- ROOT = .//div[@class='modal-content']¶
- title¶
- host_group¶
- organization¶
- location¶
- cancel¶
- customize_create¶
- quick_create¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- property is_all_displayed¶
Check that all the required dialog widgets fields are displayed
- before_fill(values=None)¶
Before filling we have to wait and ensure that all the required dialog widgets fields are visible.
- class airgun.views.discoveredhosts.DiscoveredHostEditProvisioningView(parent, logger=None, **kwargs)¶
Discovered Host Edit Provisioning View,
- Note: When we click on customize_create in dialog
DiscoveredHostProvisionDialog, the user is redirect to this view.
airgun.views.discoveryrule
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.discoveryrule.DiscoveryRulesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- new_on_blank_page¶
- table¶
- class airgun.views.discoveryrule.DiscoveryRuleCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class primary(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- search¶
- host_group¶
- hostname¶
- hosts_limit¶
- priority¶
- enabled¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- submit¶
- cancel¶
- breadcrumb¶
airgun.views.domain
¶List of all domains. |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.domain.DomainListView(parent, logger=None, **kwargs)¶
List of all domains.
- title¶
- new¶
- table¶
- class airgun.views.domain.DomainCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class domain(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- dns_domain¶
- full_name¶
- dns_capsule¶
- class parameters(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- params¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- multiselect¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- multiselect¶
- breadcrumb¶
- submit_button¶
- cancel_button¶
airgun.views.errata
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Common view for task details screen. Can be found for most of tasks for |
- class airgun.views.errata.ErratumView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- table¶
- repo_filter¶
- applicable_filter¶
- installable_filter¶
- apply_errata¶
- searchbox¶
- search(query, applicable=True, installable=False, repo=None)¶
Apply available filters before proceeding with searching and automatically set proper search mask if errata id instead of errata title was passed.
- Parameters
- Returns
list of dicts representing table rows
- Return type
- class airgun.views.errata.ErrataDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- advisory¶
- cves¶
- type¶
- severity¶
- issued¶
- last_updated_on¶
- reboot_suggested¶
- topic¶
- description¶
- solution¶
- class content_hosts(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Content Hosts¶
- environment_filter¶
- searchbox¶
- apply¶
- table¶
- class repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- lce_filter¶
- cv_filter¶
- searchbox¶
- table¶
- search(query, lce=None, cv=None)¶
Apply available filters before proceeding with searching.
- class packages(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- independent_packages¶
- module_stream_packages¶
- breadcrumb¶
- class airgun.views.errata.ApplyErrataView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- environment_filter¶
- searchbox¶
- next_button¶
- table¶
- search(query, environment=None)¶
Apply environment filter before proceeding with searching.
- class airgun.views.errata.ErrataInstallationConfirmationView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- cancel¶
- confirm¶
- class airgun.views.errata.ErrataTaskDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
airgun.views.filter
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.filter.FiltersView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- searchbox¶
- new¶
- table¶
- pagination¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- search(query)¶
- class airgun.views.filter.FilterDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class Taxonomies(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class NoTaxonomies(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- breadcrumb¶
- resource_type¶
- permission¶
- override¶
- unlimited¶
- filter¶
- submit¶
- taxonomies_tabs¶
airgun.views.hardware_model
¶Usual confirmation dialog with two buttons and close 'x' button in the |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.hardware_model.DeleteHardwareModelDialog(parent, logger=None, **kwargs)¶
Usual confirmation dialog with two buttons and close ‘x’ button in the right corner. Has nothing in common with javascript alert, confirm or prompt pop-ups.
Example html representation:
<div class="modal-content"> <button type="button" class="close" ... ng-click="cancel()"> <div class="modal-footer ng-scope"> <button class="btn btn-danger" ng-click="ok()"> <button class="btn ..." ng-click="cancel()"...>
Locator example:
//div[@class='modal-content']
- confirm_dialog¶
- cancel_dialog¶
- class airgun.views.hardware_model.HardwareModelsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- delete_dialog¶
- title¶
- new¶
- table¶
airgun.views.host
¶Interface table has Action column that contains only two buttons, |
|
Represent value field for Puppet Class parameters table row from Host |
|
Libvirt Compute Resource profile "Storage" item widget |
|
Google Compute Resource profile "Storage" item widget |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
The widget representation of recommendation item. |
|
Insights tab view of a host |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Handle Taxonomy Mismatch Radio Group |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Common base class Dialog for Hosts Actions |
|
Hosts Delete Task Details View |
|
Hosts Job Invocation Create View |
|
Hosts Job Invocation Status View |
- class airgun.views.host.TableActions(parent, logger=None, **kwargs)¶
Interface table has Action column that contains only two buttons, without any extra controls, so we cannot re-use any existing widgets
- edit¶
- delete¶
- class airgun.views.host.PuppetClassParameterValue(parent, logger=None, **kwargs)¶
Represent value field for Puppet Class parameters table row from Host Parameters tab. That field can be interacted with as usual text input, but also it can be overridden with new value
- ROOT = .//div[@class='input-group']¶
- value¶
- override_button¶
- remove_override_button¶
- hide_button¶
Return whether the variable is hidden
- property overridden¶
Return whether the variable is overridden, a variable is overridden if not disabled
- read()¶
Return smart variable widget values
- fill(value)¶
Set smart variable widget values
- hide(value=True)¶
Hide or unhide the smart variable input box
- override(value=True)¶
Click corresponding button depends on action needed
- class airgun.views.host.ComputeResourceLibvirtProfileStorageItem(parent, locator, logger=None)¶
Libvirt Compute Resource profile “Storage” item widget
- storage_pool¶
- size¶
- storage_type¶
- class airgun.views.host.ComputeResourceGoogleProfileStorageItem(parent, locator, logger=None)¶
Google Compute Resource profile “Storage” item widget
- size¶
- class airgun.views.host.HostInterface(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class InterfaceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class VirtualAttributesForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- tag¶
- attached_to¶
- virtual_nic¶
- virtual_attributes¶
- class BMCForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- username¶
- password¶
- provider¶
- class BondForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- mode¶
- attached_devices¶
- bond_options¶
- class BridgeForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- attached_devices¶
- ROOT = .//div[@id='interfaceModal']¶
- title¶
- submit¶
- interface_type¶
- mac¶
- device_identifier¶
- dns¶
- domain¶
- subnet¶
- subnet_v6¶
- ip¶
- ipv6¶
- managed¶
- primary¶
- provision¶
- remote_execution¶
- interface_additional_data¶
- network_type¶
- network¶
- nic_type¶
- after_fill(was_change)¶
Submit the dialog data once all necessary view widgets filled
- class airgun.views.host.HostsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- export¶
- new¶
- register¶
- select_all¶
- table¶
- host_status = //span[contains(@class, 'host-status')]¶
- actions¶
- dialog¶
- class airgun.views.host.HostCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class host(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- organization¶
- location¶
- hostgroup¶
- inherit_deploy_option¶
- deploy¶
- compute_profile¶
- lce¶
- content_view¶
- content_source¶
- reset_puppet_environment¶
- inherit_puppet_environment¶
- puppet_environment¶
- puppet_master¶
- puppet_ca¶
- openscap_capsule¶
- class ansible_roles(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Ansible Roles¶
- resources¶
- class NoResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class LibvirtResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class virtual_machine(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class storage(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='storage_volumes']¶
- ITEMS = ./div/div[contains(@class, 'removable-item')]¶
- ITEM_WIDGET_CLASS¶
- TAB_NAME = Virtual Machine¶
- cpus¶
- cpu_mode¶
- memory¶
- startup¶
- class GoogleResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class virtual_machine(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class storage(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //fieldset[@id='storage_volumes']¶
- ITEMS = ./div/div[contains(@class, 'removable-item')]¶
- ITEM_WIDGET_CLASS¶
- TAB_NAME = Virtual Machine¶
- machine_type¶
- network¶
- external_ip¶
- class AzureRmResourceForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class virtual_machine(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Virtual Machine¶
- resource_group¶
- vm_size¶
- platform¶
- username¶
- password¶
- ssh_key¶
- os_disk_caching¶
- custom_script_command¶
- file_uris¶
- class operating_system(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Operating System¶
- architecture¶
- operating_system¶
- image¶
- root_password¶
- class operating_system(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Operating System¶
- architecture¶
- operating_system¶
- build¶
- image¶
- media_type¶
- media¶
- ptable¶
- disk¶
- root_password¶
- class interfaces(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- interface¶
- interfaces_list¶
- add_new_interface¶
- before_fill(values=None)¶
If we don’t want to break view.fill() procedure flow, we need to push ‘Edit’ button to open necessary dialog to be able to fill values
- class puppet_enc(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Puppet ENC¶
- config_groups¶
- classes¶
- puppet_class_parameters¶
- class parameters(parent, logger=None, **kwargs)¶
Host parameters tab
- class global_params(parent, **kwargs)¶
Satellite version of table.
Includes a paginator sub-widget. If found, then the paginator is used to read all entries from the table.
If the table is empty, there might be only one column with an appropriate message in the table body, or it may have no columns or rows at all. This subclass handles both possibilities.
Example html representation:
<table bst-table="table" ...> <thead> <tr class="ng-scope"> <th class="row-select"><input type="checkbox" ...></th> <th ng-click="table.sortBy(column)" ...> <span ...><span ...>Column Name</span></span><i ...></i></th> <th ng-click="table.sortBy(column)" ...> <span ...><span ...>Column Name</span></span><i ...></i></th> </tr> </thead> <tbody> <tr id="noRowsTr"><td colspan="9"> <span data-block="no-rows-message" ...> <span class="ng-scope">Table is empty</span></span> </td></tr> </tbody> </table>
Locator example:
.//table
- read()¶
Return a list of dictionaries. Each dictionary consists of global parameter name, value and whether overridden or not.
- host_params¶
- fill(values)¶
Fill the parameters tab widgets with values.
- Parameters
values – A dictionary of
widget_name: value_to_fill
.
Note
The global_params value can be a list of names of global parameters to override or a list of dicts like [{name: global_param_name_to_override, value: new_value}…]
- class additional_information(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Additional Information¶
- owned_by¶
- enabled¶
- hardware_model¶
- comment¶
- breadcrumb¶
- submit¶
- provider_content¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- property current_provider¶
Retrieve the provider name from the compute resource name.
Note: The provider name is always appended to the end of the compute resource name, for example: compute resource name “foo”
For RHV provider, the compute resource name will be displayed as: “foo (RHV)”
For Libvirt provider, the compute resource name will be displayed as: “foo (Libvirt)”
Return “Compute resource is not specified” value in case no compute resource specified in deployment procedure (e.g. “Bare Metal”)
- class airgun.views.host.HostRegisterView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class general(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- TAB_NAME = General¶
- TAB_LOCATOR¶
- ROOT = //section[@id="generalSection"]¶
- orgnization¶
- location¶
- host_group¶
- operating_system¶
- linux_host_init_link¶
- capsule¶
- insecure¶
- class advanced(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- TAB_NAME = Advanced¶
- TAB_LOCATOR¶
- ROOT = //section[@id="advancedSection"]¶
- setup_rex¶
- setup_insights¶
- install_packages¶
- update_packages¶
- repository¶
- repository_gpg_key_url¶
- token_life_time¶
- rex_interface¶
- activation_keys¶
- life_cycle_env¶
- ignore_error¶
- force¶
- activation_key_helper¶
- life_cycle_env_helper¶
- install_packages_helper¶
- generate_command¶
- cancel¶
- registration_command¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- before_fill(values)¶
Fill some of the parameters in the widgets with values.
- Parameters
values – A dictionary of widget_name: value_to_fill.
Note
Some of the fields are disabled for few seconds and get enabled based on the selection, handled separately
- class airgun.views.host.RecommendationWidget(parent, locator, logger=None)¶
The widget representation of recommendation item.
- EXPAND_BUTTON = .//div[contains(@class, 'expand')]¶
- NAME = .//div/p[contains(@class, 'item-heading')]¶
- RISK_LABEL = .//div/span[contains(@class, 'risk-label')]¶
- TEXT = .//div[contains(@class, 'list-group-item-container')]¶
- property expand_button¶
Return the expand button element.
- property expanded¶
Check whether this recommendation is expanded or not.
- expand()¶
Expand the recommendation item section.
- property name¶
Return the name displayed for this recommendation item
- property label¶
Return the risk label displayed for this recommendation item
- property text¶
Return the text displayed for this recommendation item
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- class airgun.views.host.RecommendationListView(parent, logger=None, **kwargs)¶
Insights tab view of a host
- ROOT = //div[contains(@id, 'host_details_insights_tab')]¶
- ITEMS = .//div[@id='hits_list']/div[contains(@class, 'list-group-item')]¶
- ITEM_WIDGET¶
- items()¶
- class airgun.views.host.HostDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class properties(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- properties_table¶
- class insights(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- insights_tab¶
- breadcrumb¶
- boot_disk¶
- schedule_remote_job¶
- back¶
- webconsole¶
- edit¶
- clone¶
- build¶
- delete¶
- audits_details¶
- facts_details¶
- yaml_dump¶
- yaml_output¶
- content_details¶
- recommendations¶
- class airgun.views.host.HostEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- submit¶
- toggle_manage¶
- class airgun.views.host.HostsActionCommonDialog(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- table¶
- keep_selected¶
- submit¶
- class airgun.views.host.HostsChangeGroup(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- host_group¶
- class airgun.views.host.HostsChangeEnvironment(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- environment¶
- class airgun.views.host.HostsTaxonomyMismatchRadioGroup(parent, **kwargs)¶
Handle Taxonomy Mismatch Radio Group
Example html representation:
<form ...> <div class="clearfix"> ... </div> <input type="radio" id="location_optimistic_import_yes" ..> Fix Location on Mismatch <input type="radio" id="location_optimistic_import_no" ..> Fail on Mismatch </form>
- taxonomy¶
- fix_mismatch¶
- fail_on_mismatch¶
- buttons_text¶
- _is_checked(widget)¶
Returns whether the widget is checked
- read()¶
Return the text of the selected button
- fill(value)¶
Select the button with text equal to value
- class airgun.views.host.HostsAssignOrganization(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- organization¶
- on_mismatch¶
- class airgun.views.host.HostsAssignLocation(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- location¶
- on_mismatch¶
- class airgun.views.host.HostsAssignCompliancePolicy(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- policy¶
- class airgun.views.host.HostsUnassignCompliancePolicy(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- policy¶
- class airgun.views.host.HostsChangeOpenscapCapsule(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- policy¶
- class airgun.views.host.HostsDeleteActionDialog(parent, logger=None, **kwargs)¶
Common base class Dialog for Hosts Actions
- title¶
- class airgun.views.host.HostsDeleteTaskDetailsView(parent, logger=None, **kwargs)¶
Hosts Delete Task Details View
- class airgun.views.host.HostsJobInvocationCreateView(parent, logger=None, **kwargs)¶
Hosts Job Invocation Create View
- class airgun.views.host.HostsJobInvocationStatusView(parent, logger=None, **kwargs)¶
Hosts Job Invocation Status View
airgun.views.host_new
¶Each card in host view has it's own title with same locator |
|
Dropdown with description below items |
|
Details card body contains multiple host detail information |
|
Base view for Satellite pages |
|
Install packages modal |
|
PF4 confirmation dialog with two buttons and close 'x' button in the |
- class airgun.views.host_new.Card(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- title¶
- class airgun.views.host_new.DropdownWithDescripton(parent, text=None, locator=None, logger=None)¶
Dropdown with description below items
- ITEM_LOCATOR = .//*[contains(@class, 'pf-c-dropdown__menu-item') and contains(text(), {})]¶
- class airgun.views.host_new.HostDetailsCard(parent, logger=None, **kwargs)¶
Details card body contains multiple host detail information
- LABELS = //div[@class="pf-c-description-list__group"]//dt//span¶
- VALUES = //div[@class="pf-c-description-list__group"]//dd//descendant::*/text()/..¶
- read()¶
Return a dictionary where keys are property names and values are property values. Values are either in span elements or in div elements
- class airgun.views.host_new.NewHostDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class overview(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- class details(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- ROOT = .//article[.//div[text()="Details"]]¶
- details¶
- class host_status(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- ROOT = .//article[.//span[text()="Host status"]]¶
- status¶
- status_success¶
- status_warning¶
- status_error¶
- status_disabled¶
- class recent_audits(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- ROOT = .//article[.//div[text()="Recent audits"]]¶
- all_audits¶
- table¶
- class installable_errata(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- ROOT = .//article[.//div[text()="Installable errata"]]¶
- security_advisory¶
- bug_fixes¶
- enhancements¶
- class total_risks(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- ROOT = .//article[.//div[text()="Total risks"]]¶
- low¶
- moderate¶
- important¶
- critical¶
- class recent_jobs(parent, logger=None, **kwargs)¶
Each card in host view has it’s own title with same locator
- class finished(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- table¶
- class running(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- table¶
- class scheduled(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- table¶
- ROOT = .//article[.//div[text()="Recent jobs"]]¶
- actions¶
- ROOT = .//div[contains(@class, "host-details-tab-item")]¶
- class content(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- class packages(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- ROOT = .//div[@id="packages-tab"]¶
- select_all¶
- searchbar¶
- status_filter¶
- upgrade¶
- dropdown¶
- table¶
- pagination¶
- class errata(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- ROOT = .//div[@id="errata-tab"]¶
- select_all¶
- searchbar¶
- type_filter¶
- severity_filter¶
- apply¶
- dropdown¶
- table¶
- pagination¶
- class module_streams(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- TAB_NAME = Module streams¶
- ROOT = .//div[@id="modulestreams-tab"]¶
- searchbar¶
- status_filter¶
- installation_status_filter¶
- dropdown¶
- table¶
- pagination¶
- class repository_sets(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- TAB_NAME = Repository sets¶
- ROOT = .//div[@id="repo-sets-tab"]¶
- select_all¶
- searchbar¶
- status_filter¶
- dropdown¶
- table¶
- pagination¶
- ROOT = .//div¶
- class traces(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- enable_traces¶
- class ansible(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- class insights(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- breadcrumb¶
- edit¶
- dropdown¶
- schedule_job¶
airgun.views.hostcollection
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Handle an HTML non normalized Radio group according to the current |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Common view for task details screen. Can be found for most of tasks for |
|
Base view for Satellite pages |
- class airgun.views.hostcollection.HostCollectionsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.hostcollection.HostCollectionCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- unlimited_hosts¶
- max_hosts¶
- description¶
- submit¶
- class airgun.views.hostcollection.HostCollectionEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- description¶
- content_hosts¶
- content_host_limit¶
- manage_packages¶
- install_errata¶
- manage_module_streams¶
- change_assigned_content¶
- class hosts(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Hosts¶
- resources¶
- breadcrumb¶
- actions¶
- dialog¶
- class airgun.views.hostcollection.HostCollectionPackageContentRadioGroup(parent, locator, logger=None)¶
Handle an HTML non normalized Radio group according to the current architecture.
- Note: This is a temporary solution, a fix will be issued upstream,
when the fix will be available downstream we should replace the implementation with RadioGroup.
Example html representation:
<div> <input type="radio" id="package" ...> <label>Package</label> <input type="radio" id="package_group" ...> <label>Package Group</label>
- buttons_name_id_map¶
- get_input_by_name(name)¶
- property selected¶
Return the name of the button that is currently selected.
- select(name)¶
Select specific radio button in the group
- class airgun.views.hostcollection.HostCollectionManagePackagesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class dialog(parent, logger=None, **kwargs)¶
Usual confirmation dialog with two buttons and close ‘x’ button in the right corner. Has nothing in common with javascript alert, confirm or prompt pop-ups.
Example html representation:
<div class="modal-content"> <button type="button" class="close" ... ng-click="cancel()"> <div class="modal-footer ng-scope"> <button class="btn btn-danger" ng-click="ok()"> <button class="btn ..." ng-click="cancel()"...>
Locator example:
//div[@class='modal-content']
- ROOT = .//div[@class='inline-confirmation']¶
- confirm_dialog¶
- cancel_dialog¶
- title¶
- update_all¶
- content_type¶
- packages¶
- install¶
- update¶
- remove¶
- done¶
- property is_displayed¶
The view is displayed when it’s title exists
- get_action_button(name)¶
Return an action button by it’s name
- apply_action(name, action_via='via Katello Agent')¶
Apply an action by name using action via if indicated
- class airgun.views.hostcollection.HostCollectionInstallErrataView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- search¶
- refresh¶
- search_url¶
- install¶
- table¶
- dialog¶
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.hostcollection.HostCollectionManageModuleStreamsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- table¶
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.hostcollection.HostCollectionChangeAssignedContentView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class dialog(parent, logger=None, **kwargs)¶
Usual confirmation dialog with two buttons and close ‘x’ button in the right corner. Has nothing in common with javascript alert, confirm or prompt pop-ups.
Example html representation:
<div class="modal-content"> <button type="button" class="close" ... ng-click="cancel()"> <div class="modal-footer ng-scope"> <button class="btn btn-danger" ng-click="ok()"> <button class="btn ..." ng-click="cancel()"...>
Locator example:
//div[@class='modal-content']
- ROOT = .//div[@ng-show='showConfirm']¶
- confirm_dialog¶
- cancel_dialog¶
- title¶
- lce¶
- content_view¶
- assign¶
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.hostcollection.HostCollectionActionTaskDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
- title¶
- breadcrumb¶
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.hostcollection.HostCollectionActionRemoteExecutionJobCreate(parent, logger=None, **kwargs)¶
Base view for Satellite pages
airgun.views.hostgroup
¶List of actions, expandable via button with caret. Usually comes with |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.hostgroup.ActivationKeyDropDown(parent, locator, logger=None)¶
List of actions, expandable via button with caret. Usually comes with button attached on left side, representing either most common action or hint like ‘Select Action’.
Example html representation:
<div class="btn-group dropdown" is-open="status.isOpen"> <button type="button" class="btn btn-default" ...> <span><span >Select Action</span></span> </button> <button type="button" class="btn btn-default" ...> <span class="caret"></span> </button> <ul class="dropdown-menu dropdown-menu-right ng-scope" role="menu"> <li role="menuitem"><a><span><span>Action1</span></span></a></li> <li role="menuitem"><a><span><span>Action2</span></span></a></li> </ul> </div>
Locator example:
//div[contains(@class, 'dropdown')] //div[contains(@class, 'btn-group')]
- dropdown¶
- property items¶
Returns a list of all dropdown items as strings.
- class airgun.views.hostgroup.HostGroupsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- new_on_blank_page¶
- table¶
- class airgun.views.hostgroup.HostGroupCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class host_group(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Host Group¶
- parent_name¶
- name¶
- description¶
- lce¶
- content_view¶
- content_source¶
- puppet_environment¶
- deploy¶
- puppet_master¶
- puppet_ca¶
- openscap_capsule¶
- class ansible_roles(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Ansible Roles¶
- resources¶
- class puppet_enc(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Puppet ENC¶
- config_groups¶
- classes¶
- class network(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- domain¶
- ipv4_subnet¶
- ipv6_subnet¶
- realm¶
- class operating_system(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class TypeMedium(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- media¶
- class TypeSynced(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- synced_content¶
- TAB_NAME = Operating System¶
- architecture¶
- operating_system¶
- media_type¶
- media_content¶
- ptable¶
- root_password¶
- class parameters(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class activation_keys(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Activation Keys¶
- activation_keys¶
- breadcrumb¶
- submit¶
airgun.views.http_proxy
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.http_proxy.HTTPProxyView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.http_proxy.HTTPProxyCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class http_proxy(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = HTTP Proxy¶
- name¶
- url¶
- username¶
- disable_pass¶
- password¶
- test_url¶
- test_connection¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
- cancel¶
airgun.views.job_invocation
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.job_invocation.JobInvocationsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.job_invocation.JobInvocationCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class RunSSHCommandForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- command¶
- class RestartHostForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- action¶
- class RunPuppetForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- puppet_options¶
- class RunModuleForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- action¶
- module_spec¶
- puppet_options¶
- class advanced_options(parent, logger=None)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class DescriptionTemplateForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- description_template¶
- expander¶
- effective_user¶
- description¶
- use_default¶
- description_content¶
- timeout¶
- password¶
- passphrase¶
- sudo_password¶
- concurrency_level¶
- time_span¶
- execution_order¶
- class ExecuteNowForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class FutureExecutionForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- start_at¶
- start_before¶
- class RecurringExecutionForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class CronlineForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- cron_line¶
- class RepeatMonthlyForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- at_days¶
- at_hours¶
- at_minutes¶
- class RepeatWeeklyForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- on_mon¶
- on_tue¶
- on_wed¶
- on_thu¶
- on_fri¶
- on_sat¶
- on_sun¶
- at_hours¶
- at_minutes¶
- class RepeatDailyForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- at_hours¶
- at_minutes¶
- class RepeatHourlyForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- at_minutes¶
- class NoEndsDateForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class EndsDateEnabledForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- at_year¶
- at_month¶
- at_day¶
- at_hours¶
- at_minutes¶
- repeats¶
- repeats_content¶
- repeat_n_times¶
- ends¶
- ends_date_content¶
- breadcrumb¶
- job_category¶
- job_template¶
- bookmark¶
- search_query¶
- template_content¶
- query_type¶
- schedule¶
- schedule_content¶
- submit¶
- class airgun.views.job_invocation.JobInvocationStatusView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class overview(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- job_status¶
- job_status_progress¶
- execution_order¶
- hosts_table¶
- total_hosts¶
- breadcrumb¶
- rerun¶
- rerun_failed¶
- job_task¶
- cancel_job¶
- abort_job¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_for_result(timeout=600, delay=1)¶
Wait for invocation job to finish
airgun.views.job_template
¶Base view for Satellite pages |
|
Job Template Foreign Input Set Item widget |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.job_template.JobTemplatesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- import_template¶
- new¶
- table¶
- class airgun.views.job_template.JobTemplateForeignInputSetItem(parent, locator, logger=None)¶
Job Template Foreign Input Set Item widget
- remove_button¶
- target_template¶
- include_all¶
- include¶
- exclude¶
- class airgun.views.job_template.JobTemplateCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class template(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- default¶
- template_editor¶
- description¶
- audit¶
- class inputs(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ITEMS = .//div[contains(@class, 'template_inputs')]/following-sibling::div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- class job(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class foreign_input_sets(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //div[div[contains(@class, 'foreign_input_sets')]]¶
- ITEMS = .//div[contains(@class, 'foreign_input_sets')]/following-sibling::div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- job_category¶
- description_format¶
- provider_type¶
- timeout¶
- value¶
- current_user¶
- overridable¶
- class type(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- snippet¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.ldapauthentication
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.ldapauthentication.LDAPAuthenticationsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- internal¶
- external¶
- ldap¶
- new¶
- table¶
- class airgun.views.ldapauthentication.LDAPAuthenticationCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class ldap_server(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = LDAP server¶
- name¶
- host¶
- text_connection¶
- ldaps¶
- port¶
- server_type¶
- class account(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- account_name¶
- password¶
- base_dn¶
- groups_base_dn¶
- use_netgroups¶
- ldap_filter¶
- onthefly_register¶
- usergroup_sync¶
- class attribute_mappings(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Attribute mappings¶
- login¶
- first_name¶
- last_name¶
- mail¶
- photo¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.lifecycleenvironment
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.lifecycleenvironment.LCEView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class lce(parent, logger=None, **kwargs)¶
Parametrized view for the lifecycle environement, takes an LCE name on instantiation
- ROOT¶
- PARAMETERS = ['lce_name']¶
- LAST_ENV = //div[@ng-repeat='path in paths']//table//th[last()]¶
- current_env¶
- envs_table¶
- new_child¶
- classmethod all(browser)¶
Helper method which returns list of tuples with all available LCE names (last available environment is used as a name). It’s required for
read()
to work properly.
- read()¶
Returns content views and count hosts count per each available lifecycle environment We get dictionary in next format:
{ 'LCE_1': {'Content Views': 0, 'Content Hosts': 1}, 'LCE_2': {'Content Views': 1, 'Content Hosts': 2}, }
- title¶
- new_path¶
- edit_parent_env¶
- parent_env_cvs_count¶
- parent_env_products_count¶
- parent_env_products_errata¶
- class airgun.views.lifecycleenvironment.LCECreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- label¶
- description¶
- submit¶
- class airgun.views.lifecycleenvironment.LCEEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- label¶
- description¶
- unauthenticated_pull¶
- registry_name_pattern¶
- class content_views(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Content Views¶
- resources¶
- class packages(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- cv_filter¶
- repo_filter¶
- searchbox¶
- table¶
- search(query, cv=None, repo=None)¶
Apply available filters before proceeding with searching.
- class module_streams(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Module Streams¶
- cv_filter¶
- repo_filter¶
- searchbox¶
- table¶
- search(query, cv=None, repo=None)¶
Apply available filters before proceeding with searching.
- breadcrumb¶
- remove¶
airgun.views.location
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.location.LocationsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.location.LocationCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- parent_location¶
- name¶
- description¶
- submit¶
- class airgun.views.location.LocationsEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class primary(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- parent_location¶
- name¶
- description¶
- class users(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_users¶
- resources¶
- class capsules(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_capsules¶
- resources¶
- class subnets(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_subnets¶
- resources¶
- class compute_resources(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Compute Resources¶
- all_resources¶
- resources¶
- class media(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_medias¶
- resources¶
- class provisioning_templates(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Provisioning Templates¶
- all_templates¶
- resources¶
- class partition_tables(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Partition Tables¶
- all_ptables¶
- resources¶
- class domains(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_domains¶
- resources¶
- class realms(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_realms¶
- resources¶
- class environments(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_environments¶
- resources¶
- class host_groups(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Host Groups¶
- all_hostgroups¶
- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- resources¶
- class parameters(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- resources¶
- breadcrumb¶
- submit¶
- cancel¶
airgun.views.login
¶View is a kind of abstract widget that can hold another widgets. Remembers the order, |
- class airgun.views.login.LoginView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- username¶
- password¶
- login_text¶
- logo¶
- submit¶
airgun.views.media
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.media.MediumView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.media.MediaCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class medium(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- path¶
- os_family¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.modulestream
¶Searchbar for table filtering |
|
Main Module_Streams view |
|
Base view for Satellite pages |
- class airgun.views.modulestream.CustomSearch(parent, logger=None, **kwargs)¶
Searchbar for table filtering
- search_field¶
- search_button¶
- class airgun.views.modulestream.ModuleStreamView(parent, logger=None, **kwargs)¶
Main Module_Streams view
- title¶
- table¶
- search_box¶
- search(query)¶
Perform search using search box on the page and return table contents.
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.modulestream.ModuleStreamsDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- details_table¶
- class repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- table¶
- breadcrumb¶
- title¶
- details_tab¶
- property is_displayed¶
Assume the view is displayed when its breadcrumb is visible
airgun.views.organization
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.organization.OrganizationsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.organization.OrganizationCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- label¶
- description¶
- submit¶
- class airgun.views.organization.OrganizationCreateSelectHostsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- assign_all¶
- assign_manually¶
- proceed¶
- class airgun.views.organization.OrganizationEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class primary(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- name¶
- label¶
- default_system_sla¶
- description¶
- class users(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_users¶
- resources¶
- class capsules(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_capsules¶
- resources¶
- class subnets(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_subnets¶
- resources¶
- class compute_resources(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Compute Resources¶
- all_resources¶
- resources¶
- class media(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_medias¶
- resources¶
- class provisioning_templates(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Provisioning Templates¶
- all_templates¶
- resources¶
- class partition_tables(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Partition Tables¶
- all_ptables¶
- resources¶
- class domains(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_domains¶
- resources¶
- class realms(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_realms¶
- resources¶
- class environments(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- all_environments¶
- resources¶
- class host_groups(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- TAB_NAME = Host Groups¶
- all_hostgroups¶
- resources¶
- class locations(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- resources¶
- class parameters(parent, logger=None, **kwargs)¶
Represent vertical tabs that usually used in location and organization entities
Usage:
@View.nested class mytab(SatVerticalTab): TAB_NAME = 'My Tab'
- resources¶
- breadcrumb¶
- submit¶
- cancel¶
airgun.views.os
¶List of templates for specific operating system. It can have dynamic |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.os.TemplatesList(parent, logger=None, **kwargs)¶
List of templates for specific operating system. It can have dynamic number of templates per different OS types
Example html representation:
<label ... for="provisioning_template_id">PXELinux template *</label> <div...> <div class="..." id="s2id_operatingsystem_os_default_templates..."> <a> <span>Kickstart default PXELinux</span> ... <label ... for="provisioning_template_id">PXEGrub template *</label> <div...> <div class="..." id="s2id_operatingsystem_os_default_templates..."> <a> <span>Kickstart default PXEGrub2</span>
- SELECT = //label[@for='provisioning_template_id'][contains(.,'{}')]/following-sibling::div/div[contains(@i...¶
- TITLES = //label[@for='provisioning_template_id']¶
- property selects¶
Get dictionary of currently assigned templates for OS
- read()¶
Return dictionary of strings representing title-value pairs for all templates assigned to specific operating system
- fill(value)¶
Assign provided value for specific operating system template
- Parameters
value – dictionary with title-value pairs of templates to be changed for OS (e.g. {‘Provisioning template’: ‘test_template’})
- class airgun.views.os.OperatingSystemsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.os.OperatingSystemEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class operating_system(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Operating System¶
- name¶
- major¶
- minor¶
- description¶
- family¶
- password_hash¶
- architectures¶
- class partition_table(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Partition Table¶
- resources¶
- class installation_media(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Installation Media¶
- resources¶
- class templates(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class parameters(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Parameters¶
- os_params¶
- breadcrumb¶
- submit¶
airgun.views.oscapcontent
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.oscapcontent.SCAPContentsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.oscapcontent.SCAPContentCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class file_upload(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = File Upload¶
- title¶
- scap_file¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- create_form¶
- submit¶
- cancel¶
- class airgun.views.oscapcontent.SCAPContentEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class file_upload(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = File Upload¶
- title¶
- uploaded_scap_file¶
- scap_file¶
- scap_file_name¶
- breadcrumb¶
airgun.views.oscappolicy
¶Base view for Satellite pages |
|
Handle an HTML non normalized Radio group according to the current |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.oscappolicy.SCAPPoliciesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.oscappolicy.ScapPolicyRadioGroup(parent, locator, logger=None)¶
Handle an HTML non normalized Radio group according to the current architecture.
- Note: This is a temporary solution, a fix will be issued upstream,
when the fix will be available downstream we should replace the implementation with RadioGroup.
Example html representation:
<div> <input type="radio" value="ansible" name="policy[deploy_by]" id="policy_deploy_by_ansible">
- property button_names¶
Return all radio group labels
- _get_parent_label(name)¶
Get radio group label for specific button
- class airgun.views.oscappolicy.SCAPPolicyCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class deployment_options(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- TAB_NAME = Deployment Options¶
- next_step¶
- deploy_by¶
- class policy_attributes(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- TAB_NAME = Policy Attributes¶
- next_step¶
- name¶
- description¶
- class scap_content(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- TAB_NAME = SCAP Content¶
- next_step¶
- scap_content_resource¶
- xccdf_profile¶
- tailoring_file¶
- xccdf_profile_tailoring_file¶
- class schedule(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class WeeklyPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- weekday¶
- class MonthlyPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- day_of_month¶
- class CustomPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- cron_line¶
- next_step¶
- period¶
- period_selection¶
- class organizations(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- next_step¶
- resources¶
- class host_group(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- TAB_NAME = Host Groups¶
- submit¶
- resources¶
- breadcrumb¶
- fill(values)¶
overrides fill method, to be able to click next button during the creation process even, if no location or organization was selected, by adding the SCAP policy to Default Location or Organization.
- class airgun.views.oscappolicy.SCAPPolicyEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class deployment_options(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- next_step¶
- deploy_by¶
- class general(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- description¶
- class scap_content(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = SCAP Content¶
- scap_content¶
- xccdf_profile¶
- tailoring_file¶
- xccdf_profile_tailoring_file¶
- class schedule(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class WeeklyPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- weekday¶
- class MonthlyPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- day_of_month¶
- class CustomPeriodForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- cron_line¶
- period¶
- period_selection¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class host_group(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Host Groups¶
- resources¶
- submit¶
- cancel¶
- breadcrumb¶
- class airgun.views.oscappolicy.SCAPPolicyDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class HostsBreakdownStatus(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//li[@data-name='Status table']¶
- status_list¶
- total_count¶
- class HostBreakdownChart(parent, logger=None, **kwargs)¶
Refer to information from the middle of the chart in Oscap Policy Details View
- hosts_breakdown¶
- title¶
airgun.views.oscaptailoringfile
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.oscaptailoringfile.SCAPTailoringFilesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.oscaptailoringfile.SCAPTailoringFileCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class file_upload(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = File Upload¶
- name¶
- scap_file¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
- cancel¶
- class airgun.views.oscaptailoringfile.SCAPTailoringFileEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class file_upload(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = File Upload¶
- name¶
- uploaded_scap_file¶
- scap_file¶
- scap_file_name¶
airgun.views.package
¶Main Packages view |
|
Base view for Satellite pages |
- class airgun.views.package.PackagesView(parent, logger=None, **kwargs)¶
Main Packages view
- title¶
- table¶
- repository¶
- applicable¶
- upgradable¶
- search_box¶
- search(query, repository='All Repositories', applicable=False, upgradable=False)¶
Perform search using search box on the page and return table contents.
- Parameters
- Returns
list of dicts representing table rows
- Return type
- property is_displayed¶
The view is displayed when it’s title exists
- class airgun.views.package.PackageDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- installed_on¶
- applicable_to¶
- upgradable_for¶
- description¶
- summary¶
- group¶
- license¶
- url¶
- size¶
- filename¶
- checksum¶
- checksum_type¶
- source_rpm¶
- build_host¶
- build_time¶
- class files(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- package_files¶
- breadcrumb¶
airgun.views.partitiontable
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.partitiontable.PartitionTablesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.partitiontable.PartitionTableEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class template(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class SnippetOption(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class OSFamilyOption(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- os_family¶
- name¶
- default¶
- snippet¶
- os_family_selection¶
- template_editor¶
- audit_comment¶
- class inputs(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ITEMS = .//div[contains(@class, 'template_inputs')]/following-sibling::div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.product
¶View which represent Discovered Repository section in Repository |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Common view for task details screen. Can be found for most of tasks for |
|
Base view for Satellite pages |
|
Represents Http Proxy Management page for Products. |
|
Represents Advanced Sync page for Products. |
|
Represents Verify Content Checksum Alert page for Products. |
- class airgun.views.product.CreateDiscoveredReposView(parent, logger=None, **kwargs)¶
View which represent Discovered Repository section in Repository Discovery procedure.
- searchbox¶
- table¶
- create_action¶
- fill(values)¶
Select necessary repo/repos to be added to new or existing product
- class airgun.views.product.ProductsTableView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- edit¶
- repo_discovery¶
- actions¶
- table¶
- dialog¶
- class airgun.views.product.ProductCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- label¶
- gpg_key¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- sync_plan¶
- create_sync_plan¶
- description¶
- submit¶
- class airgun.views.product.ProductEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- label¶
- gpg_key¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- description¶
- repos_count¶
- tasks_count¶
- sync_plan¶
- sync_state¶
- class repositories(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- table¶
- breadcrumb¶
- actions¶
- dialog¶
- class airgun.views.product.ProductRepoDiscoveryView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class discovered_repos(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- discover_action¶
- cancel_discovery¶
- repos¶
- before_fill(values=None)¶
After we filled ‘repository type’ and ‘url’ fields, we need to push ‘Discover’ button to get table populated with values. Using before_fill to not define any method explicitly which need to be called and break view.fill() procedure flow
- class create_repo(parent, logger=None, **kwargs)¶
Represent Create Repository page. Depends whether we like create new product or use existing one we use different sets of fields that need to be filled
- class ExistingProductForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- product_name¶
- class NewProductForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- product_name¶
- label¶
- gpg_key¶
- product_type¶
- product_content¶
- serve_via_http¶
- verify_ssl¶
- run_procedure¶
- create_repos_table¶
- wait_repo_created()¶
- breadcrumb¶
- repo_type¶
- url¶
- registry_type¶
- username¶
- password¶
- registry_search¶
- class airgun.views.product.ProductTaskDetailsView(parent, logger=None, **kwargs)¶
Common view for task details screen. Can be found for most of tasks for various entities like Products, Repositories, Errata etc.
- class airgun.views.product.ProductSyncPlanView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- submit¶
- class airgun.views.product.ProductManageHttpProxy(parent, logger=None, **kwargs)¶
Represents Http Proxy Management page for Products.
- class ExistingProductForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- title¶
- http_proxy_policy¶
- proxy_policy¶
- update¶
- class airgun.views.product.ProductAdvancedSync(parent, logger=None, **kwargs)¶
Represents Advanced Sync page for Products.
- title¶
- optimized¶
- complete¶
- task¶
- sync¶
airgun.views.provisioning_template
¶Provisioning Template Foreign Input Set Item widget |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.provisioning_template.TemplateHostEnvironmentAssociation(parent, locator, logger=None)¶
Provisioning Template Foreign Input Set Item widget
- remove_button¶
- host_group¶
- environment¶
- class airgun.views.provisioning_template.ProvisioningTemplatesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- build_pxe_default¶
- table¶
- class airgun.views.provisioning_template.ProvisioningTemplateDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class template(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- default¶
- template_editor¶
- audit¶
- class inputs(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ITEMS = .//div[contains(@class, 'template_inputs')]/following-sibling::div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- class type(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- snippet¶
- template_type¶
- class association(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- class hg_environment_combination(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = //div[@id='association']¶
- ITEMS = .//fieldset[@id='template_combination']/div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- applicable_os¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
- class airgun.views.provisioning_template.ProvisioningTemplateCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
airgun.views.puppet_class
¶Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.puppet_class.PuppetClassesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- import_environments¶
- table¶
- class airgun.views.puppet_class.PuppetClassDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class puppet_class(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Puppet Class¶
- name¶
- puppet_environment¶
- host_group¶
- class smart_class_parameter(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Smart Class Parameter¶
- filter¶
- environment_filter¶
- parameter_list¶
- parameter¶
- breadcrumb¶
- submit¶
airgun.views.puppet_environment
¶Basic view after clicking Configure -> Environments. |
|
View after clicking Configure -> Environments -> import environments with |
|
Details view of the page with boxes that have to be filled in to |
- class airgun.views.puppet_environment.PuppetEnvironmentTableView(parent, logger=None, **kwargs)¶
Basic view after clicking Configure -> Environments. In basic view, there can be seen title Puppet Environments, button Create Puppet Environment (new), button import environments and table with existing Puppet Environments
- title¶
- new¶
- import_environments¶
- table¶
- class airgun.views.puppet_environment.PuppetEnvironmentImportView(parent, logger=None, **kwargs)¶
View after clicking Configure -> Environments -> import environments with toggles New, Updated, Obsolete. Button update and cancel
- breadcrumb¶
- new¶
- updated¶
- obsolete¶
- update¶
- cancel¶
- table¶
- class airgun.views.puppet_environment.PuppetEnvironmentCreateView(parent, logger=None, **kwargs)¶
Details view of the page with boxes that have to be filled in to create a new puppet environment
- class environment(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.redhat_repository
¶The widget representation of Available repository item of an Available repository set. |
|
The widget representation of Available repository set item. |
|
The widget representation of Enabled repository item. |
|
The category search selector, eg: Available, Enabled or Both. |
|
Repository content types dropdown for repository search. |
|
The base class view that represent the Available or Enabled Repository |
|
The main Red Hat repositories view. |
|
Wait for any spinner to disappear from widget |
- airgun.views.redhat_repository._wait_for_spinner(widget)¶
Wait for any spinner to disappear from widget
- class airgun.views.redhat_repository.AvailableRepositoryItem(parent, locator, logger=None)¶
The widget representation of Available repository item of an Available repository set.
- ENABLE_BUTTON = .//button¶
- TEXT = .//span¶
- property text¶
Return the text representation of this repository eg: architecture + OS version if available.
- read()¶
Read this widget by return it’s text representation.
- enable()¶
Enable this repository.
- class airgun.views.redhat_repository.AvailableRepositorySetWidget(parent, locator, logger=None)¶
The widget representation of Available repository set item.
- ITEM¶
- EXPAND_BUTTON = .//div[contains(@class, 'expand')]¶
- NAME = .//div[contains(@class, 'item-heading')]¶
- LABEL = .//div[contains(@class, 'item-text')]¶
- ITEMS = .//div[contains(@class, 'list-item-with-divider')]¶
- property expand_button¶
Return the expand button element.
- property expanded¶
Check whether this repository set is expanded or not.
- expand()¶
Expand the repository set item section.
- property name¶
Return the name displayed for this repository item
- property label¶
Return the label displayed for this repository item
- property items¶
Return all the items (available repositories) of this repository set.
- read_items()¶
Read all the items (repositories) of this repository set
- read()¶
Return the name and label of this repository.
- class airgun.views.redhat_repository.EnabledRepositoryWidget(parent, locator, logger=None)¶
The widget representation of Enabled repository item.
- ITEM¶
- DISABLE_BUTTON = .//button¶
- disable()¶
Disable this repository.
- class airgun.views.redhat_repository.RepositorySearchCategory(parent, locator, logger=None)¶
The category search selector, eg: Available, Enabled or Both.
- button¶
- fill(item)¶
Selects Search Repository Category.
- class airgun.views.redhat_repository.RepositorySearchTypes(parent, locator, logger=None)¶
Repository content types dropdown for repository search.
- button¶
- close()¶
Closes the dropdown list.
- property selected_items¶
Returns a list of all dropdown selected items as strings.
- select(items)¶
Selects Search Repository content types.
- Parameters
items – The Repository content types required
- fill(items)¶
Selects Search Repository content types
- class airgun.views.redhat_repository.RepositoryCategoryView(parent, logger=None, **kwargs)¶
The base class view that represent the Available or Enabled Repository
Example html representation:
<div class="enabled-repositories-container"> <h2>Enabled Repositories</h2> <div class="list-group list-view-pf list-view-pf-view"> <div class="sticky-pagination sticky-pagination-grey"> <div class="list-group-item list-view-pf-stacked"> ... </div> </div>
- ITEMS = ./div/div[contains(@class, 'list-group-item')]¶
- ITEM_WIDGET¶
- items(name=None, label=None)¶
- class airgun.views.redhat_repository.RedHatRepositoriesView(parent, logger=None, **kwargs)¶
The main Red Hat repositories view.
- class available(parent, logger=None, **kwargs)¶
The base class view that represent the Available or Enabled Repository
Example html representation:
<div class="enabled-repositories-container"> <h2>Enabled Repositories</h2> <div class="list-group list-view-pf list-view-pf-view"> <div class="sticky-pagination sticky-pagination-grey"> <div class="list-group-item list-view-pf-stacked"> ... </div> </div>
- ROOT = //div[contains(@class, 'available-repositories-container')]¶
- ITEM_WIDGET¶
- class enabled(parent, logger=None, **kwargs)¶
The base class view that represent the Available or Enabled Repository
Example html representation:
<div class="enabled-repositories-container"> <h2>Enabled Repositories</h2> <div class="list-group list-view-pf list-view-pf-view"> <div class="sticky-pagination sticky-pagination-grey"> <div class="list-group-item list-view-pf-stacked"> ... </div> </div>
- ROOT = //div[contains(@class, 'enabled-repositories-container')]¶
- ITEM_WIDGET¶
- title¶
- search_category¶
- search_box¶
- search_button¶
- search_types¶
- search_clear¶
- recommended_repos¶
- search(value, category='Available', types=None)¶
Search repositories.
airgun.views.report_template
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.report_template.ReportTemplatesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.report_template.ReportTemplateDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class template(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- default¶
- template_editor¶
- audit¶
- class inputs(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ITEMS = .//div[contains(@class, 'template_inputs')]/following-sibling::div¶
- ITEM_WIDGET_CLASS¶
- add_item_button¶
- class type(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- snippet¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
- class airgun.views.report_template.ReportTemplateCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
airgun.views.repository
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Usually represented by static field and edit button that transform |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.repository.RepositoriesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- new¶
- sync¶
- delete¶
- dialog¶
- table¶
- class airgun.views.repository.RepositoryCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class DockerRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class SpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- upstream_url¶
- upstream_repo_name¶
- verify_ssl¶
- upstream_username¶
- upstream_password¶
- auth_token¶
- mirroring_policy¶
- include_tags¶
- exclude_tags¶
- http_proxy_policy¶
- proxy_policy¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- class FileRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class SpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- upstream_url¶
- verify_ssl¶
- upstream_username¶
- upstream_password¶
- auth_token¶
- mirroring_policy¶
- publish_via_http¶
- http_proxy_policy¶
- proxy_policy¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- class OstreeRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class SpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- upstream_url¶
- upstream_sync_policy¶
- sync_policy_custom¶
- verify_ssl¶
- upstream_username¶
- upstream_password¶
- http_proxy_policy¶
- proxy_policy¶
- class YumRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class SpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- arch_restrict¶
- os_restrict¶
- upstream_url¶
- ignore_srpms¶
- verify_ssl¶
- upstream_username¶
- upstream_password¶
- auth_token¶
- download_policy¶
- mirroring_policy¶
- retain_package_versions¶
- checksum_type¶
- publish_via_http¶
- unprotected¶
- gpg_key¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- http_proxy_policy¶
- proxy_policy¶
- class AnsibleCollectionRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class SpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- http_proxy¶
- arch_restrict¶
- upstream_url¶
- requirements¶
- requirements_btn¶
- auth_url¶
- auth_token¶
- verify_ssl¶
- upstream_username¶
- upstream_password¶
- mirroring_policy¶
- http_proxy_policy¶
- proxy_policy¶
- ssl_ca_cert¶
- ssl_client_cert¶
- ssl_client_key¶
- breadcrumb¶
- name¶
- label¶
- repo_type¶
- submit¶
- repo_content¶
- class airgun.views.repository.AuthorizationEntry(parent, locator=None, name=None, logger=None)¶
Usually represented by static field and edit button that transform field into control to change field content to specific value. That control can have different appearances like textarea, input, select and etc. That widget is specific for entity edit pages.
Example html representation:
<dl> <dt> <dd> <form> ... <span class="fr" ng-hide="editMode || readonly"...> <span class="editable-value ng-binding">
Locator example:
//dt[contains(., 'test')]/following-sibling::dd/span //dt[contains(., 'test')]/following-sibling::dd/input
- class edit_field(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- username¶
- password¶
- clear_button¶
- fill(value)¶
Handle the clear functionality, if bool(value) is False clear the credentials.
- class airgun.views.repository.RepositoryEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class DockerRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class NoSpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- registry_url¶
- upstream_repo_name¶
- repo_name¶
- verify_ssl¶
- upstream_authorization¶
- http_proxy_policy¶
- proxy_policy¶
- mirroring_policy¶
- include_tags¶
- exclude_tags¶
- class YumRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class NoSpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- arch_restrict¶
- os_restrict¶
- verify_ssl¶
- upstream_url¶
- upstream_authorization¶
- metadata_type¶
- retain_package_versions¶
- http_proxy_policy¶
- ignore_srpms¶
- unprotected¶
- gpg_key¶
- download_policy¶
- mirroring_policy¶
- upload_content¶
- upload¶
- proxy_policy¶
- class AnsibleCollectionRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class NoSpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- arch_restrict¶
- upstream_url¶
- requirements¶
- verify_ssl¶
- upstream_authorization¶
- upload_content¶
- upload¶
- http_proxy_policy¶
- proxy_policy¶
- mirroring_policy¶
- class OstreeRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class NoSpecificHttpProxy(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- upstream_url¶
- verify_ssl¶
- upstream_authorization¶
- published_at¶
- http_proxy_policy¶
- proxy_policy¶
- class FileRepository(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- upstream_url¶
- verify_ssl¶
- upstream_authorization¶
- unprotected¶
- mirroring_policy¶
- breadcrumb¶
- actions¶
- dialog¶
- name¶
- label¶
- repo_type¶
- repo_content¶
- content_counts¶
airgun.views.rhai
¶View displayed when no Organization is selected or when the current organization has no |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Insights inventory host rule widget |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
Base view for Satellite pages |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
- class airgun.views.rhai.InsightsOrganizationErrorView(parent, logger=None, **kwargs)¶
View displayed when no Organization is selected or when the current organization has no manifest
- title¶
- message¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- class airgun.views.rhai.AllRulesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- search¶
- class airgun.views.rhai.InventoryAllHosts(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- search¶
- actions¶
- systems_count¶
- table¶
- class airgun.views.rhai.InventoryHostRule(parent, locator, logger=None)¶
Insights inventory host rule widget
- remove_button¶
- title¶
- class airgun.views.rhai.InventoryHostDetails(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class rules(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ROOT = .//div[@class='rule-summaries']¶
- ITEMS = .//div[contains(@class, 'rule-summary')]¶
- ITEM_WIDGET_CLASS¶
- hostname¶
- close¶
- class airgun.views.rhai.OverviewDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- inventory¶
- security_issues¶
- stability_issues¶
- inventory_link¶
- actions_link¶
- class airgun.views.rhai.ActionsDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- export_csv¶
- stability_issues¶
- security_issues¶
- class airgun.views.rhai.ManageDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- enable_service¶
- status¶
- account_number¶
- check_connection¶
- save¶
- class airgun.views.rhai.AllPlansView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class plan(parent, logger=None, **kwargs)¶
Parametrized view for a nested plan view. Takes plan name on instantiation
- PARAMETERS = ['plan_name']¶
- ROOT¶
- title¶
- delete¶
- edit¶
- ansible_actions¶
- export_csv¶
- add_actions¶
- title¶
- create_plan¶
- class airgun.views.rhai.PlanEditView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- plan_name¶
- date¶
- start_time¶
- duration¶
- cancel¶
- save¶
- class airgun.views.rhai.AddPlanView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- name¶
- actions¶
- rules_filter¶
- cancel¶
- save¶
- class airgun.views.rhai.PlanModalWindow(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- yes¶
- cancel¶
airgun.views.rhsso_login
¶View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
- class airgun.views.rhsso_login.RhssoLoginView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- username¶
- password¶
- submit¶
- class airgun.views.rhsso_login.RhssoExternalLogoutView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- login_again¶
- logo¶
- class airgun.views.rhsso_login.RhssoTwoFactorSuccessView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- code¶
- class airgun.views.rhsso_login.RhssoTotpView(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- totp¶
- submit¶
airgun.views.role
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Clone Role view |
- class airgun.views.role.RolesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.role.RoleEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- description¶
- locations¶
- organizations¶
- submit¶
- class airgun.views.role.RoleCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class airgun.views.role.RoleCloneView(parent, logger=None, **kwargs)¶
Clone Role view
airgun.views.settings
¶Base view for Satellite pages |
- class airgun.views.settings.SettingsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class Email(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- test_email_button¶
- title¶
- table¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_for_update()¶
Wait for value to update
airgun.views.smart_class_parameter
¶Represent smart class parameter matcher attribute pair. Usually, it |
|
View is a kind of abstract widget that can hold another widgets. Remembers the order, |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.smart_class_parameter.MatcherAttribute(parent, logger=None, **kwargs)¶
Represent smart class parameter matcher attribute pair. Usually, it looks like as two fields separated by ‘=’ mark
- matcher_attribute_type¶
- matcher_attribute_value¶
- class airgun.views.smart_class_parameter.SmartClassParameterContent(parent, locator, logger=None)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class optional_input_validators(parent, logger=None)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- expander¶
- required¶
- validator_type¶
- validator_rule¶
- class prioritize_attribute_order(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- order¶
- merge_overrides¶
- merge_default¶
- avoid_duplicates¶
- class matchers(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- table¶
- add_new_matcher¶
- fill(values)¶
Add and fill all matchers provided Example:
[ { 'Attribute type': { 'matcher_attribute_type': 'os', 'matcher_attribute_value': 'x86' }, 'Value': 'newvalue' }, { 'Attribute type': { 'matcher_attribute_type': 'fqdn', 'matcher_attribute_value': 'myhost.com' }, 'Value': 'newvalue2' } ]
- ROOT¶
- key¶
- description¶
- puppet_environment¶
- puppet_class¶
- override¶
- parameter_type¶
- default_value¶
- omit¶
- class airgun.views.smart_class_parameter.SmartClassParametersView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- table¶
airgun.views.subnet
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.subnet.SubnetsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.subnet.SubnetCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class subnet(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- description¶
- protocol¶
- network_address¶
- network_prefix¶
- network_mask¶
- gateway_address¶
- primary_dns¶
- secondary_dns¶
- ipam¶
- vlanid¶
- mtu¶
- boot_mode¶
- class remote_execution(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Remote Execution¶
- capsules¶
- class domains(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class capsules(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- dhcp_capsule¶
- tftp_capsule¶
- reverse_dns_capsule¶
- discovery_capsule¶
- class parameters(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- subnet_params¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- submit¶
airgun.views.subscription
¶Searchbar for table filtering |
|
Mixin which adds |
|
Usual confirmation dialog with two buttons and close 'x' button in the |
|
Table used on Red Hat Subscriptions page. It's mostly the same as |
|
Models list of enabled products (Subscriptions -> any -> |
|
This is the list of interaction items for when opening up the selectable customizable |
|
List of all subscriptions. |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.subscription.SubscriptionSearch(parent, logger=None, **kwargs)¶
Searchbar for table filtering
- search_field¶
- search_button¶
- class airgun.views.subscription.SubscriptionSearchableViewMixin¶
Mixin which adds
airgun.widgets.Search
widget andairgun.widgets.Search.search()
to your view. It’s useful for _most_ entities list views where searchbox and results table are present.Note that class which uses this mixin should have :attr: table attribute.
- searchbox¶
- class airgun.views.subscription.DeleteSubscriptionConfirmationDialog(parent, logger=None, **kwargs)¶
Usual confirmation dialog with two buttons and close ‘x’ button in the right corner. Has nothing in common with javascript alert, confirm or prompt pop-ups.
Example html representation:
<div class="modal-content"> <button type="button" class="close" ... ng-click="cancel()"> <div class="modal-footer ng-scope"> <button class="btn btn-danger" ng-click="ok()"> <button class="btn ..." ng-click="cancel()"...>
Locator example:
//div[@class='modal-content']
- confirm_dialog¶
- cancel_dialog¶
- class airgun.views.subscription.SatSubscriptionsViewTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
Table used on Red Hat Subscriptions page. It’s mostly the same as normal table, but when search returns no results, it does display single row with message. Not to be confused with SatSubscriptionsTable, which is not used on that page
- property has_rows¶
Boolean value whether table contains some elements (rows) or is empty.
- class airgun.views.subscription.ProductContentItemsList(parent, locator, logger=None)¶
Models list of enabled products (Subscriptions -> any -> Enabled products) Main reason is that page is constructed when tab is activated. There is no HTTP request, but delay is visible nevertheless - and during that time, message about no enabled product can be seen. We have to wait for a short while before we can be sure that there really are no products.
- ITEMS = .//div[contains(@class, 'list-group-item-heading')]¶
- property has_items¶
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.views.subscription.SubscriptionColumnsFilter(parent, locator, logger=None)¶
This is the list of interaction items for when opening up the selectable customizable checkboxes
- ITEMS_LOCATOR = //div[@id='subscriptionTableTooltip']//li/span¶
- CHECKBOX_LOCATOR = //div[@id='subscriptionTableTooltip']//li/span[.='{}']/preceding::input[1]¶
- property is_open¶
- open()¶
- close()¶
- checkboxes()¶
- read()¶
Read values of checkboxes
- fill(values)¶
Check or uncheck one of the checkboxes
- class airgun.views.subscription.SubscriptionListView(parent, logger=None, **kwargs)¶
List of all subscriptions.
- table¶
- add_button¶
- manage_manifest_button¶
- export_csv_button¶
- delete_button¶
- progressbar¶
- confirm_deletion¶
- columns_filter_checkboxes¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- is_searchable()¶
Customized is_searchable
- class airgun.views.subscription.ManageManifestView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class manifest(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- red_hat_cdn_url¶
- manifest_file¶
- refresh_button¶
- delete_button¶
- class manifest_history(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Manifest History¶
- table¶
- ROOT = //div[@role="dialog" and @tabindex][div//h4[normalize-space(.)="Manage Manifest"]]¶
- close_button¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_animation_end()¶
- class airgun.views.subscription.DeleteManifestConfirmationView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- ROOT = //div[@role="dialog" and @tabindex][div//h4[normalize-space(.)="Confirm delete manifest"]]¶
- message¶
- delete_button¶
- cancel_button¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_animation_end()¶
- class airgun.views.subscription.AddSubscriptionView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- table¶
- submit_button¶
- cancel_button¶
- class airgun.views.subscription.SubscriptionDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- associations¶
- provided_products¶
- class product_content(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = Product Content¶
- product_content_list¶
- breadcrumb¶
airgun.views.sync_status
¶Table row interface to implement a sync status table row tree node |
|
This is a representation of a tree view with columns realized as a |
|
Base view for Satellite pages |
- exception airgun.views.sync_status.ParentNodeNotFoundError¶
Raise when not able to find a parent for a node item
- exception airgun.views.sync_status.ReservedToSectionOnlyError¶
Mainly raised when adding a child to a non section node
- exception airgun.views.sync_status.NodeNotFoundError¶
Raise when a node was not found
- class airgun.views.sync_status.SyncStatusTableNode(parent=None, row=None)¶
Table row interface to implement a sync status table row tree node
- CHECKBOX = ./td/input[@type='checkbox']¶
- RESULT_LINK = .//a[not(contains(@class, 'hidden'))][not(contains(@class, 'progress'))]¶
- RESULT_PROGRESS = .//a[contains(@class, 'progress')]¶
- SECTION_EXPANDER = ./td/span[contains(@class, 'expander')]¶
- __getitem__(name)¶
Return the child name
- __contains__(name)¶
Check child with name is exist in this node
- property browser¶
Return the browser
- id()¶
Return the id of this node
- is_root()¶
Return whether this node is root node
- is_child_of(node)¶
Return whether this node is a child of node
- name()¶
Return the name of this node, the node name is the text content of the first column.
- property result¶
Return the result column content
- property checkbox¶
return the checkbox element of this row if exist
- property result_link¶
Return the result link element of this row
- property progress¶
Return the progress element of this row if exist
- property expander¶
Return the expander element of this row if exist
- property expanded¶
Return True in case this row is expanded
- expand()¶
Expand this node
- is_section()¶
Return whether this row is a section, a row is a section if has expander.
- add_child(node)¶
Add a child node to this node
- read()¶
Read this node and sub nodes if exist
- select(value)¶
Select or un-select if checkbox is in the row, the checkbox exist only for repository row.
- fill(values)¶
Fill the node and sub nodes with values
- class airgun.views.sync_status.SyncStatusTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
This is a representation of a tree view with columns realized as a table. The first column is the tree expander where root item is the product. Each item and sub items located in their own table row.
Tree representation of the first column example:
- Red Hat Enterprise Linux Server
- 7Server
- x86_64
- [ ] Red Hat Enterprise Linux 7 Server RPMs x86_64
7Server
Red Hat Satellite Tools 6.2 for RHEL 7 Server RPMs x86_64
- zoo custom product
[ ] zoo custom repo
- an other custom repo
[ ] an other custom repo
- nodes()¶
Return the tree nodes representation of this table
- read()¶
Return a dict with nodes properties
- fill(values)¶
Fill the node and sub nodes, mainly select or un-select the repositories.
- get_node_from_path(node_path)¶
Return a node from it’s path representation
- Parameters
node_path – a list or tuple representing the path to a node, for example: (‘product1’, ‘repo1’)
- Returns
SyncStatusTableNode
airgun.views.sync_templates
¶Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.sync_templates.SyncTemplatesView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class ImportTemplates(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- associate¶
- branch¶
- dirname¶
- filter¶
- force_import¶
- lock¶
- negate¶
- prefix¶
- repo¶
- class ExportTemplates(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- branch¶
- dirname¶
- filter¶
- metadata_export_mode¶
- negate¶
- repo¶
- breadcrumb¶
- title¶
- sync_type¶
- submit¶
- template¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- before_fill(values)¶
Wait for Sync Type Radio Button to be displayed
airgun.views.syncplan
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.syncplan.SyncPlansView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.syncplan.SyncPlanCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- breadcrumb¶
- name¶
- description¶
- interval¶
- cron_expression¶
- date_time¶
- submit¶
- class airgun.views.syncplan.SyncPlanEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class details(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- description¶
- date_time¶
- next_sync¶
- recurring_logic¶
- enabled¶
- interval¶
- cron_expression¶
- products_count¶
- class products(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- breadcrumb¶
- actions¶
- dialog¶
airgun.views.task
¶Similar to EditableEntry and specific for the same page types, but cannot |
|
Similar to EditableEntry and specific for the same page types, but cannot |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.task.TaskReadOnlyEntry(parent, locator=None, name=None, logger=None)¶
Similar to EditableEntry and specific for the same page types, but cannot be modified.
Example html representation:
<dl> <dt> <dd> <form> ... <span class="ng-scope">No</span>
Locator example:
//dt[contains(., 'test')]/following-sibling::dd //dt[contains(., 'test')]/following-sibling::dd/span
- BASE_LOCATOR = //span[contains(., '{}') and contains(@class,...¶
- class airgun.views.task.TaskReadOnlyEntryError(parent, locator=None, name=None, logger=None)¶
Similar to EditableEntry and specific for the same page types, but cannot be modified.
Example html representation:
<dl> <dt> <dd> <form> ... <span class="ng-scope">No</span>
Locator example:
//dt[contains(., 'test')]/following-sibling::dd //dt[contains(., 'test')]/following-sibling::dd/span
- BASE_LOCATOR = //span[contains(., '{}')]//parent::div/following-sibling::pre¶
- class airgun.views.task.TasksView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class RunningChart(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//div[@id='running-tasks-card']¶
- name¶
- total¶
- class PausedChart(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//div[@id='paused-tasks-card']¶
- name¶
- total¶
- class StoppedChart(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//div[@id='stopped-tasks-card']¶
- name¶
- table¶
- class ScheduledChart(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- ROOT = .//div[@id='scheduled-tasks-card']¶
- name¶
- total¶
- title¶
- focus¶
- table¶
- pagination¶
- class airgun.views.task.TaskDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class task(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- name¶
- result¶
- triggered_by¶
- execution_type¶
- start_at¶
- started_at¶
- ended_at¶
- start_before¶
- state¶
- progressbar¶
- output¶
- errors¶
- breadcrumb¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_for_result(timeout=60, delay=1)¶
Wait for invocation job to finish
airgun.views.user
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.user.UsersView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.user.UserDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class user(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- login¶
- firstname¶
- lastname¶
- mail¶
- description¶
- language¶
- timezone¶
- auth¶
- password¶
- confirm¶
- class locations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class organizations(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- resources¶
- class roles(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- admin¶
- resources¶
- breadcrumb¶
- submit¶
airgun.views.usergroup
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.usergroup.UserGroupsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new_on_blank_page¶
- new¶
- table¶
- class airgun.views.usergroup.UserGroupDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class usergroup(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = User Group¶
- name¶
- usergroups¶
- users¶
- class roles(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- admin¶
- resources¶
- class external_groups(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- TAB_NAME = External Groups¶
- table¶
- add_external_user_group¶
- name¶
- auth_source¶
- before_fill(values)¶
A hook invoked before the loop of filling is invoked.
If it returns None, the
was_changed
infill()
does not change. If it returns a boolean, then onTrue
it modifies thewas_changed
to True as well.- Parameters
values – The same values that are passed to
fill()
- breadcrumb¶
- submit¶
airgun.views.virtwho_configure
¶The status for virtwho configure can be: ok, info, warning. |
|
Return the virtwho configure script by innerHTML. |
|
Return the virtwho configure debug status. |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.virtwho_configure.VirtwhoConfigureStatus(parent, locator, logger=None)¶
The status for virtwho configure can be: ok, info, warning.
- ok: The virt-who report has not arrived within the interval,
which indicates there was no change on hypervisor
- info: The configuration was not deployed yet or the virt-who was
unable to report the status
warning: The configuration is invalid and not available.
- STATUS_ICON = .//span[contains(@class, 'virt-who-config-report-status')]¶
- property status¶
The attributes for the element is such as: virt-who-config-report-status pficon-ok status-ok virt-who-config-report-status pficon-info status-info
- read()¶
Returns current status
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.views.virtwho_configure.VirtwhoConfigureScript(parent, logger=None, **kwargs)¶
Return the virtwho configure script by innerHTML. It will preserve the line break and whitespace.
- SCRIPT_PRE = .//pre[@id='config_script']¶
- property content¶
- read()¶
Returns the script content
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.views.virtwho_configure.VirtwhoConfiguresDebug(parent, logger=None, **kwargs)¶
Return the virtwho configure debug status.
- DEBUG = .//span[contains(@class,'config-debug')]¶
- STATUS = .//span[contains(@class,'fa-check')]¶
- property status¶
- read()¶
Returns the debug status
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.views.virtwho_configure.VirtwhoConfiguresView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.virtwho_configure.VirtwhoConfigureCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class HypervisorForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- server¶
- username¶
- password¶
- class LibvirtForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- server¶
- username¶
- class KubevirtForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- server¶
- kubeconfig¶
- class NutanixForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- server¶
- username¶
- password¶
- prism_flavor¶
- filtering_content¶
- class FilterUnlimitedForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- class FilterWhitelistForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- filter_hosts¶
- filter_host_parents¶
- class FilterBlacklistForm(parent, logger=None, **kwargs)¶
View is a kind of abstract widget that can hold another widgets. Remembers the order, so therefore it can function like a form with defined filling order.
It looks like this:
class Login(View): user = SomeInputWidget('user') password = SomeInputWidget('pass') login = SomeButtonWidget('Log In') def a_method(self): do_something()
The view is usually instantiated with an instance of
widgetastic.browser.Browser
, which will then enable resolving of all of the widgets defined.- Parameters
parent – A parent
View
orwidgetastic.browser.Browser
additional_context – If the view needs some context, for example - you want to check that you are on the page of user XYZ but you can also be on the page for user FOO, then you shall use the
additional_context
to pass in required variables that will allow you to detect this.
- exclude_hosts¶
- exclude_host_parents¶
- breadcrumb¶
- name¶
- interval¶
- satellite_url¶
- hypervisor_id¶
- debug¶
- proxy¶
- no_proxy¶
- filtering¶
- filtering_content¶
- hypervisor_type¶
- hypervisor_content¶
- submit¶
- class airgun.views.virtwho_configure.VirtwhoConfigureEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class airgun.views.virtwho_configure.VirtwhoConfigureDetailsView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class overview(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- status¶
- debug¶
- hypervisor_type¶
- hypervisor_server¶
- hypervisor_username¶
- interval¶
- satellite_url¶
- hypervisor_id¶
- filtering¶
- filter_hosts¶
- filter_host_parents¶
- exclude_hosts¶
- exclude_host_parents¶
- proxy¶
- no_proxy¶
- kubeconfig_path¶
- prism_flavor¶
- _label_locator = //span[contains(@class, '{class_name}')]/../preceding-sibling::div/strong¶
- status_label¶
- debug_label¶
- hypervisor_type_label¶
- hypervisor_server_label¶
- hypervisor_username_label¶
- interval_label¶
- satellite_url_label¶
- hypervisor_id_label¶
- filtering_label¶
- filter_hosts_label¶
- filter_host_parents_label¶
- exclude_hosts_label¶
- exclude_host_parents_label¶
- proxy_label¶
- no_proxy_label¶
- kubeconfig_path_label¶
- prism_flavor_label¶
- class deploy(parent, logger=None, **kwargs)¶
Regular primary level
Tab
.Usage:
@View.nested class mytab(SatTab): TAB_NAME = 'My Tab' @View.nested class subscriptions(SatTab): # no need to specify 'TAB_NAME', it will be set to 'Subscriptions' # automatically pass
Note that
TAB_NAME
is optional and if it’s absent - capitalized class name is used instead, which is useful for simple tab names like ‘Subscriptions’- command¶
- script¶
- download¶
- breadcrumb¶
- edit¶
- delete¶
airgun.views.webhook
¶Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
|
Base view for Satellite pages |
- class airgun.views.webhook.WebhooksView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- title¶
- new¶
- table¶
- class airgun.views.webhook.WebhookCreateView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class general(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- subscribe_to¶
- name¶
- target_url¶
- template¶
- http_method¶
- enabled¶
- class credentials(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- user¶
- password¶
- verify_ssl¶
- capsule_auth¶
- certs¶
- class additional(parent, logger=None, **kwargs)¶
Represents the Patternfly Tab widget.
Selects itself automatically when any child widget gets accessed, ensuring that the widget is visible.
https://www.patternfly.org/v4/documentation/react/components/tabs
- content_type¶
- headers¶
- ROOT = //div[@role="dialog" and @tabindex][div//h4]¶
- cancel_button¶
- submit_button¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_for_popup()¶
- class airgun.views.webhook.WebhookEditView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- class airgun.views.webhook.DeleteWebhookConfirmationView(parent, logger=None, **kwargs)¶
Base view for Satellite pages
- ROOT = //div[@role="dialog" and @tabindex][div//h4[normalize-space(.)="Confirm Webhook Deletion"]]¶
- delete_button¶
- cancel_button¶
- property is_displayed¶
Overrides the
Widget.is_displayed()
. The difference is that if the view does not have the root locator, it assumes it is displayed.- Returns
- wait_animation_end()¶
Submodules¶
airgun.browser
¶
Tools to help getting selenium and widgetastic browser instance to run UI tests.
Module Contents¶
Factory which creates selenium browser of desired provider (selenium, |
|
Plug-in for |
|
A wrapper around |
- airgun.browser.LOGGER¶
- class airgun.browser.SeleniumBrowserFactory(provider=None, browser=None, test_name=None, session_cookie=None, hostname=None)¶
Factory which creates selenium browser of desired provider (selenium, docker or saucelabs). Creates all required capabilities, passes certificate checks and applies other workarounds. It is also capable of finalizing the browser when it’s not needed anymore (closes the browser, stops docker container, sends test results to saucelabs etc).
Usage:
# init factory factory = SeleniumBrowserFactory(test_name=test_name) # get factory browser selenium_browser = factory.get_browser() # navigate to desired url # perform post-init steps (e.g. skipping certificate error screen) factory.post_init() # perform your test steps # perform factory clean-up factory.finalize(passed)
- get_browser()¶
Returns selenium webdriver instance of selected
provider
andbrowser
.- Returns
selenium webdriver instance
- Raises
ValueError: If wrong
provider
orbrowser
specified.
- post_init()¶
Perform all required post-init tweaks and workarounds. Should be called _after_ proceeding to desired url.
- Returns
None
- finalize(passed=True)¶
Finalize browser - close browser window, report results to saucelabs or close docker container if needed.
- Parameters
passed (bool) – Boolean value indicating whether test passed or not. Is only used for
saucelabs
provider.- Returns
None
- _set_session_cookie()¶
Add the session cookie (if provided) to the webdriver
- _get_selenium_browser()¶
Returns selenium webdriver instance of selected
browser
.Note: should not be called directly, use
get_browser()
instead.- Raises
ValueError: If wrong
browser
specified.
- _get_remote_browser()¶
Returns remote webdriver instance of selected
browser
.Note: should not be called directly, use
get_browser()
instead.
- class airgun.browser.AirgunBrowserPlugin(*args, **kwargs)¶
Plug-in for
AirgunBrowser
which adds satellite-specific JavaScript to make sure page is loaded completely. Checks for absence of jQuery, AJAX, Angular requests, absence of spinner indicating loading progress and ensuresdocument.readyState
is “complete”.- ENSURE_PAGE_SAFE = Multiline-String¶
Show Value
1 function jqueryInactive() { 2 return (typeof jQuery === "undefined") ? true : jQuery.active < 1 3 } 4 function ajaxInactive() { 5 return (typeof Ajax === "undefined") ? true : 6 Ajax.activeRequestCount < 1 7 } 8 function angularNoRequests() { 9 if (typeof angular === "undefined") { 10 return true 11 } else if (typeof angular.element( 12 document).injector() === "undefined") { 13 injector = angular.injector(["ng"]); 14 return injector.get("$http").pendingRequests.length < 1 15 } else { 16 return angular.element(document).injector().get( 17 "$http").pendingRequests.length < 1 18 } 19 } 20 function spinnerInvisible() { 21 spinner = document.getElementById("vertical-spinner") 22 return (spinner === null) ? true : spinner.style["display"] == "none" 23 } 24 function reactLoadingInvisible() { 25 react = document.querySelector("#reactRoot .loading-state") 26 return react === null 27 } 28 function anySpinnerInvisible() { 29 spinners = Array.prototype.slice.call( 30 document.querySelectorAll('.spinner') 31 ).filter(function (item,index) { 32 return item.offsetWidth > 0 || item.offsetHeight > 0 33 || item.getClientRects().length > 0; 34 } 35 ); 36 return spinners.length === 0 37 } 38 return { 39 jquery: jqueryInactive(), 40 ajax: ajaxInactive(), 41 angular: angularNoRequests(), 42 spinner: spinnerInvisible(), 43 any_spinner: anySpinnerInvisible(), 44 react: reactLoadingInvisible(), 45 document: document.readyState == "complete", 46 }
- property ignore_ensure_page_safe_timeout¶
- ensure_page_safe(timeout='30s')¶
Ensures page is fully loaded. Default timeout was 10s, this changes it to 30s. If self.ignore_ensure_page_safe_timeout is True, the function doesn’t raise an exception and continues as if the page was safe instead. This can be used to bypass some bugs, e.g. https://bugzilla.redhat.com/show_bug.cgi?id=2106022
- before_click(element, locator=None)¶
Invoked before clicking on an element. Ensure page is fully loaded before clicking.
- after_click(element, locator=None)¶
Invoked after clicking on an element. Ensure page is fully loaded before proceeding further.
- class airgun.browser.AirgunBrowser(selenium, session, extra_objects=None)¶
A wrapper around
widgetastic.browser.Browser
which injectsairgun.session.Session
andAirgunBrowserPlugin
.- get_client_datetime()¶
Make Javascript call inside of browser session to get exact current date and time. In that way, we will be isolated from any issue that can happen due different environments where test automation code is executing and where browser session is opened. That should help us to have successful run for docker containers or separated virtual machines When calling .getMonth() you need to add +1 to display the correct month. Javascript count always starts at 0, so calling .getMonth() in May will return 4 and not 5.
- Returns
Datetime object that contains data for current date and time on a client
- get_downloads_list()¶
Open browser’s downloads screen and return a list of downloaded files.
- Returns
list of strings representing file URIs
- get_file_content(uri)¶
Get file content by its URI from browser’s downloads page.
- Returns
bytearray representing file content
- Raises
Exception – when error code instead of file content received
- save_downloaded_file(file_uri=None, save_path=None)¶
Save local or remote browser’s automatically downloaded file to specified local path. Useful when you don’t know exact file name or path where file was downloaded or you’re using remote driver with no access to worker’s filesystem (e.g. saucelabs).
Usage example:
view.widget_which_triggers_file_download.click() path = self.browser.save_downloaded_file() with open(file_path, newline='') as csvfile: reader = csv.DictReader(csvfile) for row in reader: # process file contents
- Parameters
file_uri (str optional) – URI of file. If not specified - browser’s latest downloaded file will be selected
save_path (str optional) – local path where the file should be saved. If not specified -
temp_dir
from airgun settings will be used in case of remote session or just path to saved file in case local one.
- check_alert(locator)¶
- get_alert(squash=False)¶
Returns the current alert/PF4 alert object.
- Parameters
squash (bool optional) – Whether or not to squash errors during alert handling. Default False
- Raises
selenium.common.exceptions.NoAlertPresentException –
- handle_alert(cancel=False, wait=30.0, squash=False, prompt=None, check_present=False)¶
Extend the behaviour of widgetstatic.browser.handle_alert to handle PF4 alerts
- ignore_ensure_page_safe_timeout()¶
airgun.exceptions
¶
Exceptions raised by airgun
airgun.fixtures
¶
Handy fixtures which you may want to use in your tests.
Just add the following line into your conftest.py:
pytest_plugins = ["airgun.fixtures"]
Module Contents¶
|
Session fixture which automatically initializes (but does not start!) |
|
Session fixture which automatically initializes and starts airgun UI |
- airgun.fixtures.session(request)¶
Session fixture which automatically initializes (but does not start!) airgun UI session and correctly passes current test name to it.
Usage:
def test_foo(session): with session: # your ui test steps here session.architecture.create({'name': 'bar'})
- airgun.fixtures.autosession(request)¶
Session fixture which automatically initializes and starts airgun UI session and correctly passes current test name to it. Use it when you want to have a session started before test steps and closed after all of them, i.e. when you don’t need manual control over when the session is started or closed.
Usage:
def test_foo(autosession): # your ui test steps here autosession.architecture.create({'name': 'bar'})
airgun.session
¶
Session controller which manages UI session
Module Contents¶
A session context manager which is a key controller in airgun. |
- airgun.session.LOGGER¶
- class airgun.session.Session(session_name=None, user=None, password=None, session_cookie=None, hostname=None, url=None, login=True)¶
A session context manager which is a key controller in airgun.
It is responsible for initializing and starting
airgun.browser.AirgunBrowser
, navigating to satellite, performing post-init browser tweaks, initializing navigator, all available UI entities, and logging in to satellite.When session is about to close, it saves a screenshot in case of any exception, attempts to log out from satellite and performs all necessary browser closure steps like quitting the browser, sending results to saucelabs, stopping docker container etc.
For tests level it offers direct control over when UI session is started and stopped as well as provides all the entities available without the need to import and initialize them manually.
Usage:
def test_foo(): with Session('test_foo') as session: session.architecture.create({'name': 'bar'}) [...] # steps executed after UI session was closed
You can also pass credentials different from default ones specified in settings like that:
with Session(test_name, user='foo', password='bar'): # [...]
Every test may use multiple sessions if needed:
def test_foo(): with Session('test_foo', 'admin', 'password') as admin_session: # UI steps, performed by 'admin' user admin_session.user.create({'login': 'user1', 'password: 'pwd'}) # [...] with Session('test_foo', 'user1', 'pwd1') as user1_session: # UI steps, performed by 'user1' user user1_session.architecture.create({'name': 'bar'}) # [...]
Nested sessions are supported as well, just don’t forget to use different variables for sessions:
def test_foo(): with Session('test_foo', 'admin', 'password') as admin_session: # UI steps, performed by 'admin' user only admin_session.user.create({'login': 'user1', 'password: 'pwd'}) # [...] with Session('test_foo', 'user1', 'pwd1') as user1_session: # UI steps, performed by 'user1' user OR 'admin' in # different browser instances user1_session.architecture.create({'name': 'bar'}) admin_session.architecture.search('bar') # [...] # UI steps, performed by 'admin' user only admin_session.user.delete({'login': 'user1'})
- __call__(user=None, password=None, session_cookie=None, url=None, login=None)¶
Stores provided values. This allows tests to provide additional value when Session object is returned from fixture and used as context manager. Arguments are the same as when initializing Session object, except session_name.
- __enter__()¶
Just a shim to make it compatible with context manager protocol. The real work is done by _open the first time any entity is requested.
- __exit__(exc_type, exc_value, traceback)¶
Attempts to log out, saves the screenshot and performs all required session closure activities.
- NOTE: exceptions during logout or saving screenshot are just logged and
not risen not to shadow real session result.
- _open(entity)¶
Initializes requested entity. If this is first time session requests an entity, also initialize and prepare browser.
- _prepare_browser(url)¶
Starts the browser, navigates to satellite, performs post-init browser tweaks, initializes navigator and UI entities, and logs in to satellite.
- take_screenshot()¶
Take screen shot from the current browser window.
The screenshot named f’{self.name}-screenshot-YYYY-mm-dd_HH_MM_SS.png’ will be stored in the path f’{settings.screenshots_path}/YYYY-mm-dd/’.
All directories will be created if they don’t exist. Make sure that the user running Robottelo has the right permissions to create files and directories.
This method is called automatically in case any exception during UI session happens.
- activationkey()¶
Instance of Activation Key entity.
- ansibleroles()¶
Instance of Ansible Roles entity.
- ansiblevariables()¶
Instance of Ansible Variables entity.
- architecture()¶
Instance of Architecture entity.
- audit()¶
Instance of Audit entity.
- bookmark()¶
Instance of Bookmark entity.
- cloudinventory()¶
Instance of RH Cloud Inventory Upload entity.
- cloudinsights()¶
Instance of RH Cloud Insights entity.
- computeprofile()¶
Instance of Compute Profile entity.
- configgroup()¶
Instance of Config Group entity.
- containerimagetag()¶
Instance of Container Image Tags entity.
- contentcredential()¶
Instance of Content Credential entity.
- contenthost()¶
Instance of Content Host entity.
- computeresource()¶
Instance of ComputeResource entity.
- contentview()¶
Instance of Content View entity.
- contentview_new()¶
Instance of the New Content View entity.
- contentviewfilter()¶
Instance of Content View Filter entity.
- dashboard()¶
Instance of Dashboard entity.
- discoveredhosts()¶
- discoveryrule()¶
Instance of Discovery Rule entity.
- domain()¶
Instance of domain entity.
- errata()¶
Instance of Errata entity.
- filter()¶
Instance of Filter entity.
- hardwaremodel()¶
Instance of Hardware Model entity.
- host()¶
Instance of Host entity.
- host_new()¶
Instance of Host entity.
- hostcollection()¶
Instance of Host Collection entity.
- hostgroup()¶
Instance of Host Group entity.
- http_proxy()¶
Instance of HTTP Proxy entity.
- insightsaction()¶
Instance of RHAI Action entity.
- insightsinventory()¶
Instance of RHAI Inventory entity.
- insightsoverview()¶
Instance of RHAI Overview entity.
- insightsplan()¶
Instance of RHAI Plan entity.
- insightsrule()¶
Instance of RHAI Rule entity.
- jobinvocation()¶
Instance of Job Invocation entity.
- insightsmanage()¶
Instance of RHAI Manage entity.
- jobtemplate()¶
Instance of Job Template entity.
- ldapauthentication()¶
Instance of LDAP Authentication entity.
- lifecycleenvironment()¶
Instance of LCE entity.
- location()¶
Instance of Location entity.
- login()¶
Instance of Login entity.
- operatingsystem()¶
Instance of Operating System entity.
- organization()¶
Instance of Organization entity.
- oscapcontent()¶
Instance of OSCAP Content entity.
- oscappolicy()¶
Instance of OSCAP Policy entity.
- oscaptailoringfile()¶
Instance of OSCAP Tailoring File entity.
- package()¶
Instance of Packge entity.
- media()¶
Instance of Media entity.
- modulestream()¶
Instance of Module Stream entity.
- partitiontable()¶
Instance of Partition Table entity.
- puppetclass()¶
Instance of Puppet Class entity.
- puppetenvironment()¶
Instance of Puppet Environment entity.
- product()¶
Instance of Product entity.
- provisioningtemplate()¶
Instance of Provisioning Template entity.
- reporttemplate()¶
Instance of Report Template entity.
- redhatrepository()¶
Instance of Red Hat Repository entity.
- repository()¶
Instance of Repository entity.
- role()¶
Instance of Role entity.
- rhsso_login()¶
Instance of RHSSOLoginEntity entity.
- settings()¶
Instance of Settings entity.
- sc_parameter()¶
Instance of Smart Class Parameter entity.
- subnet()¶
Instance of Subnet entity.
- subscription()¶
Instance of Subscription entity.
- syncplan()¶
Instance of Sync Plan entity.
- sync_status()¶
Instance of Sync Status entity
- sync_template()¶
Instance of Sync Templates entity
- task()¶
Instance of Task entity.
- user()¶
Instance of User entity.
- usergroup()¶
Instance of User Group entity.
- virtwho_configure()¶
Instance of Virtwho Configure entity.
- webhook()¶
Instance of Webhook entity.
airgun.settings
¶
Module Contents¶
Return the path to the project root directory. |
- airgun.settings.SETTINGS_FILE_NAME = settings.ini¶
- airgun.settings.get_project_root()¶
Return the path to the project root directory.
- Returns
A directory path.
- Return type
- class airgun.settings.AirgunSettings¶
- class airgun.settings.SatelliteSettings¶
- class airgun.settings.SeleniumSettings¶
- class airgun.settings.WebKaifukuSettings¶
airgun.utils
¶
Module Contents¶
|
Update dict values with new values from new_values dict |
|
Transform a widget path:value dict to a regular View read values format. |
|
Return a widget by it's name from widget_root, where widget can be a sub widget. |
|
Decorator to invoke method one or more times, if TimedOutError is raised. |
- airgun.utils.merge_dict(values, new_values)¶
Update dict values with new values from new_values dict
Merge example:
a = {‘a’: {‘c’: {‘k’: 2, ‘x’: {1: 0}}}} b = {‘a’: {‘c’: {‘z’: 5, ‘y’: 40, ‘x’: {2: 1}}}, ‘b’: {‘a’: 1, ‘l’: 2}} update_dict(a, b) # a updated and equal: # {‘a’: {‘c’: {‘k’: 2, ‘x’: {1: 0, 2: 1}, ‘z’: 5, ‘y’: 40}}, ‘b’: {‘a’: 1, ‘l’: 2}}
- airgun.utils.normalize_dict_values(values)¶
Transform a widget path:value dict to a regular View read values format.
- This function transform a dictionary from:
{‘a.b’: 1, ‘a.z’: 10, ‘a.c.k’: 2, ‘a.c.z’: 5, ‘x.y’: 3, ‘c’: 4}
- to:
{‘a’: {‘b’: 1, ‘z’: 10, ‘c’: {‘k’: 2, ‘z’: 5}}, ‘x’: {‘y’: 3}, ‘c’: 4}
- airgun.utils.get_widget_by_name(widget_root, widget_name)¶
Return a widget by it’s name from widget_root, where widget can be a sub widget.
- Parameters
widget_root – The root Widget instance from where to begin resolving widget_name.
widget_name – a string representation of the widget instance to find.
Example
widget_name = ‘details’ or widget_name = ‘details.subscription_status’ or widget_name = ‘details.subscriptions.resources’
Decorator to invoke method one or more times, if TimedOutError is raised.
airgun.widgets
¶
Module Contents¶
Represent basic select element except our custom implementation remove |
|
Represent basic checkbox element, but able to handle alert message |
|
Classical radio buttons group widget |
|
Toggle buttons group widget when each button represented by radio |
|
Collection of date picker and two inputs for hours and minutes |
|
Input for date, which opens calendar on click. |
|
List with click-able elements. Part of |
|
Similar to ItemsList widget except list elements can be selected only using 'Add' |
|
Similar to ItemsList widget ideology, but here we have group of items lists instead. |
|
List with click-able elements. Part of |
|
Typical two-pane multiselect jQuery widget. Allows to move items from |
|
Widget has different appearance than MultiSelect, because there are no actual panes, |
|
Similar to the PuppetClassesMultiSelect widget except items lists has different |
|
List of actions, expandable via button with caret. Usually comes with |
|
PF4 version of actions dropdown with support for items description |
|
Custom drop down which contains the checkbox inside in drop down. |
|
Searchbar for table filtering |
|
PF4 Searchbar for table filtering |
|
The Patternfly Vertical navigation. |
|
Satellite version of Patternfly alert. It doesn't contain |
|
Satellite version of Patternfly's alerts section. The only difference is |
|
Widget for tracking all improperly filled inputs inside view, which are |
|
Base class for all UI objects. |
|
Drop-down element with filtering functionality |
|
Name-Value paired input elements which can be added, edited or removed. |
|
Usual confirmation dialog with two buttons and close 'x' button in the |
|
PF4 confirmation dialog with two buttons and close 'x' button in the |
|
Group of checkboxes that goes in a line one after another. Usually used |
|
Input for managing limits (e.g. Hosts limit). Consists of 'Unlimited' |
|
Text input widget with content that may be hidden |
|
Usually represented by static field and edit button that transform |
|
Should be used in case |
|
Should be used in case |
|
A set of checkboxes of the same property type |
|
Should be used in case |
|
A set of text inputs |
|
Should be used in case |
|
Should be used in case |
|
Similar to EditableEntry and specific for the same page types, but cannot |
|
Default ace editor |
|
Represents Paginator widget that includes per page selector, First/Last/Next/Prev buttons |
|
Paginator widget for use within SatTable. |
|
Satellite version of table. |
|
Subscriptions table, which has extra preceding row for 'Repository Name' |
|
Applicable for every table in application that has no headers. Due logic of the Table |
|
Applicable for every table in application that has uneven amount of |
|
Generic progress bar widget. |
|
Progress bar for Publish and Promote procedures. They contain status |
|
Default Pie Chart that can be found across application. At that moment |
|
A host for widgets list. Items that can be added or removed, mainly used in profile for |
|
Generic Item widget (to be inherited) and to be used as Widget Item for |
|
Autocomplete Search input field, We must remove the focus from this widget after fill to |
|
A simple toggle button that we can read/write it's state via the standard view functions |
|
A link representation that we can read/click via the standard view functions read/fill. |
|
Popover-content UI widget which contains header, drop_down, input_box, or textarea and |
|
Popover-content UI widget which contains header, drop_down, input_box, or textarea and |
|
This is a customizable card widget which has the title, count and kebab widget |
|
PF4 Accordion widget |
|
Represents the Patternfly Multi Select. |
|
Checkbox-like Switch control, representing On and Off state. But with |
- class airgun.widgets.SatSelect(parent, locator=None, id=None, name=None, logger=None)¶
Represent basic select element except our custom implementation remove html tags from select option values
- SELECTED_OPTIONS_TEXT = Multiline-String¶
Show Value
1var result_arr = []; 2var opt_elements = arguments[0].selectedOptions; 3for(var i = 0; i < opt_elements.length; i++){ 4 value = opt_elements[i].innerHTML; 5 parsed_value = value.replace(/<[^>]+>/gm, ''); 6 result_arr.push(parsed_value); 7} 8return result_arr;
- class airgun.widgets.CheckboxWithAlert(parent, name=None, id=None, locator=None, logger=None)¶
Represent basic checkbox element, but able to handle alert message which can appear after you perform action for that widget
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.widgets.RadioGroup(parent, locator, logger=None)¶
Classical radio buttons group widget
Example html representation:
<div class="form-group "> <label>Protocol *</label> <div class="col-md-4"> <label class="radio-inline"> <input type="radio" checked="checked" name="subnet[type]">IPv4 </label> <label class="radio-inline"> <input type="radio" name="subnet[type]">IPv6 </label>
Locator example:
//div/label[input[@type='radio']][contains(., 'IPv4')]
- LABELS = .//label[input[@type="radio"]]¶
- BUTTON = .//input[@type="radio"]¶
- property button_names¶
Return all radio group labels
- _get_parent_label(name)¶
Get radio group label for specific button
- property selected¶
Return name of a button that is currently selected in the group
- select(name)¶
Select specific radio button in the group
- read()¶
Wrap method according to architecture
- fill(name)¶
Wrap method according to architecture
- class airgun.widgets.ToggleRadioGroup(parent, locator, logger=None)¶
Toggle buttons group widget when each button represented by radio element
Example html representation:
<div class="form-group "> <div> <label>Template *</label> <div class="btn-group"> <label class="btn btn-default btn-sm active"> <input type="radio" name="options">Input </label> <label class="btn btn-default btn-sm"> <input type="radio" name="options">Diff </label>
Locator example:
//div[@class='btn-group']
- property selected¶
Return name of a button that is currently selected in the group
- select(name)¶
Select specific radio button in the group
- class airgun.widgets.DateTime(parent, logger=None, **kwargs)¶
Collection of date picker and two inputs for hours and minutes
Example html representation:
<div name="syncPlanForm"> <div ... label="Start Date"> <label for="startDate" class="ng-binding">Start Date</label> <input type="text" uib-datepicker-popup="" id="startDate" ...> <span class="input-group-btn"> <button type="button" class="btn btn-default"...> <i class="fa fa-calendar"></i> <div ...label="Start Time"> <label for="" class="ng-binding">Start Time</label> <div show-meridian="false" id="startTime" ...> <table...> ...
Locator example:
We don't need to pass locator here as widget seems has one structure across all applications that use paternfly pattern
- start_date¶
- hours¶
- minutes¶
- fill(values)¶
Fills the widget accordingly to provided values.
- Parameters
values – dict with keys
start_date
and/orhours
, and/orminutes
containing values that should be present in the fields
- read()¶
Read current widget values and put them into the dict
- Parameters
values – dict with key/value pairs for all widget fields
- class airgun.widgets.DatePickerInput(parent, name=None, id=None, locator=None, logger=None)¶
Input for date, which opens calendar on click.
Example html representation:
<input type="date" uib-datepicker-popup="" ng-model="rule.start_date" ng-model-options="{timezone: 'UTC'}" is-open="date.startOpen" ng-click="openStartDate($event)"> <div uib-datepicker-popup-wrap="" ng-model="date" ng-change="dateSelection(date)" template-url="uib/template/datepickerPopup/popup.html"> <ul role="presentation" class="uib-datepicker-popup ..." ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()"> ... </div> <span class="input-group-btn"> <button class="btn btn-default" type="button" ng-click="openStartDate($event)"> <i class="fa fa-calendar inline-icon"></i> </button> </span>
Locator example:
".//input[@ng-model='rule.start_date']"
- CALENDAR_POPUP = ./parent::div/div[@ng-model='date']/ul[contains(@class, 'datepicker-popup')]¶
- calendar_button¶
- clear_button¶
- done_button¶
- property is_open¶
Bool value whether the calendar is opened or not
- clear()¶
Clear input value. Opens calendar popup if it’s closed and pushes ‘Clear’ button.
- close_calendar()¶
Closes calendar popup if it’s opened.
- class airgun.widgets.ItemsList(parent, locator, logger=None)¶
List with click-able elements. Part of
MultiSelect
or jQuery drop-down.Example html representation:
<ul class="ms-list" tabindex="-1">
Locator example:
//ul[@class='ms-list']
- ITEM = ./li[not(contains(@style, 'display: none'))][normalize-space(.)='{}']¶
- ITEMS = ./li[not(contains(@style, 'display: none'))]¶
- fill(value)¶
Clicks on element inside the list.
- Parameters
value – string with element name
- class airgun.widgets.AddRemoveItemsList(parent, locator, logger=None)¶
Similar to ItemsList widget except list elements can be selected only using ‘Add’ and ‘Remove’ buttons near each of it
Example html representation:
<ul class="config_group_group"> <li id="config_group_1" class="config_group "> <span> <a onclick="expandClassList..."> </span> <a onclick="addConfigGroup(this)">Add</a> </li> </ul>
Locator example:
//ul[@id='selected_config_groups']
- ITEM_BUTTON = ./li[not(contains(@style, 'display: none'))][contains(., '{}')]/a¶
- ITEMS = ./li[not(contains(@style, 'display: none'))]/span/a¶
- read()¶
Return a list of strings representing elements in the
AddRemoveItemsList
.
- fill(value)¶
Clicks on whether Add or Remove button for necessary element from the list.
- Parameters
value – string with element name
- class airgun.widgets.ItemsListGroup(parent, locator, logger=None)¶
Similar to ItemsList widget ideology, but here we have group of items lists instead. Each item list element from such group is placed inside expandable section
Example html representation:
<ul class="puppetclass_group"> <li> <a onclick="expandClassList..."> stdlib </a> <ul id="pc_stdlib"> <li class="puppetclass"> <span> <a...>stdlib</a> </span> </li> <li class="puppetclass "> <span> <a...>stdlib::stages</a> </span> </li> </li> </ul>
Locator example:
//div[contains(@class, 'available_classes')]/div[@class='row']
- ITEM = ./div/ul/li/ul/li[not(contains(@style, 'display: none'))][normalize-space(.)='{}']/span/a¶
- ITEMS = ./div/ul/li/ul/li[not(contains(@style, 'display: none'))]¶
- EXPAND = ./div/ul/li/ul/li[not(contains(@style, 'display:...¶
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.widgets.ItemsListReadOnly(parent, locator, logger=None)¶
List with click-able elements. Part of
MultiSelect
or jQuery drop-down.Example html representation:
<ul class="ms-list" tabindex="-1">
Locator example:
//ul[@class='ms-list']
- fill(value)¶
Clicks on element inside the list.
- Parameters
value – string with element name
- class airgun.widgets.MultiSelect(parent, locator=None, id=None, logger=None)¶
Typical two-pane multiselect jQuery widget. Allows to move items from list of
unassigned
entities to list ofassigned
ones and vice versa.Examples on UI:
Hosts -> Architectures -> any -> Operating Systems Hosts -> Operating Systems -> any -> Architectures
Example html representation:
<div class="ms-container" id="ms-operatingsystem_architecture_ids">
Locator examples:
//div[@id='ms-operatingsystem_architecture_ids'] id='ms-operatingsystem_architecture_ids'
- filter¶
- unassigned¶
- assigned¶
- fill(values)¶
Read current values, find the difference between current and passed ones and fills the widget accordingly.
- Parameters
values – dict with keys
assigned
and/orunassigned
, containing list of strings, representing item names
- read()¶
Returns a dict with current lists values.
- class airgun.widgets.PuppetClassesMultiSelect(parent, locator=None, id=None, logger=None)¶
Widget has different appearance than MultiSelect, because there are no actual panes, but logically it is the same. It looks like two lists of items and specific for puppet classes functionality. Allows to move items from list of ‘available’ entities to list of ‘included’ ones and vice versa. Named these lists as ‘assigned’ and ‘unassigned’ for proper inheritance.
- Examples on UI::
Hosts -> Create Host -> Puppet Classes Configure -> Config Groups
Example html representation:
<div class="row"> <div> <h3>Included Classes</h3> <ul id="selected_classes"> </ul> </div> <div> <h3>Available Classes</h3> <ul class="puppetclass_group"> </ul> </div> </div>
- Locator examples::
Usually it is empty locator, because it is impossible to build relative path
- filter¶
- assigned¶
- unassigned¶
- class airgun.widgets.ConfigGroupMultiSelect(parent, locator=None, id=None, logger=None)¶
Similar to the PuppetClassesMultiSelect widget except items lists has different appearance and there is no filter field for available classes. Usually specific for config group functionality.
- filter¶
- assigned¶
- unassigned¶
- class airgun.widgets.ActionsDropdown(parent, locator, logger=None)¶
List of actions, expandable via button with caret. Usually comes with button attached on left side, representing either most common action or hint like ‘Select Action’.
Example html representation:
<div class="btn-group dropdown" is-open="status.isOpen"> <button type="button" class="btn btn-default" ...> <span><span >Select Action</span></span> </button> <button type="button" class="btn btn-default" ...> <span class="caret"></span> </button> <ul class="dropdown-menu dropdown-menu-right ng-scope" role="menu"> <li role="menuitem"><a><span><span>Action1</span></span></a></li> <li role="menuitem"><a><span><span>Action2</span></span></a></li> </ul> </div>
Locator example:
//div[contains(@class, 'dropdown')] //div[contains(@class, 'btn-group')]
- dropdown¶
- pf4_drop_down¶
- button¶
- ITEMS_LOCATOR = .//ul/li/a¶
- ITEM_LOCATOR = .//ul/li/a[normalize-space(.)="{}"]¶
- property is_open¶
Checks whether dropdown list is open.
- open()¶
Opens dropdown list
- close()¶
Closes dropdown list
- property items¶
Returns a list of all dropdown items as strings.
- select(item)¶
Selects item from dropdown.
- fill(item)¶
Selects action. Apart from dropdown also checks attached button label if present
- read()¶
Returns a list of available actions.
- class airgun.widgets.Pf4ActionsDropdown(parent, locator, logger=None)¶
PF4 version of actions dropdown with support for items description
Example html representation:
<div class="pf-c-dropdown pf-m-expanded" data-ouia-component-type="PF4/Dropdown"> <div class="pf-c-dropdown__toggle pf-m-split-button pf-m-action"> <button class="pf-c-dropdown__toggle-button">Schedule a job</button> <button class="pf-c-dropdown__toggle-button pf-m-secondary"> </button> </div> <ul class="pf-c-dropdown__menu" role="menu"> <li "role="menuitem"><a><div>Run Puppet Once</div></a></li> <li "role="menuitem"><a><div>Run OpenSCAP scan</div></a></li> <li "role="menuitem"><a><div>Run Ansible roles</div></a></li> <li "role="menuitem"><a><div>Enable web console</div></a></li> </ul> </div>
- button¶
- dropdown¶
- ITEMS_LOCATOR = .//ul[contains(@class, 'pf-c-dropdown__menu')]/li¶
- ITEM_LOCATOR = .//ul/li[@role='menuitem' and contains(normalize-space(.), '{}')]¶
- property is_open¶
Checks whether dropdown list is open.
- property is_enabled¶
Check widget is enabled or not.
The logic behind is_enabled is WebElement property. If __locator__ not pointing to the expected WebElement, you can always override this.
- Returns
- select(item)¶
Selects item from dropdown.
- class airgun.widgets.ActionDropdownWithCheckbox(parent, locator, logger=None)¶
Custom drop down which contains the checkbox inside in drop down.
- customize_check_box¶
- fill(item)¶
select action from drop down list, after checking customize checkbox :param item: dictionary with values for ‘is_customize’ and ‘action’ keys.
- class airgun.widgets.Search(parent, logger=None, **kwargs)¶
Searchbar for table filtering
- ROOT = //div[contains(@class, "toolbar-pf-filter") or contains(@class, "title_filter")or...¶
- search_field¶
- search_button¶
- clear_button¶
- actions¶
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- clear()¶
Clears search field value and re-trigger search to remove all filters.
- search(value)¶
- class airgun.widgets.PF4Search(parent, logger=None, **kwargs)¶
PF4 Searchbar for table filtering
- ROOT = //div[@role="combobox" or @aria-haspopup="listbox"]¶
- search_field¶
- clear_button¶
- clear()¶
Clears search field value and re-trigger search to remove all filters.
- search(value)¶
The Patternfly Vertical navigation.
- class airgun.widgets.SatFlashMessage(parent, logger=None, **kwargs)¶
Satellite version of Patternfly alert. It doesn’t contain
<strong>
tag and all the text is inside 2<span>
.For more details, see Bugzilla #1566565.
Should not be used directly, only via class:SatFlashMessages.
Example html representation:
<div class="alert toast-pf alert-success alert-dismissable"> <button ... type="button" class="close close-default"> <span ... class="pficon pficon-close"></span></button> <span aria-hidden="true" class="pficon pficon-ok"></span> <span><span>Sample message</span></span></div> </div>
- TYPE_MAPPING¶
- ROOT¶
- TITLE_LOCATOR = .//h4[contains(@class, "alert__title")]¶
- DISMISS_LOCATOR = .//div[contains(@class, "alert__action")]¶
- ICON_LOCATOR = .//div[contains(@class, "alert__icon")]¶
- DESCRIPTION_LOCATOR = .//div[contains(@class, "alert__description")]¶
- property text¶
Return the message text of the notification.
- class airgun.widgets.SatFlashMessages(parent, logger=None, **kwargs)¶
Satellite version of Patternfly’s alerts section. The only difference is overridden
messages
property which returnsSatFlashMessage
.Example html representation:
<ul class="pf-c-alert-group pf-m-toast"><li> <div class="pf-c-alert pf-m-success foreman-toast" aria-label="Success Alert" data-ouia-component-type="PF4/Alert" data-ouia-safe="true" data-ouia-component-id="OUIA-Generated-Alert-success-1"> <div class="pf-c-alert__icon">
Locator example:
//ul[@class="pf-c-alert-group pf-m-toast"]/li/div[contains(@class, "pf-c-alert")]
- ROOT = //ul[@class="pf-c-alert-group pf-m-toast"]¶
- MSG_LOCATOR¶
- msg_class¶
- class airgun.widgets.ValidationErrors(parent, logger=None, **kwargs)¶
Widget for tracking all improperly filled inputs inside view, which are highlighted with red color and typically contain error message next to them.
Example html representation:
<div class="form-group has-error"> <label class="..." for="name">DNS Domain *</label> <div class="col-md-4"> <input ... type="text" name="domain[name]" id="domain_name"> <span class="help-block"></span> </div> <span class="help-block help-inline"> <span class="error-message">can't be blank</span> </span> </div>
Locator example:
No locator accepted as widget should look through entire view.
- ERROR_ELEMENTS = .//*[contains(@class,'has-error') and not(contains(@style,'display:none'))]¶
- ERROR_MESSAGES = .//*[(contains(@class, 'alert base in fade alert-danger')or contains(@class,'error-msg-block')or...¶
- property has_errors¶
Returns boolean value whether view has fields with invalid data or not.
- property messages¶
Returns a list of all validation messages for improperly filled fields. Example: [“can’t be blank”]
- assert_no_errors()¶
Assert current view has no validation messages, otherwise rise
AssertionError
.
- read(*args, **kwargs)¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- class airgun.widgets.ContextSelector(parent, logger=None, **kwargs)¶
Base class for all UI objects.
Does couple of things:
Ensures it gets instantiated with a browser or another widget as parent. If you create an instance in a class, it then creates a
WidgetDescriptor
which is then invoked on the instance and instantiates the widget with underlying browser.Implements some basic interface for all widgets.
If you are inheriting from this class, you MUST ALWAYS ensure that the inherited class has an init that always takes the
parent
as the first argument. You can do that on your own, setting the parent asself.parent
or you can do something like this:def __init__(self, parent, arg1, arg2, logger=None): super(MyClass, self).__init__(parent, logger=logger) # or if you have somehow complex inheritance ... Widget.__init__(self, parent, logger=logger)
- CURRENT_ORG¶
- CURRENT_LOC¶
- ORG_LOCATOR = //div[@id="organization-dropdown"]//li[button[contains(.,{})]]¶
- LOC_LOCATOR = //div[@id="location-dropdown"]//li[button[contains(.,{})]]¶
- select_org(org_name)¶
- property current_org¶
- select_loc(loc_name)¶
- property current_loc¶
- read()¶
As reading organization and location is not atomic operation: needs mouse moves, clicks, etc, and this widget is included in every view - calling
airgun.views.common.BaseLoggedInView.read()
for any view will trigger reading values ofContextSelector
. Thus, to avoid significant performance degradation it should not be readable.Use
current_org()
andcurrent_loc()
instead.
- class airgun.widgets.FilteredDropdown(parent, id=None, locator=None, logger=None)¶
Drop-down element with filtering functionality
Example html representation:
<div class="select2-container form-control" id="s2id_subnet_boot_mode">
Locator example:
id=subnet_boot_mode id=s2id_subnet_ipam
- selected_value¶
- open_filter¶
- clear_filter¶
- filter_criteria¶
- filter_content¶
- read()¶
Return drop-down selected item value
- clear()¶
Clear currently selected value for drop-down
- fill(value)¶
Select specific item from the drop-down
- Parameters
value – string with item value
- class airgun.widgets.CustomParameter(parent, **kwargs)¶
Name-Value paired input elements which can be added, edited or removed.
It is essentially a table with text input widgets on each row, with an “Add New Parameter” button on the same page.
Example html representation:
<table class="table" id="global_parameters_table"> <tr class="fields " id="new_os_parameter_row"> <input placeholder="Name" type="text" ... id="..._name"> <textarea id="new_os_parameter_value" placeholder="Value" ...>
Locator example:
//input[@placeholder='Name'] //textarea[@placeholder='Value']
- add_new_value¶
- read()¶
Return a list of dictionaries. Each dictionary consists of name and value parameters
- add(value)¶
Add single name/value parameter entry to the table.
- Parameters
value – dict with format {‘name’: str, ‘value’: str}
- remove(name)¶
Remove parameter entries from the table based on name.
- Parameters
value – dict with format {‘name’: str, ‘value’: str}
- fill(values)¶
Fill parameter entries. Existing values will be overwritten.
Updates name/value pairs if the name is already in the list.
If you desire to intentionally add a duplicate value, use self.add()
- Parameters
values – either single dictionary of name and value, or list of name/value dictionaries
- class airgun.widgets.ConfirmationDialog(parent, logger=None, **kwargs)¶
Usual confirmation dialog with two buttons and close ‘x’ button in the right corner. Has nothing in common with javascript alert, confirm or prompt pop-ups.
Example html representation:
<div class="modal-content"> <button type="button" class="close" ... ng-click="cancel()"> <div class="modal-footer ng-scope"> <button class="btn btn-danger" ng-click="ok()"> <button class="btn ..." ng-click="cancel()"...>
Locator example:
//div[@class='modal-content']
- ROOT = .//div[@class='modal-content']¶
- confirm_dialog¶
- cancel_dialog¶
- discard_dialog¶
- _check_is_displayed(elem)¶
This is to check if dialog is displayed
- confirm()¶
Clicks on the positive outcome button like ‘Remove’, ‘Ok’, ‘Yes’
- cancel()¶
Clicks on the negative outcome button like ‘Cancel’ or ‘No’
- read()¶
Widgets has no fields to read
- class airgun.widgets.Pf4ConfirmationDialog(parent, logger=None, **kwargs)¶
PF4 confirmation dialog with two buttons and close ‘x’ button in the right corner.
- ROOT = //div[@id="app-confirm-modal" or @data-ouia-component-type="PF4/ModalContent"]¶
- confirm_dialog¶
- cancel_dialog¶
- discard_dialog¶
- class airgun.widgets.LCESelector(parent, locator=None, logger=None)¶
Group of checkboxes that goes in a line one after another. Usually used to specify lifecycle environment
Example html representation:
<ul[@class='path-list']> <li class="path-list-item ng-scope"...> <label class="path-list-item-label...> <input type="checkbox"...> <li class="path-list-item ng-scope"...> <label class="path-list-item-label...> <input type="checkbox"...>
Locator example:
//ul[@class='path-list']
- ROOT¶
- LABELS = ./li/label[contains(@class, path-list-item-label)]¶
- CHECKBOX = .//input[@ng-model="item.selected"][parent::label[contains(., "{}")]]¶
- checkbox_selected(locator)¶
Identify whether specific checkbox is selected or not
- select(locator, value)¶
Select or deselect checkbox depends on the value passed
- read()¶
Return a dictionary where keys are lifecycle environment names and values are booleans whether they’re selected or not.
- fill(value)¶
Assign value for specific checkbox from group
- Parameters
value – dictionary that consist of single checkbox name and value that should be assigned to that checkbox
- class airgun.widgets.LimitInput(parent, logger=None, **kwargs)¶
Input for managing limits (e.g. Hosts limit). Consists of ‘Unlimited’ checkbox and text input for specifying the limit, which is only visible if checkbox is unchecked.
Example html representation:
<input type="checkbox" name="limit" ng-model="activationKey.unlimited_hosts"...> <input id="max_hosts" name="max_hosts" ng-model="activationKey.max_hosts" ng-required="!activationKey.unlimited_hosts" type="number" min="1" max="2147483648"...>
Locator example:
No locator accepted as widget consists of multiple other widgets in different parts of DOM. Please use View's ``ROOT`` for proper isolation if needed.
- unlimited¶
- limit¶
- fill(value)¶
Handle ‘Unlimited’ checkbox before trying to fill text input.
- Parameters
value – either ‘Unlimited’ (case insensitive) to select corresponding checkbox or value to fill text input with.
- read()¶
Return either ‘Unlimited’ if corresponding checkbox is selected or text input value otherwise.
- class airgun.widgets.TextInputHidden(parent, name=None, id=None, locator=None, logger=None)¶
Text input widget with content that may be hidden
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- class airgun.widgets.EditableEntry(parent, locator=None, name=None, logger=None)¶
Usually represented by static field and edit button that transform field into control to change field content to specific value. That control can have different appearances like textarea, input, select and etc. That widget is specific for entity edit pages.
Example html representation:
<dl> <dt> <dd> <form> ... <span class="fr" ng-hide="editMode || readonly"...> <span class="editable-value ng-binding">
Locator example:
//dt[contains(., 'test')]/following-sibling::dd/span //dt[contains(., 'test')]/following-sibling::dd/input
- edit_button¶
- edit_field¶
- save_button¶
- cancel_button¶
- entry_value¶
- fill(value)¶
Fill widget with necessary value
- Parameters
value – string with value that should be used for field update procedure
- read()¶
Returns string with current widget value
- class airgun.widgets.EditableEntrySelect(parent, locator=None, name=None, logger=None)¶
Should be used in case
EditableEntry
widget represented not by a field, but by select list.- edit_field¶
- class airgun.widgets.EditableEntryCheckbox(parent, locator=None, name=None, logger=None)¶
Should be used in case
EditableEntry
widget represented not by a field, but by checkbox.- edit_field¶
- class airgun.widgets.CheckboxGroup(parent, locator, logger=None)¶
A set of checkboxes of the same property type
- ITEMS_LOCATOR = .//p¶
- CHECKBOX_LOCATOR = .//p[normalize-space(.)="{}"]/input¶
- checkboxes()¶
- read()¶
Read values of checkboxes
- fill(values)¶
Check or uncheck one of the checkboxes
- Parameters
value – string with specification of fields’ values Example: value={‘details.addons’: {‘Test addon 1’: True, ‘Test addon 2’: False}}
- class airgun.widgets.EditableEntryMultiCheckbox(parent, locator=None, name=None, logger=None)¶
Should be used in case
EditableEntry
widget represented not by a field, but by a set of checkboxes.- edit_field¶
- class airgun.widgets.TextInputsGroup(parent, locator, logger=None)¶
A set of text inputs
- FIELD_LABELS = .//div[contains(@id,"template-input-")]//label¶
- TEXTINPUT_LOCATOR = .//div[contains(@id,"template-input-")]//label[normalize-space(.)="{}"]/following-sibling::div//input¶
- labels()¶
- textinputs()¶
- read()¶
Read values of text inputs
- fill(values)¶
Fill one of the text inputs
- Parameters
value – string with specification of fields’ values Example: value={‘Hosts filter’: ‘name=host11.example.com’, ‘Errata filter’: ‘whatever’}
- class airgun.widgets.EditableLimitEntry(parent, locator=None, name=None, logger=None)¶
Should be used in case
EditableEntry
widget represented not by a field, but byLimitInput
widget.- edit_field¶
- class airgun.widgets.EditableDateTime(parent, locator=None, name=None, logger=None)¶
Should be used in case
EditableEntry
widget represented not by a field, but byDateTime
widget.- edit_field¶
- class airgun.widgets.ReadOnlyEntry(parent, locator=None, name=None, logger=None)¶
Similar to EditableEntry and specific for the same page types, but cannot be modified.
Example html representation:
<dl> <dt> <dd> <form> ... <span class="ng-scope">No</span>
Locator example:
//dt[contains(., 'test')]/following-sibling::dd //dt[contains(., 'test')]/following-sibling::dd/span
- entry_value¶
- BASE_LOCATOR = .//dt[contains(., '{}')]/following-sibling::dd[not(contains(@class, 'ng-hide'))][1]¶
- read()¶
Returns string with current widget value
- class airgun.widgets.ACEEditor(parent, logger=None)¶
Default ace editor
Example html representation:
<div id="editor-000" class="editor ace_editor ace-twilight ace_dark"> <textarea class="ace_text-input" <div class="ace_gutter" style="display: none;"> <div class="ace_layer ace_gutter-layer ace_folding-enabled"> <div class="ace_scroller"> <div class="ace_content"> ...
Locator example:
There is no need to provide any locators to that widget
- ROOT = //div[contains(@class, 'ace_editor')]¶
- fill(value)¶
Fill widget with necessary value
- Parameters
value – string with value that should be used for field update procedure
- read()¶
Returns string with current widget value
- class airgun.widgets.Pagination(parent, logger=None, **kwargs)¶
Represents Paginator widget that includes per page selector, First/Last/Next/Prev buttons and current page index/overall amount of pages. Mainly used with Table widget.
- ROOT = .//form[contains(@class, 'content-view-pf-pagination')]¶
- PER_PAGE_BUTTON_DROPDOWN = .//div[button[@id='pagination-row-dropdown']]¶
- PER_PAGE_SELECT = .//select[contains(@ng-model, 'per_page')]¶
- first_page_button¶
- previous_page_button¶
- next_page_button¶
- last_page_button¶
- page¶
- pages¶
- total_items¶
- per_page()¶
Return the per page widget
- property is_displayed¶
Check whether this Pagination widget exists and visible
- _click_button(pager_button)¶
Click on the pager button if enabled.
- first_page()¶
Goto first page by clicking on first page button
- previous_page()¶
Goto previous page by clicking on previous page button
- next_page()¶
Goto next page by clicking on next page button
- last_page()¶
Goto last page by clicking on last page button
- property current_page¶
Return the current page as integer value
- property total_pages¶
Return the total available pages as integer value
- read()¶
Read the basic sub widgets of this pagination widget
- fill(values)¶
Fill sub widgets with the supplied values
- class airgun.widgets.SatTablePagination(parent, logger=None, **kwargs)¶
Paginator widget for use within SatTable.
- ROOT = //form[contains(@class, 'content-view-pf-pagination')]¶
- class airgun.widgets.SatTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
Satellite version of table.
Includes a paginator sub-widget. If found, then the paginator is used to read all entries from the table.
If the table is empty, there might be only one column with an appropriate message in the table body, or it may have no columns or rows at all. This subclass handles both possibilities.
Example html representation:
<table bst-table="table" ...> <thead> <tr class="ng-scope"> <th class="row-select"><input type="checkbox" ...></th> <th ng-click="table.sortBy(column)" ...> <span ...><span ...>Column Name</span></span><i ...></i></th> <th ng-click="table.sortBy(column)" ...> <span ...><span ...>Column Name</span></span><i ...></i></th> </tr> </thead> <tbody> <tr id="noRowsTr"><td colspan="9"> <span data-block="no-rows-message" ...> <span class="ng-scope">Table is empty</span></span> </td></tr> </tbody> </table>
Locator example:
.//table
- no_rows_message = .//td/span[contains(@data-block, 'no-rows-message') or contains(@data-block,...¶
- tbody_row¶
- pagination¶
- property has_rows¶
Boolean value whether table contains some elements (rows) or is empty.
- read()¶
Return empty list in case table is empty
- _read_all()¶
Return all available table values with using pagination navigation.
- class airgun.widgets.SatSubscriptionsTable(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
Subscriptions table, which has extra preceding row for ‘Repository Name’ column. It’s equal to satellite table in all other respects.
Example:
Following table cells: TestSubscriptionName 1|0 out of Unlimited|Physical|Start_Date|End_Date|Support_Level TestSubscriptionName2 1|0 out of Unlimited|Physical|Start_Date|End_Date|Support_Level Will be transformed into: TestSubscriptionName|1|0 out of Unlimited|Physical|Start_Date|... TestSubscriptionName2|1|0 out of Unlimited|Physical|Start_Date|... So, title rows will be removed in favor of extra column 'Repository Name'.
Example html representation:
<table bst-table="table" ...> ... <tbody> <!-- ngRepeat: (name, subscriptions) in groupedSubscriptions --> ... </tbody> </table>
Locator example:
.//table
- title_rows¶
- rows(*extra_filters, **filters)¶
Split list of all the rows into ‘content’ rows and ‘title’ rows. Return content rows only.
- read()¶
Return content rows with 1 extra column ‘Repository Name’ in it.
- class airgun.widgets.SatTableWithoutHeaders(parent, locator, column_widgets=None, assoc_column=None, rows_ignore_top=None, rows_ignore_bottom=None, top_ignore_fill=False, bottom_ignore_fill=False, logger=None)¶
Applicable for every table in application that has no headers. Due logic of the Table widget we have to explicitly specify custom headers. As we have no idea about the content and structure of the table in advance, we will dynamically name each column using simple - ‘column1’, ‘column2’, … ‘columnN’.
Example html representation:
<table> <tbody> <tr> <td>Name</td> <td>my_host</td> <td>my_new_host</td> </tr> <tr> <td>Arhitecture</td> <td>x32</td> <td>x64</td> </tr> </tbody> </table>
Locator example:
//table[@id='audit_table']
- ROWS = ./tbody/tr¶
- COLUMNS = ./tbody/tr[1]/td¶
- ROW_AT_INDEX = ./tbody/tr[{0}]¶
- HEADER_IN_ROWS¶
- HEADERS¶
- property _is_header_in_body¶
Explicitly return False as there is no header row in this table.
- headers()¶
- class airgun.widgets.SatTableWithUnevenStructure(parent, locator, column_locator='.', logger=None)¶
Applicable for every table in application that has uneven amount of headers and columns(usually we talk about 1 header but 2 columns) We taking into account that all possible content rows are actually present in DOM, but some are ‘hidden’ using css class. Also we can specify what widget we expect in a second column (e.g. link or text)
Some examples where we can use current class: ‘Content Counts’ table present in every repository, containing amount of packages/source RPM’s/Errata/etc with links to corresponding details pages. ‘Properties’ table present in every host details page
Example html representation:
<table class="table table-striped table-bordered"> <thead> <tr> <th colspan="2" ...>Content Type</th> </tr> </thead> <tbody> <tr ng-show="repository.content_type === 'yum'" class="ng-hide" style=""> <!-- translate: --><td translate="" class="ng-scope" style="">Packages</td> <td class="align-center"> <a ui-sref="product.repository.manage-content.packages(...)" class="ng-binding" href=".../repositories/<repo-id>/content/packages"> 0 </a> </td> </tr> ... <tr ng-show="repository.content_type === 'docker'"> <!-- translate: --> <td translate="" class="ng-scope" style="">Container Image Manifests</td> <td class="align-center"> <a ui-sref="product.repository.manage-content.docker-manifests(...)" class="ng-binding" href=".../repositories/<repo-id>/content/content/docker_manifests"> 0 </a> </td> </tr> ... </tbody> </table>
Locator example:
.//table[//th[normalize-space(.)="Content Type"]] //table[@id='properties_table']
- read()¶
Returns a dict with {column1: column2} values, and only for rows which aren’t marked as hidden.
Example:
{ 'Packages': '1', 'Package Groups': '0' 'Status': 'OK' 'Domain': 'domain_name' }
- class airgun.widgets.ProgressBar(parent, locator=None, logger=None)¶
Generic progress bar widget.
Example html representation:
<div class="progress ng-isolate-scope" type="success" ...> <div class="progress-bar progress-bar-success" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-valuetext="0%" ...></div> </div>
Locator example:
.//div[contains(@class, "progress progress-striped")]
- PROGRESSBAR = .//div[contains(@class,"progress-bar")]¶
- property is_active¶
Boolean value whether progress bar is active or not (stopped, pending or any other state).
- property progress¶
String value with current flow rate in percent.
- property is_completed¶
Boolean value whether progress bar is finished or not
- wait_for_result(timeout=600, delay=1)¶
Waits for progress bar to finish. By default checks whether progress bar is completed every second for 10 minutes.
- Parameters
timeout – integer value for timeout in seconds
delay – float value for delay between attempts in seconds
- read()¶
Returns current progress.
- class airgun.widgets.PublishPromoteProgressBar(parent, locator=None, logger=None)¶
Progress bar for Publish and Promote procedures. They contain status message and link to associated task. Also the progress is displayed slightly differently.
Example html representation:
<a ng-href="/foreman_tasks/tasks/71196" ng-hide="hideProgress(version)" href="/foreman_tasks/tasks/...71196"> <div ng-class="{ active: taskInProgress(version) }" class="progress progress-striped"> <div class="progress ng-isolate-scope" animate="false" ...> <div class="progress-bar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100" aria-valuetext="%" ...></div></div> </div> Publishing and promoting to 1 environment. </a> <span ng-show="hideProgress(version)" ...> Published (2018-05-07 18:10:14 +0300) </span>
Locator example:
.//div[contains(@class, "progress progress-striped")]
- ROOT = .¶
- TASK¶
- MESSAGE¶
- property is_completed¶
Boolean value whether progress bar is finished or not
- read()¶
Returns message with either progress or result, depending on its status.
- class airgun.widgets.PieChart(parent, locator, logger=None)¶
Default Pie Chart that can be found across application. At that moment only return values that displayed inside of the chart
- chart_title_text¶
- chart_title_value¶
- read()¶
Return dictionary that contains chart title name as key and chart value as its value
- class airgun.widgets.RemovableWidgetsItemsListView(parent, logger=None, **kwargs)¶
A host for widgets list. Items that can be added or removed, mainly used in profile for network interfaces, storage and job template.
Usage:
@View.nested class resources(RemovableWidgetsItemsListView): ROOT = "//fieldset[@id='storage_volumes']" ITEMS = "./div/div[contains(@class, 'removable-item')]" ITEM_WIDGET_CLASS = ComputeResourceRHVProfileStorageItem
- ITEMS = ./div[contains(@class, 'removable-item')]¶
- ITEM_WIDGET_CLASS¶
- ITEM_REMOVE_BUTTON_ATTR = remove_button¶
- add_item_button¶
- _get_item_locator(index)¶
Return the item locator located at index position
- get_item_at_index(index)¶
Return the item widget instance at index
- add_item()¶
Add an item by pressing the add_item button and return the item instance
- remove_item(item)¶
Remove item widget by clicking on it’s remove button
- remove_item_at_index(index)¶
Remove item at index
- property items_length¶
- property items¶
Return all the items widget instances
- clear()¶
Remove all items if item remove button attribute defined.
- read()¶
Read all items
- fill(values)¶
Fill all items. :param values: A list of values to fill the item widgets with.
- class airgun.widgets.GenericRemovableWidgetItem(parent, locator, logger=None)¶
Generic Item widget (to be inherited) and to be used as Widget Item for RemovableWidgetsItemsListView.
- remove_button¶
- context¶
- read()¶
Each object should implement read so it is easy to get the value of such object.
When you implement this method, the exact return value is up to you but it MUST be consistent with what
fill()
takes.
- fill(values)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.widgets.AutoCompleteTextInput(parent, name=None, id=None, locator=None, logger=None)¶
Autocomplete Search input field, We must remove the focus from this widget after fill to force the auto-completion list to be hidden. Since this is a react component, calling browser clear method directly on the field has no effect, thus we need to clear the field using the clear button attached to the input
- clear_button¶
- clear()¶
Clears search field value and re-trigger search to remove all filters.
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.widgets.ToggleButton(parent, *text, locator=None, **kwargs)¶
A simple toggle button that we can read/write it’s state via the standard view functions read/fill
- __locator__()¶
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- read()¶
Widget.read override, use text
- class airgun.widgets.Link(parent, locator, logger=None)¶
A link representation that we can read/click via the standard view functions read/fill.
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
- class airgun.widgets.PopOverModalView(parent, logger=None, **kwargs)¶
Popover-content UI widget which contains header, drop_down, input_box, or textarea and submit button. This is associated within a table.
Example html representation:
<div class="modal-content" role="document"> <h4 class="modal-title">Update value for Connect by IP setting</h4> <form class="form-horizontal well"> <select name="value" class="form-control"> <option value="true">Yes</option> <option value="false">No</option> <div class="form-actions"> <button type="submit" class="btn btn-primary"> <div class="modal-content" role="document"> <h4 class="modal-title">Update value for Administrator email address setting</h4> <form class="form-horizontal well"> <input name="value" class="form-control" value="root@rhts.example.com"> <div class="form-actions"> <button type="submit" class="btn btn-primary">
Locator example:
//div[contains(@class,'modal-content')]
- ROOT = //div[contains(@class,'modal-content')]¶
- header¶
- input_box¶
- textarea¶
- drop_down¶
- submit¶
- class airgun.widgets.PopOverWidget(parent, logger=None, **kwargs)¶
Popover-content UI widget which contains header, drop_down, input_box, or textarea and submit button. This is associated within a table.
Locator example:
//div[contains(@class, 'editable-open')]
- ROOT = .¶
- column_value¶
- pop_over_view¶
- fill(item)¶
Selects value from drop_down if exist otherwise write into input_box or textarea
- read()¶
read column updated value
- class airgun.widgets.AuthSourceAggregateCard(parent, name, locator=None, action_title=None, logger=None)¶
This is a customizable card widget which has the title, count and kebab widget
Example html representation:
<div class="card-pf-body"> <div class="dropdown pull-right dropdown-kebab-pf"> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropupKebabRight2"> <li><a href="/auth_source_externals/3/edit">Edit</a></li> </ul> </div> <h2 class="card-pf-title text-center"> External </h2> <div class="card-pf-items text-center"> <div class="card-pf-item"> <span class="pficon pficon-users"></span> <span class="card-pf-item-text"><a href="">10</a></span> </div> </div> </div>
- ROOT¶
- select_kebab¶
- COUNT = .//span[@class='card-pf-item-text']¶
- property count¶
Count of sources :return int: None if no count element is found, otherwise count of sources in the card
- class airgun.widgets.Accordion(parent=None, id=None, locator=None, logger=None)¶
PF4 Accordion widget
- ROOT¶
- ITEMS = .//button[contains(@class, 'pf-c-accordion__toggle')]¶
- ITEM = .//span[contains(normalize-space(.), '{}')]¶
- items()¶
- toggle(value)¶
- class airgun.widgets.BaseMultiSelect(parent: widgetastic.types.ViewParent, component_id: Optional[str] = None, logger: Optional[logging.Logger] = None, component_type: Optional[str] = None)¶
Represents the Patternfly Multi Select.
https://www.patternfly.org/v4/documentation/react/components/select#multiple
- BUTTON_LOCATOR = .//button[@aria-label="Options menu"]¶
- OUIA_COMPONENT_TYPE = PF4/Select¶
- item_select(items, close=True)¶
Opens the Dropdown and selects the desired items.
- Parameters
items – Items to be selected
close – Close the dropdown when finished
- fill(items)¶
Fills all the items.
- Parameters
items – list containing what items to be selected
- class airgun.widgets.InventoryBootstrapSwitch(parent, class_name, **kwargs)¶
Checkbox-like Switch control, representing On and Off state. But with fancy UI and without any <form> elements. There’s also BootstrapSwitch widget in widgetastic_patternfly, but we don’t inherit from it as it uses completely different HTML structure than this one (it has underlying <input>).
- ON_TOGGLE = .//span[contains(@class, 'bootstrap-switch-handle-on')]¶
- OFF_TOGGLE = .//span[contains(@class, 'bootstrap-switch-handle-off')]¶
- ROOT¶
- property selected¶
- property _clickable_el¶
In automation, you need to click on exact toggle element to trigger action
Returns: selenium webelement
- fill(value)¶
Interactive objects like inputs, selects, checkboxes, et cetera should implement fill.
When you implement this method, it MUST ALWAYS return a boolean whether the value was changed. Otherwise it can break.
For actual filling, please use
fill_with()
. It offers richer interface for filling.- Returns
A boolean whether it changed the value or not.
Package Contents¶
Classes¶
- 1
Created with sphinx-autoapi
Examples¶
For usage examples see Robottelo’s ui tests.
Concepts¶
Besides code which implements Widgetastic and navmazing functionality, two basic concepts used to abstract Satellite/Foreman UI functionality are Views and Entities.
View is fundamental basic concept that describes appearance of the page. Here we store all information about controls (widgets) on the page, specifically locators to them or when control is basic one that has common locator we just define widget without any further details. Of course, we try to address locators using id= or name= as first priority, but if we can’t - we go with XPath. If you see situation like this - create Foreman or Katello pull request to assign unique id attribute for necessary element where it is reasonable, as XPaths are more fragile and has worse performance to interact with.
Entity is fundamental basic concept that is responsible for functional side of application (Satellite in our case). It defines actions you can do with objects like CRUD (create, remove, update, delete) for example. That is only API that is visible for end user on test side. Also, we put all details about navigation here, so framework knows how to get to necessary page when you need to create specific object in the application.
AirGun adds bunch of widgets (which are specific to Satellite / Foreman web UI) to these defined by Widgetastic (like generic Text). Widgets allows you to interact with various UI elements and are used in views.
And finally tests. Tests are not part of AirGun repository. You can contribute
tests to the Robottelo, tests/foreman/
ui folder (see “Quick
start guide” below).
Quick start guide¶
Clone Robottelo:
git clone https://github.com/SatelliteQE/robottelo.git
Install requirements
cd robottelo && pip install -r requirements.txt
3. Create robottelo.properties file and fill it with your values (your may reuse already existing properties file since no changes were introduced there)
cp robottelo.properties.sample robottelo.properties
vim robottelo.properties
Run airgun tests from Robottelo’s
tests/foreman/ui/
folder
pytest tests/foreman/ui/test_architecture.py
Contributing¶
Good practice when working with Python project as AirGun is to work in Python’s virtual environments. To initiate and activate them before running pip … commands run:
virtualenv venv # on Fedora you might need to use `virtualenv-3` if you have Python 2 as a default on your system
source venv/bin/activate
If you are about to start contributing, please follow GitHub flow.
For a new-comer, we have issues tagged with “good first issue” so that might be place where you can start?
When testing your AirGun code using Robottelo tests, you can make sure your development checkout of Airgun is used (instead the one installed in your Robottelo virtual environment) by setting PYTHONPATH properly (you can add that line at the end of your virtual environment activation script venv/bin/activate so it is set automatically next time you source it):
export PYTHONPATH="/home/username/workspace/airgun/:$PYTHONPATH"
When you are running your tests locally, you will need Chrome browser installed and chromedriver (download and unzip it) binary location set in webdriver_binary= configuration option in your robottelo.properties (or make it available somewhere in your PATH, e.g. in Robottelo venv/bin/).
As of now, only chromedriver is supported.