# coding: utf-8

"""
    VPlex REST API

    A defnition for the next-gen VPlex API  # noqa: E501

    OpenAPI spec version: 0.1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class Monitors(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'name': 'str',
        'ownership': 'bool',
        'collecting_data': 'bool',
        'period': 'float',
        'average_period': 'float',
        'idle_for': 'float',
        'bucket_min': 'float',
        'bucket_max': 'float',
        'bucket_width': 'float',
        'bucket_count': 'float',
        'statistics': 'object',
        'firmware_id': 'float',
        'targets': 'list[str]',
        'version': 'str',
        'timestamp': 'str'
    }

    attribute_map = {
        'name': 'name',
        'ownership': 'ownership',
        'collecting_data': 'collecting_data',
        'period': 'period',
        'average_period': 'average_period',
        'idle_for': 'idle_for',
        'bucket_min': 'bucket_min',
        'bucket_max': 'bucket_max',
        'bucket_width': 'bucket_width',
        'bucket_count': 'bucket_count',
        'statistics': 'statistics',
        'firmware_id': 'firmware_id',
        'targets': 'targets',
        'version': 'version',
        'timestamp': 'timestamp'
    }

    def __init__(self, name=None, ownership=None, collecting_data=None, period=None, average_period=None, idle_for=None, bucket_min=None, bucket_max=None, bucket_width=None, bucket_count=None, statistics=None, firmware_id=None, targets=None, version=None, timestamp=None):  # noqa: E501
        """Monitors - a model defined in Swagger"""  # noqa: E501

        self._name = None
        self._ownership = None
        self._collecting_data = None
        self._period = None
        self._average_period = None
        self._idle_for = None
        self._bucket_min = None
        self._bucket_max = None
        self._bucket_width = None
        self._bucket_count = None
        self._statistics = None
        self._firmware_id = None
        self._targets = None
        self._version = None
        self._timestamp = None
        self.discriminator = None

        if name is not None:
            self.name = name
        if ownership is not None:
            self.ownership = ownership
        if collecting_data is not None:
            self.collecting_data = collecting_data
        if period is not None:
            self.period = period
        if average_period is not None:
            self.average_period = average_period
        if idle_for is not None:
            self.idle_for = idle_for
        if bucket_min is not None:
            self.bucket_min = bucket_min
        if bucket_max is not None:
            self.bucket_max = bucket_max
        if bucket_width is not None:
            self.bucket_width = bucket_width
        if bucket_count is not None:
            self.bucket_count = bucket_count
        if statistics is not None:
            self.statistics = statistics
        if firmware_id is not None:
            self.firmware_id = firmware_id
        if targets is not None:
            self.targets = targets
        if version is not None:
            self.version = version
        if timestamp is not None:
            self.timestamp = timestamp

    @property
    def name(self):
        """Gets the name of this Monitors.  # noqa: E501


        :return: The name of this Monitors.  # noqa: E501
        :rtype: str
        """
        return self._name

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


        :param name: The name of this Monitors.  # noqa: E501
        :type: str
        """

        self._name = name

    @property
    def ownership(self):
        """Gets the ownership of this Monitors.  # noqa: E501


        :return: The ownership of this Monitors.  # noqa: E501
        :rtype: bool
        """
        return self._ownership

    @ownership.setter
    def ownership(self, ownership):
        """Sets the ownership of this Monitors.


        :param ownership: The ownership of this Monitors.  # noqa: E501
        :type: bool
        """

        self._ownership = ownership

    @property
    def collecting_data(self):
        """Gets the collecting_data of this Monitors.  # noqa: E501


        :return: The collecting_data of this Monitors.  # noqa: E501
        :rtype: bool
        """
        return self._collecting_data

    @collecting_data.setter
    def collecting_data(self, collecting_data):
        """Sets the collecting_data of this Monitors.


        :param collecting_data: The collecting_data of this Monitors.  # noqa: E501
        :type: bool
        """

        self._collecting_data = collecting_data

    @property
    def period(self):
        """Gets the period of this Monitors.  # noqa: E501


        :return: The period of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._period

    @period.setter
    def period(self, period):
        """Sets the period of this Monitors.


        :param period: The period of this Monitors.  # noqa: E501
        :type: float
        """

        self._period = period

    @property
    def average_period(self):
        """Gets the average_period of this Monitors.  # noqa: E501


        :return: The average_period of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._average_period

    @average_period.setter
    def average_period(self, average_period):
        """Sets the average_period of this Monitors.


        :param average_period: The average_period of this Monitors.  # noqa: E501
        :type: float
        """

        self._average_period = average_period

    @property
    def idle_for(self):
        """Gets the idle_for of this Monitors.  # noqa: E501


        :return: The idle_for of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._idle_for

    @idle_for.setter
    def idle_for(self, idle_for):
        """Sets the idle_for of this Monitors.


        :param idle_for: The idle_for of this Monitors.  # noqa: E501
        :type: float
        """

        self._idle_for = idle_for

    @property
    def bucket_min(self):
        """Gets the bucket_min of this Monitors.  # noqa: E501


        :return: The bucket_min of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._bucket_min

    @bucket_min.setter
    def bucket_min(self, bucket_min):
        """Sets the bucket_min of this Monitors.


        :param bucket_min: The bucket_min of this Monitors.  # noqa: E501
        :type: float
        """

        self._bucket_min = bucket_min

    @property
    def bucket_max(self):
        """Gets the bucket_max of this Monitors.  # noqa: E501


        :return: The bucket_max of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._bucket_max

    @bucket_max.setter
    def bucket_max(self, bucket_max):
        """Sets the bucket_max of this Monitors.


        :param bucket_max: The bucket_max of this Monitors.  # noqa: E501
        :type: float
        """

        self._bucket_max = bucket_max

    @property
    def bucket_width(self):
        """Gets the bucket_width of this Monitors.  # noqa: E501


        :return: The bucket_width of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._bucket_width

    @bucket_width.setter
    def bucket_width(self, bucket_width):
        """Sets the bucket_width of this Monitors.


        :param bucket_width: The bucket_width of this Monitors.  # noqa: E501
        :type: float
        """

        self._bucket_width = bucket_width

    @property
    def bucket_count(self):
        """Gets the bucket_count of this Monitors.  # noqa: E501


        :return: The bucket_count of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._bucket_count

    @bucket_count.setter
    def bucket_count(self, bucket_count):
        """Sets the bucket_count of this Monitors.


        :param bucket_count: The bucket_count of this Monitors.  # noqa: E501
        :type: float
        """

        self._bucket_count = bucket_count

    @property
    def statistics(self):
        """Gets the statistics of this Monitors.  # noqa: E501


        :return: The statistics of this Monitors.  # noqa: E501
        :rtype: object
        """
        return self._statistics

    @statistics.setter
    def statistics(self, statistics):
        """Sets the statistics of this Monitors.


        :param statistics: The statistics of this Monitors.  # noqa: E501
        :type: object
        """

        self._statistics = statistics

    @property
    def firmware_id(self):
        """Gets the firmware_id of this Monitors.  # noqa: E501


        :return: The firmware_id of this Monitors.  # noqa: E501
        :rtype: float
        """
        return self._firmware_id

    @firmware_id.setter
    def firmware_id(self, firmware_id):
        """Sets the firmware_id of this Monitors.


        :param firmware_id: The firmware_id of this Monitors.  # noqa: E501
        :type: float
        """

        self._firmware_id = firmware_id

    @property
    def targets(self):
        """Gets the targets of this Monitors.  # noqa: E501


        :return: The targets of this Monitors.  # noqa: E501
        :rtype: list[str]
        """
        return self._targets

    @targets.setter
    def targets(self, targets):
        """Sets the targets of this Monitors.


        :param targets: The targets of this Monitors.  # noqa: E501
        :type: list[str]
        """

        self._targets = targets

    @property
    def version(self):
        """Gets the version of this Monitors.  # noqa: E501


        :return: The version of this Monitors.  # noqa: E501
        :rtype: str
        """
        return self._version

    @version.setter
    def version(self, version):
        """Sets the version of this Monitors.


        :param version: The version of this Monitors.  # noqa: E501
        :type: str
        """

        self._version = version

    @property
    def timestamp(self):
        """Gets the timestamp of this Monitors.  # noqa: E501


        :return: The timestamp of this Monitors.  # noqa: E501
        :rtype: str
        """
        return self._timestamp

    @timestamp.setter
    def timestamp(self, timestamp):
        """Sets the timestamp of this Monitors.


        :param timestamp: The timestamp of this Monitors.  # noqa: E501
        :type: str
        """

        self._timestamp = timestamp

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.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 pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, Monitors):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
