예제 #1
0
def add_latest_firmware_bundle(fwbundles):
    # Adding the latest firmware bundles to the appliance
    logger.debug("Adding the latest firmware bundles")
    navigate()
    uploaded = 0
    for fwbundle in fwbundles:
        spp_repo = fwbundle.repo
        spp_ext = fwbundle.ext
        spp_filter = fwbundle.filter
        logger.debug(
            "Adding the latest firmware bundle with repo [%s] extension [%s] and filter [%s]"
            % (spp_repo, spp_ext, spp_filter))
        fwbundle.spp = VsphereKeywords().get_LatestBuild_name(
            spp_repo, "", spp_ext, spp_filter)
        logger.debug("Latest firmware bundle is [%s]" % fwbundle.spp)
        uploaded = _add_firmware_bundle(fwbundle, uploaded)
        CommonOperationFirmwareBundle.refresh_browser_on_firmware_page()

    if len(fwbundles) == uploaded:
        logger.debug(
            "SUCCESS : Added all the Firmware bundles mentioned in the data file."
        )
        return True
    else:
        logger.warn(
            "FAILURE : Not able to add all Firmware Bundles as mentioned in the data file."
        )
        ui_lib.get_s2l().capture_page_screenshot()
        return False
 def storage3par_create_host(self,
                             name,
                             iscsi_names=None,
                             fc_wwns=None,
                             optional=None,
                             strict=False):
     """
     Create a Host
     Note - passing strict=True will raise an exception if the host exists
     See createHost in https://pythonhosted.org/python-3parclient/api/hpe3parclient/client.html
     Example:
          | Storage3PAR Create Host | name |
     """
     try:
         self.client.createHost(name,
                                iscsiNames=iscsi_names,
                                FCWwns=fc_wwns,
                                optional=optional)
     except exceptions.HTTPConflict as ex:
         if strict:
             raise ex
         else:
             logger.warn(ex)
     if strict:
         asserts.assert_true(self.client.getHost(name),
                             'Failed to create 3PAR host "{}"'.format(name))
예제 #3
0
 def verify_dashboard_panels_removed(cls, dashboard_panel, timeout=5, fail_if_false=False):
     logger.debug("verify dashboard panels removed [%s]" % dashboard_panel)
     if not ui_lib.wait_for_element_notvisible(GeneralDashboardElements.ID_DASHBOARD_PANEL % dashboard_panel, timeout, fail_if_false):
         logger.warn("[%s] has not been removed!" % dashboard_panel)
         return False
     else:
         return True
def delete_storage_volume_template(volume_template, fail_if_false=True):
    select_storage_template(volume_template)
    DeleteVolumeTemplates.select_actions_delete()
    DeleteVolumeTemplates.wait_delete_dialog_shown()
    DeleteVolumeTemplates.click_yes_delete_button()
    DeleteVolumeTemplates.wait_delete_dialog_disappear()
    FusionUIBase.show_activity_sidebar()
    FusionUIBase.wait_activity_action_ok(volume_template,
                                         message="Delete",
                                         timeout=20)
    FusionUIBase.show_activity_sidebar()
    if CommonOperationVolumeTemplates.wait_volume_template_show_not_found(
            volume_template, timeout=15, fail_if_false=False):
        logger.info(
            "Volume template status appear as 'not found', remove storage system {0} successfully."
            .format(volume_template))
        return True
    elif CommonOperationVolumeTemplates.verify_volume_template_not_exist(
            volume_template, timeout=5, fail_if_false=False):
        logger.info(
            "Remove volume template {0} successfully".format(volume_template))
        return True
    else:
        if fail_if_false is True:
            ui_lib.fail_test("The volume template does not disappear in 20s!")
        else:
            logger.warn("The volume template does not disappear in 20s!")
            return False
def remove_directory_user_or_group(*user_obj):
    '''
    remove active directory or ldap users and groups listed in the dcs_data.xml file
    '''

    # retrieving data from data file
    if isinstance(user_obj, test_data.DataObj):
        user_obj = [user_obj]
    elif isinstance(user_obj, tuple):
        user_obj = list(user_obj)
        navigate()
    error = 0
    for userGroup in user_obj:
        if (userGroup.has_property("domainName")):
            GeneralUserandGroups.click_user(userGroup.name,
                                            userGroup.domainName, True)
            RemoveUser.click_action_remove_user_button()
            # make sure the remove dialog is displayed
            RemoveUser.wait_remove_user_dialog_shown()

            # delete the user
            RemoveUser.click_yes_remove_button()
            RemoveUser.wait_cannot_remove_user_dialog_disappear()

            if not VerifyUser.verify_user_not_exist(
                    userGroup.name, userGroup.domainName, True):
                logger.warn("Not able to remove group %s" % userGroup.name)
                error += 1
            else:
                logger.info("Successfully removed %s" % userGroup.name)

    if error > 0:
        return False
    else:
        return True
예제 #6
0
def verify_server_hardware_type(hardware_types_obj):
    """ Delete Hardware Type

    Arguments:
      <servertype>
          name*                     --  Specify server hardware type name should be verified.

    * Required Arguments

    Example:
        data/enclosures -> @{TestData.servertypes.VerifyServerTypes.Gen8}}
        data/enclosures -> @{TestData.servertypes.VerifyServerTypes.Gen9}}
        <servertypes>
            <VerifyServerTypes>
                <Gen8>
                   <servertype name="BL465c Gen8 2" />
                </Gen8>>
                <Gen9>
                    <servertype name="DL180 Gen9 1" />
                </Gen9>
            </VerifyServerTypes>
        </servertypes>
    """

    navigate()

    count = 0

    for n, sht_obj in enumerate(hardware_types_obj):
        logger.info("{2} No: {0} --- Total: {1} {2}".format(
            (n + 1), len(hardware_types_obj), '-' * 14))
        logger.info("Verifying a server hardware type is used by ")

        if not select_server_hardware_type(sht_obj.name):
            continue

        # check the sht name is used by server hardware
        if not _click_used_by_server_hardware(sht_obj.name):
            continue

        # navigate to server hardware type page, continue the remaining verification
        navigate()
        select_server_hardware_type(sht_obj.name)

        # check the sht name is used by server profile
        if not _click_used_by_server_profile(sht_obj.name):
            continue

        count += 1

    if count == 0:
        msg = "No target server hardware type exists!"
        logger.warn(msg)
        return False

    if count != len(hardware_types_obj):
        logger.warn("Not able to verify all server hardware type!")
        return False

    return True
def remove_san_manager(name, fail_if_false=True):
    select_san_manager(name)
    RemoveSANMangers.select_action_remove()
    RemoveSANMangers.wait_remove_san_manager_dialog_shown()
    RemoveSANMangers.click_yes_remove()
    RemoveSANMangers.wait_remove_san_manager_dialog_disappear()
    FusionUIBase.show_activity_sidebar()
    FusionUIBase.wait_activity_action_ok(name,
                                         "Remove SAN manager",
                                         timeout=50)
    FusionUIBase.show_activity_sidebar()
    if CommonOperationSANMangers.wait_san_manager_show_not_found(
            name, timeout=15, fail_if_false=False):
        logger.info(
            "SAN manager status appear as 'not found', remove san manager {0} successfully."
            .format(name))
        return True
    elif CommonOperationSANMangers.verify_san_manager_not_exist(
            name, timeout=5, fail_if_false=False):
        logger.info("Remove SAN manager {0} successfully".format(name))
        return True
    else:
        if fail_if_false is True:
            ui_lib.fail_test("The SAN manager does not disappear in 20s!")
        else:
            logger.warn("The SAN manager does not disappear in 20s!")
 def storage3par_create_vlun(self,
                             volume_name,
                             lun=None,
                             hostname=None,
                             port_pos=None,
                             strict=False,
                             auto=False):
     """
     Create a volume VLUN
     When creating a VLUN, the volumeName is required.
     The lun member is not required if auto is set to True. Either hostname or portPos (or both in the case of matched sets) is also required.
     The noVcn and overrideLowerPriority members are optional.
     Parameters:
         volumeName (str) - the name of the volume to be exported
         lun (int) - The new LUN id
         hostname (str) - Name of the host which the volume is to be exported.
         portPos (dict) - System port of VLUN exported to.  It includes node number, slos number, and card port number
             portPos = { 'node': 1,   # System node (0-7)
                         'slot': 2,   # PCI bus slot in the node (0-5)
                         'port': 1}   # Port number on the FC card (0-4)
     Note - passing strict=True will raise an exception if the VLUN exists
     Example:
          | Storage3PAR Get VLUN | my_volume |
     """
     try:
         self.client.createVLUN(volumeName=volume_name,
                                lun=lun,
                                hostname=hostname,
                                portPos=port_pos,
                                auto=auto)
     except exceptions.HTTPConflict as ex:
         if strict:
             raise ex
         else:
             logger.warn(ex)
예제 #9
0
def _click_used_by_server_hardware(sht_name):

    from FusionLibrary.ui.business_logic.servers.serverhardware import CommonOperationServerHardware

    try:
        CommonOperationServerHardwareType.click_used_by_server_hardware()
    except:
        logger.warn(
            "Server hardware type [ %s ] are not used by any server hardware" %
            sht_name)
        return False

    server_name_list = CommonOperationServerHardware.get_server_hardware_list()
    for server_name in server_name_list:
        CommonOperationServerHardware.click_server_hardware(server_name)
        FusionUIBase.select_view_by_name(view_name='Hardware',
                                         timeout=8,
                                         fail_if_false=False)
        got_sht_name = CommonOperationServerHardware.get_server_hardware_type(
            server_name, fail_if_false=False)
        if got_sht_name != sht_name:
            ui_lib.get_s2l().capture_page_screenshot()
            logger.warn(
                "Server hardware [%s] doesn't have server hardware type [%s]" %
                (server_name, sht_name))
            return False

        logger.info("Server hardware [%s] has server hardware type [%s]" %
                    (server_name, sht_name))

    return True
예제 #10
0
def _click_used_by_server_profile(sht_name):
    # check server hardware type information by server profile
    from FusionLibrary.ui.business_logic.servers.serverprofiles import CommonOperationServerProfile

    try:
        CommonOperationServerHardwareType.click_used_by_server_profile()
    except:
        logger.warn(
            "Server hardware type [ %s ] are not used by any server profile" %
            sht_name)
        return False

    server_profile_list = CommonOperationServerProfile.get_server_profile_list(
    )

    for sp_name in server_profile_list:
        CommonOperationServerProfile.click_server_profile(sp_name)
        FusionUIBase.select_view_by_name('General', fail_if_false=False)
        got_sht_name = CommonOperationServerProfile.get_server_hardware_type_of_server_profile(
            sp_name, fail_if_false=False)
        if got_sht_name != sht_name:
            ui_lib.get_s2l().capture_page_screenshot()
            logger.warn(
                "Server profile [%s] doesn't have server hardware type [%s]" %
                (sp_name, sht_name))
            return False
        logger.info("Server profile [%s] has server hardware type [%s]" %
                    (sp_name, sht_name))

    return True
def refresh_san_managers(*sanmanager_obj):
    FusionUIBase.navigate_to_section(SectionType.SAN_MANAGERS)
    if isinstance(sanmanager_obj, test_data.DataObj):
        sanmanager_obj = [sanmanager_obj]
    elif isinstance(sanmanager_obj, tuple):
        sanmanager_obj = list(sanmanager_obj)
    count = 0

    for n, sanmanager in enumerate(sanmanager_obj):
        logger.info("{2} No: {0} --- Total: {1} {2}".format(
            (n + 1), len(sanmanager_obj), '-' * 14))
        name = sanmanager.sanip
        logger.info("Refreshing a san manager with name '{0}'".format(name))
        if not select_san_manager(name):
            count += 1
            continue
        RefreshSANMangers.select_action_refresh()
        FusionUIBase.show_activity_sidebar()
        FusionUIBase.wait_activity_action_ok(name,
                                             "Refresh SAN manager",
                                             timeout=30)
        FusionUIBase.show_activity_sidebar()
        CommonOperationSANMangers.wait_san_manager_status_ok(name)
        logger.info("Refresh san manager {0} successfully".format(name))
    if count > 0:
        logger.warn(
            "Failure: Not able to refresh some of san managers, please check warning messages."
        )
        return False

    return True
예제 #12
0
def delete_networks(*net_obj):
    """ Delete  Network """
    FusionUIBase.navigate_to_section(SectionType.NETWORKS)
    if isinstance(net_obj, test_data.DataObj):
        net_obj = [net_obj]
    elif isinstance(net_obj, tuple):
        net_obj = list(net_obj)

    count = 0
    for n, net in enumerate(net_obj):
        logger.info("{2} No: {0} --- Total: {1} {2}".format((n + 1),
                                                            len(net_obj),
                                                            '-' * 14))
        logger.info("Deleting a network with name %s" % net.name)
        if not select_network(net.name):
            count += 1
            continue

        delete_network(net.name)
    if count > 0:
        logger.warn(
            "Not able to delete some of networks, please check warning message"
        )
        return False
    return True
예제 #13
0
def assign_scope_bulk_networks(*scope_obj):
    """ Edit Scope    """
    logger.info("Edit Scope")
    navigate()
    if isinstance(scope_obj, test_data.DataObj):
        scope_obj = [scope_obj]
    elif isinstance(scope_obj, tuple):
        scope_obj = list(scope_obj[0])
    fail_if_exist = 0
    #    Looping to edit all the resources present in the resources.txt file
    for scope in scope_obj:
        logger.info("Editing scope %s" % scope.name)
        if scope.has_property("new_name"):
            if scope.new_name != scope.name and VerifyScopes.verify_scope_existed(scope.new_name, 5, False):
                fail_if_exist += 1
                logger.warn("scope %s already exists, can't edit scope" % scope.new_name)
                continue

        #    Selecting the given scope
        if CommonOperationScopes.select_scope(scope.name):
            #    Clicking on edit button and verifying the edit options page
            CommonOperationScopes.wait_for_scopes_load()
            EditScopes.click_edit_scope_button()
            EditScopes.wait_edit_scope_dialog_open()
            EditScopes.click_add_resources_button()
            EditScopes.wait_add_resources_dialog_open()
            EditScopes.input_and_select_resource_category(scope.category)
            CommonOperationScopes.load_bulk_enets()
            EditScopes.click_add_button()
            EditScopes.wait_add_resources_dialog_close()
            EditScopes.click_ok_button()
            EditScopes.wait_edit_scope_dialog_close()
    if fail_if_exist > 0:
        return FusionUIBase.fail_test_or_return_false("Failed to assign bulk resource")
    return True
예제 #14
0
    def configure_network(self, body):
        """
        Creates the vSwitch or distributed vSwitch depending on the type
        provided and its port groups.
        :param dict body: JSON body
        :return list:  List of results for each network configuration
        """
        if not body.get('config', []):
            log.warn('No network configurations found')
            return self.results

        if not self._validate_and_set_host(body.get('host')):
            return self.results

        for net in body['config']:
            if not net.get('name'):
                log.warn('Missing required attribute: name')
                self.results.append({'ports': 'Unknown', 'status': 'Fail'})
                continue

            if net.get('type') == 'vss':
                self._configure_vswitch(net)
            elif net.get('type') == 'vds':
                self._configure_distributed_switch(net)
            else:
                log.info('Unknown network type provided {}'.format(
                    net['type']))
                self.results.append({'ports': net['name'], 'status': 'Fail'})

        log.debug('Results\n{}'.format(self.results))

        return self.results
    def wait_storage_pool_status_error(cls, storage_pool, storage_system_name, timeout=10, fail_if_false=True):
        '''
            Wait for the storage pool status to be error
        '''
        start = datetime.now()
        logger.debug("wait storage system '%s' status is ok or warning" % storage_pool)
        while (datetime.now() - start).total_seconds() < timeout:
            if ui_lib.wait_for_element_visible(GeneralStoragePoolElements.ID_STATUS_STORAGE_POOL_OK % (storage_pool, storage_system_name), timeout=5, fail_if_false=False):
                logger.debug("storage system status is ok")
                return False
            elif ui_lib.wait_for_element_visible(GeneralStoragePoolElements.ID_STATUS_STORAGE_POOL_WARN % (storage_pool, storage_system_name), timeout=5, fail_if_false=False):
                logger.debug("storage system status is warning")
                return False
            elif ui_lib.wait_for_element_visible(GeneralStoragePoolElements.ID_STATUS_STORAGE_POOL_ERROR % (storage_pool, storage_system_name), timeout=5, fail_if_false=False):
                logger.debug("storage system status is error")
                return True
            else:
                logger.debug("storage system status is unknown")
                continue

        err_msg = "Timeout for waiting for the status of Storage Pool [ %s ] to change to [ error ]." % storage_pool
        if fail_if_false is False:
            logger.warn(err_msg)
            return False
        else:
            ui_lib.fail_test(err_msg)
예제 #16
0
 def oa_cli_reset_blade(self, encl):
     if self._reset_blade(encl) is False:
         logger.warn("Failed to reset blade(s) on enclosure '%s'" %
                     encl.oa1hostname)
         raise AssertionError
     else:
         logger.info("Successfully reset blade(s) on enclosure '%s'" %
                     encl.oa1hostname)
 def verify_sht_exist(cls, hardware_type, timeout=10, fail_if_false=True):
     logger.debug("verify [ Server hardware type '%s' ] is existing" % hardware_type)
     locator = GeneralServerHardwareTypeElements.ID_TABLE_SHT % hardware_type
     ui_lib.scroll_into_view(locator)
     if ui_lib.wait_for_element_visible(locator, timeout, fail_if_false):
         return True
     else:
         logger.warn("failed to wait for server hardware type '%s' to be visible within %s second(s)" % (hardware_type, timeout))
         return False
 def get_notification_message(cls, log_prefix="debug", timeout=5):
     '''
         Get the notification message
     '''
     msg = FusionUIBase.get_text(GeneralStoragePoolElements.ID_TEXT_NOTIFICATION_MESSAGE, timeout)
     resolution = FusionUIBase.get_text(GeneralStoragePoolElements.ID_TEXT_NOTIFICATION_RESOLUTION, timeout)
     if log_prefix == "debug":
         logger.debug('Message: %s \nResolution: %s' % (msg, resolution))
     else:
         logger.warn('Message: %s \nResolution: %s' % (msg, resolution))
def edit_san_managers(*sanmanager_obj):
    """ Edit san managers    """
    FusionUIBase.navigate_to_section(SectionType.SAN_MANAGERS)
    if isinstance(sanmanager_obj, test_data.DataObj):
        sanmanager_obj = [sanmanager_obj]
    elif isinstance(sanmanager_obj, tuple):
        sanmanager_obj = list(sanmanager_obj)
    count = 0
    for n, sanmanager in enumerate(sanmanager_obj):
        logger.info("{2} No: {0} --- Total: {1} {2}".format(
            (n + 1), len(sanmanager_obj), '-' * 14))
        logger.info("Editing a san manager with name '{0}'".format(
            sanmanager.sanip))
        if not select_san_manager(sanmanager.sanip):
            count += 1
            continue

        EditSANMangers.select_action_edit()
        EditSANMangers.wait_edit_san_manager_dialog_shown()
        if getattr(sanmanager, 'newsanip', '') != '':
            name = sanmanager.newsanip
            EditSANMangers.input_ip_address_or_host_name(sanmanager.newsanip)
        else:
            name = sanmanager.sanip
        if getattr(sanmanager, 'port', '') != '':
            EditSANMangers.input_port(sanmanager.port)
        if getattr(sanmanager, 'sanmanagerssl', '') != '':
            if sanmanager.sanmanagerssl.lower() == 'true':
                EditSANMangers.tick_use_ssl()
            else:
                EditSANMangers.untick_use_ssl()
        if getattr(sanmanager, 'username', '') != '':
            EditSANMangers.input_user_name(sanmanager.username)
        if getattr(sanmanager, 'password', '') != '':
            EditSANMangers.input_password(sanmanager.password)

        EditSANMangers.click_ok_button()
        status, msg = FusionUIBase.get_error_message_from_dialog(timeout=5)
        if status is True:
            ui_lib.fail_test(msg)
        EditSANMangers.wait_edit_san_manager_dialog_disappear(timeout=10)
        FusionUIBase.show_activity_sidebar()
        FusionUIBase.wait_activity_action_ok(sanmanager.sanip,
                                             "Update SAN manager",
                                             timeout=30)
        FusionUIBase.show_activity_sidebar()
        CommonOperationSANMangers.wait_san_manager_status_ok(name)
        logger.info("Edit san manager {0} successfully".format(
            sanmanager.sanip))
    if count > 0:
        logger.warn(
            "Not able to edit some of SAN managers, please check warning messages!"
        )
        return False
    return True
예제 #20
0
def edit_scope(*scope_obj):
    """ Edit Scope    """
    logger.info("Edit Scope")
    navigate()
    if isinstance(scope_obj, test_data.DataObj):
        scope_obj = [scope_obj]
    elif isinstance(scope_obj, tuple):
        scope_obj = list(scope_obj[0])
    fail_if_exist = 0
    #    Looping to edit all the resources present in the resources.txt file
    for scope in scope_obj:
        logger.info("Editing scope %s" % scope.name)
        if scope.has_property("new_name"):
            if scope.new_name != scope.name and VerifyScopes.verify_scope_existed(scope.new_name, 5, False):
                fail_if_exist += 1
                logger.warn("scope %s already exists, can't edit scope" % scope.new_name)
                continue

        have_resource = False
        #    Selecting the given scope
        if CommonOperationScopes.select_scope(scope.name):
            #    Clicking on edit button and verifying the edit options page
            CommonOperationScopes.wait_for_scopes_load()
            EditScopes.click_edit_scope_button()
            EditScopes.wait_edit_scope_dialog_open()
            if scope.has_property("new_name"):
                data = _Verify_Parameter(scope.new_name, "Scope Name")
                if not (data == "none" or data == ""):
                    EditScopes.input_name(data)
            #    deleting resources
            if hasattr(scope, 'remove_resources'):
                for n, resource in enumerate(scope.remove_resources):
                    have_resource = True
                    logger.info("Deleting resource %s from scope" % resource.name)
                    #   EditScopes.remove_resources_by_name(resource.name)
                    EditScopes.click_remove_resources_button()
                    EditScopes.input_and_select_remove_resource_category(resource.category)
                    EditScopes.click_remove_resources_button_from_scope()
                    #   EditScopes.click_ok_button()
                    #   VerifyScopes.verify_resource_deleted(resource.name)
            #    add resources
            if hasattr(scope, 'add_resources'):
                for n, resource in enumerate(scope.add_resources):
                    have_resource = _Add_Resource_To_Scope(resource) or have_resource
            EditScopes.click_ok_button()
            EditScopes.wait_edit_scope_dialog_close()

        if have_resource:
            FusionUIBase.show_activity_sidebar()
            FusionUIBase.wait_activity_action_ok(scope.name, 'Update', timeout=120, fail_if_false=True)
            FusionUIBase.show_activity_sidebar()

    if fail_if_exist > 0:
        return False
    return True
def select_san_manager(name):
    """ Select san manager  """
    logger.info("Selecting a SAN manager with name {0}".format(name))
    if CommonOperationSANMangers.verify_san_manager_exist(name,
                                                          fail_if_false=False):
        CommonOperationSANMangers.click_san_manager(name)
        CommonOperationSANMangers.wait_san_manager_selected(name)
        return True
    else:
        logger.warn("SAN manager '{0}' does not exist".format(name))
        return False
예제 #22
0
def refresh_storage_systems(*storagesys_obj):
    """ Refresh Storage Systems

    Arguments:


    * Required Arguments

    Example:


    """
    FusionUIBase.navigate_to_section(SectionType.STORAGE_SYSTEMS)
    if isinstance(storagesys_obj, test_data.DataObj):
        storagesys_obj = [storagesys_obj]
    elif isinstance(storagesys_obj, tuple):
        storagesys_obj = list(storagesys_obj)

    count = 0
    for n, storage in enumerate(storagesys_obj):
        logger.info("{2} No: {0} --- Total: {1} {2}".format(
            (n + 1), len(storagesys_obj), '-' * 14))
        if getattr(storage, 'simplename', '') != '':
            storage_simple_name = storage.simplename
        else:
            storage_simple_name = storage.name.lower().split('.')[0]
        logger.info("Refreshing a storage system with name %s" %
                    storage_simple_name)
        if not select_storage_system(storage_simple_name):
            count += 1
            continue
        RefreshStorageSystems.select_actions_refresh()
        # RefreshStorageSystems.wait_general_state_refreshing(timeout=8)
        FusionUIBase.show_activity_sidebar()
        FusionUIBase.wait_activity_action_ok(storage_simple_name,
                                             "Refresh",
                                             timeout=30)
        FusionUIBase.show_activity_sidebar()
        if storage.StorageSystemType == 'StoreServ':
            RefreshStorageSystems.wait_storeserv_state_managed(timeout=10)
        elif storage.StorageSystemType == 'StoreVirtual':
            RefreshStorageSystems.wait_storevirtual_state_managed(timeout=10)
        else:
            RefreshStorageSystems.wait_nimble_state_managed(timeout=10)
        CommonOperationStorageSystems.wait_storage_system_status_ok(
            storage_simple_name)
        logger.info("Refresh storage system {0} successfully".format(
            storage_simple_name))
    if count > 0:
        logger.warn(
            "Failure: Not able to refresh some of storage systems, please check all warning messages"
        )
        return False
    return True
예제 #23
0
 def get_notification_message(cls, log_prefix="debug", timeout=5):
     """
         On the Volume Sets Page, get the notification message
     """
     msg = FusionUIBase.get_text(
         GeneralVolumeSetElements.ID_TEXT_NOTIFICATION_MESSAGE, timeout)
     resolution = FusionUIBase.get_text(
         GeneralVolumeSetElements.ID_TEXT_NOTIFICATION_RESOLUTION, timeout)
     if log_prefix == "debug":
         logger.debug('Message: %s \nResolution: %s' % (msg, resolution))
     else:
         logger.warn('Message: %s \nResolution: %s' % (msg, resolution))
def create_alert_filter_with_predefined_criteria(*alert_obj):
    """ Create alert filter with alert criteria and Scope
    Arguments:
        name*       --  Name of alert as a string.
        email*      --  Email for sending the notification.
        scope*      --  Scope name.
        criteria*   --  Alert criteria is the alert state with which we can filter the alert.
    * Required Arguments

    Example:
        date/alerts-> @{TestData.alerts}
        <alertFilter_with_predefined_criteria>
        <alert name="Alert1" criteria="predefined" email="*****@*****.**">
            <add_predefined_criteria>
                <criteria status="All critical or warning alerts"/>
            </add_predefined_criteria>
            <add_scope>
                <scope name="Scope 1"/>
            </add_scope>
        </alert>
        </alertFilter_with_predefined_criteria>
    """
    navigate()
    if isinstance(alert_obj, test_data.DataObj):
        alert_obj = [alert_obj]
    elif isinstance(alert_obj, tuple):
        alert_obj = list(alert_obj[0])
    fail_if_exist = 0
    for alert in alert_obj:
        if VerifyAlertFilter.verify_alert_exist_in_alert_table(
                alert.name, 5, False) is True:
            fail_if_exist += 1
            logger.warn("filter %s already exists" % alert.name)
            continue
        _navigate_to_add_alert_filter_page(alert.name, alert.email)
        CreateAlertNotificationFilter.click_predefined_allalerts()
        for n, criteria in enumerate(alert.add_predefined_criteria):
            CreateAlertNotificationFilter.select_predefined_criteria(
                criteria.status)
        CreateAlertNotificationFilter.click_scope_for_alert_filter()
        for n, scope in enumerate(alert.add_scope):
            CreateAlertNotificationFilter.click_scope_name(scope.name)
        CreateAlertNotificationFilter.click_scope_for_alert_filter()
        CreateAlertNotificationFilter.input_email_address_for_alert_filter(
            alert.email)
        CreateAlertNotificationFilter.click_add_alert_filter()
        CreateAlertNotificationFilter.click_ok_edit_notification()
        VerifyAlertFilter.verify_alert_is_created(alert.name, timeout=20)
    if fail_if_exist > 0:
        ui_lib.fail_test(
            "not all of the filter(s) is successfully created - %s filter already exist "
            % fail_if_exist)
    return True
 def fusion_srm_ilo_api_reset_rib(self):
     """ Reset the iLO/RILOE board of current logged iLo
     Example:
     | Fusion Srm Delete All Sso Certs |
     """
     logger.info("trying to reset iLO via 'ilo_client.reset_rib() ...'")
     if self.ilo_client.reset_rib() is True:
         logger.info("iLO '%s' reset is successfully done" % self.ilo_client.hostname)
         return True
     else:
         logger.warn("iLO '%s' reset is NOT successfully done" % self.ilo_client.hostname)
         return False
예제 #26
0
def validate_server_hardware_types_name_without_number_exist(
        hardware_types_obj):
    """Validate if expected server hardware types name without tailing number exsit in system

    Arguments:
      <servertype>
          name*                     --  Name of server hardware type as a string. (don't include tailing number in name)

    * Required Arguments

    Example:
        data/enclosures -> @{TestData.verifyservertypesname}
        <verifyservertypesname>
            <servertype name="BL420c Gen8" />
            <servertype name="BL460c G7" />
        </verifyservertypesname>

    """
    navigate()

    count = 0

    hardware_types_obj = [item for n, item in enumerate(hardware_types_obj)]
    verified_sht_names = []

    # get all server hardware types name
    sht_names = CommonOperationServerHardwareType.get_sht_list()
    logger.info(
        "About to verify all server hardware types name without number: %r" %
        sht_names)

    for sht_obj in hardware_types_obj:
        for name in sht_names:
            if name.startswith(sht_obj.name) is True:
                if name not in verified_sht_names:
                    verified_sht_names.append(name)
                    logger.info(
                        "Expected server hardware type '%s' exists in SHT page"
                        % sht_obj.name)
                break
        else:
            logger.warn(
                "Expected server hardware type '%s' not exsit in SHT page" %
                sht_obj.name)

    logger.debug(verified_sht_names)

    if len(verified_sht_names) != len(hardware_types_obj):
        logger.warn("Not all expected server hardware types exist in SHT page")
        return False

    return True
예제 #27
0
def select_network(name):
    """ Select Network  """
    logger.info("Selecting a network with name {0}".format(name))
    if CommonOperationNetworks.verify_locate_error_exists():
        selenium2lib = ui_lib.get_s2l()
        selenium2lib.reload_page()
    if CommonOperationNetworks.verify_network_exist(name, fail_if_false=False):
        CommonOperationNetworks.click_network(name)
        CommonOperationNetworks.wait_network_selected(name)
        return True
    else:
        logger.warn("Network '{0}' does not exist".format(name))
        return False
예제 #28
0
 def click_firmware_bundle(cls, spp_name, firmware_version, timeout=5, fail_if_false=True):
     firmware_bundle_name = spp_name + ', ' + firmware_version
     logger.debug("Select firmware_bundle [%s]" % firmware_bundle_name)
     if not ui_lib.wait_for_element_and_click(FusionFirmwareBundlePage.ID_TABLE_FIRMWARE_BUNDLE % (spp_name, firmware_version), timeout=timeout, fail_if_false=fail_if_false):
         logger.warn("Failed to select firmware bundle")
         return False
     str_title = ui_lib.get_text(FusionFirmwareBundlePage.ID_FWDRIVER_TITLE, timeout=timeout, fail_if_false=fail_if_false)
     if firmware_bundle_name.strip() == str_title.strip():
         logger.info("Selected the Firmware Bundle %s  with version %s successfully" % (spp_name, firmware_version))
         return True
     else:
         msg = "Fail in selecting Firmware Bundle %s  with version %s" % (spp_name, firmware_version)
         return FusionUIBase.fail_test_or_return_false(msg, fail_if_false=fail_if_false)
예제 #29
0
    def check_enum(cls, val, ref_data_key):
        """

        :param val:
        :type val:
        :param ref_data_key: key of the Reference Data dictionary's item
        :type ref_data_key:
        :return:
        :rtype:
        """
        if ref_data_key not in cls.ReferenceData.keys():
            logger.warn("given key '%s' is not existing in reference data '%s'" % (ref_data_key, cls.ReferenceData.keys()))
            return False

        ref_data_value = cls.ReferenceData[ref_data_key]
        logger.debug("checking given value '%s' should be in reference enum data '%s' ..." % (val, ref_data_value))

        if val in ref_data_value:
            logger.debug("given value '%s' for '%s' is found in reference data" % (val, ref_data_key))
            return True
        else:
            if val is None or val.strip().lower() in ('undefined', 'not-defined', 'not defined'):
                logger.warn("given value '%s' for '%s' shows the attribute is not defined in test data file" % (val, ref_data_key))
            elif val.strip() == '':
                logger.warn("given value '%s' for '%s' is empty, please remove this attribute from test data file if you want to use the default option from UI" % (val, ref_data_key))
            else:
                msg = "<test data invalid>: given value '%s' for '%s' is NOT found in reference values: %s" % (val, ref_data_key, ref_data_value)
                logger.warn(msg)
                ui_lib.fail_test(msg)

            return False
예제 #30
0
    def _shell_cmd(cmd, powershell=False):
        """
        Executes the command using Subprocess module
        :param list cmd: Command to be executed
        :param bool powershell: True when shell should be PowerShell
        :return str: Output of the executed command
        :raise: AssertionError
        """
        r = run_command(cmd, powershell)
        if r.get('return_code') != 0:
            log.warn('Error in executing command.\n {}'.format(r.get('error')))
            raise AssertionError("Command returned with an error.")

        return r