# coding: utf-8

"""
VolumeCounterGroup.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 VolumeCounterGroup(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        VolumeCounterGroup - 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 = {
            'controller_ref': 'str',  # (required parameter)
            'base_time': 'int',  # (required parameter)
            'read_hit_ops': 'int',  # (required parameter)
            'read_hit_bytes': 'int',  # (required parameter)
            'read_hit_time_total': 'int',  # (required parameter)
            'read_hit_time_max': 'int',  # (required parameter)
            'read_ops': 'int',  # (required parameter)
            'read_bytes': 'int',  # (required parameter)
            'read_time_total': 'int',  # (required parameter)
            'read_time_max': 'int',  # (required parameter)
            'write_hit_ops': 'int',  # (required parameter)
            'write_hit_bytes': 'int',  # (required parameter)
            'write_hit_time_total': 'int',  # (required parameter)
            'write_hit_time_max': 'int',  # (required parameter)
            'write_ops': 'int',  # (required parameter)
            'write_bytes': 'int',  # (required parameter)
            'write_time_total': 'int',  # (required parameter)
            'write_time_max': 'int',  # (required parameter)
            'other_ops': 'int',  # (required parameter)
            'other_time_total': 'int',  # (required parameter)
            'other_time_max': 'int',  # (required parameter)
            'idle_time': 'int',  # (required parameter)
            'err_redundancy_chk_unrecovered_reads': 'int',  # (required parameter)
            'err_redundancy_chk_recovered_reads': 'int',  # (required parameter)
            'err_redundancy_chk_indeterminate_reads': 'int',  # (required parameter)
            'read_hit_time_total_sq': 'int',  # (required parameter)
            'read_time_total_sq': 'int',  # (required parameter)
            'write_hit_time_total_sq': 'int',  # (required parameter)
            'write_time_total_sq': 'int',  # (required parameter)
            'other_time_total_sq': 'int',  # (required parameter)
            'flash_cache_read_hit_ops': 'int',  # (required parameter)
            'flash_cache_read_hit_bytes': 'int',  # (required parameter)
            'flash_cache_read_hit_time_total': 'int',  # (required parameter)
            'flash_cache_read_hit_time_max': 'int',  # (required parameter)
            'flash_cache_read_hit_time_total_sq': 'int',  # (required parameter)
            'prefetch_hit_bytes': 'int',  # (required parameter)
            'prefetch_miss_bytes': 'int',  # (required parameter)
            'start_time': 'int',  # (required parameter)
            'observed_time': 'int',  # (required parameter)
            'queue_depth_total': 'int',  # (required parameter)
            'queue_depth_max': 'int',  # (required parameter)
            'random_ios_total': 'int',  # (required parameter)
            'random_bytes_total': 'int',  # (required parameter)
            'cache_write_wait_hit_ops': 'int',  # (required parameter)
            'full_stripe_writes_bytes': 'int',  # (required parameter)
            'total_ios_shipped': 'int',  # (required parameter)
            'total_blks_evicted': 'int',  # (required parameter)
            'cache_blks_in_use': 'int',  # (required parameter)
            'cache_write_wait_hit_bytes': 'int'
        }

        self.attribute_map = {
            'controller_ref': 'controllerRef',  # (required parameter)
            'base_time': 'baseTime',  # (required parameter)
            'read_hit_ops': 'readHitOps',  # (required parameter)
            'read_hit_bytes': 'readHitBytes',  # (required parameter)
            'read_hit_time_total': 'readHitTimeTotal',  # (required parameter)
            'read_hit_time_max': 'readHitTimeMax',  # (required parameter)
            'read_ops': 'readOps',  # (required parameter)
            'read_bytes': 'readBytes',  # (required parameter)
            'read_time_total': 'readTimeTotal',  # (required parameter)
            'read_time_max': 'readTimeMax',  # (required parameter)
            'write_hit_ops': 'writeHitOps',  # (required parameter)
            'write_hit_bytes': 'writeHitBytes',  # (required parameter)
            'write_hit_time_total': 'writeHitTimeTotal',  # (required parameter)
            'write_hit_time_max': 'writeHitTimeMax',  # (required parameter)
            'write_ops': 'writeOps',  # (required parameter)
            'write_bytes': 'writeBytes',  # (required parameter)
            'write_time_total': 'writeTimeTotal',  # (required parameter)
            'write_time_max': 'writeTimeMax',  # (required parameter)
            'other_ops': 'otherOps',  # (required parameter)
            'other_time_total': 'otherTimeTotal',  # (required parameter)
            'other_time_max': 'otherTimeMax',  # (required parameter)
            'idle_time': 'idleTime',  # (required parameter)
            'err_redundancy_chk_unrecovered_reads': 'errRedundancyChkUnrecoveredReads',  # (required parameter)
            'err_redundancy_chk_recovered_reads': 'errRedundancyChkRecoveredReads',  # (required parameter)
            'err_redundancy_chk_indeterminate_reads': 'errRedundancyChkIndeterminateReads',  # (required parameter)
            'read_hit_time_total_sq': 'readHitTimeTotalSq',  # (required parameter)
            'read_time_total_sq': 'readTimeTotalSq',  # (required parameter)
            'write_hit_time_total_sq': 'writeHitTimeTotalSq',  # (required parameter)
            'write_time_total_sq': 'writeTimeTotalSq',  # (required parameter)
            'other_time_total_sq': 'otherTimeTotalSq',  # (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',  # (required parameter)
            'prefetch_hit_bytes': 'prefetchHitBytes',  # (required parameter)
            'prefetch_miss_bytes': 'prefetchMissBytes',  # (required parameter)
            'start_time': 'startTime',  # (required parameter)
            'observed_time': 'observedTime',  # (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_ops': 'cacheWriteWaitHitOps',  # (required parameter)
            'full_stripe_writes_bytes': 'fullStripeWritesBytes',  # (required parameter)
            'total_ios_shipped': 'totalIosShipped',  # (required parameter)
            'total_blks_evicted': 'totalBlksEvicted',  # (required parameter)
            'cache_blks_in_use': 'cacheBlksInUse',  # (required parameter)
            'cache_write_wait_hit_bytes': 'cacheWriteWaitHitBytes'
        }

        self._controller_ref = None
        self._base_time = None
        self._read_hit_ops = None
        self._read_hit_bytes = None
        self._read_hit_time_total = None
        self._read_hit_time_max = None
        self._read_ops = None
        self._read_bytes = None
        self._read_time_total = None
        self._read_time_max = None
        self._write_hit_ops = None
        self._write_hit_bytes = None
        self._write_hit_time_total = None
        self._write_hit_time_max = None
        self._write_ops = None
        self._write_bytes = None
        self._write_time_total = None
        self._write_time_max = None
        self._other_ops = None
        self._other_time_total = None
        self._other_time_max = None
        self._idle_time = None
        self._err_redundancy_chk_unrecovered_reads = None
        self._err_redundancy_chk_recovered_reads = None
        self._err_redundancy_chk_indeterminate_reads = None
        self._read_hit_time_total_sq = None
        self._read_time_total_sq = None
        self._write_hit_time_total_sq = None
        self._write_time_total_sq = None
        self._other_time_total_sq = 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
        self._prefetch_hit_bytes = None
        self._prefetch_miss_bytes = None
        self._start_time = None
        self._observed_time = 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_ops = None
        self._full_stripe_writes_bytes = None
        self._total_ios_shipped = None
        self._total_blks_evicted = None
        self._cache_blks_in_use = None
        self._cache_write_wait_hit_bytes = None

    @property
    def controller_ref(self):
        """
        Gets the controller_ref of this VolumeCounterGroup.
        A reference to the controller that accumulated the counters for this group.

        :return: The controller_ref of this VolumeCounterGroup.
        :rtype: str
        :required/optional: required
        """
        return self._controller_ref

    @controller_ref.setter
    def controller_ref(self, controller_ref):
        """
        Sets the controller_ref of this VolumeCounterGroup.
        A reference to the controller that accumulated the counters for this group.

        :param controller_ref: The controller_ref of this VolumeCounterGroup.
        :type: str
        """
        self._controller_ref = controller_ref

    @property
    def base_time(self):
        """
        Gets the base_time of this VolumeCounterGroup.
        The time that the counters were last reset. Time is the number of seconds since midnight, January 1, 1970.

        :return: The base_time of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._base_time

    @base_time.setter
    def base_time(self, base_time):
        """
        Sets the base_time of this VolumeCounterGroup.
        The time that the counters were last reset. Time is the number of seconds since midnight, January 1, 1970.

        :param base_time: The base_time of this VolumeCounterGroup.
        :type: int
        """
        self._base_time = base_time

    @property
    def read_hit_ops(self):
        """
        Gets the read_hit_ops of this VolumeCounterGroup.
        The number of read operations that hit cache.

        :return: The read_hit_ops of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of read operations that hit cache.

        :param read_hit_ops: The read_hit_ops of this VolumeCounterGroup.
        :type: int
        """
        self._read_hit_ops = read_hit_ops

    @property
    def read_hit_bytes(self):
        """
        Gets the read_hit_bytes of this VolumeCounterGroup.
        The number of bytes read that hit cache.

        :return: The read_hit_bytes of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of bytes read that hit cache.

        :param read_hit_bytes: The read_hit_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._read_hit_bytes = read_hit_bytes

    @property
    def read_hit_time_total(self):
        """
        Gets the read_hit_time_total of this VolumeCounterGroup.
        The total time in microseconds spent in read operations that hit cache.

        :return: The read_hit_time_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The total time in microseconds spent in read operations that hit cache.

        :param read_hit_time_total: The read_hit_time_total of this VolumeCounterGroup.
        :type: int
        """
        self._read_hit_time_total = read_hit_time_total

    @property
    def read_hit_time_max(self):
        """
        Gets the read_hit_time_max of this VolumeCounterGroup.
        The maximum time in microseconds spent in any one read operation that hit cache.

        :return: The read_hit_time_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The maximum time in microseconds spent in any one read operation that hit cache.

        :param read_hit_time_max: The read_hit_time_max of this VolumeCounterGroup.
        :type: int
        """
        self._read_hit_time_max = read_hit_time_max

    @property
    def read_ops(self):
        """
        Gets the read_ops of this VolumeCounterGroup.
        The number of read operations.

        :return: The read_ops of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._read_ops

    @read_ops.setter
    def read_ops(self, read_ops):
        """
        Sets the read_ops of this VolumeCounterGroup.
        The number of read operations.

        :param read_ops: The read_ops of this VolumeCounterGroup.
        :type: int
        """
        self._read_ops = read_ops

    @property
    def read_bytes(self):
        """
        Gets the read_bytes of this VolumeCounterGroup.
        The number of bytes read.

        :return: The read_bytes of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._read_bytes

    @read_bytes.setter
    def read_bytes(self, read_bytes):
        """
        Sets the read_bytes of this VolumeCounterGroup.
        The number of bytes read.

        :param read_bytes: The read_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._read_bytes = read_bytes

    @property
    def read_time_total(self):
        """
        Gets the read_time_total of this VolumeCounterGroup.
        The total time in microseconds spent in read operations.

        :return: The read_time_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The total time in microseconds spent in read operations.

        :param read_time_total: The read_time_total of this VolumeCounterGroup.
        :type: int
        """
        self._read_time_total = read_time_total

    @property
    def read_time_max(self):
        """
        Gets the read_time_max of this VolumeCounterGroup.
        The maximum time in microseconds spent in any one read operation.

        :return: The read_time_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The maximum time in microseconds spent in any one read operation.

        :param read_time_max: The read_time_max of this VolumeCounterGroup.
        :type: int
        """
        self._read_time_max = read_time_max

    @property
    def write_hit_ops(self):
        """
        Gets the write_hit_ops of this VolumeCounterGroup.
        The number of write operations that hit cache.

        :return: The write_hit_ops of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of write operations that hit cache.

        :param write_hit_ops: The write_hit_ops of this VolumeCounterGroup.
        :type: int
        """
        self._write_hit_ops = write_hit_ops

    @property
    def write_hit_bytes(self):
        """
        Gets the write_hit_bytes of this VolumeCounterGroup.
        The number of bytes written that hit cache.

        :return: The write_hit_bytes of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of bytes written that hit cache.

        :param write_hit_bytes: The write_hit_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._write_hit_bytes = write_hit_bytes

    @property
    def write_hit_time_total(self):
        """
        Gets the write_hit_time_total of this VolumeCounterGroup.
        The total time in microseconds spent in write operations that hit cache.

        :return: The write_hit_time_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The total time in microseconds spent in write operations that hit cache.

        :param write_hit_time_total: The write_hit_time_total of this VolumeCounterGroup.
        :type: int
        """
        self._write_hit_time_total = write_hit_time_total

    @property
    def write_hit_time_max(self):
        """
        Gets the write_hit_time_max of this VolumeCounterGroup.
        The maximum time in microseconds spent in any one write operation that hit cache.

        :return: The write_hit_time_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The maximum time in microseconds spent in any one write operation that hit cache.

        :param write_hit_time_max: The write_hit_time_max of this VolumeCounterGroup.
        :type: int
        """
        self._write_hit_time_max = write_hit_time_max

    @property
    def write_ops(self):
        """
        Gets the write_ops of this VolumeCounterGroup.
        The number of write operations.

        :return: The write_ops of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._write_ops

    @write_ops.setter
    def write_ops(self, write_ops):
        """
        Sets the write_ops of this VolumeCounterGroup.
        The number of write operations.

        :param write_ops: The write_ops of this VolumeCounterGroup.
        :type: int
        """
        self._write_ops = write_ops

    @property
    def write_bytes(self):
        """
        Gets the write_bytes of this VolumeCounterGroup.
        The number of bytes written.

        :return: The write_bytes of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._write_bytes

    @write_bytes.setter
    def write_bytes(self, write_bytes):
        """
        Sets the write_bytes of this VolumeCounterGroup.
        The number of bytes written.

        :param write_bytes: The write_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._write_bytes = write_bytes

    @property
    def write_time_total(self):
        """
        Gets the write_time_total of this VolumeCounterGroup.
        The total time in microseconds spent in write operations.

        :return: The write_time_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The total time in microseconds spent in write operations.

        :param write_time_total: The write_time_total of this VolumeCounterGroup.
        :type: int
        """
        self._write_time_total = write_time_total

    @property
    def write_time_max(self):
        """
        Gets the write_time_max of this VolumeCounterGroup.
        The maximum time in microseconds spent in any one write operation.

        :return: The write_time_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The maximum time in microseconds spent in any one write operation.

        :param write_time_max: The write_time_max of this VolumeCounterGroup.
        :type: int
        """
        self._write_time_max = write_time_max

    @property
    def other_ops(self):
        """
        Gets the other_ops of this VolumeCounterGroup.
        The number of non-read-write operations.

        :return: The other_ops of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._other_ops

    @other_ops.setter
    def other_ops(self, other_ops):
        """
        Sets the other_ops of this VolumeCounterGroup.
        The number of non-read-write operations.

        :param other_ops: The other_ops of this VolumeCounterGroup.
        :type: int
        """
        self._other_ops = other_ops

    @property
    def other_time_total(self):
        """
        Gets the other_time_total of this VolumeCounterGroup.
        The total time in microseconds spent in non-read-write operations.

        :return: The other_time_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The total time in microseconds spent in non-read-write operations.

        :param other_time_total: The other_time_total of this VolumeCounterGroup.
        :type: int
        """
        self._other_time_total = other_time_total

    @property
    def other_time_max(self):
        """
        Gets the other_time_max of this VolumeCounterGroup.
        The maximum time in microseconds spent in any one non-read-write operation.

        :return: The other_time_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The maximum time in microseconds spent in any one non-read-write operation.

        :param other_time_max: The other_time_max of this VolumeCounterGroup.
        :type: int
        """
        self._other_time_max = other_time_max

    @property
    def idle_time(self):
        """
        Gets the idle_time of this VolumeCounterGroup.
        The total time in microseconds spent idle since baseTime.

        :return: The idle_time of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._idle_time

    @idle_time.setter
    def idle_time(self, idle_time):
        """
        Sets the idle_time of this VolumeCounterGroup.
        The total time in microseconds spent idle since baseTime.

        :param idle_time: The idle_time of this VolumeCounterGroup.
        :type: int
        """
        self._idle_time = idle_time

    @property
    def err_redundancy_chk_unrecovered_reads(self):
        """
        Gets the err_redundancy_chk_unrecovered_reads of this VolumeCounterGroup.
        The number of read requests that have failed due to redundancy group inconsistencies.

        :return: The err_redundancy_chk_unrecovered_reads of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of read requests that have failed due to redundancy group inconsistencies.

        :param err_redundancy_chk_unrecovered_reads: The err_redundancy_chk_unrecovered_reads of this VolumeCounterGroup.
        :type: int
        """
        self._err_redundancy_chk_unrecovered_reads = err_redundancy_chk_unrecovered_reads

    @property
    def err_redundancy_chk_recovered_reads(self):
        """
        Gets the err_redundancy_chk_recovered_reads of this VolumeCounterGroup.
        The number of read requests that have experienced a redundancy group inconsistency that was subsequently recovered by retrying the consistency check.

        :return: The err_redundancy_chk_recovered_reads of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of read requests that have experienced a redundancy group inconsistency that was subsequently recovered by retrying the consistency check.

        :param err_redundancy_chk_recovered_reads: The err_redundancy_chk_recovered_reads of this VolumeCounterGroup.
        :type: int
        """
        self._err_redundancy_chk_recovered_reads = err_redundancy_chk_recovered_reads

    @property
    def err_redundancy_chk_indeterminate_reads(self):
        """
        Gets the err_redundancy_chk_indeterminate_reads of this VolumeCounterGroup.
        The number of read requests for which the consistency of the redundancy data could not be determined, but for which the read was carried out to completion.

        :return: The err_redundancy_chk_indeterminate_reads of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of read requests for which the consistency of the redundancy data could not be determined, but for which the read was carried out to completion.

        :param err_redundancy_chk_indeterminate_reads: The err_redundancy_chk_indeterminate_reads of this VolumeCounterGroup.
        :type: int
        """
        self._err_redundancy_chk_indeterminate_reads = err_redundancy_chk_indeterminate_reads

    @property
    def read_hit_time_total_sq(self):
        """
        Gets the read_hit_time_total_sq of this VolumeCounterGroup.
        The sum of the squares of microseconds spent in read operations that hit cache.

        :return: The read_hit_time_total_sq of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The sum of the squares of microseconds spent in read operations that hit cache.

        :param read_hit_time_total_sq: The read_hit_time_total_sq of this VolumeCounterGroup.
        :type: int
        """
        self._read_hit_time_total_sq = read_hit_time_total_sq

    @property
    def read_time_total_sq(self):
        """
        Gets the read_time_total_sq of this VolumeCounterGroup.
        The sum of the squares of microseconds spent in read operations.

        :return: The read_time_total_sq of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The sum of the squares of microseconds spent in read operations.

        :param read_time_total_sq: The read_time_total_sq of this VolumeCounterGroup.
        :type: int
        """
        self._read_time_total_sq = read_time_total_sq

    @property
    def write_hit_time_total_sq(self):
        """
        Gets the write_hit_time_total_sq of this VolumeCounterGroup.
        The sum of the squares of microseconds spent in write operations that hit cache.

        :return: The write_hit_time_total_sq of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The sum of the squares of microseconds spent in write operations that hit cache.

        :param write_hit_time_total_sq: The write_hit_time_total_sq of this VolumeCounterGroup.
        :type: int
        """
        self._write_hit_time_total_sq = write_hit_time_total_sq

    @property
    def write_time_total_sq(self):
        """
        Gets the write_time_total_sq of this VolumeCounterGroup.
        The sum of the squares of microseconds spent in write operations.

        :return: The write_time_total_sq of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The sum of the squares of microseconds spent in write operations.

        :param write_time_total_sq: The write_time_total_sq of this VolumeCounterGroup.
        :type: int
        """
        self._write_time_total_sq = write_time_total_sq

    @property
    def other_time_total_sq(self):
        """
        Gets the other_time_total_sq of this VolumeCounterGroup.
        The sum of the squares of microseconds spent in non read-write operations.

        :return: The other_time_total_sq of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The sum of the squares of microseconds spent in non read-write operations.

        :param other_time_total_sq: The other_time_total_sq of this VolumeCounterGroup.
        :type: int
        """
        self._other_time_total_sq = other_time_total_sq

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

        :return: The flash_cache_read_hit_ops of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of flash cache read hit operations.

        :param flash_cache_read_hit_ops: The flash_cache_read_hit_ops of this VolumeCounterGroup.
        :type: int
        """
        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 VolumeCounterGroup.
        The number of flash cache read hit bytes.

        :return: The flash_cache_read_hit_bytes of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of flash cache read hit bytes.

        :param flash_cache_read_hit_bytes: The flash_cache_read_hit_bytes of this VolumeCounterGroup.
        :type: int
        """
        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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :type: int
        """
        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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :type: int
        """
        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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        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 VolumeCounterGroup.
        :type: int
        """
        self._flash_cache_read_hit_time_total_sq = flash_cache_read_hit_time_total_sq

    @property
    def prefetch_hit_bytes(self):
        """
        Gets the prefetch_hit_bytes of this VolumeCounterGroup.
        The number of pre-fetched bytes that are ultimately read by the host.

        :return: The prefetch_hit_bytes of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._prefetch_hit_bytes

    @prefetch_hit_bytes.setter
    def prefetch_hit_bytes(self, prefetch_hit_bytes):
        """
        Sets the prefetch_hit_bytes of this VolumeCounterGroup.
        The number of pre-fetched bytes that are ultimately read by the host.

        :param prefetch_hit_bytes: The prefetch_hit_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._prefetch_hit_bytes = prefetch_hit_bytes

    @property
    def prefetch_miss_bytes(self):
        """
        Gets the prefetch_miss_bytes of this VolumeCounterGroup.
        The number of pre-fetched bytes that are evicted from cache without being read by the host.

        :return: The prefetch_miss_bytes of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._prefetch_miss_bytes

    @prefetch_miss_bytes.setter
    def prefetch_miss_bytes(self, prefetch_miss_bytes):
        """
        Sets the prefetch_miss_bytes of this VolumeCounterGroup.
        The number of pre-fetched bytes that are evicted from cache without being read by the host.

        :param prefetch_miss_bytes: The prefetch_miss_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._prefetch_miss_bytes = prefetch_miss_bytes

    @property
    def start_time(self):
        """
        Gets the start_time of this VolumeCounterGroup.
        Start time for this collection as measured by the number of seconds since baseTime.

        :return: The start_time of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._start_time

    @start_time.setter
    def start_time(self, start_time):
        """
        Sets the start_time of this VolumeCounterGroup.
        Start time for this collection as measured by the number of seconds since baseTime.

        :param start_time: The start_time of this VolumeCounterGroup.
        :type: int
        """
        self._start_time = start_time

    @property
    def observed_time(self):
        """
        Gets the observed_time of this VolumeCounterGroup.
        End time for this collection as measured by the number of seconds since baseTime.

        :return: The observed_time of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._observed_time

    @observed_time.setter
    def observed_time(self, observed_time):
        """
        Sets the observed_time of this VolumeCounterGroup.
        End time for this collection as measured by the number of seconds since baseTime.

        :param observed_time: The observed_time of this VolumeCounterGroup.
        :type: int
        """
        self._observed_time = observed_time

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

        :return: The queue_depth_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Total drive queue depth.

        :param queue_depth_total: The queue_depth_total of this VolumeCounterGroup.
        :type: int
        """
        self._queue_depth_total = queue_depth_total

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

        :return: The queue_depth_max of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Maximum queue depth.

        :param queue_depth_max: The queue_depth_max of this VolumeCounterGroup.
        :type: int
        """
        self._queue_depth_max = queue_depth_max

    @property
    def random_ios_total(self):
        """
        Gets the random_ios_total of this VolumeCounterGroup.
        Total number of IOs that are categorized as random.

        :return: The random_ios_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Total number of IOs that are categorized as random.

        :param random_ios_total: The random_ios_total of this VolumeCounterGroup.
        :type: int
        """
        self._random_ios_total = random_ios_total

    @property
    def random_bytes_total(self):
        """
        Gets the random_bytes_total of this VolumeCounterGroup.
        Total number of Bytes that are categorized as random.

        :return: The random_bytes_total of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Total number of Bytes that are categorized as random.

        :param random_bytes_total: The random_bytes_total of this VolumeCounterGroup.
        :type: int
        """
        self._random_bytes_total = random_bytes_total

    @property
    def cache_write_wait_hit_ops(self):
        """
        Gets the cache_write_wait_hit_ops of this VolumeCounterGroup.
        The number of write operations that are delayed, waiting for cache flush.

        :return: The cache_write_wait_hit_ops of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._cache_write_wait_hit_ops

    @cache_write_wait_hit_ops.setter
    def cache_write_wait_hit_ops(self, cache_write_wait_hit_ops):
        """
        Sets the cache_write_wait_hit_ops of this VolumeCounterGroup.
        The number of write operations that are delayed, waiting for cache flush.

        :param cache_write_wait_hit_ops: The cache_write_wait_hit_ops of this VolumeCounterGroup.
        :type: int
        """
        self._cache_write_wait_hit_ops = cache_write_wait_hit_ops

    @property
    def full_stripe_writes_bytes(self):
        """
        Gets the full_stripe_writes_bytes of this VolumeCounterGroup.
        Bytes written that are categorized as Full stripe writes.

        :return: The full_stripe_writes_bytes of this VolumeCounterGroup.
        :rtype: int
        :required/optional: required
        """
        return self._full_stripe_writes_bytes

    @full_stripe_writes_bytes.setter
    def full_stripe_writes_bytes(self, full_stripe_writes_bytes):
        """
        Sets the full_stripe_writes_bytes of this VolumeCounterGroup.
        Bytes written that are categorized as Full stripe writes.

        :param full_stripe_writes_bytes: The full_stripe_writes_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._full_stripe_writes_bytes = full_stripe_writes_bytes

    @property
    def total_ios_shipped(self):
        """
        Gets the total_ios_shipped of this VolumeCounterGroup.
        Total number of IOs shipped to this volume.

        :return: The total_ios_shipped of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Total number of IOs shipped to this volume.

        :param total_ios_shipped: The total_ios_shipped of this VolumeCounterGroup.
        :type: int
        """
        self._total_ios_shipped = total_ios_shipped

    @property
    def total_blks_evicted(self):
        """
        Gets the total_blks_evicted of this VolumeCounterGroup.
        Total number of cache blocks evicted by this volume.

        :return: The total_blks_evicted of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Total number of cache blocks evicted by this volume.

        :param total_blks_evicted: The total_blks_evicted of this VolumeCounterGroup.
        :type: int
        """
        self._total_blks_evicted = total_blks_evicted

    @property
    def cache_blks_in_use(self):
        """
        Gets the cache_blks_in_use of this VolumeCounterGroup.
        Number of cache blocks in use by this volume.

        :return: The cache_blks_in_use of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        Number of cache blocks in use by this volume.

        :param cache_blks_in_use: The cache_blks_in_use of this VolumeCounterGroup.
        :type: int
        """
        self._cache_blks_in_use = cache_blks_in_use

    @property
    def cache_write_wait_hit_bytes(self):
        """
        Gets the cache_write_wait_hit_bytes of this VolumeCounterGroup.
        The number of bytes in write operations that were delayed waiting for cache flush.

        :return: The cache_write_wait_hit_bytes of this VolumeCounterGroup.
        :rtype: int
        :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 VolumeCounterGroup.
        The number of bytes in write operations that were delayed waiting for cache flush.

        :param cache_write_wait_hit_bytes: The cache_write_wait_hit_bytes of this VolumeCounterGroup.
        :type: int
        """
        self._cache_write_wait_hit_bytes = cache_write_wait_hit_bytes

    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

