# coding: utf-8

"""
    vke

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from volcenginesdkcore.configuration import Configuration


class KubeletConfigForUpdateNodePoolConfigInput(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 = {
        'cpu_manager_policy': 'str',
        'eviction_hard': 'list[EvictionHardForUpdateNodePoolConfigInput]',
        'feature_gates': 'FeatureGatesForUpdateNodePoolConfigInput',
        'kube_api_burst': 'int',
        'kube_api_qps': 'int',
        'kube_reserved': 'list[KubeReservedForUpdateNodePoolConfigInput]',
        'max_pods': 'int',
        'registry_burst': 'int',
        'registry_pull_qps': 'int',
        'serialize_image_pulls': 'bool',
        'system_reserved': 'list[SystemReservedForUpdateNodePoolConfigInput]',
        'topology_manager_policy': 'str',
        'topology_manager_scope': 'str'
    }

    attribute_map = {
        'cpu_manager_policy': 'CpuManagerPolicy',
        'eviction_hard': 'EvictionHard',
        'feature_gates': 'FeatureGates',
        'kube_api_burst': 'KubeApiBurst',
        'kube_api_qps': 'KubeApiQps',
        'kube_reserved': 'KubeReserved',
        'max_pods': 'MaxPods',
        'registry_burst': 'RegistryBurst',
        'registry_pull_qps': 'RegistryPullQps',
        'serialize_image_pulls': 'SerializeImagePulls',
        'system_reserved': 'SystemReserved',
        'topology_manager_policy': 'TopologyManagerPolicy',
        'topology_manager_scope': 'TopologyManagerScope'
    }

    def __init__(self, cpu_manager_policy=None, eviction_hard=None, feature_gates=None, kube_api_burst=None, kube_api_qps=None, kube_reserved=None, max_pods=None, registry_burst=None, registry_pull_qps=None, serialize_image_pulls=None, system_reserved=None, topology_manager_policy=None, topology_manager_scope=None, _configuration=None):  # noqa: E501
        """KubeletConfigForUpdateNodePoolConfigInput - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._cpu_manager_policy = None
        self._eviction_hard = None
        self._feature_gates = None
        self._kube_api_burst = None
        self._kube_api_qps = None
        self._kube_reserved = None
        self._max_pods = None
        self._registry_burst = None
        self._registry_pull_qps = None
        self._serialize_image_pulls = None
        self._system_reserved = None
        self._topology_manager_policy = None
        self._topology_manager_scope = None
        self.discriminator = None

        if cpu_manager_policy is not None:
            self.cpu_manager_policy = cpu_manager_policy
        if eviction_hard is not None:
            self.eviction_hard = eviction_hard
        if feature_gates is not None:
            self.feature_gates = feature_gates
        if kube_api_burst is not None:
            self.kube_api_burst = kube_api_burst
        if kube_api_qps is not None:
            self.kube_api_qps = kube_api_qps
        if kube_reserved is not None:
            self.kube_reserved = kube_reserved
        if max_pods is not None:
            self.max_pods = max_pods
        if registry_burst is not None:
            self.registry_burst = registry_burst
        if registry_pull_qps is not None:
            self.registry_pull_qps = registry_pull_qps
        if serialize_image_pulls is not None:
            self.serialize_image_pulls = serialize_image_pulls
        if system_reserved is not None:
            self.system_reserved = system_reserved
        if topology_manager_policy is not None:
            self.topology_manager_policy = topology_manager_policy
        if topology_manager_scope is not None:
            self.topology_manager_scope = topology_manager_scope

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


        :return: The cpu_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: str
        """
        return self._cpu_manager_policy

    @cpu_manager_policy.setter
    def cpu_manager_policy(self, cpu_manager_policy):
        """Sets the cpu_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.


        :param cpu_manager_policy: The cpu_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: str
        """
        allowed_values = ["none", "static"]  # noqa: E501
        if (self._configuration.client_side_validation and
                cpu_manager_policy not in allowed_values):
            raise ValueError(
                "Invalid value for `cpu_manager_policy` ({0}), must be one of {1}"  # noqa: E501
                .format(cpu_manager_policy, allowed_values)
            )

        self._cpu_manager_policy = cpu_manager_policy

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


        :return: The eviction_hard of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: list[EvictionHardForUpdateNodePoolConfigInput]
        """
        return self._eviction_hard

    @eviction_hard.setter
    def eviction_hard(self, eviction_hard):
        """Sets the eviction_hard of this KubeletConfigForUpdateNodePoolConfigInput.


        :param eviction_hard: The eviction_hard of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: list[EvictionHardForUpdateNodePoolConfigInput]
        """

        self._eviction_hard = eviction_hard

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


        :return: The feature_gates of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: FeatureGatesForUpdateNodePoolConfigInput
        """
        return self._feature_gates

    @feature_gates.setter
    def feature_gates(self, feature_gates):
        """Sets the feature_gates of this KubeletConfigForUpdateNodePoolConfigInput.


        :param feature_gates: The feature_gates of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: FeatureGatesForUpdateNodePoolConfigInput
        """

        self._feature_gates = feature_gates

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


        :return: The kube_api_burst of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: int
        """
        return self._kube_api_burst

    @kube_api_burst.setter
    def kube_api_burst(self, kube_api_burst):
        """Sets the kube_api_burst of this KubeletConfigForUpdateNodePoolConfigInput.


        :param kube_api_burst: The kube_api_burst of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: int
        """

        self._kube_api_burst = kube_api_burst

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


        :return: The kube_api_qps of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: int
        """
        return self._kube_api_qps

    @kube_api_qps.setter
    def kube_api_qps(self, kube_api_qps):
        """Sets the kube_api_qps of this KubeletConfigForUpdateNodePoolConfigInput.


        :param kube_api_qps: The kube_api_qps of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: int
        """

        self._kube_api_qps = kube_api_qps

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


        :return: The kube_reserved of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: list[KubeReservedForUpdateNodePoolConfigInput]
        """
        return self._kube_reserved

    @kube_reserved.setter
    def kube_reserved(self, kube_reserved):
        """Sets the kube_reserved of this KubeletConfigForUpdateNodePoolConfigInput.


        :param kube_reserved: The kube_reserved of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: list[KubeReservedForUpdateNodePoolConfigInput]
        """

        self._kube_reserved = kube_reserved

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


        :return: The max_pods of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: int
        """
        return self._max_pods

    @max_pods.setter
    def max_pods(self, max_pods):
        """Sets the max_pods of this KubeletConfigForUpdateNodePoolConfigInput.


        :param max_pods: The max_pods of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: int
        """

        self._max_pods = max_pods

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


        :return: The registry_burst of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: int
        """
        return self._registry_burst

    @registry_burst.setter
    def registry_burst(self, registry_burst):
        """Sets the registry_burst of this KubeletConfigForUpdateNodePoolConfigInput.


        :param registry_burst: The registry_burst of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: int
        """

        self._registry_burst = registry_burst

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


        :return: The registry_pull_qps of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: int
        """
        return self._registry_pull_qps

    @registry_pull_qps.setter
    def registry_pull_qps(self, registry_pull_qps):
        """Sets the registry_pull_qps of this KubeletConfigForUpdateNodePoolConfigInput.


        :param registry_pull_qps: The registry_pull_qps of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: int
        """

        self._registry_pull_qps = registry_pull_qps

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


        :return: The serialize_image_pulls of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: bool
        """
        return self._serialize_image_pulls

    @serialize_image_pulls.setter
    def serialize_image_pulls(self, serialize_image_pulls):
        """Sets the serialize_image_pulls of this KubeletConfigForUpdateNodePoolConfigInput.


        :param serialize_image_pulls: The serialize_image_pulls of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: bool
        """

        self._serialize_image_pulls = serialize_image_pulls

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


        :return: The system_reserved of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: list[SystemReservedForUpdateNodePoolConfigInput]
        """
        return self._system_reserved

    @system_reserved.setter
    def system_reserved(self, system_reserved):
        """Sets the system_reserved of this KubeletConfigForUpdateNodePoolConfigInput.


        :param system_reserved: The system_reserved of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: list[SystemReservedForUpdateNodePoolConfigInput]
        """

        self._system_reserved = system_reserved

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


        :return: The topology_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: str
        """
        return self._topology_manager_policy

    @topology_manager_policy.setter
    def topology_manager_policy(self, topology_manager_policy):
        """Sets the topology_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.


        :param topology_manager_policy: The topology_manager_policy of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: str
        """
        allowed_values = ["restricted", "best-effort", "none", "single-numa-node"]  # noqa: E501
        if (self._configuration.client_side_validation and
                topology_manager_policy not in allowed_values):
            raise ValueError(
                "Invalid value for `topology_manager_policy` ({0}), must be one of {1}"  # noqa: E501
                .format(topology_manager_policy, allowed_values)
            )

        self._topology_manager_policy = topology_manager_policy

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


        :return: The topology_manager_scope of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :rtype: str
        """
        return self._topology_manager_scope

    @topology_manager_scope.setter
    def topology_manager_scope(self, topology_manager_scope):
        """Sets the topology_manager_scope of this KubeletConfigForUpdateNodePoolConfigInput.


        :param topology_manager_scope: The topology_manager_scope of this KubeletConfigForUpdateNodePoolConfigInput.  # noqa: E501
        :type: str
        """
        allowed_values = ["pod", "container"]  # noqa: E501
        if (self._configuration.client_side_validation and
                topology_manager_scope not in allowed_values):
            raise ValueError(
                "Invalid value for `topology_manager_scope` ({0}), must be one of {1}"  # noqa: E501
                .format(topology_manager_scope, allowed_values)
            )

        self._topology_manager_scope = topology_manager_scope

    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
        if issubclass(KubeletConfigForUpdateNodePoolConfigInput, dict):
            for key, value in self.items():
                result[key] = 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, KubeletConfigForUpdateNodePoolConfigInput):
            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, KubeletConfigForUpdateNodePoolConfigInput):
            return True

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