# coding: utf-8

"""
PITGroupsDefaultAttributes.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 PITGroupsDefaultAttributes(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        PITGroupsDefaultAttributes - 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 = {
            'max_views_per_pit': 'int',  # (required parameter)
            'minimum_repository_capacity_in_bytes': 'int',  # (required parameter)
            'max_pit_group_repository_capacity_as_percent_of_base_capacity': 'int',  # (required parameter)
            'max_pit_view_repository_capacity_as_percent_of_base_capacity': 'int',  # (required parameter)
            'default_repository_capacity_as_percent_of_base_capacity': 'int',  # (required parameter)
            'default_repository_utilization_warning_threshold': 'int',  # (required parameter)
            'minimum_concat_volume_capacity_expansion': 'int'
        }

        self.attribute_map = {
            'max_views_per_pit': 'maxViewsPerPIT',  # (required parameter)
            'minimum_repository_capacity_in_bytes': 'minimumRepositoryCapacityInBytes',  # (required parameter)
            'max_pit_group_repository_capacity_as_percent_of_base_capacity': 'maxPITGroupRepositoryCapacityAsPercentOfBaseCapacity',  # (required parameter)
            'max_pit_view_repository_capacity_as_percent_of_base_capacity': 'maxPITViewRepositoryCapacityAsPercentOfBaseCapacity',  # (required parameter)
            'default_repository_capacity_as_percent_of_base_capacity': 'defaultRepositoryCapacityAsPercentOfBaseCapacity',  # (required parameter)
            'default_repository_utilization_warning_threshold': 'defaultRepositoryUtilizationWarningThreshold',  # (required parameter)
            'minimum_concat_volume_capacity_expansion': 'minimumConcatVolumeCapacityExpansion'
        }

        self._max_views_per_pit = None
        self._minimum_repository_capacity_in_bytes = None
        self._max_pit_group_repository_capacity_as_percent_of_base_capacity = None
        self._max_pit_view_repository_capacity_as_percent_of_base_capacity = None
        self._default_repository_capacity_as_percent_of_base_capacity = None
        self._default_repository_utilization_warning_threshold = None
        self._minimum_concat_volume_capacity_expansion = None

    @property
    def max_views_per_pit(self):
        """
        Gets the max_views_per_pit of this PITGroupsDefaultAttributes.
        The maximum number of views per PiT.

        :return: The max_views_per_pit of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._max_views_per_pit

    @max_views_per_pit.setter
    def max_views_per_pit(self, max_views_per_pit):
        """
        Sets the max_views_per_pit of this PITGroupsDefaultAttributes.
        The maximum number of views per PiT.

        :param max_views_per_pit: The max_views_per_pit of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._max_views_per_pit = max_views_per_pit

    @property
    def minimum_repository_capacity_in_bytes(self):
        """
        Gets the minimum_repository_capacity_in_bytes of this PITGroupsDefaultAttributes.
        The minimum repository size (in bytes) for PiT Group or PiT View repository. Note that this is the absolute floor on the repository capacity, but a slightly higher minimum may be imposed based on the capacity of the base volume. This is necessary to ensure rollback operations have sufficient repository capacity for metadata.

        :return: The minimum_repository_capacity_in_bytes of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._minimum_repository_capacity_in_bytes

    @minimum_repository_capacity_in_bytes.setter
    def minimum_repository_capacity_in_bytes(self, minimum_repository_capacity_in_bytes):
        """
        Sets the minimum_repository_capacity_in_bytes of this PITGroupsDefaultAttributes.
        The minimum repository size (in bytes) for PiT Group or PiT View repository. Note that this is the absolute floor on the repository capacity, but a slightly higher minimum may be imposed based on the capacity of the base volume. This is necessary to ensure rollback operations have sufficient repository capacity for metadata.

        :param minimum_repository_capacity_in_bytes: The minimum_repository_capacity_in_bytes of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._minimum_repository_capacity_in_bytes = minimum_repository_capacity_in_bytes

    @property
    def max_pit_group_repository_capacity_as_percent_of_base_capacity(self):
        """
        Gets the max_pit_group_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Maximum repository size for a PiT group as a percentage of the base volume capacity.

        :return: The max_pit_group_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._max_pit_group_repository_capacity_as_percent_of_base_capacity

    @max_pit_group_repository_capacity_as_percent_of_base_capacity.setter
    def max_pit_group_repository_capacity_as_percent_of_base_capacity(self, max_pit_group_repository_capacity_as_percent_of_base_capacity):
        """
        Sets the max_pit_group_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Maximum repository size for a PiT group as a percentage of the base volume capacity.

        :param max_pit_group_repository_capacity_as_percent_of_base_capacity: The max_pit_group_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._max_pit_group_repository_capacity_as_percent_of_base_capacity = max_pit_group_repository_capacity_as_percent_of_base_capacity

    @property
    def max_pit_view_repository_capacity_as_percent_of_base_capacity(self):
        """
        Gets the max_pit_view_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Maximum repository size for a PiT View as a percentage of the base volume capacity.

        :return: The max_pit_view_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._max_pit_view_repository_capacity_as_percent_of_base_capacity

    @max_pit_view_repository_capacity_as_percent_of_base_capacity.setter
    def max_pit_view_repository_capacity_as_percent_of_base_capacity(self, max_pit_view_repository_capacity_as_percent_of_base_capacity):
        """
        Sets the max_pit_view_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Maximum repository size for a PiT View as a percentage of the base volume capacity.

        :param max_pit_view_repository_capacity_as_percent_of_base_capacity: The max_pit_view_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._max_pit_view_repository_capacity_as_percent_of_base_capacity = max_pit_view_repository_capacity_as_percent_of_base_capacity

    @property
    def default_repository_capacity_as_percent_of_base_capacity(self):
        """
        Gets the default_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Default repository capacity for PiT View or PiT Group as a percentage of the base volume capacity.

        :return: The default_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._default_repository_capacity_as_percent_of_base_capacity

    @default_repository_capacity_as_percent_of_base_capacity.setter
    def default_repository_capacity_as_percent_of_base_capacity(self, default_repository_capacity_as_percent_of_base_capacity):
        """
        Sets the default_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        Default repository capacity for PiT View or PiT Group as a percentage of the base volume capacity.

        :param default_repository_capacity_as_percent_of_base_capacity: The default_repository_capacity_as_percent_of_base_capacity of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._default_repository_capacity_as_percent_of_base_capacity = default_repository_capacity_as_percent_of_base_capacity

    @property
    def default_repository_utilization_warning_threshold(self):
        """
        Gets the default_repository_utilization_warning_threshold of this PITGroupsDefaultAttributes.
        Default repository utilization warning threshold percentage.

        :return: The default_repository_utilization_warning_threshold of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._default_repository_utilization_warning_threshold

    @default_repository_utilization_warning_threshold.setter
    def default_repository_utilization_warning_threshold(self, default_repository_utilization_warning_threshold):
        """
        Sets the default_repository_utilization_warning_threshold of this PITGroupsDefaultAttributes.
        Default repository utilization warning threshold percentage.

        :param default_repository_utilization_warning_threshold: The default_repository_utilization_warning_threshold of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._default_repository_utilization_warning_threshold = default_repository_utilization_warning_threshold

    @property
    def minimum_concat_volume_capacity_expansion(self):
        """
        Gets the minimum_concat_volume_capacity_expansion of this PITGroupsDefaultAttributes.
        Minimum capacity (in bytes) of a volume to be added to a ConcatVolume for expansion.

        :return: The minimum_concat_volume_capacity_expansion of this PITGroupsDefaultAttributes.
        :rtype: int
        :required/optional: required
        """
        return self._minimum_concat_volume_capacity_expansion

    @minimum_concat_volume_capacity_expansion.setter
    def minimum_concat_volume_capacity_expansion(self, minimum_concat_volume_capacity_expansion):
        """
        Sets the minimum_concat_volume_capacity_expansion of this PITGroupsDefaultAttributes.
        Minimum capacity (in bytes) of a volume to be added to a ConcatVolume for expansion.

        :param minimum_concat_volume_capacity_expansion: The minimum_concat_volume_capacity_expansion of this PITGroupsDefaultAttributes.
        :type: int
        """
        self._minimum_concat_volume_capacity_expansion = minimum_concat_volume_capacity_expansion

    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

