# coding: utf-8

"""
StorageSystemResponse.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 StorageSystemResponse(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        StorageSystemResponse - 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 = {
            'id': 'str',  # (required parameter)
            'name': 'str',  # (required parameter)
            'wwn': 'str',  # (required parameter)
            'password_status': 'str',  # (required parameter)
            'password_set': 'bool',  # (required parameter)
            'status': 'str',  # (required parameter)
            'ip1': 'str',  # (required parameter)
            'ip2': 'str',  # (required parameter)
            'drive_count': 'int',  # (required parameter)
            'tray_count': 'int',  # (required parameter)
            'trace_enabled': 'bool',  # (required parameter)
            'types': 'str',  # (required parameter)
            'model': 'str',  # (required parameter)
            'meta_tags': 'list[KeyValue]',  # (required parameter)
            'hot_spare_size': 'int',  # (required parameter)
            'used_pool_space': 'int',  # (required parameter)
            'free_pool_space': 'int',  # (required parameter)
            'unconfigured_space': 'int',  # (required parameter)
            'drive_types': 'list[str]',  # (required parameter)
            'host_spare_count_in_standby': 'int',  # (required parameter)
            'hot_spare_count': 'int',  # (required parameter)
            'host_spares_used': 'int',  # (required parameter)
            'boot_time': 'datetime',  # (required parameter)
            'fw_version': 'str',  # (required parameter)
            'app_version': 'str',  # (required parameter)
            'boot_version': 'str',  # (required parameter)
            'nvsram_version': 'str',  # (required parameter)
            'chassis_serial_number': 'str',  # (required parameter)
            'access_volume': 'AccessVolumeEx',  # (required parameter)
            'unconfigured_space_by_drive_type': 'dict(String, int)',  # (required parameter)
            'media_scan_period': 'int',  # (required parameter)
            'drive_channel_port_disabled': 'bool',  # (required parameter)
            'recovery_mode_enabled': 'bool',  # (required parameter)
            'auto_load_balancing_enabled': 'bool',  # (required parameter)
            'remote_mirroring_enabled': 'bool',  # (required parameter)
            'fc_remote_mirroring_state': 'str',  # (required parameter)
            'asup_enabled': 'bool',  # (required parameter)
            'security_key_enabled': 'bool',  # (required parameter)
            'last_contacted': 'datetime',  
            'defined_partition_count': 'int',  
            'simplex_mode_enabled': 'bool',  
            'free_pool_space_as_string': 'str',  
            'hot_spare_size_as_string': 'str',  
            'unconfigured_space_as_strings': 'str',  
            'used_pool_space_as_string': 'str'
        }

        self.attribute_map = {
            'id': 'id',  # (required parameter)
            'name': 'name',  # (required parameter)
            'wwn': 'wwn',  # (required parameter)
            'password_status': 'passwordStatus',  # (required parameter)
            'password_set': 'passwordSet',  # (required parameter)
            'status': 'status',  # (required parameter)
            'ip1': 'ip1',  # (required parameter)
            'ip2': 'ip2',  # (required parameter)
            'drive_count': 'driveCount',  # (required parameter)
            'tray_count': 'trayCount',  # (required parameter)
            'trace_enabled': 'traceEnabled',  # (required parameter)
            'types': 'types',  # (required parameter)
            'model': 'model',  # (required parameter)
            'meta_tags': 'metaTags',  # (required parameter)
            'hot_spare_size': 'hotSpareSize',  # (required parameter)
            'used_pool_space': 'usedPoolSpace',  # (required parameter)
            'free_pool_space': 'freePoolSpace',  # (required parameter)
            'unconfigured_space': 'unconfiguredSpace',  # (required parameter)
            'drive_types': 'driveTypes',  # (required parameter)
            'host_spare_count_in_standby': 'hostSpareCountInStandby',  # (required parameter)
            'hot_spare_count': 'hotSpareCount',  # (required parameter)
            'host_spares_used': 'hostSparesUsed',  # (required parameter)
            'boot_time': 'bootTime',  # (required parameter)
            'fw_version': 'fwVersion',  # (required parameter)
            'app_version': 'appVersion',  # (required parameter)
            'boot_version': 'bootVersion',  # (required parameter)
            'nvsram_version': 'nvsramVersion',  # (required parameter)
            'chassis_serial_number': 'chassisSerialNumber',  # (required parameter)
            'access_volume': 'accessVolume',  # (required parameter)
            'unconfigured_space_by_drive_type': 'unconfiguredSpaceByDriveType',  # (required parameter)
            'media_scan_period': 'mediaScanPeriod',  # (required parameter)
            'drive_channel_port_disabled': 'driveChannelPortDisabled',  # (required parameter)
            'recovery_mode_enabled': 'recoveryModeEnabled',  # (required parameter)
            'auto_load_balancing_enabled': 'autoLoadBalancingEnabled',  # (required parameter)
            'remote_mirroring_enabled': 'remoteMirroringEnabled',  # (required parameter)
            'fc_remote_mirroring_state': 'fcRemoteMirroringState',  # (required parameter)
            'asup_enabled': 'asupEnabled',  # (required parameter)
            'security_key_enabled': 'securityKeyEnabled',  # (required parameter)
            'last_contacted': 'lastContacted',  
            'defined_partition_count': 'definedPartitionCount',  
            'simplex_mode_enabled': 'simplexModeEnabled',  
            'free_pool_space_as_string': 'freePoolSpaceAsString',  
            'hot_spare_size_as_string': 'hotSpareSizeAsString',  
            'unconfigured_space_as_strings': 'unconfiguredSpaceAsStrings',  
            'used_pool_space_as_string': 'usedPoolSpaceAsString'
        }

        self._id = None
        self._name = None
        self._wwn = None
        self._password_status = None
        self._password_set = None
        self._status = None
        self._ip1 = None
        self._ip2 = None
        self._drive_count = None
        self._tray_count = None
        self._trace_enabled = None
        self._types = None
        self._model = None
        self._meta_tags = None
        self._hot_spare_size = None
        self._used_pool_space = None
        self._free_pool_space = None
        self._unconfigured_space = None
        self._drive_types = None
        self._host_spare_count_in_standby = None
        self._hot_spare_count = None
        self._host_spares_used = None
        self._boot_time = None
        self._fw_version = None
        self._app_version = None
        self._boot_version = None
        self._nvsram_version = None
        self._chassis_serial_number = None
        self._access_volume = None
        self._unconfigured_space_by_drive_type = None
        self._media_scan_period = None
        self._drive_channel_port_disabled = None
        self._recovery_mode_enabled = None
        self._auto_load_balancing_enabled = None
        self._remote_mirroring_enabled = None
        self._fc_remote_mirroring_state = None
        self._asup_enabled = None
        self._security_key_enabled = None
        self._last_contacted = None
        self._defined_partition_count = None
        self._simplex_mode_enabled = None
        self._free_pool_space_as_string = None
        self._hot_spare_size_as_string = None
        self._unconfigured_space_as_strings = None
        self._used_pool_space_as_string = None

    @property
    def id(self):
        """
        Gets the id of this StorageSystemResponse.


        :return: The id of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._id

    @id.setter
    def id(self, id):
        """
        Sets the id of this StorageSystemResponse.


        :param id: The id of this StorageSystemResponse.
        :type: str
        """
        self._id = id

    @property
    def name(self):
        """
        Gets the name of this StorageSystemResponse.


        :return: The name of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._name

    @name.setter
    def name(self, name):
        """
        Sets the name of this StorageSystemResponse.


        :param name: The name of this StorageSystemResponse.
        :type: str
        """
        self._name = name

    @property
    def wwn(self):
        """
        Gets the wwn of this StorageSystemResponse.


        :return: The wwn of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._wwn

    @wwn.setter
    def wwn(self, wwn):
        """
        Sets the wwn of this StorageSystemResponse.


        :param wwn: The wwn of this StorageSystemResponse.
        :type: str
        """
        self._wwn = wwn

    @property
    def password_status(self):
        """
        Gets the password_status of this StorageSystemResponse.


        :return: The password_status of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._password_status

    @password_status.setter
    def password_status(self, password_status):
        """
        Sets the password_status of this StorageSystemResponse.


        :param password_status: The password_status of this StorageSystemResponse.
        :type: str
        """
        allowed_values = ["unknown", "invalid", "valid"]
        if password_status not in allowed_values:
            raise ValueError(
                "Invalid value for `password_status`, must be one of {0}"
                .format(allowed_values)
            )
        self._password_status = password_status

    @property
    def password_set(self):
        """
        Gets the password_set of this StorageSystemResponse.


        :return: The password_set of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._password_set

    @password_set.setter
    def password_set(self, password_set):
        """
        Sets the password_set of this StorageSystemResponse.


        :param password_set: The password_set of this StorageSystemResponse.
        :type: bool
        """
        self._password_set = password_set

    @property
    def status(self):
        """
        Gets the status of this StorageSystemResponse.


        :return: The status of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._status

    @status.setter
    def status(self, status):
        """
        Sets the status of this StorageSystemResponse.


        :param status: The status of this StorageSystemResponse.
        :type: str
        """
        allowed_values = ["neverContacted", "offline", "optimal", "needsAttn", "removed", "newDevice", "lockDown"]
        if status not in allowed_values:
            raise ValueError(
                "Invalid value for `status`, must be one of {0}"
                .format(allowed_values)
            )
        self._status = status

    @property
    def ip1(self):
        """
        Gets the ip1 of this StorageSystemResponse.


        :return: The ip1 of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._ip1

    @ip1.setter
    def ip1(self, ip1):
        """
        Sets the ip1 of this StorageSystemResponse.


        :param ip1: The ip1 of this StorageSystemResponse.
        :type: str
        """
        self._ip1 = ip1

    @property
    def ip2(self):
        """
        Gets the ip2 of this StorageSystemResponse.


        :return: The ip2 of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._ip2

    @ip2.setter
    def ip2(self, ip2):
        """
        Sets the ip2 of this StorageSystemResponse.


        :param ip2: The ip2 of this StorageSystemResponse.
        :type: str
        """
        self._ip2 = ip2

    @property
    def drive_count(self):
        """
        Gets the drive_count of this StorageSystemResponse.


        :return: The drive_count of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._drive_count

    @drive_count.setter
    def drive_count(self, drive_count):
        """
        Sets the drive_count of this StorageSystemResponse.


        :param drive_count: The drive_count of this StorageSystemResponse.
        :type: int
        """
        self._drive_count = drive_count

    @property
    def tray_count(self):
        """
        Gets the tray_count of this StorageSystemResponse.


        :return: The tray_count of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._tray_count

    @tray_count.setter
    def tray_count(self, tray_count):
        """
        Sets the tray_count of this StorageSystemResponse.


        :param tray_count: The tray_count of this StorageSystemResponse.
        :type: int
        """
        self._tray_count = tray_count

    @property
    def trace_enabled(self):
        """
        Gets the trace_enabled of this StorageSystemResponse.


        :return: The trace_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._trace_enabled

    @trace_enabled.setter
    def trace_enabled(self, trace_enabled):
        """
        Sets the trace_enabled of this StorageSystemResponse.


        :param trace_enabled: The trace_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._trace_enabled = trace_enabled

    @property
    def types(self):
        """
        Gets the types of this StorageSystemResponse.


        :return: The types of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._types

    @types.setter
    def types(self, types):
        """
        Sets the types of this StorageSystemResponse.


        :param types: The types of this StorageSystemResponse.
        :type: str
        """
        self._types = types

    @property
    def model(self):
        """
        Gets the model of this StorageSystemResponse.


        :return: The model of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._model

    @model.setter
    def model(self, model):
        """
        Sets the model of this StorageSystemResponse.


        :param model: The model of this StorageSystemResponse.
        :type: str
        """
        self._model = model

    @property
    def meta_tags(self):
        """
        Gets the meta_tags of this StorageSystemResponse.


        :return: The meta_tags of this StorageSystemResponse.
        :rtype: list[KeyValue]
        :required/optional: required
        """
        return self._meta_tags

    @meta_tags.setter
    def meta_tags(self, meta_tags):
        """
        Sets the meta_tags of this StorageSystemResponse.


        :param meta_tags: The meta_tags of this StorageSystemResponse.
        :type: list[KeyValue]
        """
        self._meta_tags = meta_tags

    @property
    def hot_spare_size(self):
        """
        Gets the hot_spare_size of this StorageSystemResponse.


        :return: The hot_spare_size of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._hot_spare_size

    @hot_spare_size.setter
    def hot_spare_size(self, hot_spare_size):
        """
        Sets the hot_spare_size of this StorageSystemResponse.


        :param hot_spare_size: The hot_spare_size of this StorageSystemResponse.
        :type: int
        """
        self._hot_spare_size = hot_spare_size

    @property
    def used_pool_space(self):
        """
        Gets the used_pool_space of this StorageSystemResponse.


        :return: The used_pool_space of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._used_pool_space

    @used_pool_space.setter
    def used_pool_space(self, used_pool_space):
        """
        Sets the used_pool_space of this StorageSystemResponse.


        :param used_pool_space: The used_pool_space of this StorageSystemResponse.
        :type: int
        """
        self._used_pool_space = used_pool_space

    @property
    def free_pool_space(self):
        """
        Gets the free_pool_space of this StorageSystemResponse.


        :return: The free_pool_space of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._free_pool_space

    @free_pool_space.setter
    def free_pool_space(self, free_pool_space):
        """
        Sets the free_pool_space of this StorageSystemResponse.


        :param free_pool_space: The free_pool_space of this StorageSystemResponse.
        :type: int
        """
        self._free_pool_space = free_pool_space

    @property
    def unconfigured_space(self):
        """
        Gets the unconfigured_space of this StorageSystemResponse.


        :return: The unconfigured_space of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._unconfigured_space

    @unconfigured_space.setter
    def unconfigured_space(self, unconfigured_space):
        """
        Sets the unconfigured_space of this StorageSystemResponse.


        :param unconfigured_space: The unconfigured_space of this StorageSystemResponse.
        :type: int
        """
        self._unconfigured_space = unconfigured_space

    @property
    def drive_types(self):
        """
        Gets the drive_types of this StorageSystemResponse.


        :return: The drive_types of this StorageSystemResponse.
        :rtype: list[str]
        :required/optional: required
        """
        return self._drive_types

    @drive_types.setter
    def drive_types(self, drive_types):
        """
        Sets the drive_types of this StorageSystemResponse.


        :param drive_types: The drive_types of this StorageSystemResponse.
        :type: list[str]
        """
        self._drive_types = drive_types

    @property
    def host_spare_count_in_standby(self):
        """
        Gets the host_spare_count_in_standby of this StorageSystemResponse.


        :return: The host_spare_count_in_standby of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._host_spare_count_in_standby

    @host_spare_count_in_standby.setter
    def host_spare_count_in_standby(self, host_spare_count_in_standby):
        """
        Sets the host_spare_count_in_standby of this StorageSystemResponse.


        :param host_spare_count_in_standby: The host_spare_count_in_standby of this StorageSystemResponse.
        :type: int
        """
        self._host_spare_count_in_standby = host_spare_count_in_standby

    @property
    def hot_spare_count(self):
        """
        Gets the hot_spare_count of this StorageSystemResponse.


        :return: The hot_spare_count of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._hot_spare_count

    @hot_spare_count.setter
    def hot_spare_count(self, hot_spare_count):
        """
        Sets the hot_spare_count of this StorageSystemResponse.


        :param hot_spare_count: The hot_spare_count of this StorageSystemResponse.
        :type: int
        """
        self._hot_spare_count = hot_spare_count

    @property
    def host_spares_used(self):
        """
        Gets the host_spares_used of this StorageSystemResponse.


        :return: The host_spares_used of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._host_spares_used

    @host_spares_used.setter
    def host_spares_used(self, host_spares_used):
        """
        Sets the host_spares_used of this StorageSystemResponse.


        :param host_spares_used: The host_spares_used of this StorageSystemResponse.
        :type: int
        """
        self._host_spares_used = host_spares_used

    @property
    def boot_time(self):
        """
        Gets the boot_time of this StorageSystemResponse.


        :return: The boot_time of this StorageSystemResponse.
        :rtype: datetime
        :required/optional: required
        """
        return self._boot_time

    @boot_time.setter
    def boot_time(self, boot_time):
        """
        Sets the boot_time of this StorageSystemResponse.


        :param boot_time: The boot_time of this StorageSystemResponse.
        :type: datetime
        """
        self._boot_time = boot_time

    @property
    def fw_version(self):
        """
        Gets the fw_version of this StorageSystemResponse.


        :return: The fw_version of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._fw_version

    @fw_version.setter
    def fw_version(self, fw_version):
        """
        Sets the fw_version of this StorageSystemResponse.


        :param fw_version: The fw_version of this StorageSystemResponse.
        :type: str
        """
        self._fw_version = fw_version

    @property
    def app_version(self):
        """
        Gets the app_version of this StorageSystemResponse.


        :return: The app_version of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._app_version

    @app_version.setter
    def app_version(self, app_version):
        """
        Sets the app_version of this StorageSystemResponse.


        :param app_version: The app_version of this StorageSystemResponse.
        :type: str
        """
        self._app_version = app_version

    @property
    def boot_version(self):
        """
        Gets the boot_version of this StorageSystemResponse.


        :return: The boot_version of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._boot_version

    @boot_version.setter
    def boot_version(self, boot_version):
        """
        Sets the boot_version of this StorageSystemResponse.


        :param boot_version: The boot_version of this StorageSystemResponse.
        :type: str
        """
        self._boot_version = boot_version

    @property
    def nvsram_version(self):
        """
        Gets the nvsram_version of this StorageSystemResponse.


        :return: The nvsram_version of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._nvsram_version

    @nvsram_version.setter
    def nvsram_version(self, nvsram_version):
        """
        Sets the nvsram_version of this StorageSystemResponse.


        :param nvsram_version: The nvsram_version of this StorageSystemResponse.
        :type: str
        """
        self._nvsram_version = nvsram_version

    @property
    def chassis_serial_number(self):
        """
        Gets the chassis_serial_number of this StorageSystemResponse.


        :return: The chassis_serial_number of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._chassis_serial_number

    @chassis_serial_number.setter
    def chassis_serial_number(self, chassis_serial_number):
        """
        Sets the chassis_serial_number of this StorageSystemResponse.


        :param chassis_serial_number: The chassis_serial_number of this StorageSystemResponse.
        :type: str
        """
        self._chassis_serial_number = chassis_serial_number

    @property
    def access_volume(self):
        """
        Gets the access_volume of this StorageSystemResponse.


        :return: The access_volume of this StorageSystemResponse.
        :rtype: AccessVolumeEx
        :required/optional: required
        """
        return self._access_volume

    @access_volume.setter
    def access_volume(self, access_volume):
        """
        Sets the access_volume of this StorageSystemResponse.


        :param access_volume: The access_volume of this StorageSystemResponse.
        :type: AccessVolumeEx
        """
        self._access_volume = access_volume

    @property
    def unconfigured_space_by_drive_type(self):
        """
        Gets the unconfigured_space_by_drive_type of this StorageSystemResponse.


        :return: The unconfigured_space_by_drive_type of this StorageSystemResponse.
        :rtype: dict(String, int)
        :required/optional: required
        """
        return self._unconfigured_space_by_drive_type

    @unconfigured_space_by_drive_type.setter
    def unconfigured_space_by_drive_type(self, unconfigured_space_by_drive_type):
        """
        Sets the unconfigured_space_by_drive_type of this StorageSystemResponse.


        :param unconfigured_space_by_drive_type: The unconfigured_space_by_drive_type of this StorageSystemResponse.
        :type: dict(String, int)
        """
        self._unconfigured_space_by_drive_type = unconfigured_space_by_drive_type

    @property
    def media_scan_period(self):
        """
        Gets the media_scan_period of this StorageSystemResponse.


        :return: The media_scan_period of this StorageSystemResponse.
        :rtype: int
        :required/optional: required
        """
        return self._media_scan_period

    @media_scan_period.setter
    def media_scan_period(self, media_scan_period):
        """
        Sets the media_scan_period of this StorageSystemResponse.


        :param media_scan_period: The media_scan_period of this StorageSystemResponse.
        :type: int
        """
        self._media_scan_period = media_scan_period

    @property
    def drive_channel_port_disabled(self):
        """
        Gets the drive_channel_port_disabled of this StorageSystemResponse.
        True if one or more drive channel ports have been disabled by the controllers to protect against faulty expansion cabling.

        :return: The drive_channel_port_disabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._drive_channel_port_disabled

    @drive_channel_port_disabled.setter
    def drive_channel_port_disabled(self, drive_channel_port_disabled):
        """
        Sets the drive_channel_port_disabled of this StorageSystemResponse.
        True if one or more drive channel ports have been disabled by the controllers to protect against faulty expansion cabling.

        :param drive_channel_port_disabled: The drive_channel_port_disabled of this StorageSystemResponse.
        :type: bool
        """
        self._drive_channel_port_disabled = drive_channel_port_disabled

    @property
    def recovery_mode_enabled(self):
        """
        Gets the recovery_mode_enabled of this StorageSystemResponse.
        True if recovery mode is enabled on the array.

        :return: The recovery_mode_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._recovery_mode_enabled

    @recovery_mode_enabled.setter
    def recovery_mode_enabled(self, recovery_mode_enabled):
        """
        Sets the recovery_mode_enabled of this StorageSystemResponse.
        True if recovery mode is enabled on the array.

        :param recovery_mode_enabled: The recovery_mode_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._recovery_mode_enabled = recovery_mode_enabled

    @property
    def auto_load_balancing_enabled(self):
        """
        Gets the auto_load_balancing_enabled of this StorageSystemResponse.
        True if auto load balance is enabled on the array.

        :return: The auto_load_balancing_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._auto_load_balancing_enabled

    @auto_load_balancing_enabled.setter
    def auto_load_balancing_enabled(self, auto_load_balancing_enabled):
        """
        Sets the auto_load_balancing_enabled of this StorageSystemResponse.
        True if auto load balance is enabled on the array.

        :param auto_load_balancing_enabled: The auto_load_balancing_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._auto_load_balancing_enabled = auto_load_balancing_enabled

    @property
    def remote_mirroring_enabled(self):
        """
        Gets the remote_mirroring_enabled of this StorageSystemResponse.
        Can Remote Volume Mirrors be created on this StorageDevice?

        :return: The remote_mirroring_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._remote_mirroring_enabled

    @remote_mirroring_enabled.setter
    def remote_mirroring_enabled(self, remote_mirroring_enabled):
        """
        Sets the remote_mirroring_enabled of this StorageSystemResponse.
        Can Remote Volume Mirrors be created on this StorageDevice?

        :param remote_mirroring_enabled: The remote_mirroring_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._remote_mirroring_enabled = remote_mirroring_enabled

    @property
    def fc_remote_mirroring_state(self):
        """
        Gets the fc_remote_mirroring_state of this StorageSystemResponse.
        The remote mirroring state on this StorageDevice

        :return: The fc_remote_mirroring_state of this StorageSystemResponse.
        :rtype: str
        :required/optional: required
        """
        return self._fc_remote_mirroring_state

    @fc_remote_mirroring_state.setter
    def fc_remote_mirroring_state(self, fc_remote_mirroring_state):
        """
        Sets the fc_remote_mirroring_state of this StorageSystemResponse.
        The remote mirroring state on this StorageDevice

        :param fc_remote_mirroring_state: The fc_remote_mirroring_state of this StorageSystemResponse.
        :type: str
        """
        allowed_values = ["unknown", "disabled", "enabledLegacyRvm", "enabledArvm", "enabledAll", "__UNDEFINED"]
        if fc_remote_mirroring_state not in allowed_values:
            raise ValueError(
                "Invalid value for `fc_remote_mirroring_state`, must be one of {0}"
                .format(allowed_values)
            )
        self._fc_remote_mirroring_state = fc_remote_mirroring_state

    @property
    def asup_enabled(self):
        """
        Gets the asup_enabled of this StorageSystemResponse.
        True if ASUP is enabled for this StorageDevice

        :return: The asup_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._asup_enabled

    @asup_enabled.setter
    def asup_enabled(self, asup_enabled):
        """
        Sets the asup_enabled of this StorageSystemResponse.
        True if ASUP is enabled for this StorageDevice

        :param asup_enabled: The asup_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._asup_enabled = asup_enabled

    @property
    def security_key_enabled(self):
        """
        Gets the security_key_enabled of this StorageSystemResponse.


        :return: The security_key_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: required
        """
        return self._security_key_enabled

    @security_key_enabled.setter
    def security_key_enabled(self, security_key_enabled):
        """
        Sets the security_key_enabled of this StorageSystemResponse.


        :param security_key_enabled: The security_key_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._security_key_enabled = security_key_enabled

    @property
    def last_contacted(self):
        """
        Gets the last_contacted of this StorageSystemResponse.
        The last time that the device was considered accessible.

        :return: The last_contacted of this StorageSystemResponse.
        :rtype: datetime
        :required/optional: optional
        """
        return self._last_contacted

    @last_contacted.setter
    def last_contacted(self, last_contacted):
        """
        Sets the last_contacted of this StorageSystemResponse.
        The last time that the device was considered accessible.

        :param last_contacted: The last_contacted of this StorageSystemResponse.
        :type: datetime
        """
        self._last_contacted = last_contacted

    @property
    def defined_partition_count(self):
        """
        Gets the defined_partition_count of this StorageSystemResponse.
        The number of partitions calculated from the user's current mappings.

        :return: The defined_partition_count of this StorageSystemResponse.
        :rtype: int
        :required/optional: optional
        """
        return self._defined_partition_count

    @defined_partition_count.setter
    def defined_partition_count(self, defined_partition_count):
        """
        Sets the defined_partition_count of this StorageSystemResponse.
        The number of partitions calculated from the user's current mappings.

        :param defined_partition_count: The defined_partition_count of this StorageSystemResponse.
        :type: int
        """
        self._defined_partition_count = defined_partition_count

    @property
    def simplex_mode_enabled(self):
        """
        Gets the simplex_mode_enabled of this StorageSystemResponse.
        True if the redundancy mode of the system is simplex.

        :return: The simplex_mode_enabled of this StorageSystemResponse.
        :rtype: bool
        :required/optional: optional
        """
        return self._simplex_mode_enabled

    @simplex_mode_enabled.setter
    def simplex_mode_enabled(self, simplex_mode_enabled):
        """
        Sets the simplex_mode_enabled of this StorageSystemResponse.
        True if the redundancy mode of the system is simplex.

        :param simplex_mode_enabled: The simplex_mode_enabled of this StorageSystemResponse.
        :type: bool
        """
        self._simplex_mode_enabled = simplex_mode_enabled

    @property
    def free_pool_space_as_string(self):
        """
        Gets the free_pool_space_as_string of this StorageSystemResponse.


        :return: The free_pool_space_as_string of this StorageSystemResponse.
        :rtype: str
        :required/optional: optional
        """
        return self._free_pool_space_as_string

    @free_pool_space_as_string.setter
    def free_pool_space_as_string(self, free_pool_space_as_string):
        """
        Sets the free_pool_space_as_string of this StorageSystemResponse.


        :param free_pool_space_as_string: The free_pool_space_as_string of this StorageSystemResponse.
        :type: str
        """
        self._free_pool_space_as_string = free_pool_space_as_string

    @property
    def hot_spare_size_as_string(self):
        """
        Gets the hot_spare_size_as_string of this StorageSystemResponse.


        :return: The hot_spare_size_as_string of this StorageSystemResponse.
        :rtype: str
        :required/optional: optional
        """
        return self._hot_spare_size_as_string

    @hot_spare_size_as_string.setter
    def hot_spare_size_as_string(self, hot_spare_size_as_string):
        """
        Sets the hot_spare_size_as_string of this StorageSystemResponse.


        :param hot_spare_size_as_string: The hot_spare_size_as_string of this StorageSystemResponse.
        :type: str
        """
        self._hot_spare_size_as_string = hot_spare_size_as_string

    @property
    def unconfigured_space_as_strings(self):
        """
        Gets the unconfigured_space_as_strings of this StorageSystemResponse.


        :return: The unconfigured_space_as_strings of this StorageSystemResponse.
        :rtype: str
        :required/optional: optional
        """
        return self._unconfigured_space_as_strings

    @unconfigured_space_as_strings.setter
    def unconfigured_space_as_strings(self, unconfigured_space_as_strings):
        """
        Sets the unconfigured_space_as_strings of this StorageSystemResponse.


        :param unconfigured_space_as_strings: The unconfigured_space_as_strings of this StorageSystemResponse.
        :type: str
        """
        self._unconfigured_space_as_strings = unconfigured_space_as_strings

    @property
    def used_pool_space_as_string(self):
        """
        Gets the used_pool_space_as_string of this StorageSystemResponse.


        :return: The used_pool_space_as_string of this StorageSystemResponse.
        :rtype: str
        :required/optional: optional
        """
        return self._used_pool_space_as_string

    @used_pool_space_as_string.setter
    def used_pool_space_as_string(self, used_pool_space_as_string):
        """
        Sets the used_pool_space_as_string of this StorageSystemResponse.


        :param used_pool_space_as_string: The used_pool_space_as_string of this StorageSystemResponse.
        :type: str
        """
        self._used_pool_space_as_string = used_pool_space_as_string

    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

