# coding: utf-8

"""
FailureTypeEntry.py

 The Clear BSD License

 Copyright (c) – 2016, NetApp, Inc. All rights reserved.

 Redistribution and use in source and binary forms, with or without modification, are permitted (subject to the limitations in the disclaimer below) provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

 * Neither the name of NetApp, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

 NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""

from pprint import pformat
from six import iteritems


class FailureTypeEntry(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        FailureTypeEntry - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'rec_failure_type': 'str',  # (required parameter)
            'alt_ctlr_board_id_unreadable': 'str',  
            'base_controller_diag_failed': 'str',  
            'battery_config_mismatch': 'str',  
            'battery_warn': 'str',  
            'battery_temp_warn': 'str',  
            'battery_stat_unknown': 'str',  
            'battery_capacity_warn': 'str',  
            'failed_cache_backup_device': 'str',  
            'insufficient_cache_backup_device_capacity': 'str',  
            'write_protected_cache_backup_device': 'str',  
            'channel_degraded_failure': 'ChannelDegradedFailure',  
            'channel_failed_failure': 'ChannelFailedFailure',  
            'chan_miswire': 'str',  
            'vpd_eeprom_corrupted': 'str',  
            'ctl_mismatch': 'str',  
            'ctl_miswire': 'ControllerMiswireError',  
            'ddf_drive_other_vendor': 'str',  
            'failed_dedicated_mirror_channel': 'str',  
            'degraded_host_board': 'str',  
            'vol_degraded': 'str',  
            'drv_bypass_cause_unknown': 'str',  
            'drive_bypassed_single_port': 'str',  
            'speed_mismatch_drive': 'str',  
            'incompatible_down_rev_dacstore_drive_ref': 'str',  
            'mixed_drive_enclosure_miswire': 'list[MiswiredDriveChannelList]',  
            'incompatible_sector_size_drive_ref': 'str',  
            'incompatible_up_rev_dacstore_drive_ref': 'str',  
            'drive_tray_expansion_feature': 'FeatureState',  
            'drive_trays_not_grouped_together': 'TrayRefList',  
            'misconfigured_enclosure': 'str',  
            'tray_code_mismatch': 'str',  
            'esm_factory_defaults_mismatch': 'str',  
            'tray_hardware_mismatch': 'str',  
            'esm_miswire': 'str',  
            'esm_stat_unknown': 'str',  
            'battery_expired': 'str',  
            'integrated_battery_expired': 'str',  
            'battery_fail': 'str',  
            'battery_system_fail': 'BatteryPackICCFailure',  
            'discrete_line_fail': 'str',  
            'drive_fail': 'str',  
            'ch_fail': 'str',  
            'esm_fail': 'str',  
            'fan_fail': 'str',  
            'vpd_i2c_failure': 'str',  
            'icc_cru_fail': 'str',  
            'mini_hub_fail': 'str',  
            'vol_fail_during_modify_multi_raid': 'str',  
            'vol_fail_during_modify': 'str',  
            'power_supply_fail': 'str',  
            'support_cru_fail': 'str',  
            'transceiver_module_failed': 'str',  
            'vol_fail': 'str',  
            'vol_fail_awaiting_init': 'str',  
            'vol_fail_interrupted_write': 'str',  
            'vol_fail_multi_raid': 'str',  
            'fan_stat_unknown': 'str',  
            'foreign_drive_has_inconsistent_role': 'PvgRecoveryData',  
            'foreign_drive_inconsistent': 'str',  
            'foreign_drive_refers_to_native_drive': 'str',  
            'ghost_volume': 'str',  
            'goldkey_feature': 'FeatureState',  
            'failed_host_board': 'str',  
            'host_board_id_mismatch': 'str',  
            'host_board_stat_unknown': 'str',  
            'missing_hot_spare_drive_ref': 'str',  
            'icc_cru_stat_unknown': 'str',  
            'icc_missing': 'str',  
            'vol_impaired': 'str',  
            'drive_fail_impending_high': 'str',  
            'drive_fail_impending_low': 'str',  
            'drive_fail_impending_med': 'str',  
            'incompatible_failed_legacy_drive': 'PvgRecoveryData',  
            'ld_fw_version_mismatch': 'LockdownCtrlFwVersion',  
            'legacy_vg_not_optimal': 'str',  
            'link_speed_detection_error': 'LinkSpeedDetectionError',  
            'link_speed_mismatch': 'str',  
            'drive_redundancy_failure': 'DriveLostRedundancyFailure',  
            'esm_redundancy_failure': 'EsmLostRedundancyFailure',  
            'tray_redundancy_failure': 'TrayLostRedundancyFailure',  
            'max_temp_warn': 'str',  
            'mem_parity_error': 'str',  
            'metadata_offline': 'MetadataOffline',  
            'minihub_ref': 'str',  
            'dual_mirror_primary': 'DualMirrorPrimary',  
            'dual_mirror_secondary': 'DualMirrorSecondary',  
            'mirror_unsynchronized': 'MirrorUnsynchronized',  
            'mixeddrivetypes_feature': 'FeatureState',  
            'native_vg_foreign_drive_mutual_ref': 'PvgRecoveryData',  
            'native_vg_refers_to_foreign_drive': 'PvgRecoveryData',  
            'network_setup_error': 'str',  
            'nominal_temp_warn': 'str',  
            'non_fru_battery_warn': 'str',  
            'non_fru_battery_fail': 'str',  
            'non_fru_battery_removed': 'str',  
            'non_preferred_path': 'NotOnPreferredPath',  
            'offline_ctl': 'str',  
            'vol_group_offline': 'str',  
            'spm_feature': 'FeatureState',  
            'passive_ctl': 'str',  
            'path_degraded_failure': 'PathDegradedFailure',  
            'performance_tier_feature': 'FeatureState',  
            'power_supply_stat_unknown': 'str',  
            'proc_mem_too_small_for_cache': 'str',  
            'raid6_feature': 'FeatureState',  
            'incorrect_support_cru': 'str',  
            'remote_vol_no_array': 'RemoteVolNoArray',  
            'remote_vol_no_fabric': 'RemoteVolNoFabric',  
            'remote_vol_no_lun': 'RemoteVolNoLUN',  
            'remote_vol_wwn_change_failed': 'RemoteVolWWNChangeFailed',  
            'alarm_removed': 'str',  
            'battery_removed': 'str',  
            'battery_pack_removed': 'str',  
            'esm_removed': 'str',  
            'fan_removed': 'str',  
            'icc_cru_removed': 'str',  
            'power_supply_removed': 'str',  
            'support_cru_removed': 'str',  
            'temp_sensor_removed': 'str',  
            'replaced_drive_wrong_type': 'str',  
            'repository_full': 'FullRepository',  
            'repository_over_threshold': 'str',  
            'rpa_parity_error': 'str',  
            'rvm_feature': 'FeatureState',  
            'degraded_sas_port': 'SasPort',  
            'failed_sas_port': 'SasPort',  
            'miswired_sas_port': 'SasPort',  
            'snap_fail': 'SnapshotFailure',  
            'snapshot_feature': 'FeatureState',  
            'speed_neg_error': 'SpeedNegError',  
            'submodel_mismatch': 'str',  
            'submodel_not_set': 'str',  
            'submodel_not_supported': 'str',  
            'support_cru_no_input': 'str',  
            'support_cru_stat_unknown': 'str',  
            'temp_sensor_stat_unknown': 'str',  
            'transceiver_module_stat_unknown': 'str',  
            'tray_id_conflicts': 'TrayRefList',  
            'tray_id_mismatch': 'str',  
            'drive_uncertified': 'str',  
            'esm_uncertified': 'str',  
            'cache_memory_size_unsupported': 'str',  
            'unsupported_host_board': 'str',  
            'mini_hub_unsupported': 'str',  
            'unsupported_tray': 'str',  
            'ups_on_battery': 'str',  
            'usm_db_full_error': 'UsmError',  
            'usm_exist_error': 'UsmError',  
            'vg_cloned': 'str',  
            'vg_drive_part_of_multiple_vgs': 'PvgRecoveryData',  
            'vg_has_drive_part_of_multiple_vgs': 'PvgRecoveryData',  
            'failed_volume_copy': 'str',  
            'volcopy_feature': 'FeatureState',  
            'incomplete_volume_group_ref': 'str',  
            'missing_volume_group_ref': 'str',  
            'partial_present_volume_group_ref': 'str',  
            'vol_hot_spare_in_use': 'str',  
            'host_ref': 'str',  
            'security_key_needed': 'SecurityKeyNeeded',  
            'fde_feature': 'FeatureState',  
            'removed_ctrl': 'str',  
            'drive_unsuccess_isolation_redun_mismatch': 'str',  
            'drive_thres_excded_mismatch_corrected': 'str',  
            'inactive_host_port': 'str',  
            'inactive_initiator': 'str',  
            'protection_information_feature': 'FeatureState',  
            'protection_information_not_supported': 'str',  
            'drive_capacity_insufficient': 'str',  
            'open_drawer_ref': 'str',  
            'failed_drawer_ref': 'str',  
            'drive_ref': 'str',  
            'solid_state_disks_feature': 'FeatureState',  
            'fibre_trunk_miswire': 'FibreTrunkMiswire',  
            'fibre_trunk_incompatible_esm': 'str',  
            'drive_slot_limit_feature': 'FeatureState',  
            'new_key_sequence': 'int',  
            'fde_proxy_key_mgmt_feature': 'FeatureState',  
            'sbb_validation_failure': 'str',  
            'power_supply_invalid': 'str',  
            'enclosure_thermal_shutdown': 'str',  
            'unsupported_protocol_connection': 'str',  
            'twi_bus_failed': 'str',  
            'mismatched_eeprom_contents': 'str',  
            'unsupported_capacity_drive': 'str',  
            'eval_expiration_imminent': 'str',  
            'key_invalid': 'str',  
            'multiple_mismatched_keys': 'str',  
            'key_validation_lock': 'str',  
            'cache_data_loss': 'ControllerVolumeList',  
            'feature_out_of_compliance': 'str',  
            'drive_incompatible_p_itype': 'str',  
            'degraded_drawer_ref': 'str',  
            'ctlr_ioc_diag_failed': 'str',  
            'invalid_sata_flash_config': 'str',  
            'offline_ctlr_ioc_diag_failed': 'str',  
            'chan_sas_phy_disabled_local_wide_port_degraded': 'int',  
            'chan_sas_phy_disabled_shared_wide_port_degraded': 'int',  
            'drawer_invalid': 'str',  
            'drawer_removed': 'str',  
            'drive_unsupported_interposer_fw_version': 'str',  
            'volume_offline_during_reconfig': 'str',  
            'snap_rollback_paused': 'str',  
            'pit_rollback_paused': 'str',  
            'pit_group_over_warn_threshold': 'str',  
            'pit_view_over_warn_threshold': 'str',  
            'pit_group_repository_full': 'str',  
            'pit_view_repository_full': 'str',  
            'pit_group_failed': 'str',  
            'pit_view_failed': 'str',  
            'pit_purged': 'str',  
            'degraded_async_mirror_group': 'AsyncMirrorGroupFaultIndication',  
            'sync_interval_time_exceeded': 'AsyncMirrorGroupFaultIndication',  
            'failed_async_mirror': 'str',  
            'async_mirror_repository_over_warn_threshold': 'AsyncMirrorGroupMemberFaultIndication',  
            'role_conflict_mirror_group': 'str',  
            'recovery_point_lost_group': 'str',  
            'incompatible_volume_group_security': 'str',  
            'orphan_mirror_group': 'str',  
            'orphan_mirror_member': 'str',  
            'disk_pool_state_partial': 'str',  
            'disk_pool_state_incomplete': 'str',  
            'disk_pool_state_missing': 'str',  
            'disk_pool_reconstruction': 'str',  
            'disk_pool_utilization_warning': 'str',  
            'disk_pool_utilization_critical': 'str',  
            'pit_group_pending_create_failed': 'str',  
            'cg_pending_create_failed': 'str',  
            'thin_volume_over_threshold': 'str',  
            'thin_volume_repository_full': 'str',  
            'thin_volume_failed': 'str',  
            'full_secondary_repository_mirror_member': 'str',  
            'suspended_mirror_group': 'str',  
            'database_metadata': 'DatabaseMetadata',  
            'full_primary_repository_mirror_member': 'AsyncMirrorGroupMemberFaultIndication',  
            'sata_sct_cmnd_unsupported': 'str',  
            'disk_pool_capacity_depleted': 'str',  
            'drive_model_number_unsupported': 'str',  
            'flash_cache_non_optimal_drives': 'FlashCacheRecoveryData',  
            'flash_cache_hot_spare_in_use': 'FlashCacheRecoveryData',  
            'native_sata_incompatible_nvsram': 'str',  
            'disk_pool_drive_failure': 'str',  
            'disk_pool_insufficient_memory': 'str',  
            'orphan_incomplete_member': 'str',  
            'paused_alt_state_mirror_group': 'str',  
            'paused_role_change_group': 'str',  
            'drive_emulation_incompatible_alignment': 'str',  
            'redundancy_fail': 'ExternalRedundancyFailure',  
            'mirror_proxy_ref': 'str',  
            'miswired_sas_host': 'SasPort',  
            'miswired_sas_cross': 'SasPort',  
            'miswired_sas_loop': 'SasPort',  
            'vol_group_waiting_on_hot_spare': 'str',  
            'missing_assigned_drives': 'list[TraySlot]',  
            'disk_pool_waiting_on_hot_spare': 'str',  
            'controller_in_service_mode': 'str',  
            'controller_in_lockdown': 'str',  
            'discovery_error_sas_port': 'SasPort',  
            'ntp_resolution_failure': 'ControllerNtpErrorDetails',  
            'ntp_query_failure': 'ControllerNtpErrorDetails',  
            'ntp_service_failure_controller': 'str',  
            'misconfigured_host': 'str',  
            'host_redundancy_loss_details': 'HostRedundancyLossDetails',  
            'excessive_reboots_detected': 'ExcessiveRebootsDetected',  
            'ctlr_with_dirty_cache_not_flushed': 'ControllerWithDirtyCacheDetails'
        }

        self.attribute_map = {
            'rec_failure_type': 'recFailureType',  # (required parameter)
            'alt_ctlr_board_id_unreadable': 'altCtlrBoardIdUnreadable',  
            'base_controller_diag_failed': 'baseControllerDiagFailed',  
            'battery_config_mismatch': 'batteryConfigMismatch',  
            'battery_warn': 'batteryWarn',  
            'battery_temp_warn': 'batteryTempWarn',  
            'battery_stat_unknown': 'batteryStatUnknown',  
            'battery_capacity_warn': 'batteryCapacityWarn',  
            'failed_cache_backup_device': 'failedCacheBackupDevice',  
            'insufficient_cache_backup_device_capacity': 'insufficientCacheBackupDeviceCapacity',  
            'write_protected_cache_backup_device': 'writeProtectedCacheBackupDevice',  
            'channel_degraded_failure': 'channelDegradedFailure',  
            'channel_failed_failure': 'channelFailedFailure',  
            'chan_miswire': 'chanMiswire',  
            'vpd_eeprom_corrupted': 'vpdEepromCorrupted',  
            'ctl_mismatch': 'ctlMismatch',  
            'ctl_miswire': 'ctlMiswire',  
            'ddf_drive_other_vendor': 'ddfDriveOtherVendor',  
            'failed_dedicated_mirror_channel': 'failedDedicatedMirrorChannel',  
            'degraded_host_board': 'degradedHostBoard',  
            'vol_degraded': 'volDegraded',  
            'drv_bypass_cause_unknown': 'drvBypassCauseUnknown',  
            'drive_bypassed_single_port': 'driveBypassedSinglePort',  
            'speed_mismatch_drive': 'speedMismatchDrive',  
            'incompatible_down_rev_dacstore_drive_ref': 'incompatibleDownRevDacstoreDriveRef',  
            'mixed_drive_enclosure_miswire': 'mixedDriveEnclosureMiswire',  
            'incompatible_sector_size_drive_ref': 'incompatibleSectorSizeDriveRef',  
            'incompatible_up_rev_dacstore_drive_ref': 'incompatibleUpRevDacstoreDriveRef',  
            'drive_tray_expansion_feature': 'driveTrayExpansionFeature',  
            'drive_trays_not_grouped_together': 'driveTraysNotGroupedTogether',  
            'misconfigured_enclosure': 'misconfiguredEnclosure',  
            'tray_code_mismatch': 'trayCodeMismatch',  
            'esm_factory_defaults_mismatch': 'esmFactoryDefaultsMismatch',  
            'tray_hardware_mismatch': 'trayHardwareMismatch',  
            'esm_miswire': 'esmMiswire',  
            'esm_stat_unknown': 'esmStatUnknown',  
            'battery_expired': 'batteryExpired',  
            'integrated_battery_expired': 'integratedBatteryExpired',  
            'battery_fail': 'batteryFail',  
            'battery_system_fail': 'batterySystemFail',  
            'discrete_line_fail': 'discreteLineFail',  
            'drive_fail': 'driveFail',  
            'ch_fail': 'chFail',  
            'esm_fail': 'esmFail',  
            'fan_fail': 'fanFail',  
            'vpd_i2c_failure': 'vpdI2cFailure',  
            'icc_cru_fail': 'iccCruFail',  
            'mini_hub_fail': 'miniHubFail',  
            'vol_fail_during_modify_multi_raid': 'volFailDuringModifyMultiRaid',  
            'vol_fail_during_modify': 'volFailDuringModify',  
            'power_supply_fail': 'powerSupplyFail',  
            'support_cru_fail': 'supportCruFail',  
            'transceiver_module_failed': 'transceiverModuleFailed',  
            'vol_fail': 'volFail',  
            'vol_fail_awaiting_init': 'volFailAwaitingInit',  
            'vol_fail_interrupted_write': 'volFailInterruptedWrite',  
            'vol_fail_multi_raid': 'volFailMultiRaid',  
            'fan_stat_unknown': 'fanStatUnknown',  
            'foreign_drive_has_inconsistent_role': 'foreignDriveHasInconsistentRole',  
            'foreign_drive_inconsistent': 'foreignDriveInconsistent',  
            'foreign_drive_refers_to_native_drive': 'foreignDriveRefersToNativeDrive',  
            'ghost_volume': 'ghostVolume',  
            'goldkey_feature': 'goldkeyFeature',  
            'failed_host_board': 'failedHostBoard',  
            'host_board_id_mismatch': 'hostBoardIdMismatch',  
            'host_board_stat_unknown': 'hostBoardStatUnknown',  
            'missing_hot_spare_drive_ref': 'missingHotSpareDriveRef',  
            'icc_cru_stat_unknown': 'iccCruStatUnknown',  
            'icc_missing': 'iccMissing',  
            'vol_impaired': 'volImpaired',  
            'drive_fail_impending_high': 'driveFailImpendingHigh',  
            'drive_fail_impending_low': 'driveFailImpendingLow',  
            'drive_fail_impending_med': 'driveFailImpendingMed',  
            'incompatible_failed_legacy_drive': 'incompatibleFailedLegacyDrive',  
            'ld_fw_version_mismatch': 'ldFwVersionMismatch',  
            'legacy_vg_not_optimal': 'legacyVgNotOptimal',  
            'link_speed_detection_error': 'linkSpeedDetectionError',  
            'link_speed_mismatch': 'linkSpeedMismatch',  
            'drive_redundancy_failure': 'driveRedundancyFailure',  
            'esm_redundancy_failure': 'esmRedundancyFailure',  
            'tray_redundancy_failure': 'trayRedundancyFailure',  
            'max_temp_warn': 'maxTempWarn',  
            'mem_parity_error': 'memParityError',  
            'metadata_offline': 'metadataOffline',  
            'minihub_ref': 'minihubRef',  
            'dual_mirror_primary': 'dualMirrorPrimary',  
            'dual_mirror_secondary': 'dualMirrorSecondary',  
            'mirror_unsynchronized': 'mirrorUnsynchronized',  
            'mixeddrivetypes_feature': 'mixeddrivetypesFeature',  
            'native_vg_foreign_drive_mutual_ref': 'nativeVgForeignDriveMutualRef',  
            'native_vg_refers_to_foreign_drive': 'nativeVgRefersToForeignDrive',  
            'network_setup_error': 'networkSetupError',  
            'nominal_temp_warn': 'nominalTempWarn',  
            'non_fru_battery_warn': 'nonFruBatteryWarn',  
            'non_fru_battery_fail': 'nonFruBatteryFail',  
            'non_fru_battery_removed': 'nonFruBatteryRemoved',  
            'non_preferred_path': 'nonPreferredPath',  
            'offline_ctl': 'offlineCtl',  
            'vol_group_offline': 'volGroupOffline',  
            'spm_feature': 'spmFeature',  
            'passive_ctl': 'passiveCtl',  
            'path_degraded_failure': 'pathDegradedFailure',  
            'performance_tier_feature': 'performanceTierFeature',  
            'power_supply_stat_unknown': 'powerSupplyStatUnknown',  
            'proc_mem_too_small_for_cache': 'procMemTooSmallForCache',  
            'raid6_feature': 'raid6Feature',  
            'incorrect_support_cru': 'incorrectSupportCru',  
            'remote_vol_no_array': 'remoteVolNoArray',  
            'remote_vol_no_fabric': 'remoteVolNoFabric',  
            'remote_vol_no_lun': 'remoteVolNoLUN',  
            'remote_vol_wwn_change_failed': 'remoteVolWWNChangeFailed',  
            'alarm_removed': 'alarmRemoved',  
            'battery_removed': 'batteryRemoved',  
            'battery_pack_removed': 'batteryPackRemoved',  
            'esm_removed': 'esmRemoved',  
            'fan_removed': 'fanRemoved',  
            'icc_cru_removed': 'iccCruRemoved',  
            'power_supply_removed': 'powerSupplyRemoved',  
            'support_cru_removed': 'supportCruRemoved',  
            'temp_sensor_removed': 'tempSensorRemoved',  
            'replaced_drive_wrong_type': 'replacedDriveWrongType',  
            'repository_full': 'repositoryFull',  
            'repository_over_threshold': 'repositoryOverThreshold',  
            'rpa_parity_error': 'rpaParityError',  
            'rvm_feature': 'rvmFeature',  
            'degraded_sas_port': 'degradedSasPort',  
            'failed_sas_port': 'failedSasPort',  
            'miswired_sas_port': 'miswiredSasPort',  
            'snap_fail': 'snapFail',  
            'snapshot_feature': 'snapshotFeature',  
            'speed_neg_error': 'speedNegError',  
            'submodel_mismatch': 'submodelMismatch',  
            'submodel_not_set': 'submodelNotSet',  
            'submodel_not_supported': 'submodelNotSupported',  
            'support_cru_no_input': 'supportCruNoInput',  
            'support_cru_stat_unknown': 'supportCruStatUnknown',  
            'temp_sensor_stat_unknown': 'tempSensorStatUnknown',  
            'transceiver_module_stat_unknown': 'transceiverModuleStatUnknown',  
            'tray_id_conflicts': 'trayIDConflicts',  
            'tray_id_mismatch': 'trayIDMismatch',  
            'drive_uncertified': 'driveUncertified',  
            'esm_uncertified': 'esmUncertified',  
            'cache_memory_size_unsupported': 'cacheMemorySizeUnsupported',  
            'unsupported_host_board': 'unsupportedHostBoard',  
            'mini_hub_unsupported': 'miniHubUnsupported',  
            'unsupported_tray': 'unsupportedTray',  
            'ups_on_battery': 'upsOnBattery',  
            'usm_db_full_error': 'usmDbFullError',  
            'usm_exist_error': 'usmExistError',  
            'vg_cloned': 'vgCloned',  
            'vg_drive_part_of_multiple_vgs': 'vgDrivePartOfMultipleVgs',  
            'vg_has_drive_part_of_multiple_vgs': 'vgHasDrivePartOfMultipleVgs',  
            'failed_volume_copy': 'failedVolumeCopy',  
            'volcopy_feature': 'volcopyFeature',  
            'incomplete_volume_group_ref': 'incompleteVolumeGroupRef',  
            'missing_volume_group_ref': 'missingVolumeGroupRef',  
            'partial_present_volume_group_ref': 'partialPresentVolumeGroupRef',  
            'vol_hot_spare_in_use': 'volHotSpareInUse',  
            'host_ref': 'hostRef',  
            'security_key_needed': 'securityKeyNeeded',  
            'fde_feature': 'fdeFeature',  
            'removed_ctrl': 'removedCtrl',  
            'drive_unsuccess_isolation_redun_mismatch': 'driveUnsuccessIsolationRedunMismatch',  
            'drive_thres_excded_mismatch_corrected': 'driveThresExcdedMismatchCorrected',  
            'inactive_host_port': 'inactiveHostPort',  
            'inactive_initiator': 'inactiveInitiator',  
            'protection_information_feature': 'protectionInformationFeature',  
            'protection_information_not_supported': 'protectionInformationNotSupported',  
            'drive_capacity_insufficient': 'driveCapacityInsufficient',  
            'open_drawer_ref': 'openDrawerRef',  
            'failed_drawer_ref': 'failedDrawerRef',  
            'drive_ref': 'driveRef',  
            'solid_state_disks_feature': 'solidStateDisksFeature',  
            'fibre_trunk_miswire': 'fibreTrunkMiswire',  
            'fibre_trunk_incompatible_esm': 'fibreTrunkIncompatibleEsm',  
            'drive_slot_limit_feature': 'driveSlotLimitFeature',  
            'new_key_sequence': 'newKeySequence',  
            'fde_proxy_key_mgmt_feature': 'fdeProxyKeyMgmtFeature',  
            'sbb_validation_failure': 'sbbValidationFailure',  
            'power_supply_invalid': 'powerSupplyInvalid',  
            'enclosure_thermal_shutdown': 'enclosureThermalShutdown',  
            'unsupported_protocol_connection': 'unsupportedProtocolConnection',  
            'twi_bus_failed': 'twiBusFailed',  
            'mismatched_eeprom_contents': 'mismatchedEepromContents',  
            'unsupported_capacity_drive': 'unsupportedCapacityDrive',  
            'eval_expiration_imminent': 'evalExpirationImminent',  
            'key_invalid': 'keyInvalid',  
            'multiple_mismatched_keys': 'multipleMismatchedKeys',  
            'key_validation_lock': 'keyValidationLock',  
            'cache_data_loss': 'cacheDataLoss',  
            'feature_out_of_compliance': 'featureOutOfCompliance',  
            'drive_incompatible_p_itype': 'driveIncompatiblePItype',  
            'degraded_drawer_ref': 'degradedDrawerRef',  
            'ctlr_ioc_diag_failed': 'ctlrIocDiagFailed',  
            'invalid_sata_flash_config': 'invalidSataFlashConfig',  
            'offline_ctlr_ioc_diag_failed': 'offlineCtlrIocDiagFailed',  
            'chan_sas_phy_disabled_local_wide_port_degraded': 'chanSasPhyDisabledLocalWidePortDegraded',  
            'chan_sas_phy_disabled_shared_wide_port_degraded': 'chanSasPhyDisabledSharedWidePortDegraded',  
            'drawer_invalid': 'drawerInvalid',  
            'drawer_removed': 'drawerRemoved',  
            'drive_unsupported_interposer_fw_version': 'driveUnsupportedInterposerFwVersion',  
            'volume_offline_during_reconfig': 'volumeOfflineDuringReconfig',  
            'snap_rollback_paused': 'snapRollbackPaused',  
            'pit_rollback_paused': 'pitRollbackPaused',  
            'pit_group_over_warn_threshold': 'pitGroupOverWarnThreshold',  
            'pit_view_over_warn_threshold': 'pitViewOverWarnThreshold',  
            'pit_group_repository_full': 'pitGroupRepositoryFull',  
            'pit_view_repository_full': 'pitViewRepositoryFull',  
            'pit_group_failed': 'pitGroupFailed',  
            'pit_view_failed': 'pitViewFailed',  
            'pit_purged': 'pitPurged',  
            'degraded_async_mirror_group': 'degradedAsyncMirrorGroup',  
            'sync_interval_time_exceeded': 'syncIntervalTimeExceeded',  
            'failed_async_mirror': 'failedAsyncMirror',  
            'async_mirror_repository_over_warn_threshold': 'asyncMirrorRepositoryOverWarnThreshold',  
            'role_conflict_mirror_group': 'roleConflictMirrorGroup',  
            'recovery_point_lost_group': 'recoveryPointLostGroup',  
            'incompatible_volume_group_security': 'incompatibleVolumeGroupSecurity',  
            'orphan_mirror_group': 'orphanMirrorGroup',  
            'orphan_mirror_member': 'orphanMirrorMember',  
            'disk_pool_state_partial': 'diskPoolStatePartial',  
            'disk_pool_state_incomplete': 'diskPoolStateIncomplete',  
            'disk_pool_state_missing': 'diskPoolStateMissing',  
            'disk_pool_reconstruction': 'diskPoolReconstruction',  
            'disk_pool_utilization_warning': 'diskPoolUtilizationWarning',  
            'disk_pool_utilization_critical': 'diskPoolUtilizationCritical',  
            'pit_group_pending_create_failed': 'pitGroupPendingCreateFailed',  
            'cg_pending_create_failed': 'cgPendingCreateFailed',  
            'thin_volume_over_threshold': 'thinVolumeOverThreshold',  
            'thin_volume_repository_full': 'thinVolumeRepositoryFull',  
            'thin_volume_failed': 'thinVolumeFailed',  
            'full_secondary_repository_mirror_member': 'fullSecondaryRepositoryMirrorMember',  
            'suspended_mirror_group': 'suspendedMirrorGroup',  
            'database_metadata': 'databaseMetadata',  
            'full_primary_repository_mirror_member': 'fullPrimaryRepositoryMirrorMember',  
            'sata_sct_cmnd_unsupported': 'sataSCTCmndUnsupported',  
            'disk_pool_capacity_depleted': 'diskPoolCapacityDepleted',  
            'drive_model_number_unsupported': 'driveModelNumberUnsupported',  
            'flash_cache_non_optimal_drives': 'flashCacheNonOptimalDrives',  
            'flash_cache_hot_spare_in_use': 'flashCacheHotSpareInUse',  
            'native_sata_incompatible_nvsram': 'nativeSATAIncompatibleNVSRAM',  
            'disk_pool_drive_failure': 'diskPoolDriveFailure',  
            'disk_pool_insufficient_memory': 'diskPoolInsufficientMemory',  
            'orphan_incomplete_member': 'orphanIncompleteMember',  
            'paused_alt_state_mirror_group': 'pausedAltStateMirrorGroup',  
            'paused_role_change_group': 'pausedRoleChangeGroup',  
            'drive_emulation_incompatible_alignment': 'driveEmulationIncompatibleAlignment',  
            'redundancy_fail': 'redundancyFail',  
            'mirror_proxy_ref': 'mirrorProxyRef',  
            'miswired_sas_host': 'miswiredSasHost',  
            'miswired_sas_cross': 'miswiredSasCross',  
            'miswired_sas_loop': 'miswiredSasLoop',  
            'vol_group_waiting_on_hot_spare': 'volGroupWaitingOnHotSpare',  
            'missing_assigned_drives': 'missingAssignedDrives',  
            'disk_pool_waiting_on_hot_spare': 'diskPoolWaitingOnHotSpare',  
            'controller_in_service_mode': 'controllerInServiceMode',  
            'controller_in_lockdown': 'controllerInLockdown',  
            'discovery_error_sas_port': 'discoveryErrorSasPort',  
            'ntp_resolution_failure': 'ntpResolutionFailure',  
            'ntp_query_failure': 'ntpQueryFailure',  
            'ntp_service_failure_controller': 'ntpServiceFailureController',  
            'misconfigured_host': 'misconfiguredHost',  
            'host_redundancy_loss_details': 'hostRedundancyLossDetails',  
            'excessive_reboots_detected': 'excessiveRebootsDetected',  
            'ctlr_with_dirty_cache_not_flushed': 'ctlrWithDirtyCacheNotFlushed'
        }

        self._rec_failure_type = None
        self._alt_ctlr_board_id_unreadable = None
        self._base_controller_diag_failed = None
        self._battery_config_mismatch = None
        self._battery_warn = None
        self._battery_temp_warn = None
        self._battery_stat_unknown = None
        self._battery_capacity_warn = None
        self._failed_cache_backup_device = None
        self._insufficient_cache_backup_device_capacity = None
        self._write_protected_cache_backup_device = None
        self._channel_degraded_failure = None
        self._channel_failed_failure = None
        self._chan_miswire = None
        self._vpd_eeprom_corrupted = None
        self._ctl_mismatch = None
        self._ctl_miswire = None
        self._ddf_drive_other_vendor = None
        self._failed_dedicated_mirror_channel = None
        self._degraded_host_board = None
        self._vol_degraded = None
        self._drv_bypass_cause_unknown = None
        self._drive_bypassed_single_port = None
        self._speed_mismatch_drive = None
        self._incompatible_down_rev_dacstore_drive_ref = None
        self._mixed_drive_enclosure_miswire = None
        self._incompatible_sector_size_drive_ref = None
        self._incompatible_up_rev_dacstore_drive_ref = None
        self._drive_tray_expansion_feature = None
        self._drive_trays_not_grouped_together = None
        self._misconfigured_enclosure = None
        self._tray_code_mismatch = None
        self._esm_factory_defaults_mismatch = None
        self._tray_hardware_mismatch = None
        self._esm_miswire = None
        self._esm_stat_unknown = None
        self._battery_expired = None
        self._integrated_battery_expired = None
        self._battery_fail = None
        self._battery_system_fail = None
        self._discrete_line_fail = None
        self._drive_fail = None
        self._ch_fail = None
        self._esm_fail = None
        self._fan_fail = None
        self._vpd_i2c_failure = None
        self._icc_cru_fail = None
        self._mini_hub_fail = None
        self._vol_fail_during_modify_multi_raid = None
        self._vol_fail_during_modify = None
        self._power_supply_fail = None
        self._support_cru_fail = None
        self._transceiver_module_failed = None
        self._vol_fail = None
        self._vol_fail_awaiting_init = None
        self._vol_fail_interrupted_write = None
        self._vol_fail_multi_raid = None
        self._fan_stat_unknown = None
        self._foreign_drive_has_inconsistent_role = None
        self._foreign_drive_inconsistent = None
        self._foreign_drive_refers_to_native_drive = None
        self._ghost_volume = None
        self._goldkey_feature = None
        self._failed_host_board = None
        self._host_board_id_mismatch = None
        self._host_board_stat_unknown = None
        self._missing_hot_spare_drive_ref = None
        self._icc_cru_stat_unknown = None
        self._icc_missing = None
        self._vol_impaired = None
        self._drive_fail_impending_high = None
        self._drive_fail_impending_low = None
        self._drive_fail_impending_med = None
        self._incompatible_failed_legacy_drive = None
        self._ld_fw_version_mismatch = None
        self._legacy_vg_not_optimal = None
        self._link_speed_detection_error = None
        self._link_speed_mismatch = None
        self._drive_redundancy_failure = None
        self._esm_redundancy_failure = None
        self._tray_redundancy_failure = None
        self._max_temp_warn = None
        self._mem_parity_error = None
        self._metadata_offline = None
        self._minihub_ref = None
        self._dual_mirror_primary = None
        self._dual_mirror_secondary = None
        self._mirror_unsynchronized = None
        self._mixeddrivetypes_feature = None
        self._native_vg_foreign_drive_mutual_ref = None
        self._native_vg_refers_to_foreign_drive = None
        self._network_setup_error = None
        self._nominal_temp_warn = None
        self._non_fru_battery_warn = None
        self._non_fru_battery_fail = None
        self._non_fru_battery_removed = None
        self._non_preferred_path = None
        self._offline_ctl = None
        self._vol_group_offline = None
        self._spm_feature = None
        self._passive_ctl = None
        self._path_degraded_failure = None
        self._performance_tier_feature = None
        self._power_supply_stat_unknown = None
        self._proc_mem_too_small_for_cache = None
        self._raid6_feature = None
        self._incorrect_support_cru = None
        self._remote_vol_no_array = None
        self._remote_vol_no_fabric = None
        self._remote_vol_no_lun = None
        self._remote_vol_wwn_change_failed = None
        self._alarm_removed = None
        self._battery_removed = None
        self._battery_pack_removed = None
        self._esm_removed = None
        self._fan_removed = None
        self._icc_cru_removed = None
        self._power_supply_removed = None
        self._support_cru_removed = None
        self._temp_sensor_removed = None
        self._replaced_drive_wrong_type = None
        self._repository_full = None
        self._repository_over_threshold = None
        self._rpa_parity_error = None
        self._rvm_feature = None
        self._degraded_sas_port = None
        self._failed_sas_port = None
        self._miswired_sas_port = None
        self._snap_fail = None
        self._snapshot_feature = None
        self._speed_neg_error = None
        self._submodel_mismatch = None
        self._submodel_not_set = None
        self._submodel_not_supported = None
        self._support_cru_no_input = None
        self._support_cru_stat_unknown = None
        self._temp_sensor_stat_unknown = None
        self._transceiver_module_stat_unknown = None
        self._tray_id_conflicts = None
        self._tray_id_mismatch = None
        self._drive_uncertified = None
        self._esm_uncertified = None
        self._cache_memory_size_unsupported = None
        self._unsupported_host_board = None
        self._mini_hub_unsupported = None
        self._unsupported_tray = None
        self._ups_on_battery = None
        self._usm_db_full_error = None
        self._usm_exist_error = None
        self._vg_cloned = None
        self._vg_drive_part_of_multiple_vgs = None
        self._vg_has_drive_part_of_multiple_vgs = None
        self._failed_volume_copy = None
        self._volcopy_feature = None
        self._incomplete_volume_group_ref = None
        self._missing_volume_group_ref = None
        self._partial_present_volume_group_ref = None
        self._vol_hot_spare_in_use = None
        self._host_ref = None
        self._security_key_needed = None
        self._fde_feature = None
        self._removed_ctrl = None
        self._drive_unsuccess_isolation_redun_mismatch = None
        self._drive_thres_excded_mismatch_corrected = None
        self._inactive_host_port = None
        self._inactive_initiator = None
        self._protection_information_feature = None
        self._protection_information_not_supported = None
        self._drive_capacity_insufficient = None
        self._open_drawer_ref = None
        self._failed_drawer_ref = None
        self._drive_ref = None
        self._solid_state_disks_feature = None
        self._fibre_trunk_miswire = None
        self._fibre_trunk_incompatible_esm = None
        self._drive_slot_limit_feature = None
        self._new_key_sequence = None
        self._fde_proxy_key_mgmt_feature = None
        self._sbb_validation_failure = None
        self._power_supply_invalid = None
        self._enclosure_thermal_shutdown = None
        self._unsupported_protocol_connection = None
        self._twi_bus_failed = None
        self._mismatched_eeprom_contents = None
        self._unsupported_capacity_drive = None
        self._eval_expiration_imminent = None
        self._key_invalid = None
        self._multiple_mismatched_keys = None
        self._key_validation_lock = None
        self._cache_data_loss = None
        self._feature_out_of_compliance = None
        self._drive_incompatible_p_itype = None
        self._degraded_drawer_ref = None
        self._ctlr_ioc_diag_failed = None
        self._invalid_sata_flash_config = None
        self._offline_ctlr_ioc_diag_failed = None
        self._chan_sas_phy_disabled_local_wide_port_degraded = None
        self._chan_sas_phy_disabled_shared_wide_port_degraded = None
        self._drawer_invalid = None
        self._drawer_removed = None
        self._drive_unsupported_interposer_fw_version = None
        self._volume_offline_during_reconfig = None
        self._snap_rollback_paused = None
        self._pit_rollback_paused = None
        self._pit_group_over_warn_threshold = None
        self._pit_view_over_warn_threshold = None
        self._pit_group_repository_full = None
        self._pit_view_repository_full = None
        self._pit_group_failed = None
        self._pit_view_failed = None
        self._pit_purged = None
        self._degraded_async_mirror_group = None
        self._sync_interval_time_exceeded = None
        self._failed_async_mirror = None
        self._async_mirror_repository_over_warn_threshold = None
        self._role_conflict_mirror_group = None
        self._recovery_point_lost_group = None
        self._incompatible_volume_group_security = None
        self._orphan_mirror_group = None
        self._orphan_mirror_member = None
        self._disk_pool_state_partial = None
        self._disk_pool_state_incomplete = None
        self._disk_pool_state_missing = None
        self._disk_pool_reconstruction = None
        self._disk_pool_utilization_warning = None
        self._disk_pool_utilization_critical = None
        self._pit_group_pending_create_failed = None
        self._cg_pending_create_failed = None
        self._thin_volume_over_threshold = None
        self._thin_volume_repository_full = None
        self._thin_volume_failed = None
        self._full_secondary_repository_mirror_member = None
        self._suspended_mirror_group = None
        self._database_metadata = None
        self._full_primary_repository_mirror_member = None
        self._sata_sct_cmnd_unsupported = None
        self._disk_pool_capacity_depleted = None
        self._drive_model_number_unsupported = None
        self._flash_cache_non_optimal_drives = None
        self._flash_cache_hot_spare_in_use = None
        self._native_sata_incompatible_nvsram = None
        self._disk_pool_drive_failure = None
        self._disk_pool_insufficient_memory = None
        self._orphan_incomplete_member = None
        self._paused_alt_state_mirror_group = None
        self._paused_role_change_group = None
        self._drive_emulation_incompatible_alignment = None
        self._redundancy_fail = None
        self._mirror_proxy_ref = None
        self._miswired_sas_host = None
        self._miswired_sas_cross = None
        self._miswired_sas_loop = None
        self._vol_group_waiting_on_hot_spare = None
        self._missing_assigned_drives = None
        self._disk_pool_waiting_on_hot_spare = None
        self._controller_in_service_mode = None
        self._controller_in_lockdown = None
        self._discovery_error_sas_port = None
        self._ntp_resolution_failure = None
        self._ntp_query_failure = None
        self._ntp_service_failure_controller = None
        self._misconfigured_host = None
        self._host_redundancy_loss_details = None
        self._excessive_reboots_detected = None
        self._ctlr_with_dirty_cache_not_flushed = None

    @property
    def rec_failure_type(self):
        """
        Gets the rec_failure_type of this FailureTypeEntry.
        This enumeration defines the different recovery failure types that may be reported by a controller as part of the getRecoveryFailureList procedure.

        :return: The rec_failure_type of this FailureTypeEntry.
        :rtype: str
        :required/optional: required
        """
        return self._rec_failure_type

    @rec_failure_type.setter
    def rec_failure_type(self, rec_failure_type):
        """
        Sets the rec_failure_type of this FailureTypeEntry.
        This enumeration defines the different recovery failure types that may be reported by a controller as part of the getRecoveryFailureList procedure.

        :param rec_failure_type: The rec_failure_type of this FailureTypeEntry.
        :type: str
        """
        allowed_values = ["unknownFailure", "failedFan", "failedPowerSupply", "failedMinihub", "failedEsm", "batteryNearExpiration", "failedBattery", "nominalTempExceeded", "maxTempExceeded", "upsOnBattery", "nonPreferredPath", "memParityError", "failedDriveScsiChannel", "degradedVolume", "failedVolumeInterruptedWrite", "failedModifyingVolume", "failedModifyingMultiRaid", "failedVolume", "failedVolumeMultiRaid", "impairedVolume", "failedVolumeAwaitingInit", "volumeHotSpareInUse", "offlineVolumeGroup", "failedDrive", "impendingDriveFailureRiskHigh", "impendingDriveFailureRiskMed", "impendingDriveFailureRiskLow", "uncertifiedDrive", "offlineCtl", "passiveCtl", "partitionsNotCompliant", "esmCodeVersionMismatch", "lostRedundancyDrive", "lostRedundancyTray", "lostRedundancyEsm", "trayidMismatch", "trayidConflict", "failedTransceiverModule", "channelMiswire", "nonFruBatteryNearExpiration", "nonFruFailedBattery", "rpaErrCtl", "repositoryOverThreshold", "repositoryFull", "snapshotFailed", "unsupportedMinihub", "esmMiswire", "ghostVolume", "snapshotNotCompliant", "rvmNotCompliant", "metadataOffline", "mirrorDualPrimary", "mirrorDualSecondary", "mirrorUnsynchronized", "remoteNoLun", "remoteNoArray", "remoteNoFabric", "remoteWwnChangeFailed", "fanUnknownStat", "powerSupplyUnknownStat", "esmUnknownStat", "tempSensorUnknownStat", "transModUnknownStat", "driveBypassedSpeedMismatch", "driveBypassedCauseUnknown", "minihubSpeedMismatch", "removedEsm", "removedBattery", "nonFruRemovedBattery", "volcopyFailed", "volcopyNotCompliant", "channelDegraded", "unsupportedTray", "speedNegError", "usmDatabaseFull", "usmUnreadableSectorsExist", "pathDegraded", "netSetupError", "mismatchedDriveType", "ctlMismatch", "failedDiscreteLine", "channelFailed", "linkSpeedDetectionMismatch", "uncertifiedEsm", "removedFan", "removedPowerSupply", "removedTempSensor", "removedIccCru", "removedSupportCru", "failedIccCru", "failedSupportCru", "batteryUnknownStat", "driveTraysNotGroupedTogether", "goldKeyNotCompliant", "mismatchedMdtSettings", "mismatchedGoldKeySettings", "ctlMiswire", "supportCruNoinput", "submodelNotSupported", "submodelNotSet", "submodelMismatch", "failedBatterySystem", "removedBatteryPack", "batteryConfigMismatch", "esmHardwareMismatch", "hostBoardFault", "ddcAvailable", "replacedDriveWrongType", "redundantPsRequired", "driveTraysNotCompliant", "sasDeviceLimitExceeded", "sasPortMiswired", "sasPortDegraded", "sasPortFailed", "corruptVpdEeprom", "failedI2cBus", "enclosureMisconfigured", "featureBundleNotCompliant", "driveBypassedSinglePort", "esmFactoryDefaultsMismatch", "hostBoardUnknownStat", "failedHostIoCard", "batteryWarn", "volumeGroupPartiallyComplete", "volumeGroupIncomplete", "volumeGroupMissing", "hotspareDriveMissing", "driveIncompatibleUprevDacstore", "driveIncompatibleDownrevDacstore", "iccCruUnknownStat", "removedAlarm", "supportCruUnknownStat", "performanceTierNotCompliant", "raid6NotCompliant", "driveIncompatibleSectorSize", "foreignDriveInconsistent", "foreignDriveRefersToNativeDrive", "nativeVgRefersToForeignDrive", "nativeVgForeignDriveMutualRef", "vgCloned", "foreignDriveHasInconsistentRole", "vgDrivePartOfMultipleVgs", "incompatibleFailedLegacyDrive", "unsupportedCacheMemorySize", "dedicatedMirrorChannelFailed", "vgHasDrivePartOfMultipleVgs", "ddfDriveOtherVendor", "multipleConfigDatabasesDetected", "adoptionFailedRaidLevelUnsupported", "dbAdoptionHardLimitExceeded", "legacyVgNotOptimal", "cacheMemSizeMismatch", "altCtlrBoardIdUnreadable", "cacheBackupDeviceFailed", "cacheBackupDeviceWriteProtected", "cacheBackupDeviceInsufficientCapacity", "expiredBattery", "expiredIntegratedBattery", "procMemTooSmallForCache", "batteryOvertemp", "invalidHostTypeIndex", "insufficientProcMemory", "ctlFailedCacheBackupDev", "removedController", "degradedHostIoCard", "ldFwVersionMismatch", "ldIncompatibleDatabase", "hostBoardIdMismatch", "iccMissing", "linkSpeedMismatch", "unsupportedHostBoard", "writebackCachingDisabled", "securityGetKey", "securityKeyInconsistent", "securityNotCompliant", "mixedDriveEnclosureMiswire", "unsuccessIsolationRedunMismatch", "thresExcdedMismatchCorrected", "inactiveHostPort", "inactiveInitiator", "protectionInformationNotCompliant", "protectionInformationNotSupported", "replacedInsufficientDriveCapacity", "drawerFailed", "drawerOpened", "ssdNotCompliant", "ssdAtEndOfLife", "fibreTrunkMiswire", "fibreTrunkIncompatibleEsm", "driveSlotLimitNotCompliant", "securityGetNewKey", "externalKmsNotCompliant", "sbbValidationFailure", "invalidPowerSupply", "enclosureThermalShutdown", "wbCachingForciblyDisabled", "driveUnsupportedProtocolConnection", "failedTwiBus", "mismatchedMidplaneEeproms", "driveUnsupportedCapacity", "evaluationLicenseExpirationImminent", "externalKmsKeyInvalid", "multipleMismatchedKeyIdsFound", "securityKeyValidationLock", "cacheDataLoss", "baseControllerDiagFailed", "featureNotCompliant", "driveIncompatiblePiType", "drawerDegraded", "offlineCtlIocFail", "invalidSataFlashConfiguration", "iocDiagFail", "sasPhyDisabledLocalWidePortDegraded", "sasPhyDisabledSharedWidePortDegraded", "drawerInvalid", "drawerRemoved", "driveUnsupportedInterposerFwVersion", "redundancyGroupNotConsistentDuringReconfig", "snapshotRollbackPaused", "pitRollbackPaused", "pitGroupRepositoryOverThreshold", "pitViewRepositoryOverThreshold", "pitGroupRepositoryFull", "pitViewRepositoryFull", "pitGroupFailed", "pitViewFailed", "pitPurged", "arvmDegradedMirrorGroup", "arvmFailedMirror", "arvmSyncIntervalTimeOverThreshold", "arvmRepositoryOverWarnThreshold", "arvmMirrorGroupRoleConflict", "incompatibleVolumeGroupSecurity", "arvmOrphanGroup", "arvmOrphanMember", "arvmMirrorGroupRecoveryPointLost", "diskPoolPartiallyPresent", "diskPoolIncomplete", "diskPoolMissing", "diskPoolReconstructionDriveCountBelowThreshold", "diskPoolUtilizationWarning", "diskPoolUtilizationCritical", "pendingPitCreationFailed", "pendingCgpitCreationFailed", "tpvRepositoryOverThreshold", "tpvRepositoryFull", "tpvFailed", "arvmSecondaryRepositoryFull", "arvmSyncInternallySuspended", "databaseRecoveryMode", "arvmPrimaryRepositoryFull", "incompatibleSataDrive", "diskPoolCapacityDepleted", "driveIncompatibleModelNumberUnsupported", "flashCacheNonOptimalDrives", "flashCacheHotSpareInUse", "allDrivesBypassedIncompatibleNvsram", "diskPoolDriveFailure", "diskPoolInsufficientMemory", "arvmOrphanIncompleteMember", "arvmSyncPausedAltState", "arvmRoleChangePaused", "driveIncompatibleAlignmentForEmulationDrive", "lossOfExternalRedundancy", "rvmWriteModeInconsistent", "sasHostMiswire", "sasCrossMiswire", "sasLoopMiswire", "copyThenFailWaitingOnHotSpare", "missingDriveLockdown", "hicConfigurationOoc", "copyThenFailWaitingOnDdpCapacity", "piErrorServiceMode", "piErrorLockdown", "sasPortDiscoveryError", "netNtpResolutionFail", "netNtpQueryFail", "netNtpServiceUnavailable", "multipathConfigurationError", "hostRedundancyLost", "excessiveRebootsDetected", "cacheNotFlushedOnOnlyCtlr", "__UNDEFINED"]
        if rec_failure_type not in allowed_values:
            raise ValueError(
                "Invalid value for `rec_failure_type`, must be one of {0}"
                .format(allowed_values)
            )
        self._rec_failure_type = rec_failure_type

    @property
    def alt_ctlr_board_id_unreadable(self):
        """
        Gets the alt_ctlr_board_id_unreadable of this FailureTypeEntry.
        Identifies a controller that is unable to read the board ID of its alternate. The referenced controller is not necessarily the source of the problem.

        :return: The alt_ctlr_board_id_unreadable of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._alt_ctlr_board_id_unreadable

    @alt_ctlr_board_id_unreadable.setter
    def alt_ctlr_board_id_unreadable(self, alt_ctlr_board_id_unreadable):
        """
        Sets the alt_ctlr_board_id_unreadable of this FailureTypeEntry.
        Identifies a controller that is unable to read the board ID of its alternate. The referenced controller is not necessarily the source of the problem.

        :param alt_ctlr_board_id_unreadable: The alt_ctlr_board_id_unreadable of this FailureTypeEntry.
        :type: str
        """
        self._alt_ctlr_board_id_unreadable = alt_ctlr_board_id_unreadable

    @property
    def base_controller_diag_failed(self):
        """
        Gets the base_controller_diag_failed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BASE_CONTROLLER_DIAG_FAILED. It contains the identification of the controller that failed diagnostic testing.

        :return: The base_controller_diag_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._base_controller_diag_failed

    @base_controller_diag_failed.setter
    def base_controller_diag_failed(self, base_controller_diag_failed):
        """
        Sets the base_controller_diag_failed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BASE_CONTROLLER_DIAG_FAILED. It contains the identification of the controller that failed diagnostic testing.

        :param base_controller_diag_failed: The base_controller_diag_failed of this FailureTypeEntry.
        :type: str
        """
        self._base_controller_diag_failed = base_controller_diag_failed

    @property
    def battery_config_mismatch(self):
        """
        Gets the battery_config_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BATTERY_CONFIG_MISMATCH

        :return: The battery_config_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_config_mismatch

    @battery_config_mismatch.setter
    def battery_config_mismatch(self, battery_config_mismatch):
        """
        Sets the battery_config_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BATTERY_CONFIG_MISMATCH

        :param battery_config_mismatch: The battery_config_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._battery_config_mismatch = battery_config_mismatch

    @property
    def battery_warn(self):
        """
        Gets the battery_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_BATTERY_NEAR_EXPIRATION. It contains the identification of the battery component that is nearing its age limit.

        :return: The battery_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_warn

    @battery_warn.setter
    def battery_warn(self, battery_warn):
        """
        Sets the battery_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_BATTERY_NEAR_EXPIRATION. It contains the identification of the battery component that is nearing its age limit.

        :param battery_warn: The battery_warn of this FailureTypeEntry.
        :type: str
        """
        self._battery_warn = battery_warn

    @property
    def battery_temp_warn(self):
        """
        Gets the battery_temp_warn of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_BATTERY_OVERTEMP. It is a reference to a battery component that is experiencing the over-temp condition.

        :return: The battery_temp_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_temp_warn

    @battery_temp_warn.setter
    def battery_temp_warn(self, battery_temp_warn):
        """
        Sets the battery_temp_warn of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_BATTERY_OVERTEMP. It is a reference to a battery component that is experiencing the over-temp condition.

        :param battery_temp_warn: The battery_temp_warn of this FailureTypeEntry.
        :type: str
        """
        self._battery_temp_warn = battery_temp_warn

    @property
    def battery_stat_unknown(self):
        """
        Gets the battery_stat_unknown of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BATTERY_UNKNOWN_STAT.

        :return: The battery_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_stat_unknown

    @battery_stat_unknown.setter
    def battery_stat_unknown(self, battery_stat_unknown):
        """
        Sets the battery_stat_unknown of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_BATTERY_UNKNOWN_STAT.

        :param battery_stat_unknown: The battery_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._battery_stat_unknown = battery_stat_unknown

    @property
    def battery_capacity_warn(self):
        """
        Gets the battery_capacity_warn of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_BATTERY_WARN. It is a reference to a battery component that has insufficient capacity to hold up the cache.

        :return: The battery_capacity_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_capacity_warn

    @battery_capacity_warn.setter
    def battery_capacity_warn(self, battery_capacity_warn):
        """
        Sets the battery_capacity_warn of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_BATTERY_WARN. It is a reference to a battery component that has insufficient capacity to hold up the cache.

        :param battery_capacity_warn: The battery_capacity_warn of this FailureTypeEntry.
        :type: str
        """
        self._battery_capacity_warn = battery_capacity_warn

    @property
    def failed_cache_backup_device(self):
        """
        Gets the failed_cache_backup_device of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_FAILED. It identifies a cache backup device that has failed.

        :return: The failed_cache_backup_device of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_cache_backup_device

    @failed_cache_backup_device.setter
    def failed_cache_backup_device(self, failed_cache_backup_device):
        """
        Sets the failed_cache_backup_device of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_FAILED. It identifies a cache backup device that has failed.

        :param failed_cache_backup_device: The failed_cache_backup_device of this FailureTypeEntry.
        :type: str
        """
        self._failed_cache_backup_device = failed_cache_backup_device

    @property
    def insufficient_cache_backup_device_capacity(self):
        """
        Gets the insufficient_cache_backup_device_capacity of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_INSUFFICIENT_CAPACITY. It identifies a controller whose cache backup device configuration is such that it does not have sufficient space for a full cache backup.

        :return: The insufficient_cache_backup_device_capacity of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._insufficient_cache_backup_device_capacity

    @insufficient_cache_backup_device_capacity.setter
    def insufficient_cache_backup_device_capacity(self, insufficient_cache_backup_device_capacity):
        """
        Sets the insufficient_cache_backup_device_capacity of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_INSUFFICIENT_CAPACITY. It identifies a controller whose cache backup device configuration is such that it does not have sufficient space for a full cache backup.

        :param insufficient_cache_backup_device_capacity: The insufficient_cache_backup_device_capacity of this FailureTypeEntry.
        :type: str
        """
        self._insufficient_cache_backup_device_capacity = insufficient_cache_backup_device_capacity

    @property
    def write_protected_cache_backup_device(self):
        """
        Gets the write_protected_cache_backup_device of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_WRITE_PROTECTED. It identifies a cache backup device that is write-protected.

        :return: The write_protected_cache_backup_device of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._write_protected_cache_backup_device

    @write_protected_cache_backup_device.setter
    def write_protected_cache_backup_device(self, write_protected_cache_backup_device):
        """
        Sets the write_protected_cache_backup_device of this FailureTypeEntry.
        This field is present if the recFailuretype is equal to REC_CACHE_BACKUP_DEVICE_WRITE_PROTECTED. It identifies a cache backup device that is write-protected.

        :param write_protected_cache_backup_device: The write_protected_cache_backup_device of this FailureTypeEntry.
        :type: str
        """
        self._write_protected_cache_backup_device = write_protected_cache_backup_device

    @property
    def channel_degraded_failure(self):
        """
        Gets the channel_degraded_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CHANNEL_DEGRADED. The channel is in a degraded state.

        :return: The channel_degraded_failure of this FailureTypeEntry.
        :rtype: ChannelDegradedFailure
        :required/optional: optional
        """
        return self._channel_degraded_failure

    @channel_degraded_failure.setter
    def channel_degraded_failure(self, channel_degraded_failure):
        """
        Sets the channel_degraded_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CHANNEL_DEGRADED. The channel is in a degraded state.

        :param channel_degraded_failure: The channel_degraded_failure of this FailureTypeEntry.
        :type: ChannelDegradedFailure
        """
        self._channel_degraded_failure = channel_degraded_failure

    @property
    def channel_failed_failure(self):
        """
        Gets the channel_failed_failure of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CHANNEL_FAILED.

        :return: The channel_failed_failure of this FailureTypeEntry.
        :rtype: ChannelFailedFailure
        :required/optional: optional
        """
        return self._channel_failed_failure

    @channel_failed_failure.setter
    def channel_failed_failure(self, channel_failed_failure):
        """
        Sets the channel_failed_failure of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CHANNEL_FAILED.

        :param channel_failed_failure: The channel_failed_failure of this FailureTypeEntry.
        :type: ChannelFailedFailure
        """
        self._channel_failed_failure = channel_failed_failure

    @property
    def chan_miswire(self):
        """
        Gets the chan_miswire of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CHANNEL_MISWIRE. It identifies the controller having the channel miswire information.

        :return: The chan_miswire of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._chan_miswire

    @chan_miswire.setter
    def chan_miswire(self, chan_miswire):
        """
        Sets the chan_miswire of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CHANNEL_MISWIRE. It identifies the controller having the channel miswire information.

        :param chan_miswire: The chan_miswire of this FailureTypeEntry.
        :type: str
        """
        self._chan_miswire = chan_miswire

    @property
    def vpd_eeprom_corrupted(self):
        """
        Gets the vpd_eeprom_corrupted of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CORRUPT_VPD_EEPROM. It indicates a controller tray in which corruption of one of the redundant Storage Bridge Bay (SBB) EEPROMs has been detected.

        :return: The vpd_eeprom_corrupted of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vpd_eeprom_corrupted

    @vpd_eeprom_corrupted.setter
    def vpd_eeprom_corrupted(self, vpd_eeprom_corrupted):
        """
        Sets the vpd_eeprom_corrupted of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CORRUPT_VPD_EEPROM. It indicates a controller tray in which corruption of one of the redundant Storage Bridge Bay (SBB) EEPROMs has been detected.

        :param vpd_eeprom_corrupted: The vpd_eeprom_corrupted of this FailureTypeEntry.
        :type: str
        """
        self._vpd_eeprom_corrupted = vpd_eeprom_corrupted

    @property
    def ctl_mismatch(self):
        """
        Gets the ctl_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CTL_MISMATCH.

        :return: The ctl_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ctl_mismatch

    @ctl_mismatch.setter
    def ctl_mismatch(self, ctl_mismatch):
        """
        Sets the ctl_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CTL_MISMATCH.

        :param ctl_mismatch: The ctl_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._ctl_mismatch = ctl_mismatch

    @property
    def ctl_miswire(self):
        """
        Gets the ctl_miswire of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CTL_MISWIRE.

        :return: The ctl_miswire of this FailureTypeEntry.
        :rtype: ControllerMiswireError
        :required/optional: optional
        """
        return self._ctl_miswire

    @ctl_miswire.setter
    def ctl_miswire(self, ctl_miswire):
        """
        Sets the ctl_miswire of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_CTL_MISWIRE.

        :param ctl_miswire: The ctl_miswire of this FailureTypeEntry.
        :type: ControllerMiswireError
        """
        self._ctl_miswire = ctl_miswire

    @property
    def ddf_drive_other_vendor(self):
        """
        Gets the ddf_drive_other_vendor of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_DDF_DRIVE_OTHER_VENDOR. It identifies a drive that has a SNIA Disk Data Format (DDF) anchor indicating a vendor other than LSI-Engenio.

        :return: The ddf_drive_other_vendor of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ddf_drive_other_vendor

    @ddf_drive_other_vendor.setter
    def ddf_drive_other_vendor(self, ddf_drive_other_vendor):
        """
        Sets the ddf_drive_other_vendor of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_DDF_DRIVE_OTHER_VENDOR. It identifies a drive that has a SNIA Disk Data Format (DDF) anchor indicating a vendor other than LSI-Engenio.

        :param ddf_drive_other_vendor: The ddf_drive_other_vendor of this FailureTypeEntry.
        :type: str
        """
        self._ddf_drive_other_vendor = ddf_drive_other_vendor

    @property
    def failed_dedicated_mirror_channel(self):
        """
        Gets the failed_dedicated_mirror_channel of this FailureTypeEntry.
        This field is present if the value of recFailureType is equal to REC_DEDICATED_MIRROR_CHANNEL_FAILED. It identifies a degraded controller that is the root cause of the channel failure(s). If the channel failure root cause cannot be tied to a controller, the reference is null.

        :return: The failed_dedicated_mirror_channel of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_dedicated_mirror_channel

    @failed_dedicated_mirror_channel.setter
    def failed_dedicated_mirror_channel(self, failed_dedicated_mirror_channel):
        """
        Sets the failed_dedicated_mirror_channel of this FailureTypeEntry.
        This field is present if the value of recFailureType is equal to REC_DEDICATED_MIRROR_CHANNEL_FAILED. It identifies a degraded controller that is the root cause of the channel failure(s). If the channel failure root cause cannot be tied to a controller, the reference is null.

        :param failed_dedicated_mirror_channel: The failed_dedicated_mirror_channel of this FailureTypeEntry.
        :type: str
        """
        self._failed_dedicated_mirror_channel = failed_dedicated_mirror_channel

    @property
    def degraded_host_board(self):
        """
        Gets the degraded_host_board of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_DEGRADED_HOST_IO_CARD. It identifies s host board, for which some, but not all, of its I/O ports are operational.

        :return: The degraded_host_board of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._degraded_host_board

    @degraded_host_board.setter
    def degraded_host_board(self, degraded_host_board):
        """
        Sets the degraded_host_board of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_DEGRADED_HOST_IO_CARD. It identifies s host board, for which some, but not all, of its I/O ports are operational.

        :param degraded_host_board: The degraded_host_board of this FailureTypeEntry.
        :type: str
        """
        self._degraded_host_board = degraded_host_board

    @property
    def vol_degraded(self):
        """
        Gets the vol_degraded of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DEGRADED_VOLUME. It contains the identification of a volume group that has transitioned to the degraded state due to a drive failure.

        :return: The vol_degraded of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_degraded

    @vol_degraded.setter
    def vol_degraded(self, vol_degraded):
        """
        Sets the vol_degraded of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DEGRADED_VOLUME. It contains the identification of a volume group that has transitioned to the degraded state due to a drive failure.

        :param vol_degraded: The vol_degraded of this FailureTypeEntry.
        :type: str
        """
        self._vol_degraded = vol_degraded

    @property
    def drv_bypass_cause_unknown(self):
        """
        Gets the drv_bypass_cause_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_BYPASSED_CAUSE_UNKNOWN. It contains the identification of the drive that was bypassed.

        :return: The drv_bypass_cause_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drv_bypass_cause_unknown

    @drv_bypass_cause_unknown.setter
    def drv_bypass_cause_unknown(self, drv_bypass_cause_unknown):
        """
        Sets the drv_bypass_cause_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_BYPASSED_CAUSE_UNKNOWN. It contains the identification of the drive that was bypassed.

        :param drv_bypass_cause_unknown: The drv_bypass_cause_unknown of this FailureTypeEntry.
        :type: str
        """
        self._drv_bypass_cause_unknown = drv_bypass_cause_unknown

    @property
    def drive_bypassed_single_port(self):
        """
        Gets the drive_bypassed_single_port of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_DRIVE_BYPASSED_SINGLE_PORT. It is a reference to a drive that is bypassed on just one of its ports.

        :return: The drive_bypassed_single_port of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_bypassed_single_port

    @drive_bypassed_single_port.setter
    def drive_bypassed_single_port(self, drive_bypassed_single_port):
        """
        Sets the drive_bypassed_single_port of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_DRIVE_BYPASSED_SINGLE_PORT. It is a reference to a drive that is bypassed on just one of its ports.

        :param drive_bypassed_single_port: The drive_bypassed_single_port of this FailureTypeEntry.
        :type: str
        """
        self._drive_bypassed_single_port = drive_bypassed_single_port

    @property
    def speed_mismatch_drive(self):
        """
        Gets the speed_mismatch_drive of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_BYPASSED_SPEED_MISMATCH. It contains the identification of the drive that was bypassed.

        :return: The speed_mismatch_drive of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._speed_mismatch_drive

    @speed_mismatch_drive.setter
    def speed_mismatch_drive(self, speed_mismatch_drive):
        """
        Sets the speed_mismatch_drive of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_BYPASSED_SPEED_MISMATCH. It contains the identification of the drive that was bypassed.

        :param speed_mismatch_drive: The speed_mismatch_drive of this FailureTypeEntry.
        :type: str
        """
        self._speed_mismatch_drive = speed_mismatch_drive

    @property
    def incompatible_down_rev_dacstore_drive_ref(self):
        """
        Gets the incompatible_down_rev_dacstore_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_DOWNREV_DACSTORE. It is a reference to a drive that has an unrecognizable DACStore that was written by an earlier firmware version.

        :return: The incompatible_down_rev_dacstore_drive_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incompatible_down_rev_dacstore_drive_ref

    @incompatible_down_rev_dacstore_drive_ref.setter
    def incompatible_down_rev_dacstore_drive_ref(self, incompatible_down_rev_dacstore_drive_ref):
        """
        Sets the incompatible_down_rev_dacstore_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_DOWNREV_DACSTORE. It is a reference to a drive that has an unrecognizable DACStore that was written by an earlier firmware version.

        :param incompatible_down_rev_dacstore_drive_ref: The incompatible_down_rev_dacstore_drive_ref of this FailureTypeEntry.
        :type: str
        """
        self._incompatible_down_rev_dacstore_drive_ref = incompatible_down_rev_dacstore_drive_ref

    @property
    def mixed_drive_enclosure_miswire(self):
        """
        Gets the mixed_drive_enclosure_miswire of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_MIXED_DRIVE_ENCLOSURE_MISWIRE. It identifies the drive channels with an unsupported combination of drive enclosures.

        :return: The mixed_drive_enclosure_miswire of this FailureTypeEntry.
        :rtype: list[MiswiredDriveChannelList]
        :required/optional: optional
        """
        return self._mixed_drive_enclosure_miswire

    @mixed_drive_enclosure_miswire.setter
    def mixed_drive_enclosure_miswire(self, mixed_drive_enclosure_miswire):
        """
        Sets the mixed_drive_enclosure_miswire of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_MIXED_DRIVE_ENCLOSURE_MISWIRE. It identifies the drive channels with an unsupported combination of drive enclosures.

        :param mixed_drive_enclosure_miswire: The mixed_drive_enclosure_miswire of this FailureTypeEntry.
        :type: list[MiswiredDriveChannelList]
        """
        self._mixed_drive_enclosure_miswire = mixed_drive_enclosure_miswire

    @property
    def incompatible_sector_size_drive_ref(self):
        """
        Gets the incompatible_sector_size_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_SECTOR_SIZE. It is a reference to a drive that has a formatted sector size that is different from the other drives in the array.

        :return: The incompatible_sector_size_drive_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incompatible_sector_size_drive_ref

    @incompatible_sector_size_drive_ref.setter
    def incompatible_sector_size_drive_ref(self, incompatible_sector_size_drive_ref):
        """
        Sets the incompatible_sector_size_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_SECTOR_SIZE. It is a reference to a drive that has a formatted sector size that is different from the other drives in the array.

        :param incompatible_sector_size_drive_ref: The incompatible_sector_size_drive_ref of this FailureTypeEntry.
        :type: str
        """
        self._incompatible_sector_size_drive_ref = incompatible_sector_size_drive_ref

    @property
    def incompatible_up_rev_dacstore_drive_ref(self):
        """
        Gets the incompatible_up_rev_dacstore_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_UPREV_DACSTORE. It is a reference to a drive that has an unrecognizable DACStore that was written by a later firmware version.

        :return: The incompatible_up_rev_dacstore_drive_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incompatible_up_rev_dacstore_drive_ref

    @incompatible_up_rev_dacstore_drive_ref.setter
    def incompatible_up_rev_dacstore_drive_ref(self, incompatible_up_rev_dacstore_drive_ref):
        """
        Sets the incompatible_up_rev_dacstore_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_DRIVE_INCOMPATIBLE_UPREV_DACSTORE. It is a reference to a drive that has an unrecognizable DACStore that was written by a later firmware version.

        :param incompatible_up_rev_dacstore_drive_ref: The incompatible_up_rev_dacstore_drive_ref of this FailureTypeEntry.
        :type: str
        """
        self._incompatible_up_rev_dacstore_drive_ref = incompatible_up_rev_dacstore_drive_ref

    @property
    def drive_tray_expansion_feature(self):
        """
        Gets the drive_tray_expansion_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_TRAYS_NOT_COMPLIANT. It indicates that the drive tray feature is out of compliance.

        :return: The drive_tray_expansion_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._drive_tray_expansion_feature

    @drive_tray_expansion_feature.setter
    def drive_tray_expansion_feature(self, drive_tray_expansion_feature):
        """
        Sets the drive_tray_expansion_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DRIVE_TRAYS_NOT_COMPLIANT. It indicates that the drive tray feature is out of compliance.

        :param drive_tray_expansion_feature: The drive_tray_expansion_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._drive_tray_expansion_feature = drive_tray_expansion_feature

    @property
    def drive_trays_not_grouped_together(self):
        """
        Gets the drive_trays_not_grouped_together of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_DRIVE_TRAYS_NOT_GROUPED_TOGETHER.

        :return: The drive_trays_not_grouped_together of this FailureTypeEntry.
        :rtype: TrayRefList
        :required/optional: optional
        """
        return self._drive_trays_not_grouped_together

    @drive_trays_not_grouped_together.setter
    def drive_trays_not_grouped_together(self, drive_trays_not_grouped_together):
        """
        Sets the drive_trays_not_grouped_together of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_DRIVE_TRAYS_NOT_GROUPED_TOGETHER.

        :param drive_trays_not_grouped_together: The drive_trays_not_grouped_together of this FailureTypeEntry.
        :type: TrayRefList
        """
        self._drive_trays_not_grouped_together = drive_trays_not_grouped_together

    @property
    def misconfigured_enclosure(self):
        """
        Gets the misconfigured_enclosure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ENCLOSURE_MISCONFIGURED. It indicates an enclosure has invalid configuration settings.

        :return: The misconfigured_enclosure of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._misconfigured_enclosure

    @misconfigured_enclosure.setter
    def misconfigured_enclosure(self, misconfigured_enclosure):
        """
        Sets the misconfigured_enclosure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ENCLOSURE_MISCONFIGURED. It indicates an enclosure has invalid configuration settings.

        :param misconfigured_enclosure: The misconfigured_enclosure of this FailureTypeEntry.
        :type: str
        """
        self._misconfigured_enclosure = misconfigured_enclosure

    @property
    def tray_code_mismatch(self):
        """
        Gets the tray_code_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_CODE_VERSION_MISMATCH. It contains the identification of the tray that has the ESM cards that have mismatching firmware versions.

        :return: The tray_code_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._tray_code_mismatch

    @tray_code_mismatch.setter
    def tray_code_mismatch(self, tray_code_mismatch):
        """
        Sets the tray_code_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_CODE_VERSION_MISMATCH. It contains the identification of the tray that has the ESM cards that have mismatching firmware versions.

        :param tray_code_mismatch: The tray_code_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._tray_code_mismatch = tray_code_mismatch

    @property
    def esm_factory_defaults_mismatch(self):
        """
        Gets the esm_factory_defaults_mismatch of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_ESM_FACTORY_DEFAULTS_MISMATCH. It is a reference to a tray in which the versions of the factory default settings reported by the two ESMs do not match.

        :return: The esm_factory_defaults_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_factory_defaults_mismatch

    @esm_factory_defaults_mismatch.setter
    def esm_factory_defaults_mismatch(self, esm_factory_defaults_mismatch):
        """
        Sets the esm_factory_defaults_mismatch of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_ESM_FACTORY_DEFAULTS_MISMATCH. It is a reference to a tray in which the versions of the factory default settings reported by the two ESMs do not match.

        :param esm_factory_defaults_mismatch: The esm_factory_defaults_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._esm_factory_defaults_mismatch = esm_factory_defaults_mismatch

    @property
    def tray_hardware_mismatch(self):
        """
        Gets the tray_hardware_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_HARDWARE_MISMATCH. It contains the identification of the tray that has the mismatched ESM cards.

        :return: The tray_hardware_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._tray_hardware_mismatch

    @tray_hardware_mismatch.setter
    def tray_hardware_mismatch(self, tray_hardware_mismatch):
        """
        Sets the tray_hardware_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_HARDWARE_MISMATCH. It contains the identification of the tray that has the mismatched ESM cards.

        :param tray_hardware_mismatch: The tray_hardware_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._tray_hardware_mismatch = tray_hardware_mismatch

    @property
    def esm_miswire(self):
        """
        Gets the esm_miswire of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_MISWIRE. It contains the identification of the tray that has the ESM miswire.

        :return: The esm_miswire of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_miswire

    @esm_miswire.setter
    def esm_miswire(self, esm_miswire):
        """
        Sets the esm_miswire of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_MISWIRE. It contains the identification of the tray that has the ESM miswire.

        :param esm_miswire: The esm_miswire of this FailureTypeEntry.
        :type: str
        """
        self._esm_miswire = esm_miswire

    @property
    def esm_stat_unknown(self):
        """
        Gets the esm_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_UNKNOWN_STAT. It contains the identification of the ESM that has failed with unknown status.

        :return: The esm_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_stat_unknown

    @esm_stat_unknown.setter
    def esm_stat_unknown(self, esm_stat_unknown):
        """
        Sets the esm_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ESM_UNKNOWN_STAT. It contains the identification of the ESM that has failed with unknown status.

        :param esm_stat_unknown: The esm_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._esm_stat_unknown = esm_stat_unknown

    @property
    def battery_expired(self):
        """
        Gets the battery_expired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_EXPIRED_BATTERY,. It contains the identification of the battery component that has expired.

        :return: The battery_expired of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_expired

    @battery_expired.setter
    def battery_expired(self, battery_expired):
        """
        Sets the battery_expired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_EXPIRED_BATTERY,. It contains the identification of the battery component that has expired.

        :param battery_expired: The battery_expired of this FailureTypeEntry.
        :type: str
        """
        self._battery_expired = battery_expired

    @property
    def integrated_battery_expired(self):
        """
        Gets the integrated_battery_expired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_EXPIRED_INTEGRATED_BATTERY. It contains the identification of the integrated battery component that has expired.

        :return: The integrated_battery_expired of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._integrated_battery_expired

    @integrated_battery_expired.setter
    def integrated_battery_expired(self, integrated_battery_expired):
        """
        Sets the integrated_battery_expired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_EXPIRED_INTEGRATED_BATTERY. It contains the identification of the integrated battery component that has expired.

        :param integrated_battery_expired: The integrated_battery_expired of this FailureTypeEntry.
        :type: str
        """
        self._integrated_battery_expired = integrated_battery_expired

    @property
    def battery_fail(self):
        """
        Gets the battery_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_BATTERY. It contains the identification of the battery component that has failed.

        :return: The battery_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_fail

    @battery_fail.setter
    def battery_fail(self, battery_fail):
        """
        Sets the battery_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_BATTERY. It contains the identification of the battery component that has failed.

        :param battery_fail: The battery_fail of this FailureTypeEntry.
        :type: str
        """
        self._battery_fail = battery_fail

    @property
    def battery_system_fail(self):
        """
        Gets the battery_system_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_BATTERY_SYSTEM.

        :return: The battery_system_fail of this FailureTypeEntry.
        :rtype: BatteryPackICCFailure
        :required/optional: optional
        """
        return self._battery_system_fail

    @battery_system_fail.setter
    def battery_system_fail(self, battery_system_fail):
        """
        Sets the battery_system_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_BATTERY_SYSTEM.

        :param battery_system_fail: The battery_system_fail of this FailureTypeEntry.
        :type: BatteryPackICCFailure
        """
        self._battery_system_fail = battery_system_fail

    @property
    def discrete_line_fail(self):
        """
        Gets the discrete_line_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_DISCRETE_LINE.

        :return: The discrete_line_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._discrete_line_fail

    @discrete_line_fail.setter
    def discrete_line_fail(self, discrete_line_fail):
        """
        Sets the discrete_line_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_DISCRETE_LINE.

        :param discrete_line_fail: The discrete_line_fail of this FailureTypeEntry.
        :type: str
        """
        self._discrete_line_fail = discrete_line_fail

    @property
    def drive_fail(self):
        """
        Gets the drive_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_DRIVE. It contains the identification of a drive that has failed.

        :return: The drive_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_fail

    @drive_fail.setter
    def drive_fail(self, drive_fail):
        """
        Sets the drive_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_DRIVE. It contains the identification of a drive that has failed.

        :param drive_fail: The drive_fail of this FailureTypeEntry.
        :type: str
        """
        self._drive_fail = drive_fail

    @property
    def ch_fail(self):
        """
        Gets the ch_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_DRIVE_SCSI_CHANNEL. It contains the identification of the controller that has experienced a failed drive-side I/O channel.

        :return: The ch_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ch_fail

    @ch_fail.setter
    def ch_fail(self, ch_fail):
        """
        Sets the ch_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_DRIVE_SCSI_CHANNEL. It contains the identification of the controller that has experienced a failed drive-side I/O channel.

        :param ch_fail: The ch_fail of this FailureTypeEntry.
        :type: str
        """
        self._ch_fail = ch_fail

    @property
    def esm_fail(self):
        """
        Gets the esm_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_ESM. It contains the identification of the ESM component that has failed.

        :return: The esm_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_fail

    @esm_fail.setter
    def esm_fail(self, esm_fail):
        """
        Sets the esm_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_ESM. It contains the identification of the ESM component that has failed.

        :param esm_fail: The esm_fail of this FailureTypeEntry.
        :type: str
        """
        self._esm_fail = esm_fail

    @property
    def fan_fail(self):
        """
        Gets the fan_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_FAN. It contains the identification of the fan component that has failed.

        :return: The fan_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._fan_fail

    @fan_fail.setter
    def fan_fail(self, fan_fail):
        """
        Sets the fan_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_FAN. It contains the identification of the fan component that has failed.

        :param fan_fail: The fan_fail of this FailureTypeEntry.
        :type: str
        """
        self._fan_fail = fan_fail

    @property
    def vpd_i2c_failure(self):
        """
        Gets the vpd_i2c_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_I2C_BUS. It refers to a controller that has detected a failure of one of the I2C busses used to access the Storage Bridge Bay (SBB) vital product data stored in EEPROM. For a given I2C bus failure, the failure type list may contain an entry for one or both controllers.

        :return: The vpd_i2c_failure of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vpd_i2c_failure

    @vpd_i2c_failure.setter
    def vpd_i2c_failure(self, vpd_i2c_failure):
        """
        Sets the vpd_i2c_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_I2C_BUS. It refers to a controller that has detected a failure of one of the I2C busses used to access the Storage Bridge Bay (SBB) vital product data stored in EEPROM. For a given I2C bus failure, the failure type list may contain an entry for one or both controllers.

        :param vpd_i2c_failure: The vpd_i2c_failure of this FailureTypeEntry.
        :type: str
        """
        self._vpd_i2c_failure = vpd_i2c_failure

    @property
    def icc_cru_fail(self):
        """
        Gets the icc_cru_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_ICC_CRU.

        :return: The icc_cru_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._icc_cru_fail

    @icc_cru_fail.setter
    def icc_cru_fail(self, icc_cru_fail):
        """
        Sets the icc_cru_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_ICC_CRU.

        :param icc_cru_fail: The icc_cru_fail of this FailureTypeEntry.
        :type: str
        """
        self._icc_cru_fail = icc_cru_fail

    @property
    def mini_hub_fail(self):
        """
        Gets the mini_hub_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MINIHUB. It contains the identification of the minihub component that has failed.

        :return: The mini_hub_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._mini_hub_fail

    @mini_hub_fail.setter
    def mini_hub_fail(self, mini_hub_fail):
        """
        Sets the mini_hub_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MINIHUB. It contains the identification of the minihub component that has failed.

        :param mini_hub_fail: The mini_hub_fail of this FailureTypeEntry.
        :type: str
        """
        self._mini_hub_fail = mini_hub_fail

    @property
    def vol_fail_during_modify_multi_raid(self):
        """
        Gets the vol_fail_during_modify_multi_raid of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MODIFYING_MULTI_RAID. It contains the identification of a volume group that has experienced a failure during a modification operation (i.e. dynamic capacity expansion, RAID migration, segment resizing, initialization, etc.). This failure indication applies specifically to volume groups containing volumes of different RAID levels. It is not supported in the current release of the firmware.

        :return: The vol_fail_during_modify_multi_raid of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail_during_modify_multi_raid

    @vol_fail_during_modify_multi_raid.setter
    def vol_fail_during_modify_multi_raid(self, vol_fail_during_modify_multi_raid):
        """
        Sets the vol_fail_during_modify_multi_raid of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MODIFYING_MULTI_RAID. It contains the identification of a volume group that has experienced a failure during a modification operation (i.e. dynamic capacity expansion, RAID migration, segment resizing, initialization, etc.). This failure indication applies specifically to volume groups containing volumes of different RAID levels. It is not supported in the current release of the firmware.

        :param vol_fail_during_modify_multi_raid: The vol_fail_during_modify_multi_raid of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail_during_modify_multi_raid = vol_fail_during_modify_multi_raid

    @property
    def vol_fail_during_modify(self):
        """
        Gets the vol_fail_during_modify of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MODIFYING_VOLUME. It contains the identification of a volume group that has experienced a failure during a modification operation (i.e. dynamic capacity expansion, RAID migration, segment resizing, initialization, etc.).

        :return: The vol_fail_during_modify of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail_during_modify

    @vol_fail_during_modify.setter
    def vol_fail_during_modify(self, vol_fail_during_modify):
        """
        Sets the vol_fail_during_modify of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_MODIFYING_VOLUME. It contains the identification of a volume group that has experienced a failure during a modification operation (i.e. dynamic capacity expansion, RAID migration, segment resizing, initialization, etc.).

        :param vol_fail_during_modify: The vol_fail_during_modify of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail_during_modify = vol_fail_during_modify

    @property
    def power_supply_fail(self):
        """
        Gets the power_supply_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_POWER_SUPPLY. It contains the identification of the power supply component that has failed.

        :return: The power_supply_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._power_supply_fail

    @power_supply_fail.setter
    def power_supply_fail(self, power_supply_fail):
        """
        Sets the power_supply_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_POWER_SUPPLY. It contains the identification of the power supply component that has failed.

        :param power_supply_fail: The power_supply_fail of this FailureTypeEntry.
        :type: str
        """
        self._power_supply_fail = power_supply_fail

    @property
    def support_cru_fail(self):
        """
        Gets the support_cru_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_SUPPORT_CRU.

        :return: The support_cru_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._support_cru_fail

    @support_cru_fail.setter
    def support_cru_fail(self, support_cru_fail):
        """
        Sets the support_cru_fail of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FAILED_SUPPORT_CRU.

        :param support_cru_fail: The support_cru_fail of this FailureTypeEntry.
        :type: str
        """
        self._support_cru_fail = support_cru_fail

    @property
    def transceiver_module_failed(self):
        """
        Gets the transceiver_module_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_TRANSCEIVER_MODULE. It contains the identification of the transceiver module.

        :return: The transceiver_module_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._transceiver_module_failed

    @transceiver_module_failed.setter
    def transceiver_module_failed(self, transceiver_module_failed):
        """
        Sets the transceiver_module_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_TRANSCEIVER_MODULE. It contains the identification of the transceiver module.

        :param transceiver_module_failed: The transceiver_module_failed of this FailureTypeEntry.
        :type: str
        """
        self._transceiver_module_failed = transceiver_module_failed

    @property
    def vol_fail(self):
        """
        Gets the vol_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_INTERRUPTED_WRITE. It contains the identification of a volume group that has experienced an interrupted write failure.

        :return: The vol_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail

    @vol_fail.setter
    def vol_fail(self, vol_fail):
        """
        Sets the vol_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_INTERRUPTED_WRITE. It contains the identification of a volume group that has experienced an interrupted write failure.

        :param vol_fail: The vol_fail of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail = vol_fail

    @property
    def vol_fail_awaiting_init(self):
        """
        Gets the vol_fail_awaiting_init of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLUME_AWAITING_INIT. It contains the identification of a volume group that was failed due to excessive drive failures, but has since had all failed drives replaced. Since the volumes within the volume group are no longer usable, they must all be formatted/initialized to make them usable again.

        :return: The vol_fail_awaiting_init of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail_awaiting_init

    @vol_fail_awaiting_init.setter
    def vol_fail_awaiting_init(self, vol_fail_awaiting_init):
        """
        Sets the vol_fail_awaiting_init of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLUME_AWAITING_INIT. It contains the identification of a volume group that was failed due to excessive drive failures, but has since had all failed drives replaced. Since the volumes within the volume group are no longer usable, they must all be formatted/initialized to make them usable again.

        :param vol_fail_awaiting_init: The vol_fail_awaiting_init of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail_awaiting_init = vol_fail_awaiting_init

    @property
    def vol_fail_interrupted_write(self):
        """
        Gets the vol_fail_interrupted_write of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_INTERRUPTED_WRITE. It contains the identification of a volume group that has experienced an interrupted write failure.

        :return: The vol_fail_interrupted_write of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail_interrupted_write

    @vol_fail_interrupted_write.setter
    def vol_fail_interrupted_write(self, vol_fail_interrupted_write):
        """
        Sets the vol_fail_interrupted_write of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_INTERRUPTED_WRITE. It contains the identification of a volume group that has experienced an interrupted write failure.

        :param vol_fail_interrupted_write: The vol_fail_interrupted_write of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail_interrupted_write = vol_fail_interrupted_write

    @property
    def vol_fail_multi_raid(self):
        """
        Gets the vol_fail_multi_raid of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_MULTI_RAID. It contains the identification of a volume group that has been marked failed due to an excessive number of drive failures. This failure indication applies specifically to volume groups containing volumes of different RAID levels. It is not supported in the current release of the firmware.

        :return: The vol_fail_multi_raid of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_fail_multi_raid

    @vol_fail_multi_raid.setter
    def vol_fail_multi_raid(self, vol_fail_multi_raid):
        """
        Sets the vol_fail_multi_raid of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAILED_VOLUME_MULTI_RAID. It contains the identification of a volume group that has been marked failed due to an excessive number of drive failures. This failure indication applies specifically to volume groups containing volumes of different RAID levels. It is not supported in the current release of the firmware.

        :param vol_fail_multi_raid: The vol_fail_multi_raid of this FailureTypeEntry.
        :type: str
        """
        self._vol_fail_multi_raid = vol_fail_multi_raid

    @property
    def fan_stat_unknown(self):
        """
        Gets the fan_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAN_UNKNOWN_STAT. It contains the identification of the fan that has failed with unknown status.

        :return: The fan_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._fan_stat_unknown

    @fan_stat_unknown.setter
    def fan_stat_unknown(self, fan_stat_unknown):
        """
        Sets the fan_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_FAN_UNKNOWN_STAT. It contains the identification of the fan that has failed with unknown status.

        :param fan_stat_unknown: The fan_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._fan_stat_unknown = fan_stat_unknown

    @property
    def foreign_drive_has_inconsistent_role(self):
        """
        Gets the foreign_drive_has_inconsistent_role of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_HAS_INCONSISTENT_ROLE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the drive having the inconsistent role, and the volumeGroup field is a reference to the volume group referring to that drive.

        :return: The foreign_drive_has_inconsistent_role of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._foreign_drive_has_inconsistent_role

    @foreign_drive_has_inconsistent_role.setter
    def foreign_drive_has_inconsistent_role(self, foreign_drive_has_inconsistent_role):
        """
        Sets the foreign_drive_has_inconsistent_role of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_HAS_INCONSISTENT_ROLE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the drive having the inconsistent role, and the volumeGroup field is a reference to the volume group referring to that drive.

        :param foreign_drive_has_inconsistent_role: The foreign_drive_has_inconsistent_role of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._foreign_drive_has_inconsistent_role = foreign_drive_has_inconsistent_role

    @property
    def foreign_drive_inconsistent(self):
        """
        Gets the foreign_drive_inconsistent of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_INCONSISTENT. It identifies the inconsistent foreign drive.

        :return: The foreign_drive_inconsistent of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._foreign_drive_inconsistent

    @foreign_drive_inconsistent.setter
    def foreign_drive_inconsistent(self, foreign_drive_inconsistent):
        """
        Sets the foreign_drive_inconsistent of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_INCONSISTENT. It identifies the inconsistent foreign drive.

        :param foreign_drive_inconsistent: The foreign_drive_inconsistent of this FailureTypeEntry.
        :type: str
        """
        self._foreign_drive_inconsistent = foreign_drive_inconsistent

    @property
    def foreign_drive_refers_to_native_drive(self):
        """
        Gets the foreign_drive_refers_to_native_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_REFERS_TO_NATIVE_DRIVE. It identifies the drive that caused the problem to be recognized (the first-inserted drive of what appears to be an incoming foreign volume group).

        :return: The foreign_drive_refers_to_native_drive of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._foreign_drive_refers_to_native_drive

    @foreign_drive_refers_to_native_drive.setter
    def foreign_drive_refers_to_native_drive(self, foreign_drive_refers_to_native_drive):
        """
        Sets the foreign_drive_refers_to_native_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_FOREIGN_DRIVE_REFERS_TO_NATIVE_DRIVE. It identifies the drive that caused the problem to be recognized (the first-inserted drive of what appears to be an incoming foreign volume group).

        :param foreign_drive_refers_to_native_drive: The foreign_drive_refers_to_native_drive of this FailureTypeEntry.
        :type: str
        """
        self._foreign_drive_refers_to_native_drive = foreign_drive_refers_to_native_drive

    @property
    def ghost_volume(self):
        """
        Gets the ghost_volume of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_GHOST_VOLUME. It contains the identification of the missing volume.

        :return: The ghost_volume of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ghost_volume

    @ghost_volume.setter
    def ghost_volume(self, ghost_volume):
        """
        Sets the ghost_volume of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_GHOST_VOLUME. It contains the identification of the missing volume.

        :param ghost_volume: The ghost_volume of this FailureTypeEntry.
        :type: str
        """
        self._ghost_volume = ghost_volume

    @property
    def goldkey_feature(self):
        """
        Gets the goldkey_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_GOLD_KEY_NOT_COMPLIANT.

        :return: The goldkey_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._goldkey_feature

    @goldkey_feature.setter
    def goldkey_feature(self, goldkey_feature):
        """
        Sets the goldkey_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_GOLD_KEY_NOT_COMPLIANT.

        :param goldkey_feature: The goldkey_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._goldkey_feature = goldkey_feature

    @property
    def failed_host_board(self):
        """
        Gets the failed_host_board of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_HOST_BOARD_FAULT (or the numerically-equivalent REC_FAILED_HOST_IO_CARD). It identifies the failed host board.

        :return: The failed_host_board of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_host_board

    @failed_host_board.setter
    def failed_host_board(self, failed_host_board):
        """
        Sets the failed_host_board of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_HOST_BOARD_FAULT (or the numerically-equivalent REC_FAILED_HOST_IO_CARD). It identifies the failed host board.

        :param failed_host_board: The failed_host_board of this FailureTypeEntry.
        :type: str
        """
        self._failed_host_board = failed_host_board

    @property
    def host_board_id_mismatch(self):
        """
        Gets the host_board_id_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_HOST_BOARD_ID_MISMATCH. It identifies a host board on the other controller that has a mismatched identifier, and which caused the other controller to lock down.

        :return: The host_board_id_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._host_board_id_mismatch

    @host_board_id_mismatch.setter
    def host_board_id_mismatch(self, host_board_id_mismatch):
        """
        Sets the host_board_id_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_HOST_BOARD_ID_MISMATCH. It identifies a host board on the other controller that has a mismatched identifier, and which caused the other controller to lock down.

        :param host_board_id_mismatch: The host_board_id_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._host_board_id_mismatch = host_board_id_mismatch

    @property
    def host_board_stat_unknown(self):
        """
        Gets the host_board_stat_unknown of this FailureTypeEntry.
        This field is only present if the value of the recFailureType is equal to REC_HOST_BOARD_UNKNOWN_STAT. It is a reference to the host board for which the status is unknown.

        :return: The host_board_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._host_board_stat_unknown

    @host_board_stat_unknown.setter
    def host_board_stat_unknown(self, host_board_stat_unknown):
        """
        Sets the host_board_stat_unknown of this FailureTypeEntry.
        This field is only present if the value of the recFailureType is equal to REC_HOST_BOARD_UNKNOWN_STAT. It is a reference to the host board for which the status is unknown.

        :param host_board_stat_unknown: The host_board_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._host_board_stat_unknown = host_board_stat_unknown

    @property
    def missing_hot_spare_drive_ref(self):
        """
        Gets the missing_hot_spare_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_HOTSPARE_DRIVE_MISSING. It is a reference to a standby hot spare drive that is missing from the configuration.

        :return: The missing_hot_spare_drive_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._missing_hot_spare_drive_ref

    @missing_hot_spare_drive_ref.setter
    def missing_hot_spare_drive_ref(self, missing_hot_spare_drive_ref):
        """
        Sets the missing_hot_spare_drive_ref of this FailureTypeEntry.
        This field is only present if the value of recFailureType is equal to REC_HOTSPARE_DRIVE_MISSING. It is a reference to a standby hot spare drive that is missing from the configuration.

        :param missing_hot_spare_drive_ref: The missing_hot_spare_drive_ref of this FailureTypeEntry.
        :type: str
        """
        self._missing_hot_spare_drive_ref = missing_hot_spare_drive_ref

    @property
    def icc_cru_stat_unknown(self):
        """
        Gets the icc_cru_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ICC_CRU_UNKNOWN_STAT. It contains the identification of the interconnect CRU that has unknown status.

        :return: The icc_cru_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._icc_cru_stat_unknown

    @icc_cru_stat_unknown.setter
    def icc_cru_stat_unknown(self, icc_cru_stat_unknown):
        """
        Sets the icc_cru_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ICC_CRU_UNKNOWN_STAT. It contains the identification of the interconnect CRU that has unknown status.

        :param icc_cru_stat_unknown: The icc_cru_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._icc_cru_stat_unknown = icc_cru_stat_unknown

    @property
    def icc_missing(self):
        """
        Gets the icc_missing of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_ICC_MISSING. It identifies a controller enclosure having a missing interconnect cannister, which caused the other controller to lock down.

        :return: The icc_missing of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._icc_missing

    @icc_missing.setter
    def icc_missing(self, icc_missing):
        """
        Sets the icc_missing of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_ICC_MISSING. It identifies a controller enclosure having a missing interconnect cannister, which caused the other controller to lock down.

        :param icc_missing: The icc_missing of this FailureTypeEntry.
        :type: str
        """
        self._icc_missing = icc_missing

    @property
    def vol_impaired(self):
        """
        Gets the vol_impaired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPAIRED_VOLUME. It contains the identification of a volume that has been marked impaired due to the detection of an internal consistency problem.

        :return: The vol_impaired of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_impaired

    @vol_impaired.setter
    def vol_impaired(self, vol_impaired):
        """
        Sets the vol_impaired of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPAIRED_VOLUME. It contains the identification of a volume that has been marked impaired due to the detection of an internal consistency problem.

        :param vol_impaired: The vol_impaired of this FailureTypeEntry.
        :type: str
        """
        self._vol_impaired = vol_impaired

    @property
    def drive_fail_impending_high(self):
        """
        Gets the drive_fail_impending_high of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_HIGH. It contains the identification of a volume group containing a drive for which the risk of impending failure is considered to be \"high\". Failure risk levels are determined by built-in drive algorithms for early failure detection.

        :return: The drive_fail_impending_high of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_fail_impending_high

    @drive_fail_impending_high.setter
    def drive_fail_impending_high(self, drive_fail_impending_high):
        """
        Sets the drive_fail_impending_high of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_HIGH. It contains the identification of a volume group containing a drive for which the risk of impending failure is considered to be \"high\". Failure risk levels are determined by built-in drive algorithms for early failure detection.

        :param drive_fail_impending_high: The drive_fail_impending_high of this FailureTypeEntry.
        :type: str
        """
        self._drive_fail_impending_high = drive_fail_impending_high

    @property
    def drive_fail_impending_low(self):
        """
        Gets the drive_fail_impending_low of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_LOW. It contains the identification of a drive for which an impending failure condition has been detected. This failure type is only used for drives that are not assigned to any volume group.

        :return: The drive_fail_impending_low of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_fail_impending_low

    @drive_fail_impending_low.setter
    def drive_fail_impending_low(self, drive_fail_impending_low):
        """
        Sets the drive_fail_impending_low of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_LOW. It contains the identification of a drive for which an impending failure condition has been detected. This failure type is only used for drives that are not assigned to any volume group.

        :param drive_fail_impending_low: The drive_fail_impending_low of this FailureTypeEntry.
        :type: str
        """
        self._drive_fail_impending_low = drive_fail_impending_low

    @property
    def drive_fail_impending_med(self):
        """
        Gets the drive_fail_impending_med of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_MED. It contains the identification of a volume group containing a drive for which the risk of impending failure is considered to be \"medium\".

        :return: The drive_fail_impending_med of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_fail_impending_med

    @drive_fail_impending_med.setter
    def drive_fail_impending_med(self, drive_fail_impending_med):
        """
        Sets the drive_fail_impending_med of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_IMPENDING_DRIVE_FAILURE_RISK_MED. It contains the identification of a volume group containing a drive for which the risk of impending failure is considered to be \"medium\".

        :param drive_fail_impending_med: The drive_fail_impending_med of this FailureTypeEntry.
        :type: str
        """
        self._drive_fail_impending_med = drive_fail_impending_med

    @property
    def incompatible_failed_legacy_drive(self):
        """
        Gets the incompatible_failed_legacy_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_INCOMPATIBLE_FAILED_LEGACY_DRIVE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to a legacy failed or in-use hot spare drive; the volumeGroup field is a reference to the drive's parent volume group, or a null reference if the drive is unassigned. Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :return: The incompatible_failed_legacy_drive of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._incompatible_failed_legacy_drive

    @incompatible_failed_legacy_drive.setter
    def incompatible_failed_legacy_drive(self, incompatible_failed_legacy_drive):
        """
        Sets the incompatible_failed_legacy_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_INCOMPATIBLE_FAILED_LEGACY_DRIVE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to a legacy failed or in-use hot spare drive; the volumeGroup field is a reference to the drive's parent volume group, or a null reference if the drive is unassigned. Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :param incompatible_failed_legacy_drive: The incompatible_failed_legacy_drive of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._incompatible_failed_legacy_drive = incompatible_failed_legacy_drive

    @property
    def ld_fw_version_mismatch(self):
        """
        Gets the ld_fw_version_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_LD_FW_VERSION_MISMATCH. It identifies the controller firmware version recorded on the drives (the native controller firmware version) when a newly inserted Simplex controller has been locked down due to a mismatch between it's reported controller firmware version and the native controller firmware version. Download the reported native controller firmware version to the locked down controller to recover from this failure.

        :return: The ld_fw_version_mismatch of this FailureTypeEntry.
        :rtype: LockdownCtrlFwVersion
        :required/optional: optional
        """
        return self._ld_fw_version_mismatch

    @ld_fw_version_mismatch.setter
    def ld_fw_version_mismatch(self, ld_fw_version_mismatch):
        """
        Sets the ld_fw_version_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_LD_FW_VERSION_MISMATCH. It identifies the controller firmware version recorded on the drives (the native controller firmware version) when a newly inserted Simplex controller has been locked down due to a mismatch between it's reported controller firmware version and the native controller firmware version. Download the reported native controller firmware version to the locked down controller to recover from this failure.

        :param ld_fw_version_mismatch: The ld_fw_version_mismatch of this FailureTypeEntry.
        :type: LockdownCtrlFwVersion
        """
        self._ld_fw_version_mismatch = ld_fw_version_mismatch

    @property
    def legacy_vg_not_optimal(self):
        """
        Gets the legacy_vg_not_optimal of this FailureTypeEntry.
        This \"field\" is present if the recFailureType value has no associated reference. It means that, there is no data in the structure other than the failure type itself. This is true for the following recFailureType values:

        :return: The legacy_vg_not_optimal of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._legacy_vg_not_optimal

    @legacy_vg_not_optimal.setter
    def legacy_vg_not_optimal(self, legacy_vg_not_optimal):
        """
        Sets the legacy_vg_not_optimal of this FailureTypeEntry.
        This \"field\" is present if the recFailureType value has no associated reference. It means that, there is no data in the structure other than the failure type itself. This is true for the following recFailureType values:

        :param legacy_vg_not_optimal: The legacy_vg_not_optimal of this FailureTypeEntry.
        :type: str
        """
        self._legacy_vg_not_optimal = legacy_vg_not_optimal

    @property
    def link_speed_detection_error(self):
        """
        Gets the link_speed_detection_error of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_LINK_SPEED_DETECTION_MISMATCH.

        :return: The link_speed_detection_error of this FailureTypeEntry.
        :rtype: LinkSpeedDetectionError
        :required/optional: optional
        """
        return self._link_speed_detection_error

    @link_speed_detection_error.setter
    def link_speed_detection_error(self, link_speed_detection_error):
        """
        Sets the link_speed_detection_error of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_LINK_SPEED_DETECTION_MISMATCH.

        :param link_speed_detection_error: The link_speed_detection_error of this FailureTypeEntry.
        :type: LinkSpeedDetectionError
        """
        self._link_speed_detection_error = link_speed_detection_error

    @property
    def link_speed_mismatch(self):
        """
        Gets the link_speed_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_LINK_SPEED_MISMATCH. It identifies a controller that is locked down due to detection of a mismatch between an enclosure link speed setting and link speeds that the controller is able to support.

        :return: The link_speed_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._link_speed_mismatch

    @link_speed_mismatch.setter
    def link_speed_mismatch(self, link_speed_mismatch):
        """
        Sets the link_speed_mismatch of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_LINK_SPEED_MISMATCH. It identifies a controller that is locked down due to detection of a mismatch between an enclosure link speed setting and link speeds that the controller is able to support.

        :param link_speed_mismatch: The link_speed_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._link_speed_mismatch = link_speed_mismatch

    @property
    def drive_redundancy_failure(self):
        """
        Gets the drive_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_DRIVE. It contains the identification of the drive that has lost redundancy.

        :return: The drive_redundancy_failure of this FailureTypeEntry.
        :rtype: DriveLostRedundancyFailure
        :required/optional: optional
        """
        return self._drive_redundancy_failure

    @drive_redundancy_failure.setter
    def drive_redundancy_failure(self, drive_redundancy_failure):
        """
        Sets the drive_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_DRIVE. It contains the identification of the drive that has lost redundancy.

        :param drive_redundancy_failure: The drive_redundancy_failure of this FailureTypeEntry.
        :type: DriveLostRedundancyFailure
        """
        self._drive_redundancy_failure = drive_redundancy_failure

    @property
    def esm_redundancy_failure(self):
        """
        Gets the esm_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_ESM. It contains the identification of the ESM card that has lost redundancy.

        :return: The esm_redundancy_failure of this FailureTypeEntry.
        :rtype: EsmLostRedundancyFailure
        :required/optional: optional
        """
        return self._esm_redundancy_failure

    @esm_redundancy_failure.setter
    def esm_redundancy_failure(self, esm_redundancy_failure):
        """
        Sets the esm_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_ESM. It contains the identification of the ESM card that has lost redundancy.

        :param esm_redundancy_failure: The esm_redundancy_failure of this FailureTypeEntry.
        :type: EsmLostRedundancyFailure
        """
        self._esm_redundancy_failure = esm_redundancy_failure

    @property
    def tray_redundancy_failure(self):
        """
        Gets the tray_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_TRAY. It contains the identification of the tray that has lost redundancy.

        :return: The tray_redundancy_failure of this FailureTypeEntry.
        :rtype: TrayLostRedundancyFailure
        :required/optional: optional
        """
        return self._tray_redundancy_failure

    @tray_redundancy_failure.setter
    def tray_redundancy_failure(self, tray_redundancy_failure):
        """
        Sets the tray_redundancy_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOST_REDUNDANCY_TRAY. It contains the identification of the tray that has lost redundancy.

        :param tray_redundancy_failure: The tray_redundancy_failure of this FailureTypeEntry.
        :type: TrayLostRedundancyFailure
        """
        self._tray_redundancy_failure = tray_redundancy_failure

    @property
    def max_temp_warn(self):
        """
        Gets the max_temp_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MAX_TEMP_EXCEEDED. It contains the identification of the thermal sensor component that is reporting a temperature above the maximum level.

        :return: The max_temp_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._max_temp_warn

    @max_temp_warn.setter
    def max_temp_warn(self, max_temp_warn):
        """
        Sets the max_temp_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MAX_TEMP_EXCEEDED. It contains the identification of the thermal sensor component that is reporting a temperature above the maximum level.

        :param max_temp_warn: The max_temp_warn of this FailureTypeEntry.
        :type: str
        """
        self._max_temp_warn = max_temp_warn

    @property
    def mem_parity_error(self):
        """
        Gets the mem_parity_error of this FailureTypeEntry.
        This field is equal to present only if the RecoveryFailureType value is equal to REC_MEM_PARITY_ERROR. It contains the identification of the controller that has failed due to a persistent memory parity error.

        :return: The mem_parity_error of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._mem_parity_error

    @mem_parity_error.setter
    def mem_parity_error(self, mem_parity_error):
        """
        Sets the mem_parity_error of this FailureTypeEntry.
        This field is equal to present only if the RecoveryFailureType value is equal to REC_MEM_PARITY_ERROR. It contains the identification of the controller that has failed due to a persistent memory parity error.

        :param mem_parity_error: The mem_parity_error of this FailureTypeEntry.
        :type: str
        """
        self._mem_parity_error = mem_parity_error

    @property
    def metadata_offline(self):
        """
        Gets the metadata_offline of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_METADATA_OFFLINE.

        :return: The metadata_offline of this FailureTypeEntry.
        :rtype: MetadataOffline
        :required/optional: optional
        """
        return self._metadata_offline

    @metadata_offline.setter
    def metadata_offline(self, metadata_offline):
        """
        Sets the metadata_offline of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_METADATA_OFFLINE.

        :param metadata_offline: The metadata_offline of this FailureTypeEntry.
        :type: MetadataOffline
        """
        self._metadata_offline = metadata_offline

    @property
    def minihub_ref(self):
        """
        Gets the minihub_ref of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MINIHUB_SPEED_MISMATCH. It contains the identification of the drive side minihub with the data rate mismatch.

        :return: The minihub_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._minihub_ref

    @minihub_ref.setter
    def minihub_ref(self, minihub_ref):
        """
        Sets the minihub_ref of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MINIHUB_SPEED_MISMATCH. It contains the identification of the drive side minihub with the data rate mismatch.

        :param minihub_ref: The minihub_ref of this FailureTypeEntry.
        :type: str
        """
        self._minihub_ref = minihub_ref

    @property
    def dual_mirror_primary(self):
        """
        Gets the dual_mirror_primary of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_DUAL_PRIMARY. It contains the identification of the mirror relationship.

        :return: The dual_mirror_primary of this FailureTypeEntry.
        :rtype: DualMirrorPrimary
        :required/optional: optional
        """
        return self._dual_mirror_primary

    @dual_mirror_primary.setter
    def dual_mirror_primary(self, dual_mirror_primary):
        """
        Sets the dual_mirror_primary of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_DUAL_PRIMARY. It contains the identification of the mirror relationship.

        :param dual_mirror_primary: The dual_mirror_primary of this FailureTypeEntry.
        :type: DualMirrorPrimary
        """
        self._dual_mirror_primary = dual_mirror_primary

    @property
    def dual_mirror_secondary(self):
        """
        Gets the dual_mirror_secondary of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_DUAL_SECONDARY. It contains the identification of the mirror relationship.

        :return: The dual_mirror_secondary of this FailureTypeEntry.
        :rtype: DualMirrorSecondary
        :required/optional: optional
        """
        return self._dual_mirror_secondary

    @dual_mirror_secondary.setter
    def dual_mirror_secondary(self, dual_mirror_secondary):
        """
        Sets the dual_mirror_secondary of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_DUAL_SECONDARY. It contains the identification of the mirror relationship.

        :param dual_mirror_secondary: The dual_mirror_secondary of this FailureTypeEntry.
        :type: DualMirrorSecondary
        """
        self._dual_mirror_secondary = dual_mirror_secondary

    @property
    def mirror_unsynchronized(self):
        """
        Gets the mirror_unsynchronized of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_UNSYNCHRONIZED. It contains the identification of the mirror relationship.

        :return: The mirror_unsynchronized of this FailureTypeEntry.
        :rtype: MirrorUnsynchronized
        :required/optional: optional
        """
        return self._mirror_unsynchronized

    @mirror_unsynchronized.setter
    def mirror_unsynchronized(self, mirror_unsynchronized):
        """
        Sets the mirror_unsynchronized of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MIRROR_UNSYNCHRONIZED. It contains the identification of the mirror relationship.

        :param mirror_unsynchronized: The mirror_unsynchronized of this FailureTypeEntry.
        :type: MirrorUnsynchronized
        """
        self._mirror_unsynchronized = mirror_unsynchronized

    @property
    def mixeddrivetypes_feature(self):
        """
        Gets the mixeddrivetypes_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MISMATCHED_DRIVE_TYPE.

        :return: The mixeddrivetypes_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._mixeddrivetypes_feature

    @mixeddrivetypes_feature.setter
    def mixeddrivetypes_feature(self, mixeddrivetypes_feature):
        """
        Sets the mixeddrivetypes_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_MISMATCHED_DRIVE_TYPE.

        :param mixeddrivetypes_feature: The mixeddrivetypes_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._mixeddrivetypes_feature = mixeddrivetypes_feature

    @property
    def native_vg_foreign_drive_mutual_ref(self):
        """
        Gets the native_vg_foreign_drive_mutual_ref of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_NATIVE_VG_FOREIGN_DRIVE_MUTUAL_REF. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive; the volumeGroup field is a reference to the native volume group.

        :return: The native_vg_foreign_drive_mutual_ref of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._native_vg_foreign_drive_mutual_ref

    @native_vg_foreign_drive_mutual_ref.setter
    def native_vg_foreign_drive_mutual_ref(self, native_vg_foreign_drive_mutual_ref):
        """
        Sets the native_vg_foreign_drive_mutual_ref of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_NATIVE_VG_FOREIGN_DRIVE_MUTUAL_REF. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive; the volumeGroup field is a reference to the native volume group.

        :param native_vg_foreign_drive_mutual_ref: The native_vg_foreign_drive_mutual_ref of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._native_vg_foreign_drive_mutual_ref = native_vg_foreign_drive_mutual_ref

    @property
    def native_vg_refers_to_foreign_drive(self):
        """
        Gets the native_vg_refers_to_foreign_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_NATIVE_VG_REFERS_TO_FOREIGN_DRIVE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive, and the volumeGroup field is a reference to the native volume group.

        :return: The native_vg_refers_to_foreign_drive of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._native_vg_refers_to_foreign_drive

    @native_vg_refers_to_foreign_drive.setter
    def native_vg_refers_to_foreign_drive(self, native_vg_refers_to_foreign_drive):
        """
        Sets the native_vg_refers_to_foreign_drive of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_NATIVE_VG_REFERS_TO_FOREIGN_DRIVE. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive, and the volumeGroup field is a reference to the native volume group.

        :param native_vg_refers_to_foreign_drive: The native_vg_refers_to_foreign_drive of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._native_vg_refers_to_foreign_drive = native_vg_refers_to_foreign_drive

    @property
    def network_setup_error(self):
        """
        Gets the network_setup_error of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_NET_SETUP_ERROR.

        :return: The network_setup_error of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._network_setup_error

    @network_setup_error.setter
    def network_setup_error(self, network_setup_error):
        """
        Sets the network_setup_error of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_NET_SETUP_ERROR.

        :param network_setup_error: The network_setup_error of this FailureTypeEntry.
        :type: str
        """
        self._network_setup_error = network_setup_error

    @property
    def nominal_temp_warn(self):
        """
        Gets the nominal_temp_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NOMINAL_TEMP_EXCEEDED. It contains the identification of the thermal sensor component that is reporting a temperature above the nominal level.

        :return: The nominal_temp_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._nominal_temp_warn

    @nominal_temp_warn.setter
    def nominal_temp_warn(self, nominal_temp_warn):
        """
        Sets the nominal_temp_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NOMINAL_TEMP_EXCEEDED. It contains the identification of the thermal sensor component that is reporting a temperature above the nominal level.

        :param nominal_temp_warn: The nominal_temp_warn of this FailureTypeEntry.
        :type: str
        """
        self._nominal_temp_warn = nominal_temp_warn

    @property
    def non_fru_battery_warn(self):
        """
        Gets the non_fru_battery_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_BATTERY_NEAR_EXPIRATION (or its equivalent REC_INTEGRATED_BATTERY_NEAR_EXPIRATION). It contains the identification of the controller with the battery warning. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :return: The non_fru_battery_warn of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._non_fru_battery_warn

    @non_fru_battery_warn.setter
    def non_fru_battery_warn(self, non_fru_battery_warn):
        """
        Sets the non_fru_battery_warn of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_BATTERY_NEAR_EXPIRATION (or its equivalent REC_INTEGRATED_BATTERY_NEAR_EXPIRATION). It contains the identification of the controller with the battery warning. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :param non_fru_battery_warn: The non_fru_battery_warn of this FailureTypeEntry.
        :type: str
        """
        self._non_fru_battery_warn = non_fru_battery_warn

    @property
    def non_fru_battery_fail(self):
        """
        Gets the non_fru_battery_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_FAILED_BATTERY (or its equivalent REC_FAILED_INTEGRATED_BATTERY). It contains the identification of the controller with the failed battery. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :return: The non_fru_battery_fail of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._non_fru_battery_fail

    @non_fru_battery_fail.setter
    def non_fru_battery_fail(self, non_fru_battery_fail):
        """
        Sets the non_fru_battery_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_FAILED_BATTERY (or its equivalent REC_FAILED_INTEGRATED_BATTERY). It contains the identification of the controller with the failed battery. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :param non_fru_battery_fail: The non_fru_battery_fail of this FailureTypeEntry.
        :type: str
        """
        self._non_fru_battery_fail = non_fru_battery_fail

    @property
    def non_fru_battery_removed(self):
        """
        Gets the non_fru_battery_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_REMOVED_BATTERY (or its equivalent REC_REMOVED_INTEGRATED_BATTERY). It contains the identification of the FRU'd battery that was removed. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :return: The non_fru_battery_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._non_fru_battery_removed

    @non_fru_battery_removed.setter
    def non_fru_battery_removed(self, non_fru_battery_removed):
        """
        Sets the non_fru_battery_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_FRU_REMOVED_BATTERY (or its equivalent REC_REMOVED_INTEGRATED_BATTERY). It contains the identification of the FRU'd battery that was removed. Note that the \"non-FRU\" terminology is really misleading since this case applies only when the battery is in a FRU (as opposed to a CRU).

        :param non_fru_battery_removed: The non_fru_battery_removed of this FailureTypeEntry.
        :type: str
        """
        self._non_fru_battery_removed = non_fru_battery_removed

    @property
    def non_preferred_path(self):
        """
        Gets the non_preferred_path of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_PREFERRED_PATH. It contains the identification of the controller that is the preferred owner of the volume(s) that have been switched to the non-preferred owner due to some sort of I/O path error.

        :return: The non_preferred_path of this FailureTypeEntry.
        :rtype: NotOnPreferredPath
        :required/optional: optional
        """
        return self._non_preferred_path

    @non_preferred_path.setter
    def non_preferred_path(self, non_preferred_path):
        """
        Sets the non_preferred_path of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_NON_PREFERRED_PATH. It contains the identification of the controller that is the preferred owner of the volume(s) that have been switched to the non-preferred owner due to some sort of I/O path error.

        :param non_preferred_path: The non_preferred_path of this FailureTypeEntry.
        :type: NotOnPreferredPath
        """
        self._non_preferred_path = non_preferred_path

    @property
    def offline_ctl(self):
        """
        Gets the offline_ctl of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_OFFLINE_CTL. It contains the identification of a controller that has been placed offline.

        :return: The offline_ctl of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._offline_ctl

    @offline_ctl.setter
    def offline_ctl(self, offline_ctl):
        """
        Sets the offline_ctl of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_OFFLINE_CTL. It contains the identification of a controller that has been placed offline.

        :param offline_ctl: The offline_ctl of this FailureTypeEntry.
        :type: str
        """
        self._offline_ctl = offline_ctl

    @property
    def vol_group_offline(self):
        """
        Gets the vol_group_offline of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_OFFLINE_VOLUME_GROUP. It contains the identification of a volume group that has been marked offline. This can occur due to either an explicit user request, or the physical insertion of drives from another storage array.

        :return: The vol_group_offline of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_group_offline

    @vol_group_offline.setter
    def vol_group_offline(self, vol_group_offline):
        """
        Sets the vol_group_offline of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_OFFLINE_VOLUME_GROUP. It contains the identification of a volume group that has been marked offline. This can occur due to either an explicit user request, or the physical insertion of drives from another storage array.

        :param vol_group_offline: The vol_group_offline of this FailureTypeEntry.
        :type: str
        """
        self._vol_group_offline = vol_group_offline

    @property
    def spm_feature(self):
        """
        Gets the spm_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PARTITIONS_NOT_COMPLIANT. It contains the identification of the storage partitions feature that is not in compliance.

        :return: The spm_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._spm_feature

    @spm_feature.setter
    def spm_feature(self, spm_feature):
        """
        Sets the spm_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PARTITIONS_NOT_COMPLIANT. It contains the identification of the storage partitions feature that is not in compliance.

        :param spm_feature: The spm_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._spm_feature = spm_feature

    @property
    def passive_ctl(self):
        """
        Gets the passive_ctl of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PASSIVE_CTL. It contains the identification of a controller that has been placed into the \"passive\" mode of operation.

        :return: The passive_ctl of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._passive_ctl

    @passive_ctl.setter
    def passive_ctl(self, passive_ctl):
        """
        Sets the passive_ctl of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PASSIVE_CTL. It contains the identification of a controller that has been placed into the \"passive\" mode of operation.

        :param passive_ctl: The passive_ctl of this FailureTypeEntry.
        :type: str
        """
        self._passive_ctl = passive_ctl

    @property
    def path_degraded_failure(self):
        """
        Gets the path_degraded_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PATH_DEGRADED.

        :return: The path_degraded_failure of this FailureTypeEntry.
        :rtype: PathDegradedFailure
        :required/optional: optional
        """
        return self._path_degraded_failure

    @path_degraded_failure.setter
    def path_degraded_failure(self, path_degraded_failure):
        """
        Sets the path_degraded_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PATH_DEGRADED.

        :param path_degraded_failure: The path_degraded_failure of this FailureTypeEntry.
        :type: PathDegradedFailure
        """
        self._path_degraded_failure = path_degraded_failure

    @property
    def performance_tier_feature(self):
        """
        Gets the performance_tier_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PERFORMANCE_TIER_NOT_COMPLIANT. It indicates that the performance tier feature is out of compliance.

        :return: The performance_tier_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._performance_tier_feature

    @performance_tier_feature.setter
    def performance_tier_feature(self, performance_tier_feature):
        """
        Sets the performance_tier_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PERFORMANCE_TIER_NOT_COMPLIANT. It indicates that the performance tier feature is out of compliance.

        :param performance_tier_feature: The performance_tier_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._performance_tier_feature = performance_tier_feature

    @property
    def power_supply_stat_unknown(self):
        """
        Gets the power_supply_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_POWER_SUPPLY_UNKNOWN_STAT. It contains the identification of the power supply that has failed with unknown status.

        :return: The power_supply_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._power_supply_stat_unknown

    @power_supply_stat_unknown.setter
    def power_supply_stat_unknown(self, power_supply_stat_unknown):
        """
        Sets the power_supply_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_POWER_SUPPLY_UNKNOWN_STAT. It contains the identification of the power supply that has failed with unknown status.

        :param power_supply_stat_unknown: The power_supply_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._power_supply_stat_unknown = power_supply_stat_unknown

    @property
    def proc_mem_too_small_for_cache(self):
        """
        Gets the proc_mem_too_small_for_cache of this FailureTypeEntry.
        This field is present only if the recFailureType value is equal to REC_PROC_MEM_TOO_SMALL_FOR_CACHE. It identifies a controller that does not have enough processor memory for managing the amount of cache memory it has.

        :return: The proc_mem_too_small_for_cache of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._proc_mem_too_small_for_cache

    @proc_mem_too_small_for_cache.setter
    def proc_mem_too_small_for_cache(self, proc_mem_too_small_for_cache):
        """
        Sets the proc_mem_too_small_for_cache of this FailureTypeEntry.
        This field is present only if the recFailureType value is equal to REC_PROC_MEM_TOO_SMALL_FOR_CACHE. It identifies a controller that does not have enough processor memory for managing the amount of cache memory it has.

        :param proc_mem_too_small_for_cache: The proc_mem_too_small_for_cache of this FailureTypeEntry.
        :type: str
        """
        self._proc_mem_too_small_for_cache = proc_mem_too_small_for_cache

    @property
    def raid6_feature(self):
        """
        Gets the raid6_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_RAID6_NOT_COMPLIANT. It is a FeatureState structure indicating that the RAID 6 feature is out of compliance.

        :return: The raid6_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._raid6_feature

    @raid6_feature.setter
    def raid6_feature(self, raid6_feature):
        """
        Sets the raid6_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_RAID6_NOT_COMPLIANT. It is a FeatureState structure indicating that the RAID 6 feature is out of compliance.

        :param raid6_feature: The raid6_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._raid6_feature = raid6_feature

    @property
    def incorrect_support_cru(self):
        """
        Gets the incorrect_support_cru of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REDUNDANT_PS_REQUIRED. It contains the identification of the support CRU that is lacking a required power supply component.

        :return: The incorrect_support_cru of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incorrect_support_cru

    @incorrect_support_cru.setter
    def incorrect_support_cru(self, incorrect_support_cru):
        """
        Sets the incorrect_support_cru of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REDUNDANT_PS_REQUIRED. It contains the identification of the support CRU that is lacking a required power supply component.

        :param incorrect_support_cru: The incorrect_support_cru of this FailureTypeEntry.
        :type: str
        """
        self._incorrect_support_cru = incorrect_support_cru

    @property
    def remote_vol_no_array(self):
        """
        Gets the remote_vol_no_array of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_ARRAY. It contains the identification of the remote volume.

        :return: The remote_vol_no_array of this FailureTypeEntry.
        :rtype: RemoteVolNoArray
        :required/optional: optional
        """
        return self._remote_vol_no_array

    @remote_vol_no_array.setter
    def remote_vol_no_array(self, remote_vol_no_array):
        """
        Sets the remote_vol_no_array of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_ARRAY. It contains the identification of the remote volume.

        :param remote_vol_no_array: The remote_vol_no_array of this FailureTypeEntry.
        :type: RemoteVolNoArray
        """
        self._remote_vol_no_array = remote_vol_no_array

    @property
    def remote_vol_no_fabric(self):
        """
        Gets the remote_vol_no_fabric of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_FABRIC. It contains the identification of the remote volume.

        :return: The remote_vol_no_fabric of this FailureTypeEntry.
        :rtype: RemoteVolNoFabric
        :required/optional: optional
        """
        return self._remote_vol_no_fabric

    @remote_vol_no_fabric.setter
    def remote_vol_no_fabric(self, remote_vol_no_fabric):
        """
        Sets the remote_vol_no_fabric of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_FABRIC. It contains the identification of the remote volume.

        :param remote_vol_no_fabric: The remote_vol_no_fabric of this FailureTypeEntry.
        :type: RemoteVolNoFabric
        """
        self._remote_vol_no_fabric = remote_vol_no_fabric

    @property
    def remote_vol_no_lun(self):
        """
        Gets the remote_vol_no_lun of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_LUN. It contains the identification of the remote volume.

        :return: The remote_vol_no_lun of this FailureTypeEntry.
        :rtype: RemoteVolNoLUN
        :required/optional: optional
        """
        return self._remote_vol_no_lun

    @remote_vol_no_lun.setter
    def remote_vol_no_lun(self, remote_vol_no_lun):
        """
        Sets the remote_vol_no_lun of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_NO_LUN. It contains the identification of the remote volume.

        :param remote_vol_no_lun: The remote_vol_no_lun of this FailureTypeEntry.
        :type: RemoteVolNoLUN
        """
        self._remote_vol_no_lun = remote_vol_no_lun

    @property
    def remote_vol_wwn_change_failed(self):
        """
        Gets the remote_vol_wwn_change_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_WWN_CHANGE_FAILED. It contains the identification of the remote volume.

        :return: The remote_vol_wwn_change_failed of this FailureTypeEntry.
        :rtype: RemoteVolWWNChangeFailed
        :required/optional: optional
        """
        return self._remote_vol_wwn_change_failed

    @remote_vol_wwn_change_failed.setter
    def remote_vol_wwn_change_failed(self, remote_vol_wwn_change_failed):
        """
        Sets the remote_vol_wwn_change_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOTE_WWN_CHANGE_FAILED. It contains the identification of the remote volume.

        :param remote_vol_wwn_change_failed: The remote_vol_wwn_change_failed of this FailureTypeEntry.
        :type: RemoteVolWWNChangeFailed
        """
        self._remote_vol_wwn_change_failed = remote_vol_wwn_change_failed

    @property
    def alarm_removed(self):
        """
        Gets the alarm_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_ALARM. It contains the identification of the alarm that was removed.

        :return: The alarm_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._alarm_removed

    @alarm_removed.setter
    def alarm_removed(self, alarm_removed):
        """
        Sets the alarm_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_ALARM. It contains the identification of the alarm that was removed.

        :param alarm_removed: The alarm_removed of this FailureTypeEntry.
        :type: str
        """
        self._alarm_removed = alarm_removed

    @property
    def battery_removed(self):
        """
        Gets the battery_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_BATTERY. It contains the identification of the battery that was removed.

        :return: The battery_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_removed

    @battery_removed.setter
    def battery_removed(self, battery_removed):
        """
        Sets the battery_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_BATTERY. It contains the identification of the battery that was removed.

        :param battery_removed: The battery_removed of this FailureTypeEntry.
        :type: str
        """
        self._battery_removed = battery_removed

    @property
    def battery_pack_removed(self):
        """
        Gets the battery_pack_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_BATTERY_PACK.

        :return: The battery_pack_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._battery_pack_removed

    @battery_pack_removed.setter
    def battery_pack_removed(self, battery_pack_removed):
        """
        Sets the battery_pack_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_BATTERY_PACK.

        :param battery_pack_removed: The battery_pack_removed of this FailureTypeEntry.
        :type: str
        """
        self._battery_pack_removed = battery_pack_removed

    @property
    def esm_removed(self):
        """
        Gets the esm_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_ESM. It contains the identification of the ESM canister that was removed.

        :return: The esm_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_removed

    @esm_removed.setter
    def esm_removed(self, esm_removed):
        """
        Sets the esm_removed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REMOVED_ESM. It contains the identification of the ESM canister that was removed.

        :param esm_removed: The esm_removed of this FailureTypeEntry.
        :type: str
        """
        self._esm_removed = esm_removed

    @property
    def fan_removed(self):
        """
        Gets the fan_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_FAN.

        :return: The fan_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._fan_removed

    @fan_removed.setter
    def fan_removed(self, fan_removed):
        """
        Sets the fan_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_FAN.

        :param fan_removed: The fan_removed of this FailureTypeEntry.
        :type: str
        """
        self._fan_removed = fan_removed

    @property
    def icc_cru_removed(self):
        """
        Gets the icc_cru_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_ICC_CRU.

        :return: The icc_cru_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._icc_cru_removed

    @icc_cru_removed.setter
    def icc_cru_removed(self, icc_cru_removed):
        """
        Sets the icc_cru_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_ICC_CRU.

        :param icc_cru_removed: The icc_cru_removed of this FailureTypeEntry.
        :type: str
        """
        self._icc_cru_removed = icc_cru_removed

    @property
    def power_supply_removed(self):
        """
        Gets the power_supply_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_POWER_SUPPLY.

        :return: The power_supply_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._power_supply_removed

    @power_supply_removed.setter
    def power_supply_removed(self, power_supply_removed):
        """
        Sets the power_supply_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_POWER_SUPPLY.

        :param power_supply_removed: The power_supply_removed of this FailureTypeEntry.
        :type: str
        """
        self._power_supply_removed = power_supply_removed

    @property
    def support_cru_removed(self):
        """
        Gets the support_cru_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_SUPPORT_CRU.

        :return: The support_cru_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._support_cru_removed

    @support_cru_removed.setter
    def support_cru_removed(self, support_cru_removed):
        """
        Sets the support_cru_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_SUPPORT_CRU.

        :param support_cru_removed: The support_cru_removed of this FailureTypeEntry.
        :type: str
        """
        self._support_cru_removed = support_cru_removed

    @property
    def temp_sensor_removed(self):
        """
        Gets the temp_sensor_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_TEMP_SENSOR.

        :return: The temp_sensor_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._temp_sensor_removed

    @temp_sensor_removed.setter
    def temp_sensor_removed(self, temp_sensor_removed):
        """
        Sets the temp_sensor_removed of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_REMOVED_TEMP_SENSOR.

        :param temp_sensor_removed: The temp_sensor_removed of this FailureTypeEntry.
        :type: str
        """
        self._temp_sensor_removed = temp_sensor_removed

    @property
    def replaced_drive_wrong_type(self):
        """
        Gets the replaced_drive_wrong_type of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPLACED_DRIVE_WRONG_TYPE. It indicates that a failed drive has been replaced with a drive of the wrong type. The failure type list will contain one entry of this type for each wrong replacement drive in the storage array.

        :return: The replaced_drive_wrong_type of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._replaced_drive_wrong_type

    @replaced_drive_wrong_type.setter
    def replaced_drive_wrong_type(self, replaced_drive_wrong_type):
        """
        Sets the replaced_drive_wrong_type of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPLACED_DRIVE_WRONG_TYPE. It indicates that a failed drive has been replaced with a drive of the wrong type. The failure type list will contain one entry of this type for each wrong replacement drive in the storage array.

        :param replaced_drive_wrong_type: The replaced_drive_wrong_type of this FailureTypeEntry.
        :type: str
        """
        self._replaced_drive_wrong_type = replaced_drive_wrong_type

    @property
    def repository_full(self):
        """
        Gets the repository_full of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPOSITORY_FULL. It contains the identification of the repository that is full.

        :return: The repository_full of this FailureTypeEntry.
        :rtype: FullRepository
        :required/optional: optional
        """
        return self._repository_full

    @repository_full.setter
    def repository_full(self, repository_full):
        """
        Sets the repository_full of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPOSITORY_FULL. It contains the identification of the repository that is full.

        :param repository_full: The repository_full of this FailureTypeEntry.
        :type: FullRepository
        """
        self._repository_full = repository_full

    @property
    def repository_over_threshold(self):
        """
        Gets the repository_over_threshold of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPOSITORY_OVER_THRESHOLD. It contains the identification of the repository volume that is over the threshold.

        :return: The repository_over_threshold of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._repository_over_threshold

    @repository_over_threshold.setter
    def repository_over_threshold(self, repository_over_threshold):
        """
        Sets the repository_over_threshold of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_REPOSITORY_OVER_THRESHOLD. It contains the identification of the repository volume that is over the threshold.

        :param repository_over_threshold: The repository_over_threshold of this FailureTypeEntry.
        :type: str
        """
        self._repository_over_threshold = repository_over_threshold

    @property
    def rpa_parity_error(self):
        """
        Gets the rpa_parity_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RPA_ERR_CTL. It contains the identification of the controller with the RPA parity error.

        :return: The rpa_parity_error of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._rpa_parity_error

    @rpa_parity_error.setter
    def rpa_parity_error(self, rpa_parity_error):
        """
        Sets the rpa_parity_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RPA_ERR_CTL. It contains the identification of the controller with the RPA parity error.

        :param rpa_parity_error: The rpa_parity_error of this FailureTypeEntry.
        :type: str
        """
        self._rpa_parity_error = rpa_parity_error

    @property
    def rvm_feature(self):
        """
        Gets the rvm_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RVM_NOT_COMPLIANT.

        :return: The rvm_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._rvm_feature

    @rvm_feature.setter
    def rvm_feature(self, rvm_feature):
        """
        Sets the rvm_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RVM_NOT_COMPLIANT.

        :param rvm_feature: The rvm_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._rvm_feature = rvm_feature

    @property
    def degraded_sas_port(self):
        """
        Gets the degraded_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_DEGRADED. It supplies information about a degraded SAS port, including the parent device and the attached device. An entry of this type appears once in the failure type list for each degraded port in the array.

        :return: The degraded_sas_port of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._degraded_sas_port

    @degraded_sas_port.setter
    def degraded_sas_port(self, degraded_sas_port):
        """
        Sets the degraded_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_DEGRADED. It supplies information about a degraded SAS port, including the parent device and the attached device. An entry of this type appears once in the failure type list for each degraded port in the array.

        :param degraded_sas_port: The degraded_sas_port of this FailureTypeEntry.
        :type: SasPort
        """
        self._degraded_sas_port = degraded_sas_port

    @property
    def failed_sas_port(self):
        """
        Gets the failed_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_FAILED. It supplies information about a failed SAS port, including the parent device and the attached device. An entry of this type appears once in the failure type list for each failed port in the array.

        :return: The failed_sas_port of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._failed_sas_port

    @failed_sas_port.setter
    def failed_sas_port(self, failed_sas_port):
        """
        Sets the failed_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_FAILED. It supplies information about a failed SAS port, including the parent device and the attached device. An entry of this type appears once in the failure type list for each failed port in the array.

        :param failed_sas_port: The failed_sas_port of this FailureTypeEntry.
        :type: SasPort
        """
        self._failed_sas_port = failed_sas_port

    @property
    def miswired_sas_port(self):
        """
        Gets the miswired_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_MISWIRED. It identifies the SAS port from which the miswire originates. The type of miswire is identified by a field in the SasPort structure.

        :return: The miswired_sas_port of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._miswired_sas_port

    @miswired_sas_port.setter
    def miswired_sas_port(self, miswired_sas_port):
        """
        Sets the miswired_sas_port of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_PORT_MISWIRED. It identifies the SAS port from which the miswire originates. The type of miswire is identified by a field in the SasPort structure.

        :param miswired_sas_port: The miswired_sas_port of this FailureTypeEntry.
        :type: SasPort
        """
        self._miswired_sas_port = miswired_sas_port

    @property
    def snap_fail(self):
        """
        Gets the snap_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SNAPSHOT_FAILED. It contains the identification of the snapshot volume that failed.

        :return: The snap_fail of this FailureTypeEntry.
        :rtype: SnapshotFailure
        :required/optional: optional
        """
        return self._snap_fail

    @snap_fail.setter
    def snap_fail(self, snap_fail):
        """
        Sets the snap_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SNAPSHOT_FAILED. It contains the identification of the snapshot volume that failed.

        :param snap_fail: The snap_fail of this FailureTypeEntry.
        :type: SnapshotFailure
        """
        self._snap_fail = snap_fail

    @property
    def snapshot_feature(self):
        """
        Gets the snapshot_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SNAPSHOT_NOT_COMPLIANT.

        :return: The snapshot_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._snapshot_feature

    @snapshot_feature.setter
    def snapshot_feature(self, snapshot_feature):
        """
        Sets the snapshot_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SNAPSHOT_NOT_COMPLIANT.

        :param snapshot_feature: The snapshot_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._snapshot_feature = snapshot_feature

    @property
    def speed_neg_error(self):
        """
        Gets the speed_neg_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SPEED_NEG_ERROR. It indicates that a Fibre Channel speed negotiation error has occurred.

        :return: The speed_neg_error of this FailureTypeEntry.
        :rtype: SpeedNegError
        :required/optional: optional
        """
        return self._speed_neg_error

    @speed_neg_error.setter
    def speed_neg_error(self, speed_neg_error):
        """
        Sets the speed_neg_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SPEED_NEG_ERROR. It indicates that a Fibre Channel speed negotiation error has occurred.

        :param speed_neg_error: The speed_neg_error of this FailureTypeEntry.
        :type: SpeedNegError
        """
        self._speed_neg_error = speed_neg_error

    @property
    def submodel_mismatch(self):
        """
        Gets the submodel_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_MISMATCH.

        :return: The submodel_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._submodel_mismatch

    @submodel_mismatch.setter
    def submodel_mismatch(self, submodel_mismatch):
        """
        Sets the submodel_mismatch of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_MISMATCH.

        :param submodel_mismatch: The submodel_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._submodel_mismatch = submodel_mismatch

    @property
    def submodel_not_set(self):
        """
        Gets the submodel_not_set of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_NOT_SET.

        :return: The submodel_not_set of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._submodel_not_set

    @submodel_not_set.setter
    def submodel_not_set(self, submodel_not_set):
        """
        Sets the submodel_not_set of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_NOT_SET.

        :param submodel_not_set: The submodel_not_set of this FailureTypeEntry.
        :type: str
        """
        self._submodel_not_set = submodel_not_set

    @property
    def submodel_not_supported(self):
        """
        Gets the submodel_not_supported of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_NOT_SUPPORTED.

        :return: The submodel_not_supported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._submodel_not_supported

    @submodel_not_supported.setter
    def submodel_not_supported(self, submodel_not_supported):
        """
        Sets the submodel_not_supported of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUBMODEL_NOT_SUPPORTED.

        :param submodel_not_supported: The submodel_not_supported of this FailureTypeEntry.
        :type: str
        """
        self._submodel_not_supported = submodel_not_supported

    @property
    def support_cru_no_input(self):
        """
        Gets the support_cru_no_input of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUPPORT_CRU_NOINPUT.

        :return: The support_cru_no_input of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._support_cru_no_input

    @support_cru_no_input.setter
    def support_cru_no_input(self, support_cru_no_input):
        """
        Sets the support_cru_no_input of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_SUPPORT_CRU_NOINPUT.

        :param support_cru_no_input: The support_cru_no_input of this FailureTypeEntry.
        :type: str
        """
        self._support_cru_no_input = support_cru_no_input

    @property
    def support_cru_stat_unknown(self):
        """
        Gets the support_cru_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SUPPORT_CRU_UNKNOWN_STAT. It contains the identification of the support CRU that has unknown status.

        :return: The support_cru_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._support_cru_stat_unknown

    @support_cru_stat_unknown.setter
    def support_cru_stat_unknown(self, support_cru_stat_unknown):
        """
        Sets the support_cru_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SUPPORT_CRU_UNKNOWN_STAT. It contains the identification of the support CRU that has unknown status.

        :param support_cru_stat_unknown: The support_cru_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._support_cru_stat_unknown = support_cru_stat_unknown

    @property
    def temp_sensor_stat_unknown(self):
        """
        Gets the temp_sensor_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TEMP_SENSOR_UNKNOWN_STAT. It contains the identification of the temperature sensor that has failed with unknown status.

        :return: The temp_sensor_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._temp_sensor_stat_unknown

    @temp_sensor_stat_unknown.setter
    def temp_sensor_stat_unknown(self, temp_sensor_stat_unknown):
        """
        Sets the temp_sensor_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TEMP_SENSOR_UNKNOWN_STAT. It contains the identification of the temperature sensor that has failed with unknown status.

        :param temp_sensor_stat_unknown: The temp_sensor_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._temp_sensor_stat_unknown = temp_sensor_stat_unknown

    @property
    def transceiver_module_stat_unknown(self):
        """
        Gets the transceiver_module_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRANS_MOD_UNKNOWN_STAT. It contains the identification of the transceiver module that has failed with unknown status.

        :return: The transceiver_module_stat_unknown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._transceiver_module_stat_unknown

    @transceiver_module_stat_unknown.setter
    def transceiver_module_stat_unknown(self, transceiver_module_stat_unknown):
        """
        Sets the transceiver_module_stat_unknown of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRANS_MOD_UNKNOWN_STAT. It contains the identification of the transceiver module that has failed with unknown status.

        :param transceiver_module_stat_unknown: The transceiver_module_stat_unknown of this FailureTypeEntry.
        :type: str
        """
        self._transceiver_module_stat_unknown = transceiver_module_stat_unknown

    @property
    def tray_id_conflicts(self):
        """
        Gets the tray_id_conflicts of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRAYID_CONFLICT. It contains the identification of the drive trays that have conflicting tray IDs.

        :return: The tray_id_conflicts of this FailureTypeEntry.
        :rtype: TrayRefList
        :required/optional: optional
        """
        return self._tray_id_conflicts

    @tray_id_conflicts.setter
    def tray_id_conflicts(self, tray_id_conflicts):
        """
        Sets the tray_id_conflicts of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRAYID_CONFLICT. It contains the identification of the drive trays that have conflicting tray IDs.

        :param tray_id_conflicts: The tray_id_conflicts of this FailureTypeEntry.
        :type: TrayRefList
        """
        self._tray_id_conflicts = tray_id_conflicts

    @property
    def tray_id_mismatch(self):
        """
        Gets the tray_id_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRAYID_MISMATCH. It contains the identification of the tray that has IDs that do not match.

        :return: The tray_id_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._tray_id_mismatch

    @tray_id_mismatch.setter
    def tray_id_mismatch(self, tray_id_mismatch):
        """
        Sets the tray_id_mismatch of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_TRAYID_MISMATCH. It contains the identification of the tray that has IDs that do not match.

        :param tray_id_mismatch: The tray_id_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._tray_id_mismatch = tray_id_mismatch

    @property
    def drive_uncertified(self):
        """
        Gets the drive_uncertified of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNCERTIFIED_DRIVE. It contains the identification of a drive whose type/model is not certified for use within the storage array.

        :return: The drive_uncertified of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_uncertified

    @drive_uncertified.setter
    def drive_uncertified(self, drive_uncertified):
        """
        Sets the drive_uncertified of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNCERTIFIED_DRIVE. It contains the identification of a drive whose type/model is not certified for use within the storage array.

        :param drive_uncertified: The drive_uncertified of this FailureTypeEntry.
        :type: str
        """
        self._drive_uncertified = drive_uncertified

    @property
    def esm_uncertified(self):
        """
        Gets the esm_uncertified of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_UNCERTIFIED_ESM.

        :return: The esm_uncertified of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._esm_uncertified

    @esm_uncertified.setter
    def esm_uncertified(self, esm_uncertified):
        """
        Sets the esm_uncertified of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_UNCERTIFIED_ESM.

        :param esm_uncertified: The esm_uncertified of this FailureTypeEntry.
        :type: str
        """
        self._esm_uncertified = esm_uncertified

    @property
    def cache_memory_size_unsupported(self):
        """
        Gets the cache_memory_size_unsupported of this FailureTypeEntry.
        This field is present if the value of recFailureType is equal to REC_UNSUPPORTED_CACHE_MEMORY_SIZE. It identifies a controller having a cache of unsupported size.

        :return: The cache_memory_size_unsupported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._cache_memory_size_unsupported

    @cache_memory_size_unsupported.setter
    def cache_memory_size_unsupported(self, cache_memory_size_unsupported):
        """
        Sets the cache_memory_size_unsupported of this FailureTypeEntry.
        This field is present if the value of recFailureType is equal to REC_UNSUPPORTED_CACHE_MEMORY_SIZE. It identifies a controller having a cache of unsupported size.

        :param cache_memory_size_unsupported: The cache_memory_size_unsupported of this FailureTypeEntry.
        :type: str
        """
        self._cache_memory_size_unsupported = cache_memory_size_unsupported

    @property
    def unsupported_host_board(self):
        """
        Gets the unsupported_host_board of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_UNSUPPORTED_HOST_BOARD. It identifies an unsupported host board that is responsible for the other controller locking down.

        :return: The unsupported_host_board of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._unsupported_host_board

    @unsupported_host_board.setter
    def unsupported_host_board(self, unsupported_host_board):
        """
        Sets the unsupported_host_board of this FailureTypeEntry.
        This field is present only if the recFailureType is equal to REC_UNSUPPORTED_HOST_BOARD. It identifies an unsupported host board that is responsible for the other controller locking down.

        :param unsupported_host_board: The unsupported_host_board of this FailureTypeEntry.
        :type: str
        """
        self._unsupported_host_board = unsupported_host_board

    @property
    def mini_hub_unsupported(self):
        """
        Gets the mini_hub_unsupported of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNSUPPORTED_MINIHUB. It contains the identification of the unsupported minihub.

        :return: The mini_hub_unsupported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._mini_hub_unsupported

    @mini_hub_unsupported.setter
    def mini_hub_unsupported(self, mini_hub_unsupported):
        """
        Sets the mini_hub_unsupported of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNSUPPORTED_MINIHUB. It contains the identification of the unsupported minihub.

        :param mini_hub_unsupported: The mini_hub_unsupported of this FailureTypeEntry.
        :type: str
        """
        self._mini_hub_unsupported = mini_hub_unsupported

    @property
    def unsupported_tray(self):
        """
        Gets the unsupported_tray of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNSUPPORTED_TRAY. It contains the identification of the unsupported tray.

        :return: The unsupported_tray of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._unsupported_tray

    @unsupported_tray.setter
    def unsupported_tray(self, unsupported_tray):
        """
        Sets the unsupported_tray of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UNSUPPORTED_TRAY. It contains the identification of the unsupported tray.

        :param unsupported_tray: The unsupported_tray of this FailureTypeEntry.
        :type: str
        """
        self._unsupported_tray = unsupported_tray

    @property
    def ups_on_battery(self):
        """
        Gets the ups_on_battery of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UPS_ON_BATTERY. It contains the identification of the UPS component that has switched to battery power.

        :return: The ups_on_battery of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ups_on_battery

    @ups_on_battery.setter
    def ups_on_battery(self, ups_on_battery):
        """
        Sets the ups_on_battery of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_UPS_ON_BATTERY. It contains the identification of the UPS component that has switched to battery power.

        :param ups_on_battery: The ups_on_battery of this FailureTypeEntry.
        :type: str
        """
        self._ups_on_battery = ups_on_battery

    @property
    def usm_db_full_error(self):
        """
        Gets the usm_db_full_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_USM_DATABASE_FULL.

        :return: The usm_db_full_error of this FailureTypeEntry.
        :rtype: UsmError
        :required/optional: optional
        """
        return self._usm_db_full_error

    @usm_db_full_error.setter
    def usm_db_full_error(self, usm_db_full_error):
        """
        Sets the usm_db_full_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_USM_DATABASE_FULL.

        :param usm_db_full_error: The usm_db_full_error of this FailureTypeEntry.
        :type: UsmError
        """
        self._usm_db_full_error = usm_db_full_error

    @property
    def usm_exist_error(self):
        """
        Gets the usm_exist_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_USM_UNREADABLE_SECTORS_EXIST.

        :return: The usm_exist_error of this FailureTypeEntry.
        :rtype: UsmError
        :required/optional: optional
        """
        return self._usm_exist_error

    @usm_exist_error.setter
    def usm_exist_error(self, usm_exist_error):
        """
        Sets the usm_exist_error of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_USM_UNREADABLE_SECTORS_EXIST.

        :param usm_exist_error: The usm_exist_error of this FailureTypeEntry.
        :type: UsmError
        """
        self._usm_exist_error = usm_exist_error

    @property
    def vg_cloned(self):
        """
        Gets the vg_cloned of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_CLONED. It identifies the cloned volume group. Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :return: The vg_cloned of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vg_cloned

    @vg_cloned.setter
    def vg_cloned(self, vg_cloned):
        """
        Sets the vg_cloned of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_CLONED. It identifies the cloned volume group. Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :param vg_cloned: The vg_cloned of this FailureTypeEntry.
        :type: str
        """
        self._vg_cloned = vg_cloned

    @property
    def vg_drive_part_of_multiple_vgs(self):
        """
        Gets the vg_drive_part_of_multiple_vgs of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_DRIVE_PART_OF_MULTIPLE_VGS. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive; the volumeGroup field is a reference to the primary affected volume group (the one that needs to have its drives removed). Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :return: The vg_drive_part_of_multiple_vgs of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._vg_drive_part_of_multiple_vgs

    @vg_drive_part_of_multiple_vgs.setter
    def vg_drive_part_of_multiple_vgs(self, vg_drive_part_of_multiple_vgs):
        """
        Sets the vg_drive_part_of_multiple_vgs of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_DRIVE_PART_OF_MULTIPLE_VGS. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the foreign drive; the volumeGroup field is a reference to the primary affected volume group (the one that needs to have its drives removed). Also, it is safe to assume that the drives identified in the object graph as belonging to the volume group are valid.

        :param vg_drive_part_of_multiple_vgs: The vg_drive_part_of_multiple_vgs of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._vg_drive_part_of_multiple_vgs = vg_drive_part_of_multiple_vgs

    @property
    def vg_has_drive_part_of_multiple_vgs(self):
        """
        Gets the vg_has_drive_part_of_multiple_vgs of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_HAS_DRIVE_PART_OF_MULTIPLE_VGS. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the problem drive (the one having DriveStatusCause of DRIVE_CAUSE_INCOMPATIBLE_VG_HAS_DRIVE_PART_OF_MULTIPLE_VGS); the volumeGroup field is a reference to the foreign volume group. Also, it is safe to assume that the drives identified in the object graph as belonging to the foreign volume group are valid.

        :return: The vg_has_drive_part_of_multiple_vgs of this FailureTypeEntry.
        :rtype: PvgRecoveryData
        :required/optional: optional
        """
        return self._vg_has_drive_part_of_multiple_vgs

    @vg_has_drive_part_of_multiple_vgs.setter
    def vg_has_drive_part_of_multiple_vgs(self, vg_has_drive_part_of_multiple_vgs):
        """
        Sets the vg_has_drive_part_of_multiple_vgs of this FailureTypeEntry.
        This field is present only if recFailureType is equal to REC_VG_HAS_DRIVE_PART_OF_MULTIPLE_VGS. It identifies the data that is pertinent to this recovery scenario. The drive field in this structure is a reference to the problem drive (the one having DriveStatusCause of DRIVE_CAUSE_INCOMPATIBLE_VG_HAS_DRIVE_PART_OF_MULTIPLE_VGS); the volumeGroup field is a reference to the foreign volume group. Also, it is safe to assume that the drives identified in the object graph as belonging to the foreign volume group are valid.

        :param vg_has_drive_part_of_multiple_vgs: The vg_has_drive_part_of_multiple_vgs of this FailureTypeEntry.
        :type: PvgRecoveryData
        """
        self._vg_has_drive_part_of_multiple_vgs = vg_has_drive_part_of_multiple_vgs

    @property
    def failed_volume_copy(self):
        """
        Gets the failed_volume_copy of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLCOPY_FAILED. It contains the identification of the failed volume copy.

        :return: The failed_volume_copy of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_volume_copy

    @failed_volume_copy.setter
    def failed_volume_copy(self, failed_volume_copy):
        """
        Sets the failed_volume_copy of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLCOPY_FAILED. It contains the identification of the failed volume copy.

        :param failed_volume_copy: The failed_volume_copy of this FailureTypeEntry.
        :type: str
        """
        self._failed_volume_copy = failed_volume_copy

    @property
    def volcopy_feature(self):
        """
        Gets the volcopy_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLCOPY_NOT_COMPLIANT. The volume copy feature is out of compliance.

        :return: The volcopy_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._volcopy_feature

    @volcopy_feature.setter
    def volcopy_feature(self, volcopy_feature):
        """
        Sets the volcopy_feature of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLCOPY_NOT_COMPLIANT. The volume copy feature is out of compliance.

        :param volcopy_feature: The volcopy_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._volcopy_feature = volcopy_feature

    @property
    def incomplete_volume_group_ref(self):
        """
        Gets the incomplete_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_INCOMPLETE. It is a reference to a volume group that has transitioned to \"incomplete\" state.

        :return: The incomplete_volume_group_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incomplete_volume_group_ref

    @incomplete_volume_group_ref.setter
    def incomplete_volume_group_ref(self, incomplete_volume_group_ref):
        """
        Sets the incomplete_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_INCOMPLETE. It is a reference to a volume group that has transitioned to \"incomplete\" state.

        :param incomplete_volume_group_ref: The incomplete_volume_group_ref of this FailureTypeEntry.
        :type: str
        """
        self._incomplete_volume_group_ref = incomplete_volume_group_ref

    @property
    def missing_volume_group_ref(self):
        """
        Gets the missing_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_MISSING. It is a reference to a volume group that has transitioned to \"missing\" state.

        :return: The missing_volume_group_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._missing_volume_group_ref

    @missing_volume_group_ref.setter
    def missing_volume_group_ref(self, missing_volume_group_ref):
        """
        Sets the missing_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_MISSING. It is a reference to a volume group that has transitioned to \"missing\" state.

        :param missing_volume_group_ref: The missing_volume_group_ref of this FailureTypeEntry.
        :type: str
        """
        self._missing_volume_group_ref = missing_volume_group_ref

    @property
    def partial_present_volume_group_ref(self):
        """
        Gets the partial_present_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_PARTIALLY_COMPLETE. It is a reference to a volume group that has transitioned to \"partial\" state.

        :return: The partial_present_volume_group_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._partial_present_volume_group_ref

    @partial_present_volume_group_ref.setter
    def partial_present_volume_group_ref(self, partial_present_volume_group_ref):
        """
        Sets the partial_present_volume_group_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_VOLUME_GROUP_PARTIALLY_COMPLETE. It is a reference to a volume group that has transitioned to \"partial\" state.

        :param partial_present_volume_group_ref: The partial_present_volume_group_ref of this FailureTypeEntry.
        :type: str
        """
        self._partial_present_volume_group_ref = partial_present_volume_group_ref

    @property
    def vol_hot_spare_in_use(self):
        """
        Gets the vol_hot_spare_in_use of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLUME_HOT_SPARE_IN_USE. It contains the identification of a volume group that has experienced a drive failure, but has acquired a hot spare drive as a temporary replacement.

        :return: The vol_hot_spare_in_use of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_hot_spare_in_use

    @vol_hot_spare_in_use.setter
    def vol_hot_spare_in_use(self, vol_hot_spare_in_use):
        """
        Sets the vol_hot_spare_in_use of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_VOLUME_HOT_SPARE_IN_USE. It contains the identification of a volume group that has experienced a drive failure, but has acquired a hot spare drive as a temporary replacement.

        :param vol_hot_spare_in_use: The vol_hot_spare_in_use of this FailureTypeEntry.
        :type: str
        """
        self._vol_hot_spare_in_use = vol_hot_spare_in_use

    @property
    def host_ref(self):
        """
        Gets the host_ref of this FailureTypeEntry.
        This field is only valid when recFailureType is equal to REC_INVALID_HOST_TYPE_INDEX. It is a reference to a Host in the storage partitions topology that has an invalid host type index, or a null reference if the problem applies to the default host type.

        :return: The host_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._host_ref

    @host_ref.setter
    def host_ref(self, host_ref):
        """
        Sets the host_ref of this FailureTypeEntry.
        This field is only valid when recFailureType is equal to REC_INVALID_HOST_TYPE_INDEX. It is a reference to a Host in the storage partitions topology that has an invalid host type index, or a null reference if the problem applies to the default host type.

        :param host_ref: The host_ref of this FailureTypeEntry.
        :type: str
        """
        self._host_ref = host_ref

    @property
    def security_key_needed(self):
        """
        Gets the security_key_needed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_GET_KEY. It contains a list of drive references for the drives that are locked down and a lockKeyIDRef of the lockKey that is needed to unlock the drives.

        :return: The security_key_needed of this FailureTypeEntry.
        :rtype: SecurityKeyNeeded
        :required/optional: optional
        """
        return self._security_key_needed

    @security_key_needed.setter
    def security_key_needed(self, security_key_needed):
        """
        Sets the security_key_needed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_GET_KEY. It contains a list of drive references for the drives that are locked down and a lockKeyIDRef of the lockKey that is needed to unlock the drives.

        :param security_key_needed: The security_key_needed of this FailureTypeEntry.
        :type: SecurityKeyNeeded
        """
        self._security_key_needed = security_key_needed

    @property
    def fde_feature(self):
        """
        Gets the fde_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_NOT_COMPLIANT. The security feature is out of compliance.

        :return: The fde_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._fde_feature

    @fde_feature.setter
    def fde_feature(self, fde_feature):
        """
        Sets the fde_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_NOT_COMPLIANT. The security feature is out of compliance.

        :param fde_feature: The fde_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._fde_feature = fde_feature

    @property
    def removed_ctrl(self):
        """
        Gets the removed_ctrl of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_REMOVED_CONTROLLER. The identification of the missing controller is returned.

        :return: The removed_ctrl of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._removed_ctrl

    @removed_ctrl.setter
    def removed_ctrl(self, removed_ctrl):
        """
        Sets the removed_ctrl of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_REMOVED_CONTROLLER. The identification of the missing controller is returned.

        :param removed_ctrl: The removed_ctrl of this FailureTypeEntry.
        :type: str
        """
        self._removed_ctrl = removed_ctrl

    @property
    def drive_unsuccess_isolation_redun_mismatch(self):
        """
        Gets the drive_unsuccess_isolation_redun_mismatch of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_UNSUCCESS_ISOLATION_REDUN_MISMATCH. The identification of the drive for which the redundancy mismatch was unsuccessfully isolated is returned.

        :return: The drive_unsuccess_isolation_redun_mismatch of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_unsuccess_isolation_redun_mismatch

    @drive_unsuccess_isolation_redun_mismatch.setter
    def drive_unsuccess_isolation_redun_mismatch(self, drive_unsuccess_isolation_redun_mismatch):
        """
        Sets the drive_unsuccess_isolation_redun_mismatch of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_UNSUCCESS_ISOLATION_REDUN_MISMATCH. The identification of the drive for which the redundancy mismatch was unsuccessfully isolated is returned.

        :param drive_unsuccess_isolation_redun_mismatch: The drive_unsuccess_isolation_redun_mismatch of this FailureTypeEntry.
        :type: str
        """
        self._drive_unsuccess_isolation_redun_mismatch = drive_unsuccess_isolation_redun_mismatch

    @property
    def drive_thres_excded_mismatch_corrected(self):
        """
        Gets the drive_thres_excded_mismatch_corrected of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_THRES_EXCDED_MISMATCH_CORRECTED. The identification of the drive for which the PFA threshold was exceeded but the redundancy mismatch corrected is returned.

        :return: The drive_thres_excded_mismatch_corrected of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_thres_excded_mismatch_corrected

    @drive_thres_excded_mismatch_corrected.setter
    def drive_thres_excded_mismatch_corrected(self, drive_thres_excded_mismatch_corrected):
        """
        Sets the drive_thres_excded_mismatch_corrected of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_THRES_EXCDED_MISMATCH_CORRECTED. The identification of the drive for which the PFA threshold was exceeded but the redundancy mismatch corrected is returned.

        :param drive_thres_excded_mismatch_corrected: The drive_thres_excded_mismatch_corrected of this FailureTypeEntry.
        :type: str
        """
        self._drive_thres_excded_mismatch_corrected = drive_thres_excded_mismatch_corrected

    @property
    def inactive_host_port(self):
        """
        Gets the inactive_host_port of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_INACTIVE_HOST_PORT The identification of the inactive host port is returned.

        :return: The inactive_host_port of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._inactive_host_port

    @inactive_host_port.setter
    def inactive_host_port(self, inactive_host_port):
        """
        Sets the inactive_host_port of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_INACTIVE_HOST_PORT The identification of the inactive host port is returned.

        :param inactive_host_port: The inactive_host_port of this FailureTypeEntry.
        :type: str
        """
        self._inactive_host_port = inactive_host_port

    @property
    def inactive_initiator(self):
        """
        Gets the inactive_initiator of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_INACTIVE_INITIATOR. The identification of the inactive initiator is returned.

        :return: The inactive_initiator of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._inactive_initiator

    @inactive_initiator.setter
    def inactive_initiator(self, inactive_initiator):
        """
        Sets the inactive_initiator of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_INACTIVE_INITIATOR. The identification of the inactive initiator is returned.

        :param inactive_initiator: The inactive_initiator of this FailureTypeEntry.
        :type: str
        """
        self._inactive_initiator = inactive_initiator

    @property
    def protection_information_feature(self):
        """
        Gets the protection_information_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PROTECTION_INFORMATION_NOT_COMPLIANT. It indicates that the T10 Protection Information feature is out of compliance.

        :return: The protection_information_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._protection_information_feature

    @protection_information_feature.setter
    def protection_information_feature(self, protection_information_feature):
        """
        Sets the protection_information_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PROTECTION_INFORMATION_NOT_COMPLIANT. It indicates that the T10 Protection Information feature is out of compliance.

        :param protection_information_feature: The protection_information_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._protection_information_feature = protection_information_feature

    @property
    def protection_information_not_supported(self):
        """
        Gets the protection_information_not_supported of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PROTECTION_INFORMATION_NOT_SUPPORTED. The identification of the volume group with the protected volumes that cannot be supported by the storage array is returned.

        :return: The protection_information_not_supported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._protection_information_not_supported

    @protection_information_not_supported.setter
    def protection_information_not_supported(self, protection_information_not_supported):
        """
        Sets the protection_information_not_supported of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PROTECTION_INFORMATION_NOT_SUPPORTED. The identification of the volume group with the protected volumes that cannot be supported by the storage array is returned.

        :param protection_information_not_supported: The protection_information_not_supported of this FailureTypeEntry.
        :type: str
        """
        self._protection_information_not_supported = protection_information_not_supported

    @property
    def drive_capacity_insufficient(self):
        """
        Gets the drive_capacity_insufficient of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_REPLACED_INSUFFICIENT_DRIVE_CAPACITY. It is a reference to an inserted drive that has insufficient capacity for the user data of the drive it is replacing.

        :return: The drive_capacity_insufficient of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_capacity_insufficient

    @drive_capacity_insufficient.setter
    def drive_capacity_insufficient(self, drive_capacity_insufficient):
        """
        Sets the drive_capacity_insufficient of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_REPLACED_INSUFFICIENT_DRIVE_CAPACITY. It is a reference to an inserted drive that has insufficient capacity for the user data of the drive it is replacing.

        :param drive_capacity_insufficient: The drive_capacity_insufficient of this FailureTypeEntry.
        :type: str
        """
        self._drive_capacity_insufficient = drive_capacity_insufficient

    @property
    def open_drawer_ref(self):
        """
        Gets the open_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRAWER_OPENED. It is a reference to the open or removed drawer.

        :return: The open_drawer_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._open_drawer_ref

    @open_drawer_ref.setter
    def open_drawer_ref(self, open_drawer_ref):
        """
        Sets the open_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRAWER_OPENED. It is a reference to the open or removed drawer.

        :param open_drawer_ref: The open_drawer_ref of this FailureTypeEntry.
        :type: str
        """
        self._open_drawer_ref = open_drawer_ref

    @property
    def failed_drawer_ref(self):
        """
        Gets the failed_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRAWER_FAILED. It is a reference to the failed drawer.

        :return: The failed_drawer_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_drawer_ref

    @failed_drawer_ref.setter
    def failed_drawer_ref(self, failed_drawer_ref):
        """
        Sets the failed_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRAWER_FAILED. It is a reference to the failed drawer.

        :param failed_drawer_ref: The failed_drawer_ref of this FailureTypeEntry.
        :type: str
        """
        self._failed_drawer_ref = failed_drawer_ref

    @property
    def drive_ref(self):
        """
        Gets the drive_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SSD_AT_END_OF_LIFE. It is a reference to the SSD drive that is at end of life.

        :return: The drive_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_ref

    @drive_ref.setter
    def drive_ref(self, drive_ref):
        """
        Sets the drive_ref of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SSD_AT_END_OF_LIFE. It is a reference to the SSD drive that is at end of life.

        :param drive_ref: The drive_ref of this FailureTypeEntry.
        :type: str
        """
        self._drive_ref = drive_ref

    @property
    def solid_state_disks_feature(self):
        """
        Gets the solid_state_disks_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SSD_NOT_COMPLIANT. It indicates that the Solid State Disk Support feature is out of compliance.

        :return: The solid_state_disks_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._solid_state_disks_feature

    @solid_state_disks_feature.setter
    def solid_state_disks_feature(self, solid_state_disks_feature):
        """
        Sets the solid_state_disks_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SSD_NOT_COMPLIANT. It indicates that the Solid State Disk Support feature is out of compliance.

        :param solid_state_disks_feature: The solid_state_disks_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._solid_state_disks_feature = solid_state_disks_feature

    @property
    def fibre_trunk_miswire(self):
        """
        Gets the fibre_trunk_miswire of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_FIBRE_TRUNK_MISWIRE. It contains a structure that identifies both the incorrect and required cabling.

        :return: The fibre_trunk_miswire of this FailureTypeEntry.
        :rtype: FibreTrunkMiswire
        :required/optional: optional
        """
        return self._fibre_trunk_miswire

    @fibre_trunk_miswire.setter
    def fibre_trunk_miswire(self, fibre_trunk_miswire):
        """
        Sets the fibre_trunk_miswire of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_FIBRE_TRUNK_MISWIRE. It contains a structure that identifies both the incorrect and required cabling.

        :param fibre_trunk_miswire: The fibre_trunk_miswire of this FailureTypeEntry.
        :type: FibreTrunkMiswire
        """
        self._fibre_trunk_miswire = fibre_trunk_miswire

    @property
    def fibre_trunk_incompatible_esm(self):
        """
        Gets the fibre_trunk_incompatible_esm of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_FIBRE_TRUNK_INCOMPATIBLE_ESM. It contains a reference to an ESM that does not support trunking.

        :return: The fibre_trunk_incompatible_esm of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._fibre_trunk_incompatible_esm

    @fibre_trunk_incompatible_esm.setter
    def fibre_trunk_incompatible_esm(self, fibre_trunk_incompatible_esm):
        """
        Sets the fibre_trunk_incompatible_esm of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_FIBRE_TRUNK_INCOMPATIBLE_ESM. It contains a reference to an ESM that does not support trunking.

        :param fibre_trunk_incompatible_esm: The fibre_trunk_incompatible_esm of this FailureTypeEntry.
        :type: str
        """
        self._fibre_trunk_incompatible_esm = fibre_trunk_incompatible_esm

    @property
    def drive_slot_limit_feature(self):
        """
        Gets the drive_slot_limit_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRIVE_SLOT_LIMIT_NOT_COMPLIANT.

        :return: The drive_slot_limit_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._drive_slot_limit_feature

    @drive_slot_limit_feature.setter
    def drive_slot_limit_feature(self, drive_slot_limit_feature):
        """
        Sets the drive_slot_limit_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_DRIVE_SLOT_LIMIT_NOT_COMPLIANT.

        :param drive_slot_limit_feature: The drive_slot_limit_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._drive_slot_limit_feature = drive_slot_limit_feature

    @property
    def new_key_sequence(self):
        """
        Gets the new_key_sequence of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_GET_NEW_KEY.

        :return: The new_key_sequence of this FailureTypeEntry.
        :rtype: int
        :required/optional: optional
        """
        return self._new_key_sequence

    @new_key_sequence.setter
    def new_key_sequence(self, new_key_sequence):
        """
        Sets the new_key_sequence of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_SECURITY_GET_NEW_KEY.

        :param new_key_sequence: The new_key_sequence of this FailureTypeEntry.
        :type: int
        """
        self._new_key_sequence = new_key_sequence

    @property
    def fde_proxy_key_mgmt_feature(self):
        """
        Gets the fde_proxy_key_mgmt_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_EXTERNAL_KMS_NOT_COMPLIANT.

        :return: The fde_proxy_key_mgmt_feature of this FailureTypeEntry.
        :rtype: FeatureState
        :required/optional: optional
        """
        return self._fde_proxy_key_mgmt_feature

    @fde_proxy_key_mgmt_feature.setter
    def fde_proxy_key_mgmt_feature(self, fde_proxy_key_mgmt_feature):
        """
        Sets the fde_proxy_key_mgmt_feature of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_EXTERNAL_KMS_NOT_COMPLIANT.

        :param fde_proxy_key_mgmt_feature: The fde_proxy_key_mgmt_feature of this FailureTypeEntry.
        :type: FeatureState
        """
        self._fde_proxy_key_mgmt_feature = fde_proxy_key_mgmt_feature

    @property
    def sbb_validation_failure(self):
        """
        Gets the sbb_validation_failure of this FailureTypeEntry.
        This field is present only if the value of the RecoveryFailureType entry is equal to REC_SBB_VALIDATION_FAILURE. It contains the identification of the component that failed validation.

        :return: The sbb_validation_failure of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._sbb_validation_failure

    @sbb_validation_failure.setter
    def sbb_validation_failure(self, sbb_validation_failure):
        """
        Sets the sbb_validation_failure of this FailureTypeEntry.
        This field is present only if the value of the RecoveryFailureType entry is equal to REC_SBB_VALIDATION_FAILURE. It contains the identification of the component that failed validation.

        :param sbb_validation_failure: The sbb_validation_failure of this FailureTypeEntry.
        :type: str
        """
        self._sbb_validation_failure = sbb_validation_failure

    @property
    def power_supply_invalid(self):
        """
        Gets the power_supply_invalid of this FailureTypeEntry.
        This field is present only if the value of the RecoveryFailureType entry is equal to REC_INVALID_POWER_SUPPLY. It is a reference to a power supply that has failed validation.

        :return: The power_supply_invalid of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._power_supply_invalid

    @power_supply_invalid.setter
    def power_supply_invalid(self, power_supply_invalid):
        """
        Sets the power_supply_invalid of this FailureTypeEntry.
        This field is present only if the value of the RecoveryFailureType entry is equal to REC_INVALID_POWER_SUPPLY. It is a reference to a power supply that has failed validation.

        :param power_supply_invalid: The power_supply_invalid of this FailureTypeEntry.
        :type: str
        """
        self._power_supply_invalid = power_supply_invalid

    @property
    def enclosure_thermal_shutdown(self):
        """
        Gets the enclosure_thermal_shutdown of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_ENCLOSURE_THERMAL_SHUTDOWN. It contains the identification of the tray that is powering down due to an over-temperature or under-temperature threshold condition.

        :return: The enclosure_thermal_shutdown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._enclosure_thermal_shutdown

    @enclosure_thermal_shutdown.setter
    def enclosure_thermal_shutdown(self, enclosure_thermal_shutdown):
        """
        Sets the enclosure_thermal_shutdown of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_ENCLOSURE_THERMAL_SHUTDOWN. It contains the identification of the tray that is powering down due to an over-temperature or under-temperature threshold condition.

        :param enclosure_thermal_shutdown: The enclosure_thermal_shutdown of this FailureTypeEntry.
        :type: str
        """
        self._enclosure_thermal_shutdown = enclosure_thermal_shutdown

    @property
    def unsupported_protocol_connection(self):
        """
        Gets the unsupported_protocol_connection of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_PROTOCOL_CONNECTION. It identifies the drive using an unsupported protocol connection.

        :return: The unsupported_protocol_connection of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._unsupported_protocol_connection

    @unsupported_protocol_connection.setter
    def unsupported_protocol_connection(self, unsupported_protocol_connection):
        """
        Sets the unsupported_protocol_connection of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_PROTOCOL_CONNECTION. It identifies the drive using an unsupported protocol connection.

        :param unsupported_protocol_connection: The unsupported_protocol_connection of this FailureTypeEntry.
        :type: str
        """
        self._unsupported_protocol_connection = unsupported_protocol_connection

    @property
    def twi_bus_failed(self):
        """
        Gets the twi_bus_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_FAILED_TWI_BUS. It contains a reference to the tray with a failed TWI bus.

        :return: The twi_bus_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._twi_bus_failed

    @twi_bus_failed.setter
    def twi_bus_failed(self, twi_bus_failed):
        """
        Sets the twi_bus_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_FAILED_TWI_BUS. It contains a reference to the tray with a failed TWI bus.

        :param twi_bus_failed: The twi_bus_failed of this FailureTypeEntry.
        :type: str
        """
        self._twi_bus_failed = twi_bus_failed

    @property
    def mismatched_eeprom_contents(self):
        """
        Gets the mismatched_eeprom_contents of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_MISMATCHED_MIDPLANE_EEPROMS. It contains a reference to the tray in which the midplane EEPROMs are mismatched.

        :return: The mismatched_eeprom_contents of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._mismatched_eeprom_contents

    @mismatched_eeprom_contents.setter
    def mismatched_eeprom_contents(self, mismatched_eeprom_contents):
        """
        Sets the mismatched_eeprom_contents of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_MISMATCHED_MIDPLANE_EEPROMS. It contains a reference to the tray in which the midplane EEPROMs are mismatched.

        :param mismatched_eeprom_contents: The mismatched_eeprom_contents of this FailureTypeEntry.
        :type: str
        """
        self._mismatched_eeprom_contents = mismatched_eeprom_contents

    @property
    def unsupported_capacity_drive(self):
        """
        Gets the unsupported_capacity_drive of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_CAPACITY. It contains a reference to the drive with an unsupported capacity.

        :return: The unsupported_capacity_drive of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._unsupported_capacity_drive

    @unsupported_capacity_drive.setter
    def unsupported_capacity_drive(self, unsupported_capacity_drive):
        """
        Sets the unsupported_capacity_drive of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_CAPACITY. It contains a reference to the drive with an unsupported capacity.

        :param unsupported_capacity_drive: The unsupported_capacity_drive of this FailureTypeEntry.
        :type: str
        """
        self._unsupported_capacity_drive = unsupported_capacity_drive

    @property
    def eval_expiration_imminent(self):
        """
        Gets the eval_expiration_imminent of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_EVALUATION_LICENSE_EXPIRATION_IMMINENT.

        :return: The eval_expiration_imminent of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._eval_expiration_imminent

    @eval_expiration_imminent.setter
    def eval_expiration_imminent(self, eval_expiration_imminent):
        """
        Sets the eval_expiration_imminent of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_EVALUATION_LICENSE_EXPIRATION_IMMINENT.

        :param eval_expiration_imminent: The eval_expiration_imminent of this FailureTypeEntry.
        :type: str
        """
        self._eval_expiration_imminent = eval_expiration_imminent

    @property
    def key_invalid(self):
        """
        Gets the key_invalid of this FailureTypeEntry.
        Obsolete. This field is present only if the value of RecoveryFailureType value is equal to REC_EXTERNAL_KMS_KEY_INVALID.

        :return: The key_invalid of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._key_invalid

    @key_invalid.setter
    def key_invalid(self, key_invalid):
        """
        Sets the key_invalid of this FailureTypeEntry.
        Obsolete. This field is present only if the value of RecoveryFailureType value is equal to REC_EXTERNAL_KMS_KEY_INVALID.

        :param key_invalid: The key_invalid of this FailureTypeEntry.
        :type: str
        """
        self._key_invalid = key_invalid

    @property
    def multiple_mismatched_keys(self):
        """
        Gets the multiple_mismatched_keys of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_MULTIPLE_MISMATCHED_KEY_IDS_FOUND.

        :return: The multiple_mismatched_keys of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._multiple_mismatched_keys

    @multiple_mismatched_keys.setter
    def multiple_mismatched_keys(self, multiple_mismatched_keys):
        """
        Sets the multiple_mismatched_keys of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_MULTIPLE_MISMATCHED_KEY_IDS_FOUND.

        :param multiple_mismatched_keys: The multiple_mismatched_keys of this FailureTypeEntry.
        :type: str
        """
        self._multiple_mismatched_keys = multiple_mismatched_keys

    @property
    def key_validation_lock(self):
        """
        Gets the key_validation_lock of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SECURITY_KEY_VALIDATION_LOCK. It identifies a controller that will no longer accept key validation requests.

        :return: The key_validation_lock of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._key_validation_lock

    @key_validation_lock.setter
    def key_validation_lock(self, key_validation_lock):
        """
        Sets the key_validation_lock of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SECURITY_KEY_VALIDATION_LOCK. It identifies a controller that will no longer accept key validation requests.

        :param key_validation_lock: The key_validation_lock of this FailureTypeEntry.
        :type: str
        """
        self._key_validation_lock = key_validation_lock

    @property
    def cache_data_loss(self):
        """
        Gets the cache_data_loss of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_CACHE_DATA_LOSS. It identifies a controller that has lost data in cache; along with a list of volumes that are offline as a result.

        :return: The cache_data_loss of this FailureTypeEntry.
        :rtype: ControllerVolumeList
        :required/optional: optional
        """
        return self._cache_data_loss

    @cache_data_loss.setter
    def cache_data_loss(self, cache_data_loss):
        """
        Sets the cache_data_loss of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_CACHE_DATA_LOSS. It identifies a controller that has lost data in cache; along with a list of volumes that are offline as a result.

        :param cache_data_loss: The cache_data_loss of this FailureTypeEntry.
        :type: ControllerVolumeList
        """
        self._cache_data_loss = cache_data_loss

    @property
    def feature_out_of_compliance(self):
        """
        Gets the feature_out_of_compliance of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_FEATURE_NOT_COMPLIANT. It identifies the feature that is out of compliance..

        :return: The feature_out_of_compliance of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._feature_out_of_compliance

    @feature_out_of_compliance.setter
    def feature_out_of_compliance(self, feature_out_of_compliance):
        """
        Sets the feature_out_of_compliance of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_FEATURE_NOT_COMPLIANT. It identifies the feature that is out of compliance..

        :param feature_out_of_compliance: The feature_out_of_compliance of this FailureTypeEntry.
        :type: str
        """
        self._feature_out_of_compliance = feature_out_of_compliance

    @property
    def drive_incompatible_p_itype(self):
        """
        Gets the drive_incompatible_p_itype of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_INCOMPATIBLE_PI_TYPE. It identifies the drive that is incompatible.

        :return: The drive_incompatible_p_itype of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_incompatible_p_itype

    @drive_incompatible_p_itype.setter
    def drive_incompatible_p_itype(self, drive_incompatible_p_itype):
        """
        Sets the drive_incompatible_p_itype of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_INCOMPATIBLE_PI_TYPE. It identifies the drive that is incompatible.

        :param drive_incompatible_p_itype: The drive_incompatible_p_itype of this FailureTypeEntry.
        :type: str
        """
        self._drive_incompatible_p_itype = drive_incompatible_p_itype

    @property
    def degraded_drawer_ref(self):
        """
        Gets the degraded_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_DEGRADED. It identifies the degraded drawer.

        :return: The degraded_drawer_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._degraded_drawer_ref

    @degraded_drawer_ref.setter
    def degraded_drawer_ref(self, degraded_drawer_ref):
        """
        Sets the degraded_drawer_ref of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_DEGRADED. It identifies the degraded drawer.

        :param degraded_drawer_ref: The degraded_drawer_ref of this FailureTypeEntry.
        :type: str
        """
        self._degraded_drawer_ref = degraded_drawer_ref

    @property
    def ctlr_ioc_diag_failed(self):
        """
        Gets the ctlr_ioc_diag_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_IOC_DIAG_FAIL. It identifies the controller that failed IOC diagnostic testing.

        :return: The ctlr_ioc_diag_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ctlr_ioc_diag_failed

    @ctlr_ioc_diag_failed.setter
    def ctlr_ioc_diag_failed(self, ctlr_ioc_diag_failed):
        """
        Sets the ctlr_ioc_diag_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_IOC_DIAG_FAIL. It identifies the controller that failed IOC diagnostic testing.

        :param ctlr_ioc_diag_failed: The ctlr_ioc_diag_failed of this FailureTypeEntry.
        :type: str
        """
        self._ctlr_ioc_diag_failed = ctlr_ioc_diag_failed

    @property
    def invalid_sata_flash_config(self):
        """
        Gets the invalid_sata_flash_config of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_INVALID_SATA_FLASH_CONFIGURATION. It identifies a controller with an invalid SATA flash drive configuration.

        :return: The invalid_sata_flash_config of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._invalid_sata_flash_config

    @invalid_sata_flash_config.setter
    def invalid_sata_flash_config(self, invalid_sata_flash_config):
        """
        Sets the invalid_sata_flash_config of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_INVALID_SATA_FLASH_CONFIGURATION. It identifies a controller with an invalid SATA flash drive configuration.

        :param invalid_sata_flash_config: The invalid_sata_flash_config of this FailureTypeEntry.
        :type: str
        """
        self._invalid_sata_flash_config = invalid_sata_flash_config

    @property
    def offline_ctlr_ioc_diag_failed(self):
        """
        Gets the offline_ctlr_ioc_diag_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_OFFLINE_CTL_IOC_FAIL. It identifies the controller that failed IOC diagnostic testing and which is now offline.

        :return: The offline_ctlr_ioc_diag_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._offline_ctlr_ioc_diag_failed

    @offline_ctlr_ioc_diag_failed.setter
    def offline_ctlr_ioc_diag_failed(self, offline_ctlr_ioc_diag_failed):
        """
        Sets the offline_ctlr_ioc_diag_failed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_OFFLINE_CTL_IOC_FAIL. It identifies the controller that failed IOC diagnostic testing and which is now offline.

        :param offline_ctlr_ioc_diag_failed: The offline_ctlr_ioc_diag_failed of this FailureTypeEntry.
        :type: str
        """
        self._offline_ctlr_ioc_diag_failed = offline_ctlr_ioc_diag_failed

    @property
    def chan_sas_phy_disabled_local_wide_port_degraded(self):
        """
        Gets the chan_sas_phy_disabled_local_wide_port_degraded of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SAS_PHY_DISABLED_LOCAL_WIDE_PORT_DEGRADED. It identifies the channel.

        :return: The chan_sas_phy_disabled_local_wide_port_degraded of this FailureTypeEntry.
        :rtype: int
        :required/optional: optional
        """
        return self._chan_sas_phy_disabled_local_wide_port_degraded

    @chan_sas_phy_disabled_local_wide_port_degraded.setter
    def chan_sas_phy_disabled_local_wide_port_degraded(self, chan_sas_phy_disabled_local_wide_port_degraded):
        """
        Sets the chan_sas_phy_disabled_local_wide_port_degraded of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SAS_PHY_DISABLED_LOCAL_WIDE_PORT_DEGRADED. It identifies the channel.

        :param chan_sas_phy_disabled_local_wide_port_degraded: The chan_sas_phy_disabled_local_wide_port_degraded of this FailureTypeEntry.
        :type: int
        """
        self._chan_sas_phy_disabled_local_wide_port_degraded = chan_sas_phy_disabled_local_wide_port_degraded

    @property
    def chan_sas_phy_disabled_shared_wide_port_degraded(self):
        """
        Gets the chan_sas_phy_disabled_shared_wide_port_degraded of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SAS_PHY_DISABLED_SHARED_WIDE_PORT_DEGRADED. It identifies the channel.

        :return: The chan_sas_phy_disabled_shared_wide_port_degraded of this FailureTypeEntry.
        :rtype: int
        :required/optional: optional
        """
        return self._chan_sas_phy_disabled_shared_wide_port_degraded

    @chan_sas_phy_disabled_shared_wide_port_degraded.setter
    def chan_sas_phy_disabled_shared_wide_port_degraded(self, chan_sas_phy_disabled_shared_wide_port_degraded):
        """
        Sets the chan_sas_phy_disabled_shared_wide_port_degraded of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SAS_PHY_DISABLED_SHARED_WIDE_PORT_DEGRADED. It identifies the channel.

        :param chan_sas_phy_disabled_shared_wide_port_degraded: The chan_sas_phy_disabled_shared_wide_port_degraded of this FailureTypeEntry.
        :type: int
        """
        self._chan_sas_phy_disabled_shared_wide_port_degraded = chan_sas_phy_disabled_shared_wide_port_degraded

    @property
    def drawer_invalid(self):
        """
        Gets the drawer_invalid of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_INVALID. It identifies the invalid (unsupported) drawer.

        :return: The drawer_invalid of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drawer_invalid

    @drawer_invalid.setter
    def drawer_invalid(self, drawer_invalid):
        """
        Sets the drawer_invalid of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_INVALID. It identifies the invalid (unsupported) drawer.

        :param drawer_invalid: The drawer_invalid of this FailureTypeEntry.
        :type: str
        """
        self._drawer_invalid = drawer_invalid

    @property
    def drawer_removed(self):
        """
        Gets the drawer_removed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_REMOVED. It identifies the drawer that has been removed.

        :return: The drawer_removed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drawer_removed

    @drawer_removed.setter
    def drawer_removed(self, drawer_removed):
        """
        Sets the drawer_removed of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRAWER_REMOVED. It identifies the drawer that has been removed.

        :param drawer_removed: The drawer_removed of this FailureTypeEntry.
        :type: str
        """
        self._drawer_removed = drawer_removed

    @property
    def drive_unsupported_interposer_fw_version(self):
        """
        Gets the drive_unsupported_interposer_fw_version of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_INTERPOSER_FW_VERSION. It identifies a drive that has an unsupported interposer firmware version.

        :return: The drive_unsupported_interposer_fw_version of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_unsupported_interposer_fw_version

    @drive_unsupported_interposer_fw_version.setter
    def drive_unsupported_interposer_fw_version(self, drive_unsupported_interposer_fw_version):
        """
        Sets the drive_unsupported_interposer_fw_version of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_UNSUPPORTED_INTERPOSER_FW_VERSION. It identifies a drive that has an unsupported interposer firmware version.

        :param drive_unsupported_interposer_fw_version: The drive_unsupported_interposer_fw_version of this FailureTypeEntry.
        :type: str
        """
        self._drive_unsupported_interposer_fw_version = drive_unsupported_interposer_fw_version

    @property
    def volume_offline_during_reconfig(self):
        """
        Gets the volume_offline_during_reconfig of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_REDUNDANCY_GROUP_NOT_CONSISTENT_DURING_RECONFIG. It identifies a volume that has been taken offline due to the detection of an internal consistency problem. After the reconfiguration completes the data will be consistent, but may be corrupt.

        :return: The volume_offline_during_reconfig of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._volume_offline_during_reconfig

    @volume_offline_during_reconfig.setter
    def volume_offline_during_reconfig(self, volume_offline_during_reconfig):
        """
        Sets the volume_offline_during_reconfig of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_REDUNDANCY_GROUP_NOT_CONSISTENT_DURING_RECONFIG. It identifies a volume that has been taken offline due to the detection of an internal consistency problem. After the reconfiguration completes the data will be consistent, but may be corrupt.

        :param volume_offline_during_reconfig: The volume_offline_during_reconfig of this FailureTypeEntry.
        :type: str
        """
        self._volume_offline_during_reconfig = volume_offline_during_reconfig

    @property
    def snap_rollback_paused(self):
        """
        Gets the snap_rollback_paused of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SNAPSHOT_ROLLBACK_PAUSED. It is a reference to a snapshot that is currently paused.

        :return: The snap_rollback_paused of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._snap_rollback_paused

    @snap_rollback_paused.setter
    def snap_rollback_paused(self, snap_rollback_paused):
        """
        Sets the snap_rollback_paused of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_SNAPSHOT_ROLLBACK_PAUSED. It is a reference to a snapshot that is currently paused.

        :param snap_rollback_paused: The snap_rollback_paused of this FailureTypeEntry.
        :type: str
        """
        self._snap_rollback_paused = snap_rollback_paused

    @property
    def pit_rollback_paused(self):
        """
        Gets the pit_rollback_paused of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_ROLLBACK_PAUSED. It contains a reference to the PiT Group with a paused rollback operation.

        :return: The pit_rollback_paused of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_rollback_paused

    @pit_rollback_paused.setter
    def pit_rollback_paused(self, pit_rollback_paused):
        """
        Sets the pit_rollback_paused of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_ROLLBACK_PAUSED. It contains a reference to the PiT Group with a paused rollback operation.

        :param pit_rollback_paused: The pit_rollback_paused of this FailureTypeEntry.
        :type: str
        """
        self._pit_rollback_paused = pit_rollback_paused

    @property
    def pit_group_over_warn_threshold(self):
        """
        Gets the pit_group_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_REPOSITORY_OVER_THRESHOLD. It contains a reference to a PiT Group with a repository capacity over the warning threshold.

        :return: The pit_group_over_warn_threshold of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_group_over_warn_threshold

    @pit_group_over_warn_threshold.setter
    def pit_group_over_warn_threshold(self, pit_group_over_warn_threshold):
        """
        Sets the pit_group_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_REPOSITORY_OVER_THRESHOLD. It contains a reference to a PiT Group with a repository capacity over the warning threshold.

        :param pit_group_over_warn_threshold: The pit_group_over_warn_threshold of this FailureTypeEntry.
        :type: str
        """
        self._pit_group_over_warn_threshold = pit_group_over_warn_threshold

    @property
    def pit_view_over_warn_threshold(self):
        """
        Gets the pit_view_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_REPOSITORY_OVER_THRESHOLD. It contains a reference to a PiT View with a repository over the warning threshold.

        :return: The pit_view_over_warn_threshold of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_view_over_warn_threshold

    @pit_view_over_warn_threshold.setter
    def pit_view_over_warn_threshold(self, pit_view_over_warn_threshold):
        """
        Sets the pit_view_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_REPOSITORY_OVER_THRESHOLD. It contains a reference to a PiT View with a repository over the warning threshold.

        :param pit_view_over_warn_threshold: The pit_view_over_warn_threshold of this FailureTypeEntry.
        :type: str
        """
        self._pit_view_over_warn_threshold = pit_view_over_warn_threshold

    @property
    def pit_group_repository_full(self):
        """
        Gets the pit_group_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_REPOSITORY_FULL. It contains a reference to a PiT Group with a full repository.

        :return: The pit_group_repository_full of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_group_repository_full

    @pit_group_repository_full.setter
    def pit_group_repository_full(self, pit_group_repository_full):
        """
        Sets the pit_group_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_REPOSITORY_FULL. It contains a reference to a PiT Group with a full repository.

        :param pit_group_repository_full: The pit_group_repository_full of this FailureTypeEntry.
        :type: str
        """
        self._pit_group_repository_full = pit_group_repository_full

    @property
    def pit_view_repository_full(self):
        """
        Gets the pit_view_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_REPOSITORY_FULL. It contains a reference to a PiT View with a full repository.

        :return: The pit_view_repository_full of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_view_repository_full

    @pit_view_repository_full.setter
    def pit_view_repository_full(self, pit_view_repository_full):
        """
        Sets the pit_view_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_REPOSITORY_FULL. It contains a reference to a PiT View with a full repository.

        :param pit_view_repository_full: The pit_view_repository_full of this FailureTypeEntry.
        :type: str
        """
        self._pit_view_repository_full = pit_view_repository_full

    @property
    def pit_group_failed(self):
        """
        Gets the pit_group_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_FAILED. It contains a reference to a PiT Group that has failed.

        :return: The pit_group_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_group_failed

    @pit_group_failed.setter
    def pit_group_failed(self, pit_group_failed):
        """
        Sets the pit_group_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_GROUP_FAILED. It contains a reference to a PiT Group that has failed.

        :param pit_group_failed: The pit_group_failed of this FailureTypeEntry.
        :type: str
        """
        self._pit_group_failed = pit_group_failed

    @property
    def pit_view_failed(self):
        """
        Gets the pit_view_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_FAILED. It contains a reference to a PiT View that has failed.

        :return: The pit_view_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_view_failed

    @pit_view_failed.setter
    def pit_view_failed(self, pit_view_failed):
        """
        Sets the pit_view_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_VIEW_FAILED. It contains a reference to a PiT View that has failed.

        :param pit_view_failed: The pit_view_failed of this FailureTypeEntry.
        :type: str
        """
        self._pit_view_failed = pit_view_failed

    @property
    def pit_purged(self):
        """
        Gets the pit_purged of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_PURGED. It contains a reference to a PiT that has been purged to free PiT group repository capacity.

        :return: The pit_purged of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_purged

    @pit_purged.setter
    def pit_purged(self, pit_purged):
        """
        Sets the pit_purged of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_PIT_PURGED. It contains a reference to a PiT that has been purged to free PiT group repository capacity.

        :param pit_purged: The pit_purged of this FailureTypeEntry.
        :type: str
        """
        self._pit_purged = pit_purged

    @property
    def degraded_async_mirror_group(self):
        """
        Gets the degraded_async_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_DEGRADED_MIRROR_GROUP. It contains information about a mirror group fault condition.

        :return: The degraded_async_mirror_group of this FailureTypeEntry.
        :rtype: AsyncMirrorGroupFaultIndication
        :required/optional: optional
        """
        return self._degraded_async_mirror_group

    @degraded_async_mirror_group.setter
    def degraded_async_mirror_group(self, degraded_async_mirror_group):
        """
        Sets the degraded_async_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_DEGRADED_MIRROR_GROUP. It contains information about a mirror group fault condition.

        :param degraded_async_mirror_group: The degraded_async_mirror_group of this FailureTypeEntry.
        :type: AsyncMirrorGroupFaultIndication
        """
        self._degraded_async_mirror_group = degraded_async_mirror_group

    @property
    def sync_interval_time_exceeded(self):
        """
        Gets the sync_interval_time_exceeded of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_INTERVAL_TIME_OVER_THRESHOLD. It contains information about a mirror group fault condition.

        :return: The sync_interval_time_exceeded of this FailureTypeEntry.
        :rtype: AsyncMirrorGroupFaultIndication
        :required/optional: optional
        """
        return self._sync_interval_time_exceeded

    @sync_interval_time_exceeded.setter
    def sync_interval_time_exceeded(self, sync_interval_time_exceeded):
        """
        Sets the sync_interval_time_exceeded of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_INTERVAL_TIME_OVER_THRESHOLD. It contains information about a mirror group fault condition.

        :param sync_interval_time_exceeded: The sync_interval_time_exceeded of this FailureTypeEntry.
        :type: AsyncMirrorGroupFaultIndication
        """
        self._sync_interval_time_exceeded = sync_interval_time_exceeded

    @property
    def failed_async_mirror(self):
        """
        Gets the failed_async_mirror of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_FAILED_MIRROR. It identifies the Async Mirror Group member that failed.

        :return: The failed_async_mirror of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._failed_async_mirror

    @failed_async_mirror.setter
    def failed_async_mirror(self, failed_async_mirror):
        """
        Sets the failed_async_mirror of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_FAILED_MIRROR. It identifies the Async Mirror Group member that failed.

        :param failed_async_mirror: The failed_async_mirror of this FailureTypeEntry.
        :type: str
        """
        self._failed_async_mirror = failed_async_mirror

    @property
    def async_mirror_repository_over_warn_threshold(self):
        """
        Gets the async_mirror_repository_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_REPOSITORY_OVER_WARN_THRESHOLD. It contains information about a mirror group member fault condition.

        :return: The async_mirror_repository_over_warn_threshold of this FailureTypeEntry.
        :rtype: AsyncMirrorGroupMemberFaultIndication
        :required/optional: optional
        """
        return self._async_mirror_repository_over_warn_threshold

    @async_mirror_repository_over_warn_threshold.setter
    def async_mirror_repository_over_warn_threshold(self, async_mirror_repository_over_warn_threshold):
        """
        Sets the async_mirror_repository_over_warn_threshold of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_REPOSITORY_OVER_WARN_THRESHOLD. It contains information about a mirror group member fault condition.

        :param async_mirror_repository_over_warn_threshold: The async_mirror_repository_over_warn_threshold of this FailureTypeEntry.
        :type: AsyncMirrorGroupMemberFaultIndication
        """
        self._async_mirror_repository_over_warn_threshold = async_mirror_repository_over_warn_threshold

    @property
    def role_conflict_mirror_group(self):
        """
        Gets the role_conflict_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_MIRROR_GROUP_ROLE_CONFLICT. It identifies the Async Mirror Group with a role conflict.

        :return: The role_conflict_mirror_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._role_conflict_mirror_group

    @role_conflict_mirror_group.setter
    def role_conflict_mirror_group(self, role_conflict_mirror_group):
        """
        Sets the role_conflict_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_MIRROR_GROUP_ROLE_CONFLICT. It identifies the Async Mirror Group with a role conflict.

        :param role_conflict_mirror_group: The role_conflict_mirror_group of this FailureTypeEntry.
        :type: str
        """
        self._role_conflict_mirror_group = role_conflict_mirror_group

    @property
    def recovery_point_lost_group(self):
        """
        Gets the recovery_point_lost_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_MIRROR_GROUP_RECOVERY_POINT_LOST. It identifies the Async Mirror Group that lost a recovery point.

        :return: The recovery_point_lost_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._recovery_point_lost_group

    @recovery_point_lost_group.setter
    def recovery_point_lost_group(self, recovery_point_lost_group):
        """
        Sets the recovery_point_lost_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_MIRROR_GROUP_RECOVERY_POINT_LOST. It identifies the Async Mirror Group that lost a recovery point.

        :param recovery_point_lost_group: The recovery_point_lost_group of this FailureTypeEntry.
        :type: str
        """
        self._recovery_point_lost_group = recovery_point_lost_group

    @property
    def incompatible_volume_group_security(self):
        """
        Gets the incompatible_volume_group_security of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_INCOMPATIBLE_VOLUME_GROUP_SECURITY. It identifies the volume group with incompatible security.

        :return: The incompatible_volume_group_security of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._incompatible_volume_group_security

    @incompatible_volume_group_security.setter
    def incompatible_volume_group_security(self, incompatible_volume_group_security):
        """
        Sets the incompatible_volume_group_security of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_INCOMPATIBLE_VOLUME_GROUP_SECURITY. It identifies the volume group with incompatible security.

        :param incompatible_volume_group_security: The incompatible_volume_group_security of this FailureTypeEntry.
        :type: str
        """
        self._incompatible_volume_group_security = incompatible_volume_group_security

    @property
    def orphan_mirror_group(self):
        """
        Gets the orphan_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_GROUP. It identifies the orphaned mirror group.

        :return: The orphan_mirror_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._orphan_mirror_group

    @orphan_mirror_group.setter
    def orphan_mirror_group(self, orphan_mirror_group):
        """
        Sets the orphan_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_GROUP. It identifies the orphaned mirror group.

        :param orphan_mirror_group: The orphan_mirror_group of this FailureTypeEntry.
        :type: str
        """
        self._orphan_mirror_group = orphan_mirror_group

    @property
    def orphan_mirror_member(self):
        """
        Gets the orphan_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_MEMBER. It identifies the orphaned member.

        :return: The orphan_mirror_member of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._orphan_mirror_member

    @orphan_mirror_member.setter
    def orphan_mirror_member(self, orphan_mirror_member):
        """
        Sets the orphan_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_MEMBER. It identifies the orphaned member.

        :param orphan_mirror_member: The orphan_mirror_member of this FailureTypeEntry.
        :type: str
        """
        self._orphan_mirror_member = orphan_mirror_member

    @property
    def disk_pool_state_partial(self):
        """
        Gets the disk_pool_state_partial of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_PARTIALLY_PRESENT. It contains the identification of the Disk Pool that has transitioned to Partial state..

        :return: The disk_pool_state_partial of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_state_partial

    @disk_pool_state_partial.setter
    def disk_pool_state_partial(self, disk_pool_state_partial):
        """
        Sets the disk_pool_state_partial of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_PARTIALLY_PRESENT. It contains the identification of the Disk Pool that has transitioned to Partial state..

        :param disk_pool_state_partial: The disk_pool_state_partial of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_state_partial = disk_pool_state_partial

    @property
    def disk_pool_state_incomplete(self):
        """
        Gets the disk_pool_state_incomplete of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_INCOMPLETE. It contains the identification of the Disk Pool that has transitioned to Incomplete state.

        :return: The disk_pool_state_incomplete of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_state_incomplete

    @disk_pool_state_incomplete.setter
    def disk_pool_state_incomplete(self, disk_pool_state_incomplete):
        """
        Sets the disk_pool_state_incomplete of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_INCOMPLETE. It contains the identification of the Disk Pool that has transitioned to Incomplete state.

        :param disk_pool_state_incomplete: The disk_pool_state_incomplete of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_state_incomplete = disk_pool_state_incomplete

    @property
    def disk_pool_state_missing(self):
        """
        Gets the disk_pool_state_missing of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_MISSING. It contains the identification of the Disk Pool that has transitioned to Missing state.

        :return: The disk_pool_state_missing of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_state_missing

    @disk_pool_state_missing.setter
    def disk_pool_state_missing(self, disk_pool_state_missing):
        """
        Sets the disk_pool_state_missing of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_MISSING. It contains the identification of the Disk Pool that has transitioned to Missing state.

        :param disk_pool_state_missing: The disk_pool_state_missing of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_state_missing = disk_pool_state_missing

    @property
    def disk_pool_reconstruction(self):
        """
        Gets the disk_pool_reconstruction of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_RECONSTRUCTION_DRIVE_COUNT_BELOW_THRESHOLD. It contains the identification of the Disk Pool with space reserved for reconstructions that has fallen below the reconstruction reserved disk count value.

        :return: The disk_pool_reconstruction of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_reconstruction

    @disk_pool_reconstruction.setter
    def disk_pool_reconstruction(self, disk_pool_reconstruction):
        """
        Sets the disk_pool_reconstruction of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_RECONSTRUCTION_DRIVE_COUNT_BELOW_THRESHOLD. It contains the identification of the Disk Pool with space reserved for reconstructions that has fallen below the reconstruction reserved disk count value.

        :param disk_pool_reconstruction: The disk_pool_reconstruction of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_reconstruction = disk_pool_reconstruction

    @property
    def disk_pool_utilization_warning(self):
        """
        Gets the disk_pool_utilization_warning of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_UTILIZATION_WARNING. It contains the identification of the Disk Pool that has exceeded the Utilization Threshold Warning attribute.

        :return: The disk_pool_utilization_warning of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_utilization_warning

    @disk_pool_utilization_warning.setter
    def disk_pool_utilization_warning(self, disk_pool_utilization_warning):
        """
        Sets the disk_pool_utilization_warning of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_UTILIZATION_WARNING. It contains the identification of the Disk Pool that has exceeded the Utilization Threshold Warning attribute.

        :param disk_pool_utilization_warning: The disk_pool_utilization_warning of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_utilization_warning = disk_pool_utilization_warning

    @property
    def disk_pool_utilization_critical(self):
        """
        Gets the disk_pool_utilization_critical of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_UTILIZATION_CRITICAL. It contains the identification of the Disk Pool that has exceeded the Utilization Threshold Critical attribute.

        :return: The disk_pool_utilization_critical of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_utilization_critical

    @disk_pool_utilization_critical.setter
    def disk_pool_utilization_critical(self, disk_pool_utilization_critical):
        """
        Sets the disk_pool_utilization_critical of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_UTILIZATION_CRITICAL. It contains the identification of the Disk Pool that has exceeded the Utilization Threshold Critical attribute.

        :param disk_pool_utilization_critical: The disk_pool_utilization_critical of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_utilization_critical = disk_pool_utilization_critical

    @property
    def pit_group_pending_create_failed(self):
        """
        Gets the pit_group_pending_create_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PENDING_PIT_CREATION_FAILED. It contains a reference to the PiT Group.

        :return: The pit_group_pending_create_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._pit_group_pending_create_failed

    @pit_group_pending_create_failed.setter
    def pit_group_pending_create_failed(self, pit_group_pending_create_failed):
        """
        Sets the pit_group_pending_create_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PENDING_PIT_CREATION_FAILED. It contains a reference to the PiT Group.

        :param pit_group_pending_create_failed: The pit_group_pending_create_failed of this FailureTypeEntry.
        :type: str
        """
        self._pit_group_pending_create_failed = pit_group_pending_create_failed

    @property
    def cg_pending_create_failed(self):
        """
        Gets the cg_pending_create_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PENDING_CGPIT_CREATION_FAILED. It contains a reference to the PiT Consistency Group.

        :return: The cg_pending_create_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._cg_pending_create_failed

    @cg_pending_create_failed.setter
    def cg_pending_create_failed(self, cg_pending_create_failed):
        """
        Sets the cg_pending_create_failed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_PENDING_CGPIT_CREATION_FAILED. It contains a reference to the PiT Consistency Group.

        :param cg_pending_create_failed: The cg_pending_create_failed of this FailureTypeEntry.
        :type: str
        """
        self._cg_pending_create_failed = cg_pending_create_failed

    @property
    def thin_volume_over_threshold(self):
        """
        Gets the thin_volume_over_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_REPOSITORY_OVER_THRESHOLD. It identifies a thin volume with a repository over the threshold value.

        :return: The thin_volume_over_threshold of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._thin_volume_over_threshold

    @thin_volume_over_threshold.setter
    def thin_volume_over_threshold(self, thin_volume_over_threshold):
        """
        Sets the thin_volume_over_threshold of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_REPOSITORY_OVER_THRESHOLD. It identifies a thin volume with a repository over the threshold value.

        :param thin_volume_over_threshold: The thin_volume_over_threshold of this FailureTypeEntry.
        :type: str
        """
        self._thin_volume_over_threshold = thin_volume_over_threshold

    @property
    def thin_volume_repository_full(self):
        """
        Gets the thin_volume_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_REPOSITORY_FULL. It identifies a thin volume with a full repository.

        :return: The thin_volume_repository_full of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._thin_volume_repository_full

    @thin_volume_repository_full.setter
    def thin_volume_repository_full(self, thin_volume_repository_full):
        """
        Sets the thin_volume_repository_full of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_REPOSITORY_FULL. It identifies a thin volume with a full repository.

        :param thin_volume_repository_full: The thin_volume_repository_full of this FailureTypeEntry.
        :type: str
        """
        self._thin_volume_repository_full = thin_volume_repository_full

    @property
    def thin_volume_failed(self):
        """
        Gets the thin_volume_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_FAILED. It identifies a thin volume that is in a failed state.

        :return: The thin_volume_failed of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._thin_volume_failed

    @thin_volume_failed.setter
    def thin_volume_failed(self, thin_volume_failed):
        """
        Sets the thin_volume_failed of this FailureTypeEntry.
        This field is present only if the value of recFailureType is equal to REC_TPV_FAILED. It identifies a thin volume that is in a failed state.

        :param thin_volume_failed: The thin_volume_failed of this FailureTypeEntry.
        :type: str
        """
        self._thin_volume_failed = thin_volume_failed

    @property
    def full_secondary_repository_mirror_member(self):
        """
        Gets the full_secondary_repository_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SECONDARY_REPOSITORY_FULL. It contains a reference to the secondary repository mirror member that has reached the full point.

        :return: The full_secondary_repository_mirror_member of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._full_secondary_repository_mirror_member

    @full_secondary_repository_mirror_member.setter
    def full_secondary_repository_mirror_member(self, full_secondary_repository_mirror_member):
        """
        Sets the full_secondary_repository_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SECONDARY_REPOSITORY_FULL. It contains a reference to the secondary repository mirror member that has reached the full point.

        :param full_secondary_repository_mirror_member: The full_secondary_repository_mirror_member of this FailureTypeEntry.
        :type: str
        """
        self._full_secondary_repository_mirror_member = full_secondary_repository_mirror_member

    @property
    def suspended_mirror_group(self):
        """
        Gets the suspended_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_INTERNALLY_SUSPENDED. It identifies an async mirror group that has been suspended by the controller due to an error condition.

        :return: The suspended_mirror_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._suspended_mirror_group

    @suspended_mirror_group.setter
    def suspended_mirror_group(self, suspended_mirror_group):
        """
        Sets the suspended_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_INTERNALLY_SUSPENDED. It identifies an async mirror group that has been suspended by the controller due to an error condition.

        :param suspended_mirror_group: The suspended_mirror_group of this FailureTypeEntry.
        :type: str
        """
        self._suspended_mirror_group = suspended_mirror_group

    @property
    def database_metadata(self):
        """
        Gets the database_metadata of this FailureTypeEntry.
        It contains metadata for the stable store database backup that is in recovery mode.

        :return: The database_metadata of this FailureTypeEntry.
        :rtype: DatabaseMetadata
        :required/optional: optional
        """
        return self._database_metadata

    @database_metadata.setter
    def database_metadata(self, database_metadata):
        """
        Sets the database_metadata of this FailureTypeEntry.
        It contains metadata for the stable store database backup that is in recovery mode.

        :param database_metadata: The database_metadata of this FailureTypeEntry.
        :type: DatabaseMetadata
        """
        self._database_metadata = database_metadata

    @property
    def full_primary_repository_mirror_member(self):
        """
        Gets the full_primary_repository_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_PRIMARY_REPOSITORY_FULL. It contains information about the primary repository mirror member that has reached the full point.

        :return: The full_primary_repository_mirror_member of this FailureTypeEntry.
        :rtype: AsyncMirrorGroupMemberFaultIndication
        :required/optional: optional
        """
        return self._full_primary_repository_mirror_member

    @full_primary_repository_mirror_member.setter
    def full_primary_repository_mirror_member(self, full_primary_repository_mirror_member):
        """
        Sets the full_primary_repository_mirror_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_PRIMARY_REPOSITORY_FULL. It contains information about the primary repository mirror member that has reached the full point.

        :param full_primary_repository_mirror_member: The full_primary_repository_mirror_member of this FailureTypeEntry.
        :type: AsyncMirrorGroupMemberFaultIndication
        """
        self._full_primary_repository_mirror_member = full_primary_repository_mirror_member

    @property
    def sata_sct_cmnd_unsupported(self):
        """
        Gets the sata_sct_cmnd_unsupported of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_INCOMPATIBLE_SATA_DRIVE. It is a reference to a SATA drive that is incompatible because it does not support SMART Command Transfer (SCT) commands.

        :return: The sata_sct_cmnd_unsupported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._sata_sct_cmnd_unsupported

    @sata_sct_cmnd_unsupported.setter
    def sata_sct_cmnd_unsupported(self, sata_sct_cmnd_unsupported):
        """
        Sets the sata_sct_cmnd_unsupported of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_INCOMPATIBLE_SATA_DRIVE. It is a reference to a SATA drive that is incompatible because it does not support SMART Command Transfer (SCT) commands.

        :param sata_sct_cmnd_unsupported: The sata_sct_cmnd_unsupported of this FailureTypeEntry.
        :type: str
        """
        self._sata_sct_cmnd_unsupported = sata_sct_cmnd_unsupported

    @property
    def disk_pool_capacity_depleted(self):
        """
        Gets the disk_pool_capacity_depleted of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_CAPACITY_DEPLETED. It identifies the Disk Pool with depleted capacity.

        :return: The disk_pool_capacity_depleted of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_capacity_depleted

    @disk_pool_capacity_depleted.setter
    def disk_pool_capacity_depleted(self, disk_pool_capacity_depleted):
        """
        Sets the disk_pool_capacity_depleted of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_CAPACITY_DEPLETED. It identifies the Disk Pool with depleted capacity.

        :param disk_pool_capacity_depleted: The disk_pool_capacity_depleted of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_capacity_depleted = disk_pool_capacity_depleted

    @property
    def drive_model_number_unsupported(self):
        """
        Gets the drive_model_number_unsupported of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_DRIVE_INCOMPATIBLE_MODEL_NUMBER_UNSUPPORTED. It is a reference to a SATA drive that is incompatible because of the model number.

        :return: The drive_model_number_unsupported of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_model_number_unsupported

    @drive_model_number_unsupported.setter
    def drive_model_number_unsupported(self, drive_model_number_unsupported):
        """
        Sets the drive_model_number_unsupported of this FailureTypeEntry.
        This field is present only if the value of the recFailureType is equal to REC_DRIVE_INCOMPATIBLE_MODEL_NUMBER_UNSUPPORTED. It is a reference to a SATA drive that is incompatible because of the model number.

        :param drive_model_number_unsupported: The drive_model_number_unsupported of this FailureTypeEntry.
        :type: str
        """
        self._drive_model_number_unsupported = drive_model_number_unsupported

    @property
    def flash_cache_non_optimal_drives(self):
        """
        Gets the flash_cache_non_optimal_drives of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FLASH_CACHE_NON_OPTIMAL_DRIVES.

        :return: The flash_cache_non_optimal_drives of this FailureTypeEntry.
        :rtype: FlashCacheRecoveryData
        :required/optional: optional
        """
        return self._flash_cache_non_optimal_drives

    @flash_cache_non_optimal_drives.setter
    def flash_cache_non_optimal_drives(self, flash_cache_non_optimal_drives):
        """
        Sets the flash_cache_non_optimal_drives of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FLASH_CACHE_NON_OPTIMAL_DRIVES.

        :param flash_cache_non_optimal_drives: The flash_cache_non_optimal_drives of this FailureTypeEntry.
        :type: FlashCacheRecoveryData
        """
        self._flash_cache_non_optimal_drives = flash_cache_non_optimal_drives

    @property
    def flash_cache_hot_spare_in_use(self):
        """
        Gets the flash_cache_hot_spare_in_use of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FLASH_CACHE_HOT_SPARE_IN_USE.

        :return: The flash_cache_hot_spare_in_use of this FailureTypeEntry.
        :rtype: FlashCacheRecoveryData
        :required/optional: optional
        """
        return self._flash_cache_hot_spare_in_use

    @flash_cache_hot_spare_in_use.setter
    def flash_cache_hot_spare_in_use(self, flash_cache_hot_spare_in_use):
        """
        Sets the flash_cache_hot_spare_in_use of this FailureTypeEntry.
        This field is present if the RecoveryFailureType value is equal to REC_FLASH_CACHE_HOT_SPARE_IN_USE.

        :param flash_cache_hot_spare_in_use: The flash_cache_hot_spare_in_use of this FailureTypeEntry.
        :type: FlashCacheRecoveryData
        """
        self._flash_cache_hot_spare_in_use = flash_cache_hot_spare_in_use

    @property
    def native_sata_incompatible_nvsram(self):
        """
        Gets the native_sata_incompatible_nvsram of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ALL_DRIVES_BYPASSED_INCOMPATIBLE_NVSRAM. It identifies the controller in a Native SATA array that has a duplex NVSRAM setting and all drives appear as bypassed.

        :return: The native_sata_incompatible_nvsram of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._native_sata_incompatible_nvsram

    @native_sata_incompatible_nvsram.setter
    def native_sata_incompatible_nvsram(self, native_sata_incompatible_nvsram):
        """
        Sets the native_sata_incompatible_nvsram of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ALL_DRIVES_BYPASSED_INCOMPATIBLE_NVSRAM. It identifies the controller in a Native SATA array that has a duplex NVSRAM setting and all drives appear as bypassed.

        :param native_sata_incompatible_nvsram: The native_sata_incompatible_nvsram of this FailureTypeEntry.
        :type: str
        """
        self._native_sata_incompatible_nvsram = native_sata_incompatible_nvsram

    @property
    def disk_pool_drive_failure(self):
        """
        Gets the disk_pool_drive_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_DRIVE_FAILURE. It identifies the Disk Pool with at least one failed drive.

        :return: The disk_pool_drive_failure of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_drive_failure

    @disk_pool_drive_failure.setter
    def disk_pool_drive_failure(self, disk_pool_drive_failure):
        """
        Sets the disk_pool_drive_failure of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_DRIVE_FAILURE. It identifies the Disk Pool with at least one failed drive.

        :param disk_pool_drive_failure: The disk_pool_drive_failure of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_drive_failure = disk_pool_drive_failure

    @property
    def disk_pool_insufficient_memory(self):
        """
        Gets the disk_pool_insufficient_memory of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_INSUFFICIENT_MEMORY. It identifies the controller where access to disk pool volumes is prohibited because of insufficient memory.

        :return: The disk_pool_insufficient_memory of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_insufficient_memory

    @disk_pool_insufficient_memory.setter
    def disk_pool_insufficient_memory(self, disk_pool_insufficient_memory):
        """
        Sets the disk_pool_insufficient_memory of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_DISK_POOL_INSUFFICIENT_MEMORY. It identifies the controller where access to disk pool volumes is prohibited because of insufficient memory.

        :param disk_pool_insufficient_memory: The disk_pool_insufficient_memory of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_insufficient_memory = disk_pool_insufficient_memory

    @property
    def orphan_incomplete_member(self):
        """
        Gets the orphan_incomplete_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_INCOMPLETE_MEMBER. It identifies the orphan incomplete async mirror group member.

        :return: The orphan_incomplete_member of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._orphan_incomplete_member

    @orphan_incomplete_member.setter
    def orphan_incomplete_member(self, orphan_incomplete_member):
        """
        Sets the orphan_incomplete_member of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_ORPHAN_INCOMPLETE_MEMBER. It identifies the orphan incomplete async mirror group member.

        :param orphan_incomplete_member: The orphan_incomplete_member of this FailureTypeEntry.
        :type: str
        """
        self._orphan_incomplete_member = orphan_incomplete_member

    @property
    def paused_alt_state_mirror_group(self):
        """
        Gets the paused_alt_state_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_PAUSED_ALT_STATE. It identifies the AsyncMirrorGroup whose synchronization has been paused.

        :return: The paused_alt_state_mirror_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._paused_alt_state_mirror_group

    @paused_alt_state_mirror_group.setter
    def paused_alt_state_mirror_group(self, paused_alt_state_mirror_group):
        """
        Sets the paused_alt_state_mirror_group of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_ARVM_SYNC_PAUSED_ALT_STATE. It identifies the AsyncMirrorGroup whose synchronization has been paused.

        :param paused_alt_state_mirror_group: The paused_alt_state_mirror_group of this FailureTypeEntry.
        :type: str
        """
        self._paused_alt_state_mirror_group = paused_alt_state_mirror_group

    @property
    def paused_role_change_group(self):
        """
        Gets the paused_role_change_group of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType is equal to REC_ARVM_ROLE_CHANGE_PAUSED. It identifies the async mirror group that has had a role change pause due to issues with required data synchronization.

        :return: The paused_role_change_group of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._paused_role_change_group

    @paused_role_change_group.setter
    def paused_role_change_group(self, paused_role_change_group):
        """
        Sets the paused_role_change_group of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType is equal to REC_ARVM_ROLE_CHANGE_PAUSED. It identifies the async mirror group that has had a role change pause due to issues with required data synchronization.

        :param paused_role_change_group: The paused_role_change_group of this FailureTypeEntry.
        :type: str
        """
        self._paused_role_change_group = paused_role_change_group

    @property
    def drive_emulation_incompatible_alignment(self):
        """
        Gets the drive_emulation_incompatible_alignment of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_INCOMPATIBLE_ALIGNMENT_FOR_EMULATION_DRIVE. It identifies an emulation drive with an incompatible alignment.

        :return: The drive_emulation_incompatible_alignment of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._drive_emulation_incompatible_alignment

    @drive_emulation_incompatible_alignment.setter
    def drive_emulation_incompatible_alignment(self, drive_emulation_incompatible_alignment):
        """
        Sets the drive_emulation_incompatible_alignment of this FailureTypeEntry.
        This field is present only if the value of RecoveryFailureType value is equal to REC_DRIVE_INCOMPATIBLE_ALIGNMENT_FOR_EMULATION_DRIVE. It identifies an emulation drive with an incompatible alignment.

        :param drive_emulation_incompatible_alignment: The drive_emulation_incompatible_alignment of this FailureTypeEntry.
        :type: str
        """
        self._drive_emulation_incompatible_alignment = drive_emulation_incompatible_alignment

    @property
    def redundancy_fail(self):
        """
        Gets the redundancy_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOSS_OF_EXTERNAL_REDUNDANCY. It identifies drive channels that are not externally connected..

        :return: The redundancy_fail of this FailureTypeEntry.
        :rtype: ExternalRedundancyFailure
        :required/optional: optional
        """
        return self._redundancy_fail

    @redundancy_fail.setter
    def redundancy_fail(self, redundancy_fail):
        """
        Sets the redundancy_fail of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_LOSS_OF_EXTERNAL_REDUNDANCY. It identifies drive channels that are not externally connected..

        :param redundancy_fail: The redundancy_fail of this FailureTypeEntry.
        :type: ExternalRedundancyFailure
        """
        self._redundancy_fail = redundancy_fail

    @property
    def mirror_proxy_ref(self):
        """
        Gets the mirror_proxy_ref of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RVM_WRITE_MODE_INCONSISTENT.

        :return: The mirror_proxy_ref of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._mirror_proxy_ref

    @mirror_proxy_ref.setter
    def mirror_proxy_ref(self, mirror_proxy_ref):
        """
        Sets the mirror_proxy_ref of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_RVM_WRITE_MODE_INCONSISTENT.

        :param mirror_proxy_ref: The mirror_proxy_ref of this FailureTypeEntry.
        :type: str
        """
        self._mirror_proxy_ref = mirror_proxy_ref

    @property
    def miswired_sas_host(self):
        """
        Gets the miswired_sas_host of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_HOST_MISWIRE. It identifies the SAS port from which the miswire originates.

        :return: The miswired_sas_host of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._miswired_sas_host

    @miswired_sas_host.setter
    def miswired_sas_host(self, miswired_sas_host):
        """
        Sets the miswired_sas_host of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_HOST_MISWIRE. It identifies the SAS port from which the miswire originates.

        :param miswired_sas_host: The miswired_sas_host of this FailureTypeEntry.
        :type: SasPort
        """
        self._miswired_sas_host = miswired_sas_host

    @property
    def miswired_sas_cross(self):
        """
        Gets the miswired_sas_cross of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_CROSS_MISWIRE. It identifies the SAS port that has been disabled.

        :return: The miswired_sas_cross of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._miswired_sas_cross

    @miswired_sas_cross.setter
    def miswired_sas_cross(self, miswired_sas_cross):
        """
        Sets the miswired_sas_cross of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_CROSS_MISWIRE. It identifies the SAS port that has been disabled.

        :param miswired_sas_cross: The miswired_sas_cross of this FailureTypeEntry.
        :type: SasPort
        """
        self._miswired_sas_cross = miswired_sas_cross

    @property
    def miswired_sas_loop(self):
        """
        Gets the miswired_sas_loop of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_LOOP_MISWIRE. It identifies the SAS port that has been disabled.

        :return: The miswired_sas_loop of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._miswired_sas_loop

    @miswired_sas_loop.setter
    def miswired_sas_loop(self, miswired_sas_loop):
        """
        Sets the miswired_sas_loop of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_SAS_LOOP_MISWIRE. It identifies the SAS port that has been disabled.

        :param miswired_sas_loop: The miswired_sas_loop of this FailureTypeEntry.
        :type: SasPort
        """
        self._miswired_sas_loop = miswired_sas_loop

    @property
    def vol_group_waiting_on_hot_spare(self):
        """
        Gets the vol_group_waiting_on_hot_spare of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_COPY_THEN_FAIL_WAITING_ON_HOT_SPARE: A copy then fail operation is waiting on the user to identify a suitable hot spare drive.

        :return: The vol_group_waiting_on_hot_spare of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._vol_group_waiting_on_hot_spare

    @vol_group_waiting_on_hot_spare.setter
    def vol_group_waiting_on_hot_spare(self, vol_group_waiting_on_hot_spare):
        """
        Sets the vol_group_waiting_on_hot_spare of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_COPY_THEN_FAIL_WAITING_ON_HOT_SPARE: A copy then fail operation is waiting on the user to identify a suitable hot spare drive.

        :param vol_group_waiting_on_hot_spare: The vol_group_waiting_on_hot_spare of this FailureTypeEntry.
        :type: str
        """
        self._vol_group_waiting_on_hot_spare = vol_group_waiting_on_hot_spare

    @property
    def missing_assigned_drives(self):
        """
        Gets the missing_assigned_drives of this FailureTypeEntry.
        This recovery failure type includes a list of the drives that have gone missing. The drives in the list are identified as a collection of tray/slot combinations.

        :return: The missing_assigned_drives of this FailureTypeEntry.
        :rtype: list[TraySlot]
        :required/optional: optional
        """
        return self._missing_assigned_drives

    @missing_assigned_drives.setter
    def missing_assigned_drives(self, missing_assigned_drives):
        """
        Sets the missing_assigned_drives of this FailureTypeEntry.
        This recovery failure type includes a list of the drives that have gone missing. The drives in the list are identified as a collection of tray/slot combinations.

        :param missing_assigned_drives: The missing_assigned_drives of this FailureTypeEntry.
        :type: list[TraySlot]
        """
        self._missing_assigned_drives = missing_assigned_drives

    @property
    def disk_pool_waiting_on_hot_spare(self):
        """
        Gets the disk_pool_waiting_on_hot_spare of this FailureTypeEntry.


        :return: The disk_pool_waiting_on_hot_spare of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._disk_pool_waiting_on_hot_spare

    @disk_pool_waiting_on_hot_spare.setter
    def disk_pool_waiting_on_hot_spare(self, disk_pool_waiting_on_hot_spare):
        """
        Sets the disk_pool_waiting_on_hot_spare of this FailureTypeEntry.


        :param disk_pool_waiting_on_hot_spare: The disk_pool_waiting_on_hot_spare of this FailureTypeEntry.
        :type: str
        """
        self._disk_pool_waiting_on_hot_spare = disk_pool_waiting_on_hot_spare

    @property
    def controller_in_service_mode(self):
        """
        Gets the controller_in_service_mode of this FailureTypeEntry.
        The controller has automatically gone into service mode due to the detection of a PI error.

        :return: The controller_in_service_mode of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._controller_in_service_mode

    @controller_in_service_mode.setter
    def controller_in_service_mode(self, controller_in_service_mode):
        """
        Sets the controller_in_service_mode of this FailureTypeEntry.
        The controller has automatically gone into service mode due to the detection of a PI error.

        :param controller_in_service_mode: The controller_in_service_mode of this FailureTypeEntry.
        :type: str
        """
        self._controller_in_service_mode = controller_in_service_mode

    @property
    def controller_in_lockdown(self):
        """
        Gets the controller_in_lockdown of this FailureTypeEntry.
        The controller has gone into lockdown mode due to the detection of PI errors on all controllers in the array.

        :return: The controller_in_lockdown of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._controller_in_lockdown

    @controller_in_lockdown.setter
    def controller_in_lockdown(self, controller_in_lockdown):
        """
        Sets the controller_in_lockdown of this FailureTypeEntry.
        The controller has gone into lockdown mode due to the detection of PI errors on all controllers in the array.

        :param controller_in_lockdown: The controller_in_lockdown of this FailureTypeEntry.
        :type: str
        """
        self._controller_in_lockdown = controller_in_lockdown

    @property
    def discovery_error_sas_port(self):
        """
        Gets the discovery_error_sas_port of this FailureTypeEntry.
        This data associated with the backend SAS channel to help diagnose the discovery error.

        :return: The discovery_error_sas_port of this FailureTypeEntry.
        :rtype: SasPort
        :required/optional: optional
        """
        return self._discovery_error_sas_port

    @discovery_error_sas_port.setter
    def discovery_error_sas_port(self, discovery_error_sas_port):
        """
        Sets the discovery_error_sas_port of this FailureTypeEntry.
        This data associated with the backend SAS channel to help diagnose the discovery error.

        :param discovery_error_sas_port: The discovery_error_sas_port of this FailureTypeEntry.
        :type: SasPort
        """
        self._discovery_error_sas_port = discovery_error_sas_port

    @property
    def ntp_resolution_failure(self):
        """
        Gets the ntp_resolution_failure of this FailureTypeEntry.
        Provides details regarding an NTP resolution failure that is preventing the controller from updating its software clock

        :return: The ntp_resolution_failure of this FailureTypeEntry.
        :rtype: ControllerNtpErrorDetails
        :required/optional: optional
        """
        return self._ntp_resolution_failure

    @ntp_resolution_failure.setter
    def ntp_resolution_failure(self, ntp_resolution_failure):
        """
        Sets the ntp_resolution_failure of this FailureTypeEntry.
        Provides details regarding an NTP resolution failure that is preventing the controller from updating its software clock

        :param ntp_resolution_failure: The ntp_resolution_failure of this FailureTypeEntry.
        :type: ControllerNtpErrorDetails
        """
        self._ntp_resolution_failure = ntp_resolution_failure

    @property
    def ntp_query_failure(self):
        """
        Gets the ntp_query_failure of this FailureTypeEntry.
        Provides details regarding an NTP query failure that is preventing the controller from updating its software clock

        :return: The ntp_query_failure of this FailureTypeEntry.
        :rtype: ControllerNtpErrorDetails
        :required/optional: optional
        """
        return self._ntp_query_failure

    @ntp_query_failure.setter
    def ntp_query_failure(self, ntp_query_failure):
        """
        Sets the ntp_query_failure of this FailureTypeEntry.
        Provides details regarding an NTP query failure that is preventing the controller from updating its software clock

        :param ntp_query_failure: The ntp_query_failure of this FailureTypeEntry.
        :type: ControllerNtpErrorDetails
        """
        self._ntp_query_failure = ntp_query_failure

    @property
    def ntp_service_failure_controller(self):
        """
        Gets the ntp_service_failure_controller of this FailureTypeEntry.
        Controller reporting the NTP Service failure

        :return: The ntp_service_failure_controller of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._ntp_service_failure_controller

    @ntp_service_failure_controller.setter
    def ntp_service_failure_controller(self, ntp_service_failure_controller):
        """
        Sets the ntp_service_failure_controller of this FailureTypeEntry.
        Controller reporting the NTP Service failure

        :param ntp_service_failure_controller: The ntp_service_failure_controller of this FailureTypeEntry.
        :type: str
        """
        self._ntp_service_failure_controller = ntp_service_failure_controller

    @property
    def misconfigured_host(self):
        """
        Gets the misconfigured_host of this FailureTypeEntry.
        This field is only present if the RecoveryFailureType value is equal to REC_MULTIPATH_CONFIGURATION_ERROR. This field contains a reference to the Host in the storage partitions topology that has the multipath configuration issue.

        :return: The misconfigured_host of this FailureTypeEntry.
        :rtype: str
        :required/optional: optional
        """
        return self._misconfigured_host

    @misconfigured_host.setter
    def misconfigured_host(self, misconfigured_host):
        """
        Sets the misconfigured_host of this FailureTypeEntry.
        This field is only present if the RecoveryFailureType value is equal to REC_MULTIPATH_CONFIGURATION_ERROR. This field contains a reference to the Host in the storage partitions topology that has the multipath configuration issue.

        :param misconfigured_host: The misconfigured_host of this FailureTypeEntry.
        :type: str
        """
        self._misconfigured_host = misconfigured_host

    @property
    def host_redundancy_loss_details(self):
        """
        Gets the host_redundancy_loss_details of this FailureTypeEntry.
        This field is only present if the RecoveryFailureType value is equal to REC_HOST_REDUNDANCY_LOST. This field conveys details about the connectivity loss, including indications of the specific host and controller that are not connected.

        :return: The host_redundancy_loss_details of this FailureTypeEntry.
        :rtype: HostRedundancyLossDetails
        :required/optional: optional
        """
        return self._host_redundancy_loss_details

    @host_redundancy_loss_details.setter
    def host_redundancy_loss_details(self, host_redundancy_loss_details):
        """
        Sets the host_redundancy_loss_details of this FailureTypeEntry.
        This field is only present if the RecoveryFailureType value is equal to REC_HOST_REDUNDANCY_LOST. This field conveys details about the connectivity loss, including indications of the specific host and controller that are not connected.

        :param host_redundancy_loss_details: The host_redundancy_loss_details of this FailureTypeEntry.
        :type: HostRedundancyLossDetails
        """
        self._host_redundancy_loss_details = host_redundancy_loss_details

    @property
    def excessive_reboots_detected(self):
        """
        Gets the excessive_reboots_detected of this FailureTypeEntry.
        Excessive reboots have been detected -- return the controller ref in the Failure Type Entry.

        :return: The excessive_reboots_detected of this FailureTypeEntry.
        :rtype: ExcessiveRebootsDetected
        :required/optional: optional
        """
        return self._excessive_reboots_detected

    @excessive_reboots_detected.setter
    def excessive_reboots_detected(self, excessive_reboots_detected):
        """
        Sets the excessive_reboots_detected of this FailureTypeEntry.
        Excessive reboots have been detected -- return the controller ref in the Failure Type Entry.

        :param excessive_reboots_detected: The excessive_reboots_detected of this FailureTypeEntry.
        :type: ExcessiveRebootsDetected
        """
        self._excessive_reboots_detected = excessive_reboots_detected

    @property
    def ctlr_with_dirty_cache_not_flushed(self):
        """
        Gets the ctlr_with_dirty_cache_not_flushed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CACHE_NOT_FLUSHED_ON_ONLY_CTLR. It contains the identification of the controller that fails to flush dirty cache data on failed volume(s) possibly due to offlined drives. The controller should not be replaced to avoid loss of data.

        :return: The ctlr_with_dirty_cache_not_flushed of this FailureTypeEntry.
        :rtype: ControllerWithDirtyCacheDetails
        :required/optional: optional
        """
        return self._ctlr_with_dirty_cache_not_flushed

    @ctlr_with_dirty_cache_not_flushed.setter
    def ctlr_with_dirty_cache_not_flushed(self, ctlr_with_dirty_cache_not_flushed):
        """
        Sets the ctlr_with_dirty_cache_not_flushed of this FailureTypeEntry.
        This field is present only if the RecoveryFailureType value is equal to REC_CACHE_NOT_FLUSHED_ON_ONLY_CTLR. It contains the identification of the controller that fails to flush dirty cache data on failed volume(s) possibly due to offlined drives. The controller should not be replaced to avoid loss of data.

        :param ctlr_with_dirty_cache_not_flushed: The ctlr_with_dirty_cache_not_flushed of this FailureTypeEntry.
        :type: ControllerWithDirtyCacheDetails
        """
        self._ctlr_with_dirty_cache_not_flushed = ctlr_with_dirty_cache_not_flushed

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        if self is None:
           return None
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        if self is None or other is None:
            return None
        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """
        Returns true if both objects are not equal
        """
        return not self == other

