# coding: utf-8

"""
VolumeIOStats.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 VolumeIOStats(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        VolumeIOStats - 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 = {
            'observed_time': 'datetime',  # (required parameter)
            'observed_time_in_ms': 'int',  # (required parameter)
            'last_reset_time': 'datetime',  # (required parameter)
            'last_reset_time_in_ms': 'int',  # (required parameter)
            'volume_group_id': 'str',  # (required parameter)
            'controller_id': 'str',  # (required parameter)
            'volume_id': 'str',  # (required parameter)
            'array_id': 'str',  # (required parameter)
            'array_wwn': 'str',  # (required parameter)
            'volume_group_wwn': 'str',  # (required parameter)
            'volume_name': 'str',  # (required parameter)
            'volume_wwn': 'str',  # (required parameter)
            'workload_id': 'str',  # (required parameter)
            'read_ops': 'float',  # (required parameter)
            'read_hit_ops': 'float',  # (required parameter)
            'read_hit_bytes': 'float',  # (required parameter)
            'read_time_total': 'float',  # (required parameter)
            'read_hit_time_total': 'float',  # (required parameter)
            'write_ops': 'float',  # (required parameter)
            'write_cache_hit_ops': 'float',  # (required parameter)
            'write_time_total': 'float',  # (required parameter)
            'write_hit_time_total': 'float',  # (required parameter)
            'err_redundancy_chk_indeterminate_reads': 'float',  # (required parameter)
            'err_redundancy_chk_recovered_reads': 'float',  # (required parameter)
            'err_redundancy_chk_unrecovered_reads': 'float',  # (required parameter)
            'idle_time': 'float',  # (required parameter)
            'other_ops': 'float',  # (required parameter)
            'other_time_max': 'float',  # (required parameter)
            'other_time_total': 'float',  # (required parameter)
            'other_time_total_sq': 'float',  # (required parameter)
            'read_bytes': 'float',  # (required parameter)
            'read_hit_time_max': 'float',  # (required parameter)
            'read_hit_time_total_sq': 'float',  # (required parameter)
            'read_time_max': 'float',  # (required parameter)
            'read_time_total_sq': 'float',  # (required parameter)
            'write_bytes': 'float',  # (required parameter)
            'write_hit_bytes': 'float',  # (required parameter)
            'write_hit_ops': 'float',  # (required parameter)
            'write_hit_time_max': 'float',  # (required parameter)
            'write_hit_time_total_sq': 'float',  # (required parameter)
            'write_time_max': 'float',  # (required parameter)
            'write_time_total_sq': 'float',  # (required parameter)
            'queue_depth_total': 'float',  # (required parameter)
            'queue_depth_max': 'float',  # (required parameter)
            'random_ios_total': 'float',  # (required parameter)
            'random_bytes_total': 'float',  # (required parameter)
            'cache_write_wait_hit_iops': 'float',  # (required parameter)
            'cache_write_wait_hit_bytes': 'float',  # (required parameter)
            'full_stripe_write_bytes': 'float',  # (required parameter)
            'total_ios_shipped': 'float',  # (required parameter)
            'total_blks_evicted': 'float',  # (required parameter)
            'cache_blks_in_use': 'float',  # (required parameter)
            'flash_cache_read_hit_ops': 'float',  # (required parameter)
            'flash_cache_read_hit_bytes': 'float',  # (required parameter)
            'flash_cache_read_hit_time_total': 'float',  # (required parameter)
            'flash_cache_read_hit_time_max': 'float',  # (required parameter)
            'flash_cache_read_hit_time_total_sq': 'float'
        }

        self.attribute_map = {
            'observed_time': 'observedTime',  # (required parameter)
            'observed_time_in_ms': 'observedTimeInMS',  # (required parameter)
            'last_reset_time': 'lastResetTime',  # (required parameter)
            'last_reset_time_in_ms': 'lastResetTimeInMS',  # (required parameter)
            'volume_group_id': 'volumeGroupId',  # (required parameter)
            'controller_id': 'controllerId',  # (required parameter)
            'volume_id': 'volumeId',  # (required parameter)
            'array_id': 'arrayId',  # (required parameter)
            'array_wwn': 'arrayWwn',  # (required parameter)
            'volume_group_wwn': 'volumeGroupWwn',  # (required parameter)
            'volume_name': 'volumeName',  # (required parameter)
            'volume_wwn': 'volumeWwn',  # (required parameter)
            'workload_id': 'workloadId',  # (required parameter)
            'read_ops': 'readOps',  # (required parameter)
            'read_hit_ops': 'readHitOps',  # (required parameter)
            'read_hit_bytes': 'readHitBytes',  # (required parameter)
            'read_time_total': 'readTimeTotal',  # (required parameter)
            'read_hit_time_total': 'readHitTimeTotal',  # (required parameter)
            'write_ops': 'writeOps',  # (required parameter)
            'write_cache_hit_ops': 'writeCacheHitOps',  # (required parameter)
            'write_time_total': 'writeTimeTotal',  # (required parameter)
            'write_hit_time_total': 'writeHitTimeTotal',  # (required parameter)
            'err_redundancy_chk_indeterminate_reads': 'errRedundancyChkIndeterminateReads',  # (required parameter)
            'err_redundancy_chk_recovered_reads': 'errRedundancyChkRecoveredReads',  # (required parameter)
            'err_redundancy_chk_unrecovered_reads': 'errRedundancyChkUnrecoveredReads',  # (required parameter)
            'idle_time': 'idleTime',  # (required parameter)
            'other_ops': 'otherOps',  # (required parameter)
            'other_time_max': 'otherTimeMax',  # (required parameter)
            'other_time_total': 'otherTimeTotal',  # (required parameter)
            'other_time_total_sq': 'otherTimeTotalSq',  # (required parameter)
            'read_bytes': 'readBytes',  # (required parameter)
            'read_hit_time_max': 'readHitTimeMax',  # (required parameter)
            'read_hit_time_total_sq': 'readHitTimeTotalSq',  # (required parameter)
            'read_time_max': 'readTimeMax',  # (required parameter)
            'read_time_total_sq': 'readTimeTotalSq',  # (required parameter)
            'write_bytes': 'writeBytes',  # (required parameter)
            'write_hit_bytes': 'writeHitBytes',  # (required parameter)
            'write_hit_ops': 'writeHitOps',  # (required parameter)
            'write_hit_time_max': 'writeHitTimeMax',  # (required parameter)
            'write_hit_time_total_sq': 'writeHitTimeTotalSq',  # (required parameter)
            'write_time_max': 'writeTimeMax',  # (required parameter)
            'write_time_total_sq': 'writeTimeTotalSq',  # (required parameter)
            'queue_depth_total': 'queueDepthTotal',  # (required parameter)
            'queue_depth_max': 'queueDepthMax',  # (required parameter)
            'random_ios_total': 'randomIosTotal',  # (required parameter)
            'random_bytes_total': 'randomBytesTotal',  # (required parameter)
            'cache_write_wait_hit_iops': 'cacheWriteWaitHitIops',  # (required parameter)
            'cache_write_wait_hit_bytes': 'cacheWriteWaitHitBytes',  # (required parameter)
            'full_stripe_write_bytes': 'fullStripeWriteBytes',  # (required parameter)
            'total_ios_shipped': 'totalIosShipped',  # (required parameter)
            'total_blks_evicted': 'totalBlksEvicted',  # (required parameter)
            'cache_blks_in_use': 'cacheBlksInUse',  # (required parameter)
            'flash_cache_read_hit_ops': 'flashCacheReadHitOps',  # (required parameter)
            'flash_cache_read_hit_bytes': 'flashCacheReadHitBytes',  # (required parameter)
            'flash_cache_read_hit_time_total': 'flashCacheReadHitTimeTotal',  # (required parameter)
            'flash_cache_read_hit_time_max': 'flashCacheReadHitTimeMax',  # (required parameter)
            'flash_cache_read_hit_time_total_sq': 'flashCacheReadHitTimeTotalSq'
        }

        self._observed_time = None
        self._observed_time_in_ms = None
        self._last_reset_time = None
        self._last_reset_time_in_ms = None
        self._volume_group_id = None
        self._controller_id = None
        self._volume_id = None
        self._array_id = None
        self._array_wwn = None
        self._volume_group_wwn = None
        self._volume_name = None
        self._volume_wwn = None
        self._workload_id = None
        self._read_ops = None
        self._read_hit_ops = None
        self._read_hit_bytes = None
        self._read_time_total = None
        self._read_hit_time_total = None
        self._write_ops = None
        self._write_cache_hit_ops = None
        self._write_time_total = None
        self._write_hit_time_total = None
        self._err_redundancy_chk_indeterminate_reads = None
        self._err_redundancy_chk_recovered_reads = None
        self._err_redundancy_chk_unrecovered_reads = None
        self._idle_time = None
        self._other_ops = None
        self._other_time_max = None
        self._other_time_total = None
        self._other_time_total_sq = None
        self._read_bytes = None
        self._read_hit_time_max = None
        self._read_hit_time_total_sq = None
        self._read_time_max = None
        self._read_time_total_sq = None
        self._write_bytes = None
        self._write_hit_bytes = None
        self._write_hit_ops = None
        self._write_hit_time_max = None
        self._write_hit_time_total_sq = None
        self._write_time_max = None
        self._write_time_total_sq = None
        self._queue_depth_total = None
        self._queue_depth_max = None
        self._random_ios_total = None
        self._random_bytes_total = None
        self._cache_write_wait_hit_iops = None
        self._cache_write_wait_hit_bytes = None
        self._full_stripe_write_bytes = None
        self._total_ios_shipped = None
        self._total_blks_evicted = None
        self._cache_blks_in_use = None
        self._flash_cache_read_hit_ops = None
        self._flash_cache_read_hit_bytes = None
        self._flash_cache_read_hit_time_total = None
        self._flash_cache_read_hit_time_max = None
        self._flash_cache_read_hit_time_total_sq = None

    @property
    def observed_time(self):
        """
        Gets the observed_time of this VolumeIOStats.


        :return: The observed_time of this VolumeIOStats.
        :rtype: datetime
        :required/optional: required
        """
        return self._observed_time

    @observed_time.setter
    def observed_time(self, observed_time):
        """
        Sets the observed_time of this VolumeIOStats.


        :param observed_time: The observed_time of this VolumeIOStats.
        :type: datetime
        """
        self._observed_time = observed_time

    @property
    def observed_time_in_ms(self):
        """
        Gets the observed_time_in_ms of this VolumeIOStats.


        :return: The observed_time_in_ms of this VolumeIOStats.
        :rtype: int
        :required/optional: required
        """
        return self._observed_time_in_ms

    @observed_time_in_ms.setter
    def observed_time_in_ms(self, observed_time_in_ms):
        """
        Sets the observed_time_in_ms of this VolumeIOStats.


        :param observed_time_in_ms: The observed_time_in_ms of this VolumeIOStats.
        :type: int
        """
        self._observed_time_in_ms = observed_time_in_ms

    @property
    def last_reset_time(self):
        """
        Gets the last_reset_time of this VolumeIOStats.


        :return: The last_reset_time of this VolumeIOStats.
        :rtype: datetime
        :required/optional: required
        """
        return self._last_reset_time

    @last_reset_time.setter
    def last_reset_time(self, last_reset_time):
        """
        Sets the last_reset_time of this VolumeIOStats.


        :param last_reset_time: The last_reset_time of this VolumeIOStats.
        :type: datetime
        """
        self._last_reset_time = last_reset_time

    @property
    def last_reset_time_in_ms(self):
        """
        Gets the last_reset_time_in_ms of this VolumeIOStats.


        :return: The last_reset_time_in_ms of this VolumeIOStats.
        :rtype: int
        :required/optional: required
        """
        return self._last_reset_time_in_ms

    @last_reset_time_in_ms.setter
    def last_reset_time_in_ms(self, last_reset_time_in_ms):
        """
        Sets the last_reset_time_in_ms of this VolumeIOStats.


        :param last_reset_time_in_ms: The last_reset_time_in_ms of this VolumeIOStats.
        :type: int
        """
        self._last_reset_time_in_ms = last_reset_time_in_ms

    @property
    def volume_group_id(self):
        """
        Gets the volume_group_id of this VolumeIOStats.


        :return: The volume_group_id of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._volume_group_id

    @volume_group_id.setter
    def volume_group_id(self, volume_group_id):
        """
        Sets the volume_group_id of this VolumeIOStats.


        :param volume_group_id: The volume_group_id of this VolumeIOStats.
        :type: str
        """
        self._volume_group_id = volume_group_id

    @property
    def controller_id(self):
        """
        Gets the controller_id of this VolumeIOStats.


        :return: The controller_id of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._controller_id

    @controller_id.setter
    def controller_id(self, controller_id):
        """
        Sets the controller_id of this VolumeIOStats.


        :param controller_id: The controller_id of this VolumeIOStats.
        :type: str
        """
        self._controller_id = controller_id

    @property
    def volume_id(self):
        """
        Gets the volume_id of this VolumeIOStats.


        :return: The volume_id of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._volume_id

    @volume_id.setter
    def volume_id(self, volume_id):
        """
        Sets the volume_id of this VolumeIOStats.


        :param volume_id: The volume_id of this VolumeIOStats.
        :type: str
        """
        self._volume_id = volume_id

    @property
    def array_id(self):
        """
        Gets the array_id of this VolumeIOStats.


        :return: The array_id of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._array_id

    @array_id.setter
    def array_id(self, array_id):
        """
        Sets the array_id of this VolumeIOStats.


        :param array_id: The array_id of this VolumeIOStats.
        :type: str
        """
        self._array_id = array_id

    @property
    def array_wwn(self):
        """
        Gets the array_wwn of this VolumeIOStats.


        :return: The array_wwn of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._array_wwn

    @array_wwn.setter
    def array_wwn(self, array_wwn):
        """
        Sets the array_wwn of this VolumeIOStats.


        :param array_wwn: The array_wwn of this VolumeIOStats.
        :type: str
        """
        self._array_wwn = array_wwn

    @property
    def volume_group_wwn(self):
        """
        Gets the volume_group_wwn of this VolumeIOStats.


        :return: The volume_group_wwn of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._volume_group_wwn

    @volume_group_wwn.setter
    def volume_group_wwn(self, volume_group_wwn):
        """
        Sets the volume_group_wwn of this VolumeIOStats.


        :param volume_group_wwn: The volume_group_wwn of this VolumeIOStats.
        :type: str
        """
        self._volume_group_wwn = volume_group_wwn

    @property
    def volume_name(self):
        """
        Gets the volume_name of this VolumeIOStats.


        :return: The volume_name of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._volume_name

    @volume_name.setter
    def volume_name(self, volume_name):
        """
        Sets the volume_name of this VolumeIOStats.


        :param volume_name: The volume_name of this VolumeIOStats.
        :type: str
        """
        self._volume_name = volume_name

    @property
    def volume_wwn(self):
        """
        Gets the volume_wwn of this VolumeIOStats.


        :return: The volume_wwn of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._volume_wwn

    @volume_wwn.setter
    def volume_wwn(self, volume_wwn):
        """
        Sets the volume_wwn of this VolumeIOStats.


        :param volume_wwn: The volume_wwn of this VolumeIOStats.
        :type: str
        """
        self._volume_wwn = volume_wwn

    @property
    def workload_id(self):
        """
        Gets the workload_id of this VolumeIOStats.
        The associated workload id

        :return: The workload_id of this VolumeIOStats.
        :rtype: str
        :required/optional: required
        """
        return self._workload_id

    @workload_id.setter
    def workload_id(self, workload_id):
        """
        Sets the workload_id of this VolumeIOStats.
        The associated workload id

        :param workload_id: The workload_id of this VolumeIOStats.
        :type: str
        """
        self._workload_id = workload_id

    @property
    def read_ops(self):
        """
        Gets the read_ops of this VolumeIOStats.


        :return: The read_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_ops

    @read_ops.setter
    def read_ops(self, read_ops):
        """
        Sets the read_ops of this VolumeIOStats.


        :param read_ops: The read_ops of this VolumeIOStats.
        :type: float
        """
        self._read_ops = read_ops

    @property
    def read_hit_ops(self):
        """
        Gets the read_hit_ops of this VolumeIOStats.
        Number of read operations that hit cache

        :return: The read_hit_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_hit_ops

    @read_hit_ops.setter
    def read_hit_ops(self, read_hit_ops):
        """
        Sets the read_hit_ops of this VolumeIOStats.
        Number of read operations that hit cache

        :param read_hit_ops: The read_hit_ops of this VolumeIOStats.
        :type: float
        """
        self._read_hit_ops = read_hit_ops

    @property
    def read_hit_bytes(self):
        """
        Gets the read_hit_bytes of this VolumeIOStats.
        Number of bytes read from cache

        :return: The read_hit_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_hit_bytes

    @read_hit_bytes.setter
    def read_hit_bytes(self, read_hit_bytes):
        """
        Sets the read_hit_bytes of this VolumeIOStats.
        Number of bytes read from cache

        :param read_hit_bytes: The read_hit_bytes of this VolumeIOStats.
        :type: float
        """
        self._read_hit_bytes = read_hit_bytes

    @property
    def read_time_total(self):
        """
        Gets the read_time_total of this VolumeIOStats.


        :return: The read_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_time_total

    @read_time_total.setter
    def read_time_total(self, read_time_total):
        """
        Sets the read_time_total of this VolumeIOStats.


        :param read_time_total: The read_time_total of this VolumeIOStats.
        :type: float
        """
        self._read_time_total = read_time_total

    @property
    def read_hit_time_total(self):
        """
        Gets the read_hit_time_total of this VolumeIOStats.


        :return: The read_hit_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_hit_time_total

    @read_hit_time_total.setter
    def read_hit_time_total(self, read_hit_time_total):
        """
        Sets the read_hit_time_total of this VolumeIOStats.


        :param read_hit_time_total: The read_hit_time_total of this VolumeIOStats.
        :type: float
        """
        self._read_hit_time_total = read_hit_time_total

    @property
    def write_ops(self):
        """
        Gets the write_ops of this VolumeIOStats.


        :return: The write_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_ops

    @write_ops.setter
    def write_ops(self, write_ops):
        """
        Sets the write_ops of this VolumeIOStats.


        :param write_ops: The write_ops of this VolumeIOStats.
        :type: float
        """
        self._write_ops = write_ops

    @property
    def write_cache_hit_ops(self):
        """
        Gets the write_cache_hit_ops of this VolumeIOStats.
        A redundant field to write Hit Ops

        :return: The write_cache_hit_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_cache_hit_ops

    @write_cache_hit_ops.setter
    def write_cache_hit_ops(self, write_cache_hit_ops):
        """
        Sets the write_cache_hit_ops of this VolumeIOStats.
        A redundant field to write Hit Ops

        :param write_cache_hit_ops: The write_cache_hit_ops of this VolumeIOStats.
        :type: float
        """
        self._write_cache_hit_ops = write_cache_hit_ops

    @property
    def write_time_total(self):
        """
        Gets the write_time_total of this VolumeIOStats.


        :return: The write_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_time_total

    @write_time_total.setter
    def write_time_total(self, write_time_total):
        """
        Sets the write_time_total of this VolumeIOStats.


        :param write_time_total: The write_time_total of this VolumeIOStats.
        :type: float
        """
        self._write_time_total = write_time_total

    @property
    def write_hit_time_total(self):
        """
        Gets the write_hit_time_total of this VolumeIOStats.


        :return: The write_hit_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_hit_time_total

    @write_hit_time_total.setter
    def write_hit_time_total(self, write_hit_time_total):
        """
        Sets the write_hit_time_total of this VolumeIOStats.


        :param write_hit_time_total: The write_hit_time_total of this VolumeIOStats.
        :type: float
        """
        self._write_hit_time_total = write_hit_time_total

    @property
    def err_redundancy_chk_indeterminate_reads(self):
        """
        Gets the err_redundancy_chk_indeterminate_reads of this VolumeIOStats.


        :return: The err_redundancy_chk_indeterminate_reads of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._err_redundancy_chk_indeterminate_reads

    @err_redundancy_chk_indeterminate_reads.setter
    def err_redundancy_chk_indeterminate_reads(self, err_redundancy_chk_indeterminate_reads):
        """
        Sets the err_redundancy_chk_indeterminate_reads of this VolumeIOStats.


        :param err_redundancy_chk_indeterminate_reads: The err_redundancy_chk_indeterminate_reads of this VolumeIOStats.
        :type: float
        """
        self._err_redundancy_chk_indeterminate_reads = err_redundancy_chk_indeterminate_reads

    @property
    def err_redundancy_chk_recovered_reads(self):
        """
        Gets the err_redundancy_chk_recovered_reads of this VolumeIOStats.


        :return: The err_redundancy_chk_recovered_reads of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._err_redundancy_chk_recovered_reads

    @err_redundancy_chk_recovered_reads.setter
    def err_redundancy_chk_recovered_reads(self, err_redundancy_chk_recovered_reads):
        """
        Sets the err_redundancy_chk_recovered_reads of this VolumeIOStats.


        :param err_redundancy_chk_recovered_reads: The err_redundancy_chk_recovered_reads of this VolumeIOStats.
        :type: float
        """
        self._err_redundancy_chk_recovered_reads = err_redundancy_chk_recovered_reads

    @property
    def err_redundancy_chk_unrecovered_reads(self):
        """
        Gets the err_redundancy_chk_unrecovered_reads of this VolumeIOStats.


        :return: The err_redundancy_chk_unrecovered_reads of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._err_redundancy_chk_unrecovered_reads

    @err_redundancy_chk_unrecovered_reads.setter
    def err_redundancy_chk_unrecovered_reads(self, err_redundancy_chk_unrecovered_reads):
        """
        Sets the err_redundancy_chk_unrecovered_reads of this VolumeIOStats.


        :param err_redundancy_chk_unrecovered_reads: The err_redundancy_chk_unrecovered_reads of this VolumeIOStats.
        :type: float
        """
        self._err_redundancy_chk_unrecovered_reads = err_redundancy_chk_unrecovered_reads

    @property
    def idle_time(self):
        """
        Gets the idle_time of this VolumeIOStats.


        :return: The idle_time of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._idle_time

    @idle_time.setter
    def idle_time(self, idle_time):
        """
        Sets the idle_time of this VolumeIOStats.


        :param idle_time: The idle_time of this VolumeIOStats.
        :type: float
        """
        self._idle_time = idle_time

    @property
    def other_ops(self):
        """
        Gets the other_ops of this VolumeIOStats.


        :return: The other_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._other_ops

    @other_ops.setter
    def other_ops(self, other_ops):
        """
        Sets the other_ops of this VolumeIOStats.


        :param other_ops: The other_ops of this VolumeIOStats.
        :type: float
        """
        self._other_ops = other_ops

    @property
    def other_time_max(self):
        """
        Gets the other_time_max of this VolumeIOStats.


        :return: The other_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._other_time_max

    @other_time_max.setter
    def other_time_max(self, other_time_max):
        """
        Sets the other_time_max of this VolumeIOStats.


        :param other_time_max: The other_time_max of this VolumeIOStats.
        :type: float
        """
        self._other_time_max = other_time_max

    @property
    def other_time_total(self):
        """
        Gets the other_time_total of this VolumeIOStats.


        :return: The other_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._other_time_total

    @other_time_total.setter
    def other_time_total(self, other_time_total):
        """
        Sets the other_time_total of this VolumeIOStats.


        :param other_time_total: The other_time_total of this VolumeIOStats.
        :type: float
        """
        self._other_time_total = other_time_total

    @property
    def other_time_total_sq(self):
        """
        Gets the other_time_total_sq of this VolumeIOStats.


        :return: The other_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._other_time_total_sq

    @other_time_total_sq.setter
    def other_time_total_sq(self, other_time_total_sq):
        """
        Sets the other_time_total_sq of this VolumeIOStats.


        :param other_time_total_sq: The other_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._other_time_total_sq = other_time_total_sq

    @property
    def read_bytes(self):
        """
        Gets the read_bytes of this VolumeIOStats.


        :return: The read_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_bytes

    @read_bytes.setter
    def read_bytes(self, read_bytes):
        """
        Sets the read_bytes of this VolumeIOStats.


        :param read_bytes: The read_bytes of this VolumeIOStats.
        :type: float
        """
        self._read_bytes = read_bytes

    @property
    def read_hit_time_max(self):
        """
        Gets the read_hit_time_max of this VolumeIOStats.


        :return: The read_hit_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_hit_time_max

    @read_hit_time_max.setter
    def read_hit_time_max(self, read_hit_time_max):
        """
        Sets the read_hit_time_max of this VolumeIOStats.


        :param read_hit_time_max: The read_hit_time_max of this VolumeIOStats.
        :type: float
        """
        self._read_hit_time_max = read_hit_time_max

    @property
    def read_hit_time_total_sq(self):
        """
        Gets the read_hit_time_total_sq of this VolumeIOStats.


        :return: The read_hit_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_hit_time_total_sq

    @read_hit_time_total_sq.setter
    def read_hit_time_total_sq(self, read_hit_time_total_sq):
        """
        Sets the read_hit_time_total_sq of this VolumeIOStats.


        :param read_hit_time_total_sq: The read_hit_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._read_hit_time_total_sq = read_hit_time_total_sq

    @property
    def read_time_max(self):
        """
        Gets the read_time_max of this VolumeIOStats.


        :return: The read_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_time_max

    @read_time_max.setter
    def read_time_max(self, read_time_max):
        """
        Sets the read_time_max of this VolumeIOStats.


        :param read_time_max: The read_time_max of this VolumeIOStats.
        :type: float
        """
        self._read_time_max = read_time_max

    @property
    def read_time_total_sq(self):
        """
        Gets the read_time_total_sq of this VolumeIOStats.


        :return: The read_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._read_time_total_sq

    @read_time_total_sq.setter
    def read_time_total_sq(self, read_time_total_sq):
        """
        Sets the read_time_total_sq of this VolumeIOStats.


        :param read_time_total_sq: The read_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._read_time_total_sq = read_time_total_sq

    @property
    def write_bytes(self):
        """
        Gets the write_bytes of this VolumeIOStats.


        :return: The write_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_bytes

    @write_bytes.setter
    def write_bytes(self, write_bytes):
        """
        Sets the write_bytes of this VolumeIOStats.


        :param write_bytes: The write_bytes of this VolumeIOStats.
        :type: float
        """
        self._write_bytes = write_bytes

    @property
    def write_hit_bytes(self):
        """
        Gets the write_hit_bytes of this VolumeIOStats.
        Number of bytes written to cache

        :return: The write_hit_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_hit_bytes

    @write_hit_bytes.setter
    def write_hit_bytes(self, write_hit_bytes):
        """
        Sets the write_hit_bytes of this VolumeIOStats.
        Number of bytes written to cache

        :param write_hit_bytes: The write_hit_bytes of this VolumeIOStats.
        :type: float
        """
        self._write_hit_bytes = write_hit_bytes

    @property
    def write_hit_ops(self):
        """
        Gets the write_hit_ops of this VolumeIOStats.
        Number of write operations that hit cache

        :return: The write_hit_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_hit_ops

    @write_hit_ops.setter
    def write_hit_ops(self, write_hit_ops):
        """
        Sets the write_hit_ops of this VolumeIOStats.
        Number of write operations that hit cache

        :param write_hit_ops: The write_hit_ops of this VolumeIOStats.
        :type: float
        """
        self._write_hit_ops = write_hit_ops

    @property
    def write_hit_time_max(self):
        """
        Gets the write_hit_time_max of this VolumeIOStats.


        :return: The write_hit_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_hit_time_max

    @write_hit_time_max.setter
    def write_hit_time_max(self, write_hit_time_max):
        """
        Sets the write_hit_time_max of this VolumeIOStats.


        :param write_hit_time_max: The write_hit_time_max of this VolumeIOStats.
        :type: float
        """
        self._write_hit_time_max = write_hit_time_max

    @property
    def write_hit_time_total_sq(self):
        """
        Gets the write_hit_time_total_sq of this VolumeIOStats.


        :return: The write_hit_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_hit_time_total_sq

    @write_hit_time_total_sq.setter
    def write_hit_time_total_sq(self, write_hit_time_total_sq):
        """
        Sets the write_hit_time_total_sq of this VolumeIOStats.


        :param write_hit_time_total_sq: The write_hit_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._write_hit_time_total_sq = write_hit_time_total_sq

    @property
    def write_time_max(self):
        """
        Gets the write_time_max of this VolumeIOStats.


        :return: The write_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_time_max

    @write_time_max.setter
    def write_time_max(self, write_time_max):
        """
        Sets the write_time_max of this VolumeIOStats.


        :param write_time_max: The write_time_max of this VolumeIOStats.
        :type: float
        """
        self._write_time_max = write_time_max

    @property
    def write_time_total_sq(self):
        """
        Gets the write_time_total_sq of this VolumeIOStats.


        :return: The write_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._write_time_total_sq

    @write_time_total_sq.setter
    def write_time_total_sq(self, write_time_total_sq):
        """
        Sets the write_time_total_sq of this VolumeIOStats.


        :param write_time_total_sq: The write_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._write_time_total_sq = write_time_total_sq

    @property
    def queue_depth_total(self):
        """
        Gets the queue_depth_total of this VolumeIOStats.
        Total channel queue depth.

        :return: The queue_depth_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._queue_depth_total

    @queue_depth_total.setter
    def queue_depth_total(self, queue_depth_total):
        """
        Sets the queue_depth_total of this VolumeIOStats.
        Total channel queue depth.

        :param queue_depth_total: The queue_depth_total of this VolumeIOStats.
        :type: float
        """
        self._queue_depth_total = queue_depth_total

    @property
    def queue_depth_max(self):
        """
        Gets the queue_depth_max of this VolumeIOStats.
        Maximum channel queue depth.

        :return: The queue_depth_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._queue_depth_max

    @queue_depth_max.setter
    def queue_depth_max(self, queue_depth_max):
        """
        Sets the queue_depth_max of this VolumeIOStats.
        Maximum channel queue depth.

        :param queue_depth_max: The queue_depth_max of this VolumeIOStats.
        :type: float
        """
        self._queue_depth_max = queue_depth_max

    @property
    def random_ios_total(self):
        """
        Gets the random_ios_total of this VolumeIOStats.


        :return: The random_ios_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._random_ios_total

    @random_ios_total.setter
    def random_ios_total(self, random_ios_total):
        """
        Sets the random_ios_total of this VolumeIOStats.


        :param random_ios_total: The random_ios_total of this VolumeIOStats.
        :type: float
        """
        self._random_ios_total = random_ios_total

    @property
    def random_bytes_total(self):
        """
        Gets the random_bytes_total of this VolumeIOStats.


        :return: The random_bytes_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._random_bytes_total

    @random_bytes_total.setter
    def random_bytes_total(self, random_bytes_total):
        """
        Sets the random_bytes_total of this VolumeIOStats.


        :param random_bytes_total: The random_bytes_total of this VolumeIOStats.
        :type: float
        """
        self._random_bytes_total = random_bytes_total

    @property
    def cache_write_wait_hit_iops(self):
        """
        Gets the cache_write_wait_hit_iops of this VolumeIOStats.


        :return: The cache_write_wait_hit_iops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._cache_write_wait_hit_iops

    @cache_write_wait_hit_iops.setter
    def cache_write_wait_hit_iops(self, cache_write_wait_hit_iops):
        """
        Sets the cache_write_wait_hit_iops of this VolumeIOStats.


        :param cache_write_wait_hit_iops: The cache_write_wait_hit_iops of this VolumeIOStats.
        :type: float
        """
        self._cache_write_wait_hit_iops = cache_write_wait_hit_iops

    @property
    def cache_write_wait_hit_bytes(self):
        """
        Gets the cache_write_wait_hit_bytes of this VolumeIOStats.


        :return: The cache_write_wait_hit_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._cache_write_wait_hit_bytes

    @cache_write_wait_hit_bytes.setter
    def cache_write_wait_hit_bytes(self, cache_write_wait_hit_bytes):
        """
        Sets the cache_write_wait_hit_bytes of this VolumeIOStats.


        :param cache_write_wait_hit_bytes: The cache_write_wait_hit_bytes of this VolumeIOStats.
        :type: float
        """
        self._cache_write_wait_hit_bytes = cache_write_wait_hit_bytes

    @property
    def full_stripe_write_bytes(self):
        """
        Gets the full_stripe_write_bytes of this VolumeIOStats.


        :return: The full_stripe_write_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._full_stripe_write_bytes

    @full_stripe_write_bytes.setter
    def full_stripe_write_bytes(self, full_stripe_write_bytes):
        """
        Sets the full_stripe_write_bytes of this VolumeIOStats.


        :param full_stripe_write_bytes: The full_stripe_write_bytes of this VolumeIOStats.
        :type: float
        """
        self._full_stripe_write_bytes = full_stripe_write_bytes

    @property
    def total_ios_shipped(self):
        """
        Gets the total_ios_shipped of this VolumeIOStats.


        :return: The total_ios_shipped of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._total_ios_shipped

    @total_ios_shipped.setter
    def total_ios_shipped(self, total_ios_shipped):
        """
        Sets the total_ios_shipped of this VolumeIOStats.


        :param total_ios_shipped: The total_ios_shipped of this VolumeIOStats.
        :type: float
        """
        self._total_ios_shipped = total_ios_shipped

    @property
    def total_blks_evicted(self):
        """
        Gets the total_blks_evicted of this VolumeIOStats.


        :return: The total_blks_evicted of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._total_blks_evicted

    @total_blks_evicted.setter
    def total_blks_evicted(self, total_blks_evicted):
        """
        Sets the total_blks_evicted of this VolumeIOStats.


        :param total_blks_evicted: The total_blks_evicted of this VolumeIOStats.
        :type: float
        """
        self._total_blks_evicted = total_blks_evicted

    @property
    def cache_blks_in_use(self):
        """
        Gets the cache_blks_in_use of this VolumeIOStats.


        :return: The cache_blks_in_use of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._cache_blks_in_use

    @cache_blks_in_use.setter
    def cache_blks_in_use(self, cache_blks_in_use):
        """
        Sets the cache_blks_in_use of this VolumeIOStats.


        :param cache_blks_in_use: The cache_blks_in_use of this VolumeIOStats.
        :type: float
        """
        self._cache_blks_in_use = cache_blks_in_use

    @property
    def flash_cache_read_hit_ops(self):
        """
        Gets the flash_cache_read_hit_ops of this VolumeIOStats.
        The number of flash cache read hit operations.

        :return: The flash_cache_read_hit_ops of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._flash_cache_read_hit_ops

    @flash_cache_read_hit_ops.setter
    def flash_cache_read_hit_ops(self, flash_cache_read_hit_ops):
        """
        Sets the flash_cache_read_hit_ops of this VolumeIOStats.
        The number of flash cache read hit operations.

        :param flash_cache_read_hit_ops: The flash_cache_read_hit_ops of this VolumeIOStats.
        :type: float
        """
        self._flash_cache_read_hit_ops = flash_cache_read_hit_ops

    @property
    def flash_cache_read_hit_bytes(self):
        """
        Gets the flash_cache_read_hit_bytes of this VolumeIOStats.
        The number of flash cache read hit bytes.

        :return: The flash_cache_read_hit_bytes of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._flash_cache_read_hit_bytes

    @flash_cache_read_hit_bytes.setter
    def flash_cache_read_hit_bytes(self, flash_cache_read_hit_bytes):
        """
        Sets the flash_cache_read_hit_bytes of this VolumeIOStats.
        The number of flash cache read hit bytes.

        :param flash_cache_read_hit_bytes: The flash_cache_read_hit_bytes of this VolumeIOStats.
        :type: float
        """
        self._flash_cache_read_hit_bytes = flash_cache_read_hit_bytes

    @property
    def flash_cache_read_hit_time_total(self):
        """
        Gets the flash_cache_read_hit_time_total of this VolumeIOStats.
        The sum of all response times for all reads that have cache hits, in microseconds

        :return: The flash_cache_read_hit_time_total of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._flash_cache_read_hit_time_total

    @flash_cache_read_hit_time_total.setter
    def flash_cache_read_hit_time_total(self, flash_cache_read_hit_time_total):
        """
        Sets the flash_cache_read_hit_time_total of this VolumeIOStats.
        The sum of all response times for all reads that have cache hits, in microseconds

        :param flash_cache_read_hit_time_total: The flash_cache_read_hit_time_total of this VolumeIOStats.
        :type: float
        """
        self._flash_cache_read_hit_time_total = flash_cache_read_hit_time_total

    @property
    def flash_cache_read_hit_time_max(self):
        """
        Gets the flash_cache_read_hit_time_max of this VolumeIOStats.
        Maximum I/O time in microseconds for any one read I/O that has a cache hit

        :return: The flash_cache_read_hit_time_max of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._flash_cache_read_hit_time_max

    @flash_cache_read_hit_time_max.setter
    def flash_cache_read_hit_time_max(self, flash_cache_read_hit_time_max):
        """
        Sets the flash_cache_read_hit_time_max of this VolumeIOStats.
        Maximum I/O time in microseconds for any one read I/O that has a cache hit

        :param flash_cache_read_hit_time_max: The flash_cache_read_hit_time_max of this VolumeIOStats.
        :type: float
        """
        self._flash_cache_read_hit_time_max = flash_cache_read_hit_time_max

    @property
    def flash_cache_read_hit_time_total_sq(self):
        """
        Gets the flash_cache_read_hit_time_total_sq of this VolumeIOStats.
        The sum of the squares of the response times for all reads that have cache hits, in microseconds (used for standard deviation).

        :return: The flash_cache_read_hit_time_total_sq of this VolumeIOStats.
        :rtype: float
        :required/optional: required
        """
        return self._flash_cache_read_hit_time_total_sq

    @flash_cache_read_hit_time_total_sq.setter
    def flash_cache_read_hit_time_total_sq(self, flash_cache_read_hit_time_total_sq):
        """
        Sets the flash_cache_read_hit_time_total_sq of this VolumeIOStats.
        The sum of the squares of the response times for all reads that have cache hits, in microseconds (used for standard deviation).

        :param flash_cache_read_hit_time_total_sq: The flash_cache_read_hit_time_total_sq of this VolumeIOStats.
        :type: float
        """
        self._flash_cache_read_hit_time_total_sq = flash_cache_read_hit_time_total_sq

    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

