# coding: utf-8

"""
    Kubernetes

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: release-1.36
    Generated by: https://openapi-generator.tech
"""


try:
    from inspect import getfullargspec
except ImportError:
    from inspect import getargspec as getfullargspec
import pprint
import re  # noqa: F401
import six

from kubernetes.client.configuration import Configuration


class V1alpha3ResourcePoolStatusRequestSpec(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'driver': 'str',
        'limit': 'int',
        'pool_name': 'str'
    }

    attribute_map = {
        'driver': 'driver',
        'limit': 'limit',
        'pool_name': 'poolName'
    }

    def __init__(self, driver=None, limit=None, pool_name=None, local_vars_configuration=None):  # noqa: E501
        """V1alpha3ResourcePoolStatusRequestSpec - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration.get_default_copy()
        self.local_vars_configuration = local_vars_configuration

        self._driver = None
        self._limit = None
        self._pool_name = None
        self.discriminator = None

        self.driver = driver
        if limit is not None:
            self.limit = limit
        if pool_name is not None:
            self.pool_name = pool_name

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

        Driver specifies the DRA driver name to filter pools. Only pools from ResourceSlices with this driver will be included. Must be a DNS subdomain (e.g., \"gpu.example.com\").  # noqa: E501

        :return: The driver of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :rtype: str
        """
        return self._driver

    @driver.setter
    def driver(self, driver):
        """Sets the driver of this V1alpha3ResourcePoolStatusRequestSpec.

        Driver specifies the DRA driver name to filter pools. Only pools from ResourceSlices with this driver will be included. Must be a DNS subdomain (e.g., \"gpu.example.com\").  # noqa: E501

        :param driver: The driver of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :type driver: str
        """
        if self.local_vars_configuration.client_side_validation and driver is None:  # noqa: E501
            raise ValueError("Invalid value for `driver`, must not be `None`")  # noqa: E501

        self._driver = driver

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

        Limit optionally specifies the maximum number of pools to return in the status. If more pools match the filter criteria, the response will be truncated (i.e., len(status.pools) < status.poolCount).  Default: 100 Minimum: 1 Maximum: 1000  # noqa: E501

        :return: The limit of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :rtype: int
        """
        return self._limit

    @limit.setter
    def limit(self, limit):
        """Sets the limit of this V1alpha3ResourcePoolStatusRequestSpec.

        Limit optionally specifies the maximum number of pools to return in the status. If more pools match the filter criteria, the response will be truncated (i.e., len(status.pools) < status.poolCount).  Default: 100 Minimum: 1 Maximum: 1000  # noqa: E501

        :param limit: The limit of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :type limit: int
        """

        self._limit = limit

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

        PoolName optionally filters to a specific pool name. If not specified, all pools from the specified driver are included. When specified, must be a non-empty valid resource pool name (DNS subdomains separated by \"/\").  # noqa: E501

        :return: The pool_name of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :rtype: str
        """
        return self._pool_name

    @pool_name.setter
    def pool_name(self, pool_name):
        """Sets the pool_name of this V1alpha3ResourcePoolStatusRequestSpec.

        PoolName optionally filters to a specific pool name. If not specified, all pools from the specified driver are included. When specified, must be a non-empty valid resource pool name (DNS subdomains separated by \"/\").  # noqa: E501

        :param pool_name: The pool_name of this V1alpha3ResourcePoolStatusRequestSpec.  # noqa: E501
        :type pool_name: str
        """

        self._pool_name = pool_name

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

        def convert(x):
            if hasattr(x, "to_dict"):
                args = getfullargspec(x.to_dict).args
                if len(args) == 1:
                    return x.to_dict()
                else:
                    return x.to_dict(serialize)
            else:
                return x

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            attr = self.attribute_map.get(attr, attr) if serialize else attr
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: convert(x),
                    value
                ))
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], convert(item[1])),
                    value.items()
                ))
            else:
                result[attr] = convert(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, V1alpha3ResourcePoolStatusRequestSpec):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
