Esempio n. 1
0
from cfme import web_ui as ui
from cfme.fixtures import pytest_selenium as sel
from cfme.web_ui import Region, accordion, fill, flash, form_buttons
from cfme.web_ui.menu import nav

nav.add_branch(
    "reports", {
        "import_export":
        lambda ctx: accordion.tree("Import/Export", "Import / Export"),
    })

form = Region(locators=dict(
    export_select=ui.Select("//select[@id='choices_chosen']", multi=True),
    export_button=form_buttons.FormButton("Download Report to YAML"),
    import_overwrite=ui.Input('overwrite'),
    import_file=ui.Input('upload_file'),
    import_submit=ui.Input('upload_atags')))

export_select = ui.Select("//select[@id='choices_chosen']", multi=True)
export_button = form_buttons.FormButton("Download Report to YAML")


def export_reports(*custom_report_names):
    sel.force_navigate("import_export")
    fill(form.export_select, custom_report_names)
    sel.click(form.export_button)


def import_reports(filename, overwrite=False):
    sel.force_navigate("import_export")
Esempio n. 2
0
from utils.log import logger
from utils.wait import wait_for, TimedOutError
from cfme.services import requests

buttons = Region(
    locators={
        'default': '//*[@id="buttons_off"]/a',
        'apply': '//*[@id="buttons_on"]/a[1]',
        'reset': '//*[@id="buttons_on"]/a[2]'
    })

filter_form = Form(fields=[
    ("zone", ui.Select("//select[@id='chosen_zone']")),
    ("user", ui.Select("//select[@id='user_choice']")),
    ("time_period", ui.Select("//select[@id='time_period']")),
    ("task_status_queued", ui.Input('queued')),
    ("task_status_running", ui.Input('running')),
    ("task_status_ok", ui.Input('ok')),
    ("task_status_error", ui.Input('error')),
    ("task_status_warn", ui.Input('warn')),
    ("task_state", ui.Select("//select[@id='state_choice']")),
])

table_loc = '//div[@id="records_div"]/table'

match_page = partial(match_location, controller='miq_task')

tasks_table = CheckboxTable(
    table_locator='//div[@id="records_div"]/table[thead]',
    header_checkbox_locator=
    "//div[@id='records_div']//input[@id='masterToggle']")
Esempio n. 3
0
        retirement = BootstrapSelect('schedule__retirement')
        retirement_warning = BootstrapSelect('schedule__retirement_warn')
        # Infra
        stateless = Input(name='schedule__stateless')


# TODO remove old form once all importers have moved to widget form
provisioning_form = tabstrip.TabStripForm(
    fields=[('submit_button', form_buttons.FormButton("Submit")),
            ('submit_copy_button',
             form_buttons.FormButton("Submit this provisioning request")),
            ('cancel_button', form_buttons.cancel),
            ('host_submit_button', form_buttons.host_provision_submit),
            ('host_cancel_button', form_buttons.host_provision_cancel)],
    tab_fields=OrderedDict([
        ('Request', [('email', ui.Input('requester__owner_email')),
                     ('first_name', ui.Input('requester__owner_first_name')),
                     ('last_name', ui.Input('requester__owner_last_name')),
                     ('notes', ui.Input('requester__request_notes')),
                     ('manager_name', ui.Input('requester__owner_manager'))]),
        ('Purpose', [('apply_tags', {
            version.LOWEST:
            ui.CheckboxTree('//div[@id="all_tags_treebox"]//ul'),
            '5.7':
            ui.BootstrapTreeview('all_tags_treebox')
        })]),
        (
            'Catalog',
            [
                # Cloud
                ('num_instances', AngularSelect('service__number_of_vms')),
Esempio n. 4
0
# -*- coding: utf-8 -*-
from functools import partial
from cfme import web_ui as ui
from cfme.exceptions import CandidateNotFound
from cfme.fixtures import pytest_selenium as sel
from cfme.web_ui import Form, accordion, fill, flash, form_buttons, menu, DHTMLSelect, AngularSelect
from cfme.web_ui import toolbar as tb
from utils.update import Updateable
from utils import version

cfg_btn = partial(tb.select, "Configuration")
buttons_tree = partial(accordion.tree, "Buttons", "Object Types")

button_group_form = Form(
    fields=[
        ('btn_group_text', ui.Input('name')),
        ('btn_group_hvr_text', ui.Input('description')),
        ('add_button', form_buttons.add),
        ('save_button', form_buttons.save)
    ])

button_form = Form(
    fields=[
        ('btn_text', ui.Input('name')),
        ('btn_hvr_text', ui.Input('description')),
        ('select_dialog', ui.Select('select#dialog_id')),
        ('system_process', ui.Select('select#instance_name')),
        ('request', ui.Input('object_request')),
        ('add_button', form_buttons.add),
        ('save_button', form_buttons.save)
    ])
Esempio n. 5
0
from utils.update import Updateable
from utils.wait import wait_for

lifecycle_btn = partial(tb.select, "Lifecycle")
reload_func = partial(tb.select, "Reload current display")
my_service_tree = partial(accordion.tree, "Services")
details_page = Region(infoblock_type='detail')
cfg_btn = partial(tb.select, "Configuration")
policy_btn = partial(tb.select, "Policy")

retirement_form = Form(
    fields=[('retirement_date', ui.Calendar('miq_date_1')
             ), ('retirement_warning', ui.Select("select#retirement_warn"))])

edit_service_form = Form(
    fields=[("name", ui.Input("name")), ("description",
                                         ui.Input("description"))])

set_ownership_form = Form(
    fields=[("select_owner", ui.Select("select#user_name")
             ), ("select_group", ui.Select("select#group_name"))])

edit_tags_form = Form(fields=[(
    "select_tag",
    ui.Select("select#tag_cat")), ("select_value",
                                   ui.Select("select#tag_add"))])

menu.nav.add_branch(
    'my_services', {
        'service': [
            lambda ctx: my_service_tree('All Services', ctx['service_name']), {
Esempio n. 6
0
cfg_btn = partial(tb.select, "Configuration")
policy_btn = partial(tb.select, "Policy")
download_btn = partial(tb.select, "download_choice")


retirement_form = Form(
    fields=[
        ('retirement_date', {
            version.LOWEST: ui.Calendar('miq_date_1'),
            '5.5': ui.Calendar('retirementDate')}),
        ('retirement_warning', ui.Select("select#retirement_warn"))
    ])

edit_service_form = Form(
    fields=[
        ("name", ui.Input("name")),
        ("description", ui.Input("description"))
    ])

set_ownership_form = Form(
    fields=[
        ("select_owner", ui.Select("select#user_name")),
        ("select_group", ui.Select("select#group_name"))
    ])

edit_tags_form = Form(
    fields=[
        ("select_tag", ui.Select("select#tag_cat")),
        ("select_value", ui.Select("select#tag_add"))
    ])
Esempio n. 7
0
class StorageManager(Updateable):
    """Represents the Storage / Storage Managers object. Allows interaction

    Args:
        name: Name of the Storage Namager as it appears in the UI.
        type: Type of the Storage Manager (eg. StorageManager.NETAPP_RS, ...)
        hostname: Host name of the machine.
        ip: IP Address of the machine.
        port: Port of the machine.
        credentials: :py:class:`dict` or :py:class:`StorageManager.Credential`
    """
    class Credential(Updateable):
        def __init__(self, username=None, password=None):
            self.username = username
            self.password = password

    form = Form(fields=[
        ("name", ui.Input("name")),
        ("type", ui.Select("select#sm_type")),
        ("hostname", ui.Input("hostname")),
        ("ip", ui.Input("ipaddress")),
        ("port", ui.Input("port")),
        ("credentials",
         Form(fields=[("username", ui.Input("userid")),
                      ("password",
                       MultiFill(ui.Input("password"), ui.Input("verify")))])),
    ])

    validate = form_buttons.FormButton(
        "Validate the credentials by logging into the Server")
    add = form_buttons.FormButton("Add this Storage Manager")

    ##
    # Types constants. Extend if needed :)
    NETAPP_RS = "NetApp Remote Service"

    def __init__(self,
                 name=None,
                 type=None,
                 hostname=None,
                 ip=None,
                 port=None,
                 credentials=None):
        self.name = name
        self.type = type
        self.hostname = hostname
        self.ip = ip
        self.port = port
        self.credentials = credentials

    def create(self, validate=True, cancel=False):
        sel.force_navigate("storage_manager_new")
        fill(self.form, self)
        if validate:
            sel.click(self.validate)
        if cancel:
            sel.click(form_buttons.cancel)
        else:
            sel.click(self.add)
        flash.assert_no_errors()

    def update(self, updates, validate=True, cancel=False):
        sel.force_navigate("storage_manager_edit",
                           context={"storage_manager": self})
        fill(self.form, updates)
        if validate:
            sel.click(self.validate)
        if cancel:
            sel.click(form_buttons.cancel)
        else:
            sel.click(form_buttons.save)
        flash.assert_no_errors()

    def delete(self, cancel=False):
        self.navigate()
        cfg_btn("Remove this Storage Manager from the VMDB",
                invokes_alert=True)
        sel.handle_alert(cancel)
        flash.assert_no_errors()

    def navigate(self):
        sel.force_navigate("storage_manager",
                           context={"storage_manager": self})

    def refresh_inventory(self):
        self.navigate()
        cfg_btn("Refresh Inventory", invokes_alert=True)
        sel.handle_alert(cancel=False)
        flash.assert_no_errors()

    def refresh_status(self):
        self.navigate()
        cfg_btn("Refresh Status", invokes_alert=True)
        sel.handle_alert(cancel=False)
        flash.assert_no_errors()

    def wait_until_updated(self, num_sec=300):
        def _wait_func():
            self.navigate()
            return InfoBlock("Properties",
                             "Last Update Status").text.strip().lower() == "ok"

        wait_for(_wait_func, num_sec=num_sec, delay=5)

    @property
    def exists(self):
        try:
            self.navigate()
            return True
        except StorageManagerNotFound:
            return False