示例#1
0
 def create(self):
     sel.force_navigate('catalog_item_new',
                        context={'provider_type': self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog,
                            'select_orch_template': self.orch_template,
                            'select_provider': self.provider_type})
     if current_version() >= "5.4":
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                                 "StateMachines", "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     if(self.catalog_name is not None):
         tabstrip.select_tab("Request Info")
         template = template_select_form.template_table.find_row_by_cells({
             'Name': self.catalog_name,
             'Provider': self.provider
         })
         sel.click(template)
         request_form.fill(self.provisioning_data)
     sel.click(template_select_form.add_button)
示例#2
0
 def create(self):
     view = navigate_to(self, 'BundleAdd')
     domain = "ManageIQ (Locked)"
     view.fill({
         'name': self.name,
         'description': self.description,
         'display': self.display_in,
         'select_catalog': self.catalog.name,
         'select_dialog': self.dialog
     })
     if view.field_entry_point.value == "":
         view.fill({'field_entry_point': ''})
         view.tree.click_path("Datastore", domain, "Service",
                              "Provisioning", "StateMachines",
                              "ServiceProvision_Template",
                              "CatalogItemInitialization")
         view.apply_button.click()
     tabstrip.select_tab("Resources")
     for cat_item in self.catalog_items:
         view.fill({'select_resource': cat_item})
     view.add_button.click()
     view.flash.assert_success_message(
         'Catalog Bundle "{}" was added'.format(self.name))
     view = self.create_view(AllCatalogItemView)
     assert view.is_displayed
     view.flash.assert_no_error()
 def create(self):
     domain = "ManageIQ (Locked)"
     sel.force_navigate('catalog_item_new', context={'provider_type': self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog})
     if self.item_type != "Orchestration":
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", domain, "Service", "Provisioning",
                                 "StateMachines", "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     tabstrip.select_tab("Request Info")
     template = template_select_form.template_table.find_row_by_cells({
         'Name': self.catalog_name,
         'Provider': self.provider
     })
     sel.click(template)
     web_ui.fill(request_form, {
         'instance_name': self.vm_name,
         'instance_type': self.instance_type,
         'guest_keypair': self.guest_keypair,
         'availability_zone': self.availability_zone,
         'cloud_tenant': self.cloud_tenant,
         'cloud_network': self.cloud_network,
         'security_groups': self.security_groups[0],  # not supporting multiselect now,
                                                      # just take first value
     })
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' % self.name)
示例#4
0
 def create(self):
     sel.force_navigate('catalog_item_new',
                        context={'provider_type': self.item_type})
     fill(
         basic_info_form, {
             'name_text': self.name,
             'description_text': self.description,
             'display_checkbox': self.display_in,
             'select_catalog': self.catalog,
             'select_dialog': self.dialog
         })
     tabstrip.select_tab("Request Info")
     template = template_select_form.template_table.find_row_by_cells({
         'Name':
         self.catalog_name,
         'Provider':
         self.provider
     })
     sel.click(template)
     web_ui.fill(
         request_form,
         {
             'instance_name': self.vm_name,
             'instance_type': self.instance_type,
             'guest_keypair': self.guest_keypair,
             'availability_zone': self.availability_zone,
             'security_groups':
             self.security_groups[0],  # not supporting multiselect now,
             # just take first value
         })
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' %
                                  self.name)
示例#5
0
    def queue_canned_report(cls, path):
        """Queue report from selection of pre-prepared reports.

        Args:
            *path: Path in tree after All Reports
        Returns: Value of Run At in the table so the run can be then checked.
        """
        cls.path = path
        navigate_to(cls, "Info")
        toolbar.select("Queue")
        flash.assert_no_errors()
        tabstrip.select_tab("Saved Reports")
        queued_at = sel.text(list(records_table.rows())[0].queued_at)

        def _get_state():
            navigate_to(cls, 'Saved')
            row = records_table.find_row("queued_at", queued_at)
            status = sel.text(row.status).strip().lower()
            assert status != "error", sel.text(row)
            return status == version.pick({"5.6": "finished",
                                           "5.7": "complete"})

        wait_for(
            _get_state,
            delay=3,
            message="wait for report generation finished",
            fail_func=toolbar.refresh()
        )
        return sel.text(list(records_table.rows())[0].run_at).encode("utf-8")
示例#6
0
    def queue_canned_report(cls, path):
        """Queue report from selection of pre-prepared reports.

        Args:
            *path: Path in tree after All Reports
        Returns: Value of Run At in the table so the run can be then checked.
        """
        cls.path = path
        navigate_to(cls, "Info")
        toolbar.select("Queue")
        flash.assert_no_errors()
        tabstrip.select_tab("Saved Reports")
        queued_at = sel.text(list(records_table.rows())[0].queued_at)

        def _get_state():
            navigate_to(cls, 'Saved')
            row = records_table.find_row("queued_at", queued_at)
            status = sel.text(row.status).strip().lower()
            assert status != "error", sel.text(row)
            return status == version.pick({"5.6": "finished",
                                           "5.7": "complete"})

        wait_for(
            _get_state,
            delay=3,
            message="wait for report generation finished",
            fail_func=toolbar.refresh()
        )
        return sel.text(list(records_table.rows())[0].run_at).encode("utf-8")
示例#7
0
    def queue(self, wait_for_finish=False):
        navigate_to(self, 'Details')
        toolbar.select("Queue")
        flash.assert_no_errors()
        tabstrip.select_tab("Saved Reports")
        if wait_for_finish:
            # Get the queued_at value to always target the correct row
            queued_at = sel.text(list(records_table.rows())[0].queued_at)

            def _get_state():
                navigate_to(self, 'Saved')
                row = records_table.find_row("queued_at", queued_at)
                status = sel.text(row.status).strip().lower()
                assert status != "error", sel.text(row)
                return status == version.pick({
                    "5.6": "finished",
                    "5.7": "complete"
                })

            wait_for(
                _get_state,
                delay=1,
                message="wait for report generation finished",
                fail_func=toolbar.refresh(),
                num_sec=300,
            )
 def create(self):
     sel.force_navigate('catalog_item_new', context={'provider_type': self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog})
     tabstrip.select_tab("Request Info")
     template = template_select_form.template_table.find_row_by_cells({
         'Name': self.catalog_name,
         'Provider': self.provider
     })
     sel.click(template)
     web_ui.fill(request_form, {
         'instance_name': self.vm_name,
         'instance_type': self.instance_type,
         'guest_keypair': self.guest_keypair,
         'availability_zone': self.availability_zone,
         'cloud_tenant': self.cloud_tenant,
         'cloud_network': self.cloud_network,
         'security_groups': self.security_groups[0],  # not supporting multiselect now,
                                                      # just take first value
     })
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' % self.name)
示例#9
0
def queue_canned_report(*path):
    """Queue report from selection of pre-prepared reports.

    Args:
        *path: Path in tree after All Reports
    Returns: Value of Run At in the table so the run can be then checked.
    """
    sel.force_navigate("report_canned_info", context={"path": path})
    toolbar.select("Queue")
    flash.assert_no_errors()
    tabstrip.select_tab("Saved Reports")
    queued_at = sel.text(list(records_table.rows())[0].queued_at)

    def _get_state():
        row = records_table.find_row("queued_at", queued_at)
        status = sel.text(row.status).strip().lower()
        assert status != "error", sel.text(row)
        return status == "finished"

    wait_for(
        _get_state,
        delay=1,
        message="wait for report generation finished",
        fail_func=reload_view
    )
    return sel.text(list(records_table.rows())[0].run_at).encode("utf-8")
示例#10
0
def queue_canned_report(*path):
    """Queue report from selection of pre-prepared reports.

    Args:
        *path: Path in tree after All Reports
    Returns: Value of Run At in the table so the run can be then checked.
    """
    sel.force_navigate("report_canned_info", context={"path": path})
    toolbar.select("Queue")
    flash.assert_no_errors()
    tabstrip.select_tab("Saved Reports")

    def _get_state():
        try:
            first_row = list(records_table.rows())[0]
        except IndexError:
            return False
        return sel.text(first_row.status).strip().lower() == "finished"

    wait_for(
        _get_state,
        delay=1,
        message="wait for report generation finished",
        fail_func=reload_view
    )
    return sel.text(list(records_table.rows())[0].run_at).encode("utf-8")
示例#11
0
 def create(self):
     sel.force_navigate('catalog_item_new',
                        context={'provider_type': self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(
         basic_info_form, {
             'name_text': self.name,
             'description_text': self.description,
             'display_checkbox': self.display_in,
             'select_catalog': self.catalog,
             'select_dialog': self.dialog,
             'select_orch_template': self.orch_template,
             'select_provider': self.provider_type
         })
     if self.item_type != "Orchestration":
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", self.domain, "Service",
                                 "Provisioning", "StateMachines",
                                 "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     if (self.catalog_name is not None):
         tabstrip.select_tab("Request Info")
         template = template_select_form.template_table.find_row_by_cells({
             'Name':
             self.catalog_name,
             'Provider':
             self.provider
         })
         sel.click(template)
         request_form.fill(self.provisioning_data)
     sel.click(template_select_form.add_button)
示例#12
0
    def create(self):
        view = navigate_to(self, 'Add')
        # Need to provide the (optional) provider name to the form, not the object
        provider_formvalue = None
        if self.item_type == 'Orchestration':
            provider_formvalue = self.provider.name
        elif self.item_type == 'AnsibleTower':
            provider_formvalue = self.provider
        # For tests where orchestration template is None
        view.before_filling()
        view.fill({
            'name':
            self.name,
            'description':
            self.description,
            'display':
            self.display_in,
            'select_catalog':
            self.catalog.name,
            'select_dialog':
            self.dialog,
            'select_orch_template':
            self.orch_template.template_name if self.orch_template else None,
            'select_provider':
            provider_formvalue,
            'select_config_template':
            self.config_template
        })

        if view.field_entry_point.value == "":
            view.fill({'field_entry_point': 'a'})
            view.tree.click_path("Datastore", self.domain, "Service",
                                 "Provisioning", "StateMachines",
                                 "ServiceProvision_Template",
                                 "CatalogItemInitialization")
            view.apply_button.click()
        if self.appliance.version >= "5.7" and self.item_type == "AnsibleTower":
            view.fill({'retirement_entry_point': 'b'})
            view.tree.click_path("Datastore", self.domain, "Service",
                                 "Retirement", "StateMachines",
                                 "ServiceRetirement", "Generic")
            view.apply_button.click()

        if self.catalog_name is not None \
                and self.provisioning_data is not None \
                and not isinstance(self.provider, NoneType):
            tabstrip.select_tab("Request Info")
            tabstrip.select_tab("Catalog")
            row = view.template_table.row(name=self.catalog_name,
                                          provider=self.provider.name)
            row.click()
            provisioning_view = self.create_view(BasicProvisionFormView)
            provisioning_view.fill_with(self.provisioning_data)

        view.add_button.click()
        view.flash.assert_success_message(
            'Service Catalog Item "{}" was added'.format(self.name))
        view = self.create_view(AllCatalogItemView)
        assert view.is_displayed
示例#13
0
        def _refresh():
            """ The page has no refresh button, so we'll switch between tabs.

            Why this? Selenium's refresh() is way too slow. This is much faster.

            """
            tabs.select_tab("Workers")
            tabs.select_tab("Collect Logs")  # Serve as the refresh
示例#14
0
    def create(self):
        # Create has sequential forms, the first is only the provider type
        navigate_to(self, 'Add')
        # For element not found exception (To be removed)
        sel.sleep(5)
        sel.select("//select[@id='st_prov_type']",
                   self.provider_type or self.item_type or 'Generic')

        sel.wait_for_element(basic_info_form.name_text)
        catalog = fakeobject_or_object(self.catalog, "name", "Unassigned")
        dialog = fakeobject_or_object(self.dialog, "name", "No Dialog")

        # Need to provide the (optional) provider name to the form, not the object
        provider_name = None
        provider_required_types = ['AnsibleTower', 'Orchestration']
        if self.item_type in provider_required_types \
                or self.provider_type in provider_required_types:
            provider_name = self.provider.name
        # For tests where orchestration template is None
        orch_template = None
        if self.orch_template:
            orch_template = self.orch_template.template_name

        fill(basic_info_form, {'name_text': self.name,
                               'description_text': self.description,
                               'display_checkbox': self.display_in,
                               'select_catalog': catalog.name,
                               'select_dialog': dialog.name,
                               'select_orch_template': orch_template,
                               'select_provider': provider_name,
                               'select_config_template': self.config_template})
        if not (self.item_type in provider_required_types):
            sel.click(basic_info_form.field_entry_point)
            if version.current_version() < "5.7":
                dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                                     "StateMachines", "ServiceProvision_Template", "default")
            else:
                entry_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                    "StateMachines", "ServiceProvision_Template", "default")
            sel.click(basic_info_form.apply_btn)
        if version.current_version() >= "5.7" and self.item_type == "AnsibleTower":
            sel.click(basic_info_form.retirement_entry_point)
            entry_tree.click_path("Datastore", self.domain, "Service", "Retirement",
                    "StateMachines", "ServiceRetirement", "Generic")
            sel.click(basic_info_form.apply_btn)
        if self.catalog_name is not None \
                and self.provisioning_data is not None \
                and not isinstance(self.provider, NoneType):
            tabstrip.select_tab("Request Info")
            tabstrip.select_tab("Catalog")
            template = template_select_form.template_table.find_row_by_cells({
                'Name': self.catalog_name,
                'Provider': self.provider.name
            })
            sel.click(template)
            request_form.fill(self.provisioning_data)
        sel.click(template_select_form.add_button)
示例#15
0
 def update(self, updates):
     sel.force_navigate('catalog_bundle_edit',
         context={'catalog': self.catalog, 'catalog_bundle': self})
     fill(basic_info_form, {'name_text': updates.get('name', None),
                            'description_text': updates.get('description', None)})
     tabstrip.select_tab("Resources")
     fill(resources_form, {'choose_resource': updates.get('cat_item', None)},
         action=resources_form.save_button)
     flash.assert_success_message('Catalog Bundle "%s" was saved' % self.name)
示例#16
0
def dashboards():
    """Returns a generator that iterates through the available dashboards"""
    sel.force_navigate("dashboard")
    # We have to click any other of the tabs (glitch)
    # Otherwise the first one is not displayed (O_O)
    tabstrip.select_tab(tabstrip.get_all_tabs()[-1])
    for dashboard_name in tabstrip.get_all_tabs():
        tabstrip.select_tab(dashboard_name)
        yield dashboard_name
示例#17
0
def dashboards():
    """Returns a generator that iterates through the available dashboards"""
    sel.force_navigate("dashboard")
    # We have to click any other of the tabs (glitch)
    # Otherwise the first one is not displayed (O_O)
    tabstrip.select_tab(tabstrip.get_all_tabs()[-1])
    for dashboard_name in tabstrip.get_all_tabs():
        tabstrip.select_tab(dashboard_name)
        yield dashboard_name
示例#18
0
 def update(self, updates):
     navigate_to(self, 'Edit')
     fill(basic_info_form, {'name_text': updates.get('name', None),
                            'description_text':
                            updates.get('description', None)})
     tabstrip.select_tab("Resources")
     fill(resources_form, {'choose_resource':
                           updates.get('cat_item', None)},
          action=resources_form.save_button)
     flash.assert_success_message('Catalog Bundle "{}" was saved'.format(self.name))
示例#19
0
 def create(self):
     sel.force_navigate('catalog_bundle_new')
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog})
     tabstrip.select_tab("Resources")
     fill(resources_form, {'choose_resource': self.cat_item},
         action=resources_form.add_button)
     flash.assert_success_message('Catalog Bundle "%s" was added' % self.name)
示例#20
0
 def update(self, updates):
     sel.force_navigate('catalog_bundle_edit',
                        context={'catalog': self.catalog,
                                 'catalog_bundle': self})
     fill(basic_info_form, {'name_text': updates.get('name', None),
                            'description_text':
                            updates.get('description', None)})
     tabstrip.select_tab("Resources")
     fill(resources_form, {'choose_resource':
                           updates.get('cat_item', None)},
          action=resources_form.save_button)
     flash.assert_success_message('Catalog Bundle "{}" was saved'.format(self.name))
 def systems(self):
     """Returns 'ConfigSystem' objects that are active under this profile"""
     self.navigate()
     # ajax wait doesn't work here
     _header_loc = "//div[contains(@class, 'dhtmlxInfoBarLabel')"\
                   " and contains(normalize-space(text()), 'Configured Systems')]"
     sel.wait_for_element(_header_loc)
     # Unassigned config profile has no tabstrip
     if "unassigned" not in self.name.lower():
         tabs.select_tab("Configured Systems")
     if sel.is_displayed(list_table):
         return [ConfigSystem(row['description'].text, self) for row in list_table.rows()]
     return list()
示例#22
0
 def create(self):
     sel.force_navigate('catalog_item_new', context={'provider_type': self.item_type})
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog})
     tabstrip.select_tab("Request Info")
     template = template_select_form.template_table.find_row_by_cells({
         'Name': self.catalog_name,
         'Provider': self.provider
     })
     sel.click(template)
     request_form.fill(self.provisioning_data)
     sel.click(template_select_form.add_button)
示例#23
0
 def create(self):
     sel.force_navigate('catalog_bundle_new')
     fill(
         basic_info_form, {
             'name_text': self.name,
             'description_text': self.description,
             'display_checkbox': self.display_in,
             'select_catalog': self.catalog,
             'select_dialog': self.dialog
         })
     tabstrip.select_tab("Resources")
     fill(resources_form, {'choose_resource': self.cat_item},
          action=resources_form.add_button)
     flash.assert_success_message('Catalog Bundle "%s" was added' %
                                  self.name)
示例#24
0
 def systems(self):
     """Returns 'ConfigSystem' objects that are active under this profile"""
     self.navigate()
     # ajax wait doesn't work here
     _header_loc = "//div[contains(@class, 'dhtmlxInfoBarLabel')"\
                   " and contains(normalize-space(text()), 'Configured Systems')]"
     sel.wait_for_element(_header_loc)
     # Unassigned config profile has no tabstrip
     if "unassigned" not in self.name.lower():
         tabs.select_tab("Configured Systems")
     if sel.is_displayed(list_table):
         return [
             ConfigSystem(row['description'].text, self)
             for row in list_table.rows()
         ]
     return list()
示例#25
0
 def create(self):
     sel.force_navigate('catalog_item_new', context={'provider_type': self.item_type})
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': self.catalog,
                            'select_dialog': self.dialog})
     if(self.item_type is not "Generic"):
         tabstrip.select_tab("Request Info")
         template = template_select_form.template_table.find_row_by_cells({
             'Name': self.catalog_name,
             'Provider': self.provider
         })
         sel.click(template)
         request_form.fill(self.provisioning_data)
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' % self.name)
示例#26
0
 def update(self, updates):
     view = navigate_to(self, 'BundleEdit')
     tabstrip.select_tab("Resources")
     changed = view.fill({'select_resource': updates.get('catalog_items')})
     if changed:
         view.save_button.click()
     else:
         view.cancel_button.click()
     if changed:
         view.flash.assert_success_message(
             'Catalog Bundle "{}" was saved'.format(updates.get('name', self.name)))
     else:
         view.flash.assert_success_message(
             'Edit of Catalog Bundle"{}" was cancelled by the user'.format(self.name))
     view = self.create_view(DetailsCatalogItemView, override=updates)
     assert view.is_displayed
     view.flash.assert_no_error()
示例#27
0
    def systems(self):
        """Returns 'ConfigSystem' objects that are active under this profile"""
        navigate_to(self, 'Details')
        # ajax wait doesn't work here
        _title_loc = "//span[contains(@id, 'explorer_title_text') " \
                     "and contains(normalize-space(text()), 'Configured Systems')]"
        sel.wait_for_element(_title_loc)

        # Unassigned config profile has no tabstrip
        if "unassigned" not in self.name.lower():
            tabs.select_tab("Configured Systems")

        if sel.is_displayed(page.list_table_config_systems):
            row_key = 'hostname'
            return [ConfigSystem(row[row_key].text, self) for row in
                    page.list_table_config_systems.rows()]
        return list()
示例#28
0
    def create(self):
        view = navigate_to(self, 'Add')
        # Need to provide the (optional) provider name to the form, not the object
        provider_formvalue = None
        if self.item_type == 'Orchestration':
            provider_formvalue = self.provider.name
        elif self.item_type == 'AnsibleTower':
            provider_formvalue = self.provider
        # For tests where orchestration template is None
        view.before_filling()
        view.fill({'name': self.name,
                   'description': self.description,
                   'display': self.display_in,
                   'select_catalog': self.catalog.name,
                   'select_dialog': self.dialog,
                   'select_orch_template': self.orch_template.template_name
                   if self.orch_template else None,
                   'select_provider': provider_formvalue,
                   'select_config_template': self.config_template})

        if view.field_entry_point.value == "":
            view.fill({'field_entry_point': 'a'})
            view.tree.click_path(
                "Datastore", self.domain, "Service", "Provisioning",
                "StateMachines", "ServiceProvision_Template", "CatalogItemInitialization")
            view.apply_button.click()
        if self.appliance.version >= "5.7" and self.item_type == "AnsibleTower":
            view.fill({'retirement_entry_point': 'b'})
            view.tree.click_path(
                "Datastore", self.domain, "Service", "Retirement",
                "StateMachines", "ServiceRetirement", "Generic")
            view.apply_button.click()

        if self.catalog_name is not None \
                and self.provisioning_data is not None \
                and not isinstance(self.provider, NoneType):
            tabstrip.select_tab("Request Info")
            tabstrip.select_tab("Catalog")
            row = view.template_table.row(name=self.catalog_name, provider=self.provider.name)
            row.click()
            request_form.fill(self.provisioning_data)
        view.add_button.click()
        view.flash.assert_success_message('Service Catalog Item "{}" was added'.format(self.name))
        view = self.create_view(AllCatalogItemView)
        assert view.is_displayed
 def update(self, updates):
     view = navigate_to(self, 'BundleEdit')
     changed = view.fill(updates)
     tabstrip.select_tab("Resources")
     view.fill({'select_resource': updates.get('catalog_items', None)},)
     if changed:
         view.save_button.click()
     else:
         view.cancel_button.click()
     if changed:
         view.flash.assert_success_message(
             'Catalog Bundle "{}" was saved'.format(updates.get('name', self.name)))
     else:
         view.flash.assert_success_message(
             'Edit of Catalog Bundle"{}" was cancelled by the user'.format(self.name))
     view = self.create_view(DetailsCatalogItemView, override=updates)
     assert view.is_displayed
     view.flash.assert_no_error()
示例#30
0
 def create(self, cat_items):
     sel.force_navigate('catalog_bundle_new')
     domain = "ManageIQ (Locked)"
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': str(self.catalog),
                            'select_dialog': str(self.dialog)})
     if current_version().is_in_series("5.3"):
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", domain, "Service", "Provisioning",
                                 "StateMachines", "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     tabstrip.select_tab("Resources")
     for cat_item in cat_items:
         fill(resources_form, {'choose_resource': cat_item})
     sel.click(resources_form.add_button)
     flash.assert_success_message('Catalog Bundle "{}" was added'.format(self.name))
示例#31
0
 def create(self, cat_items):
     sel.force_navigate('catalog_bundle_new')
     domain = "ManageIQ (Locked)"
     fill(basic_info_form, {'name_text': self.name,
                            'description_text': self.description,
                            'display_checkbox': self.display_in,
                            'select_catalog': str(self.catalog),
                            'select_dialog': str(self.dialog)})
     if current_version().is_in_series("5.3"):
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", domain, "Service", "Provisioning",
                                 "StateMachines", "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     tabstrip.select_tab("Resources")
     for cat_item in cat_items:
         fill(resources_form, {'choose_resource': cat_item})
     sel.click(resources_form.add_button)
     flash.assert_success_message('Catalog Bundle "{}" was added'.format(self.name))
示例#32
0
 def create(self):
     domain = "ManageIQ (Locked)"
     sel.force_navigate('catalog_item_new',
                        context={'provider_type': self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(
         basic_info_form, {
             'name_text': self.name,
             'description_text': self.description,
             'display_checkbox': self.display_in,
             'select_catalog': self.catalog,
             'select_dialog': self.dialog
         })
     if self.item_type != "Orchestration":
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path("Datastore", domain, "Service",
                                 "Provisioning", "StateMachines",
                                 "ServiceProvision_Template", "default")
         sel.click(basic_info_form.apply_btn)
     tabstrip.select_tab("Request Info")
     template = template_select_form.template_table.find_row_by_cells({
         'Name':
         self.catalog_name,
         'Provider':
         self.provider
     })
     sel.click(template)
     web_ui.fill(
         request_form,
         {
             'instance_name': self.vm_name,
             'instance_type': self.instance_type,
             'guest_keypair': self.guest_keypair,
             'availability_zone': self.availability_zone,
             'cloud_tenant': self.cloud_tenant,
             'cloud_network': self.cloud_network,
             'security_groups':
             self.security_groups[0],  # not supporting multiselect now,
             # just take first value
         })
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' %
                                  self.name)
def test_containers_providers_default_view(button_group, view):
    """ Containers Providers/Projects/Routes/Nodes/Containers/Replicators default view test
        This test checks successful change of default views settings for Containers -->
        Providers/Projects/Routes/Nodes/Containers/Replicators menu
        Steps:
            * Goes to Settings --> My Settings --> Default Views menu and change the default view
             settings of Containers --> Containers Providers/Projects/Routes/Nodes
             /Containers/Replicators
              to Grid/Tile/List view
            * Goes to Compute --> Containers --> Providers and verifies the selected view
        """
    navigate_to(Server, 'MySettings')
    tabs.select_tab("Default Views")
    bg = ButtonGroup(button_group)
    if not bg.active == str(view):
        bg.choose(view)
        sel.click(form_buttons.save)
    navigate_to(mapping[button_group], 'All', use_resetter=False)
    assert tb.is_active(view), "{}'s {} setting failed".format(view, button_group)
示例#34
0
    def systems(self):
        """Returns 'ConfigSystem' objects that are active under this profile"""
        navigate_to(self, 'Details')
        # ajax wait doesn't work here
        _title_loc = "//span[contains(@id, 'explorer_title_text') " \
                     "and contains(normalize-space(text()), 'Configured Systems')]"
        sel.wait_for_element(_title_loc)

        # Unassigned config profile has no tabstrip
        if "unassigned" not in self.name.lower():
            tabs.select_tab("Configured Systems")

        if sel.is_displayed(page.list_table_config_systems):
            row_key = 'hostname'
            return [
                ConfigSystem(row[row_key].text, self)
                for row in page.list_table_config_systems.rows()
            ]
        return list()
示例#35
0
    def systems(self):
        """Returns 'ConfigSystem' objects that are active under this profile"""
        self.navigate()
        # ajax wait doesn't work here
        _title_loc = version.pick({'5.4':
                        "//div[contains(@class, 'dhtmlxInfoBarLabel')"
                        " and contains(normalize-space(text()), 'Configured Systems')]",
                    '5.5': "//span[contains(@id, 'explorer_title_text')"
                            " and contains(normalize-space(text()), 'Configured Systems')]"})
        sel.wait_for_element(_title_loc)

        # Unassigned config profile has no tabstrip
        if "unassigned" not in self.name.lower():
            tabs.select_tab("Configured Systems")

        if sel.is_displayed(page.list_table_config_systems):
            row_key = version.pick({version.LOWEST: 'host name', '5.5': 'hostname'})
            return [ConfigSystem(row[row_key].text, self) for row in
                    page.list_table_config_systems.rows()]
        return list()
示例#36
0
    def create(self):
        sel.force_navigate('catalog_item_new',
                           context={'provider_type': self.item_type})
        sel.wait_for_element(basic_info_form.name_text)
        catalog = fakeobject_or_object(self.catalog, "name", "<Unassigned>")
        dialog = fakeobject_or_object(self.dialog, "name", "<No Dialog>")

        fill(basic_info_form, {'name_text': self.name,
                               'description_text': self.description,
                               'display_checkbox': self.display_in,
                               'select_catalog': catalog.name,
                               'select_dialog': dialog.name,
                               'select_orch_template': self.orch_template,
                               'select_provider': self.provider_type,
                               'select_config_template': self.config_template})
        if self.item_type != "Orchestration" and self.item_type != "AnsibleTower":
            sel.click(basic_info_form.field_entry_point)
            dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                                    "StateMachines", "ServiceProvision_Template", "default")
            sel.click(basic_info_form.apply_btn)
        if self.catalog_name is not None and self.provisioning_data is not None:
            tabstrip.select_tab("Request Info")
            # Address BZ1321631
            tabstrip.select_tab("Environment")
            tabstrip.select_tab("Catalog")
            template = template_select_form.template_table.find_row_by_cells({
                'Name': self.catalog_name,
                'Provider': self.provider
            })
            sel.click(template)
            request_form.fill(self.provisioning_data)
        sel.click(template_select_form.add_button)
示例#37
0
 def create(self):
     view = navigate_to(self, 'BundleAdd')
     domain = "ManageIQ (Locked)"
     view.fill({'name': self.name,
                'description': self.description,
                'display': self.display_in,
                'select_catalog': self.catalog.name,
                'select_dialog': self.dialog})
     if view.field_entry_point.value == "":
         view.fill({'field_entry_point': ''})
         view.tree.click_path(
             "Datastore", domain, "Service", "Provisioning",
             "StateMachines", "ServiceProvision_Template", "CatalogItemInitialization")
         view.apply_button.click()
     tabstrip.select_tab("Resources")
     for cat_item in self.catalog_items:
         view.fill({'select_resource': cat_item})
     view.add_button.click()
     view.flash.assert_success_message('Catalog Bundle "{}" was added'.format(self.name))
     view = self.create_view(AllCatalogItemView)
     assert view.is_displayed
     view.flash.assert_no_error()
示例#38
0
    def queue(self, wait_for_finish=False):
        navigate_to(self, 'Details')
        toolbar.select("Queue")
        flash.assert_no_errors()
        tabstrip.select_tab("Saved Reports")
        if wait_for_finish:
            # Get the queued_at value to always target the correct row
            queued_at = sel.text(list(records_table.rows())[0].queued_at)

            def _get_state():
                navigate_to(self, 'Saved')
                row = records_table.find_row("queued_at", queued_at)
                status = sel.text(row.status).strip().lower()
                assert status != "error", sel.text(row)
                return status == version.pick({"5.6": "finished",
                                               "5.7": "complete"})

            wait_for(
                _get_state,
                delay=1,
                message="wait for report generation finished",
                fail_func=toolbar.refresh(),
                num_sec=300,
            )
示例#39
0
 def create(self):
     sel.force_navigate('catalog_item_new',
                        context={'provider_type': self.item_type})
     fill(
         basic_info_form, {
             'name_text': self.name,
             'description_text': self.description,
             'display_checkbox': self.display_in,
             'select_catalog': self.catalog,
             'select_dialog': self.dialog
         })
     if (self.item_type is not "Generic"):
         tabstrip.select_tab("Request Info")
         template = template_select_form.template_table.find_row_by_cells({
             'Name':
             self.catalog_name,
             'Provider':
             self.provider
         })
         sel.click(template)
         request_form.fill(self.provisioning_data)
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "%s" was added' %
                                  self.name)
示例#40
0
 def create(self):
     domain = "ManageIQ (Locked)"
     sel.force_navigate("catalog_item_new", context={"provider_type": self.item_type})
     sel.wait_for_element(basic_info_form.name_text)
     fill(
         basic_info_form,
         {
             "name_text": self.name,
             "description_text": self.description,
             "display_checkbox": self.display_in,
             "select_catalog": self.catalog,
             "select_dialog": self.dialog,
         },
     )
     if self.item_type != "Orchestration":
         sel.click(basic_info_form.field_entry_point)
         dynamic_tree.click_path(
             "Datastore", domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "default"
         )
         sel.click(basic_info_form.apply_btn)
     tabstrip.select_tab("Request Info")
     # Address BZ1321631
     tabstrip.select_tab("Environment")
     tabstrip.select_tab("Catalog")
     template = template_select_form.template_table.find_row_by_cells(
         {"Name": self.catalog_name, "Provider": self.provider}
     )
     sel.click(template)
     web_ui.fill(
         request_form,
         {
             "instance_name": self.vm_name,
             "instance_type": self.instance_type,
             "guest_keypair": self.guest_keypair,
             "availability_zone": self.availability_zone,
             "cloud_tenant": self.cloud_tenant,
             "cloud_network": self.cloud_network,
             "resource_groups": self.resource_group,
             "virtual_private_cloud": self.virtual_private_cloud,
             "cloud_subnet": self.cloud_subnet,
             "security_groups": self.security_groups[0],  # not supporting multiselect now,
             # just take first value
         },
     )
     sel.click(template_select_form.add_button)
     flash.assert_success_message('Service Catalog Item "{}" was added'.format(self.name))
    def create(self):
        # Create has sequential forms, the first is only the provider type
        navigate_to(self, 'Add')
        sel.select("//select[@id='st_prov_type']",
                   self.provider_type or self.item_type or 'Generic')
        sel.wait_for_element(basic_info_form.name_text)
        catalog = fakeobject_or_object(self.catalog, "name", "Unassigned")
        dialog = fakeobject_or_object(self.dialog, "name", "No Dialog")

        fill(basic_info_form, {'name_text': self.name,
                               'description_text': self.description,
                               'display_checkbox': self.display_in,
                               'select_catalog': catalog.name,
                               'select_dialog': dialog.name,
                               'select_orch_template': self.orch_template,
                               'select_provider': self.provider_type,
                               'select_config_template': self.config_template})
        if sel.text(basic_info_form.field_entry_point) == "":
            sel.click(basic_info_form.field_entry_point)
            if version.current_version() < "5.7":
                dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                                     "StateMachines", "ServiceProvision_Template", "default")
            else:
                entry_tree.click_path("Datastore", self.domain, "Service", "Provisioning",
                                     "StateMachines", "ServiceProvision_Template", "default")
            sel.click(basic_info_form.apply_btn)
        if self.catalog_name is not None and self.provisioning_data is not None:
            tabstrip.select_tab("Request Info")
            # Address BZ1321631
            tabstrip.select_tab("Environment")
            tabstrip.select_tab("Catalog")
            template = template_select_form.template_table.find_row_by_cells({
                'Name': self.catalog_name,
                # HACK to workaround BZ1390209
                # revert back to Provider once it's fixed
                'Deprecated' if BZ(1390209, forced_streams=["5.7", "upstream"]).blocks else
                'Provider': self.provider
            })
            sel.click(template)
            request_form.fill(self.provisioning_data)
        sel.click(template_select_form.add_button)
示例#42
0
 def step(self, *args, **kwargs):
     tabs.select_tab('Default Views')
示例#43
0
        "reports_all":
        [
            lambda ctx: accordion.tree("Reports", "All Reports"),
            {
                "report_add":
                lambda ctx: cfg_btn("Add a new Report"),
            }
        ],

        "report_canned":
        [
            lambda ctx: accordion.tree("Reports", "All Reports", *ctx["path"]),
            {
                "report_canned_info":
                [
                    lambda ctx: tabstrip.select_tab("Report Info"),
                    {
                        # Empty for now
                    },
                ],

                "report_canned_saved": lambda ctx: tabstrip.select_tab("Saved Reports"),
            }
        ],

        "reports_custom":
        lambda ctx: accordion.tree(
            "Reports", "All Reports", "{} (All EVM Groups)".format(
                db.get_yaml_config("vmdb")["server"]["company"]
            ), "Custom",
        ),
示例#44
0
def reload_view():
    """Reloads and keeps on the current tabstrip page"""
    current = tabstrip.get_selected_tab()
    toolbar.select("Reload current display")
    tabstrip.select_tab(current)
示例#45
0
        "reports_all":
        [
            lambda ctx: accordion.tree("Reports", "All Reports"),
            {
                "report_add":
                lambda ctx: cfg_btn("Add a new Report"),
            }
        ],

        "report_canned":
        [
            lambda ctx: accordion.tree("Reports", "All Reports", *ctx["path"]),
            {
                "report_canned_info":
                [
                    lambda ctx: tabstrip.select_tab("Report Info"),
                    {
                        # Empty for now
                    },
                ],

                "report_canned_saved": lambda ctx: tabstrip.select_tab("Saved Reports"),
            }
        ],

        "reports_custom":
        lambda ctx: accordion.tree(
            "Reports", "All Reports", "{} (All EVM Groups)".format(
                db.get_yaml_config("vmdb")["server"]["company"]
            ), "Custom",
        ),
示例#46
0
def reload_view():
    """Reloads and keeps on the current tabstrip page"""
    current = tabstrip.get_selected_tab()
    toolbar.select("Reload current display")
    tabstrip.select_tab(current)
示例#47
0
         lambda ctx: nav_edit(get_path(ctx['tree_item'])),
         'automate_explorer_delete':
         lambda _: cfg_btn('Remove selected Items',
                           invokes_alert=True)
     }
 ],
 'automate_explorer_namespace_new':
 lambda _: cfg_btn('Add a New Namespace'),
 'automate_explorer_class_new':
 lambda _: cfg_btn('Add a New Class'),
 'automate_explorer_method_edit':
 lambda _: cfg_btn('Edit this Method'),
 'automate_explorer_instance_edit':
 lambda _: cfg_btn('Edit this Instance'),
 'automate_explorer_methods': [
     lambda _: select_tab('Methods'), {
         'automate_explorer_method_new':
         lambda _: cfg_btn('Add a New Method'),
         'automate_explorer_method_table_select':
         lambda ctx: table_select(ctx['table_item'].name)
     }
 ],
 'automate_explorer_instances': [
     lambda _: select_tab('Instances'), {
         'automate_explorer_instance_new':
         lambda _: cfg_btn('Add a New Instance'),
         'automate_explorer_instance_table_select':
         lambda ctx: table_select(ctx['table_item'].name)
     }
 ],
 'automate_explorer_schema': [
示例#48
0
 def step(self):
     tabs.select_tab("Visual")
示例#49
0
         {
             'automate_explorer_table_select':
             [lambda ctx: table_select(ctx['table_item'].name_in_table),
              {
                  'automate_explorer_edit':
                  lambda context: context.tree_item.nav_edit(),
                  'automate_explorer_delete':
                  lambda _: cfg_btn('Remove selected Items', invokes_alert=True)}],

             'automate_explorer_namespace_new': lambda _: cfg_btn('Add a New Namespace'),
             'automate_explorer_domain_new': lambda _: cfg_btn('Add a New Domain'),
             'automate_explorer_class_new': lambda _: cfg_btn('Add a New Class'),
             "automate_explorer_domain_edit": lambda _: cfg_btn("Edit this Domain"),
             'automate_explorer_method_edit': lambda _: cfg_btn('Edit this Method'),
             'automate_explorer_instance_edit': lambda _: cfg_btn('Edit this Instance'),
             'automate_explorer_methods': [lambda _: select_tab('Methods'),
              {
                  'automate_explorer_method_new': lambda _: cfg_btn('Add a New Method'),
                  'automate_explorer_method_table_select':
                  lambda ctx: table_select(ctx['table_item'].name_in_table)}],

             'automate_explorer_instances': [lambda _: select_tab('Instances'),
              {
                  'automate_explorer_instance_new': lambda _: cfg_btn('Add a New Instance'),
                  'automate_explorer_instance_table_select':
                  lambda ctx: table_select(ctx['table_item'].name_in_table)}],

             'automate_explorer_schema': [lambda _: select_tab("Schema"),
             {
                 'automate_explorer_schema_edit': lambda _: cfg_btn("Edit selected Schema")
             }]}],
示例#50
0
 def step(self):
     accordion.tree(
         "Reports", "All Reports", "{} (All EVM Groups)".format(
             self.obj.appliance.company_name), "Custom",
         self.obj.menu_name)
     tabstrip.select_tab("Report Info")
示例#51
0
 def step(self):
     tabstrip.select_tab("Saved Reports")
示例#52
0
 def step(self):
     tabstrip.select_tab("Report Info")
示例#53
0
 def step(self):
     tabstrip.select_tab("Saved Reports")
示例#54
0
""" Module dealing with Configure/Tasks section.
"""

from cfme import web_ui as ui
import cfme.fixtures.pytest_selenium as sel
import cfme.web_ui.tabstrip as tabs
from cfme.web_ui import Form, Region, CheckboxTable, fill, paginator
from cfme.web_ui.menu import nav
from utils.timeutil import parsetime
from utils.wait import wait_for, TimedOutError
from utils.version import LOWEST


nav.add_branch("tasks",
    dict(
        tasks_my_vm=lambda _: tabs.select_tab("My VM Analysis Tasks"),
        tasks_my_other_ui=lambda _: tabs.select_tab("My Other UI Tasks"),
        tasks_all_vm=lambda _: tabs.select_tab("All VM Analysis Tasks"),
        tasks_all_other=lambda _: tabs.select_tab("All Other Tasks"),
    )
)

buttons = Region(
    locators=dict(
        default={LOWEST: "//*[@id='buttons_off']/li[3]/a/img",
                 '5.4': "//*[@id='buttons_off']/a"},
        apply={LOWEST: "//*[@id='buttons_on']/li[1]/a/img",
               '5.4': "//*[@id='buttons_on']/a[1]"},
        reset={LOWEST: "//*[@id='buttons_on']/li[2]/a/img",
               '5.4': "//*[@id='buttons_on']/a[2]"}
    )
示例#55
0
 def step(self):
     tabs.select_tab("Default Filters")
示例#56
0
from utils.version import LOWEST, pick

get_tab_my = lambda: pick({
    LOWEST: "My VM Analysis Tasks",
    '5.6': "My VM and Container Analysis Tasks",
})

get_tab_all = lambda: pick({
    LOWEST: "All VM Analysis Tasks",
    '5.6': "All VM and Container Analysis Tasks",
})

nav.add_branch(
    "tasks",
    dict(
        tasks_my_vm=lambda _: tabs.select_tab(get_tab_my()),
        tasks_my_other_ui=lambda _: tabs.select_tab("My Other UI Tasks"),
        tasks_all_vm=lambda _: tabs.select_tab(get_tab_all()),
        tasks_all_other=lambda _: tabs.select_tab("All Other Tasks"),
    ))

buttons = Region(locators=dict(default={
    LOWEST: "//*[@id='buttons_off']/li[3]/a/img",
    '5.4': "//*[@id='buttons_off']/a"
},
                               apply={
                                   LOWEST: "//*[@id='buttons_on']/li[1]/a/img",
                                   '5.4': "//*[@id='buttons_on']/a[1]"
                               },
                               reset={
                                   LOWEST: "//*[@id='buttons_on']/li[2]/a/img",
示例#57
0
""" Module dealing with Configure/Tasks section.

Todo: Finish the rest of the things.
"""

import cfme.fixtures.pytest_selenium as sel
import cfme.web_ui.tabstrip as tabs
from cfme.web_ui import Form, Region, Select, CheckboxTable, fill, paginator
from cfme.web_ui.menu import nav
from utils.timeutil import parsetime
from utils.wait import wait_for, TimedOutError

nav.add_branch(
    "tasks",
    dict(
        tasks_my_vm=lambda _: tabs.select_tab("My VM Analysis Tasks"),
        tasks_my_other_ui=lambda _: tabs.select_tab("My Other UI Tasks"),
        tasks_all_vm=lambda _: tabs.select_tab("All VM Analysis Tasks"),
        tasks_all_other=lambda _: tabs.select_tab("All Other Tasks"),
    ))

buttons = Region(locators=dict(default="//*[@id='buttons_off']/li[3]/a/img",
                               apply="//*[@id='buttons_on']/li[1]/a/img",
                               reset="//*[@id='buttons_on']/li[2]/a/img"))

filter_form = Form(fields=[
    ("zone", Select("//select[@id='chosen_zone']")),
    ("user", Select("//select[@id='user_choice']")),
    ("time_period", Select("//select[@id='time_period']")),
    ("task_status_queued", "//input[@id='queued']"),
    ("task_status_running", "//input[@id='running']"),
示例#58
0
cfg_btn = partial(toolbar.select, "Configuration")

nav.add_branch(
    "reports",
    {
        "reports_all": [
            lambda ctx: accordion.tree("Reports", "All Reports"), {
                "report_add": lambda ctx: cfg_btn("Add a new Report"),
            }
        ],
        "report_canned": [
            lambda ctx: accordion.tree("Reports", "All Reports", *ctx["path"]),
            {
                "report_canned_info": [
                    lambda ctx: tabstrip.select_tab("Report Info"),
                    {
                        # Empty for now
                    },
                ],
                "report_canned_saved":
                lambda ctx: tabstrip.select_tab("Saved Reports"),
            }
        ],
        "reports_custom":
        lambda ctx: accordion.tree(
            "Reports",
            "All Reports",
            "{} (All EVM Groups)".format(
                db.get_yaml_config("vmdb")["server"]["company"]),
            "Custom",