# coding: utf-8

"""
    Command Center operations

    Command Center operations  # noqa: E501

    OpenAPI spec version: 23.03-sp1
    Contact: support@zadarastorage.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from CommandCenter.configuration import Configuration


class SetSnmp(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 = {
        'enabled': 'bool',
        'min_severity': 'str',
        'trap_recipient': 'str',
        'proto_version': 'str',
        'community': 'str',
        'security_level': 'str',
        'auth_proto': 'str',
        'auth_user': 'str',
        'auth_password': 'str',
        'privacy_proto': 'str',
        'privacy_password': 'str'
    }

    attribute_map = {
        'enabled': 'enabled',
        'min_severity': 'min_severity',
        'trap_recipient': 'trap_recipient',
        'proto_version': 'proto_version',
        'community': 'community',
        'security_level': 'security_level',
        'auth_proto': 'auth_proto',
        'auth_user': 'auth_user',
        'auth_password': 'auth_password',
        'privacy_proto': 'privacy_proto',
        'privacy_password': 'privacy_password'
    }

    def __init__(self, enabled=None, min_severity=None, trap_recipient=None, proto_version=None, community=None, security_level=None, auth_proto=None, auth_user=None, auth_password=None, privacy_proto=None, privacy_password=None, _configuration=None):  # noqa: E501
        """SetSnmp - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._enabled = None
        self._min_severity = None
        self._trap_recipient = None
        self._proto_version = None
        self._community = None
        self._security_level = None
        self._auth_proto = None
        self._auth_user = None
        self._auth_password = None
        self._privacy_proto = None
        self._privacy_password = None
        self.discriminator = None

        if enabled is not None:
            self.enabled = enabled
        if min_severity is not None:
            self.min_severity = min_severity
        self.trap_recipient = trap_recipient
        self.proto_version = proto_version
        self.community = community
        self.security_level = security_level
        if auth_proto is not None:
            self.auth_proto = auth_proto
        if auth_user is not None:
            self.auth_user = auth_user
        if auth_password is not None:
            self.auth_password = auth_password
        if privacy_proto is not None:
            self.privacy_proto = privacy_proto
        if privacy_password is not None:
            self.privacy_password = privacy_password

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


        :return: The enabled of this SetSnmp.  # noqa: E501
        :rtype: bool
        """
        return self._enabled

    @enabled.setter
    def enabled(self, enabled):
        """Sets the enabled of this SetSnmp.


        :param enabled: The enabled of this SetSnmp.  # noqa: E501
        :type: bool
        """

        self._enabled = enabled

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


        :return: The min_severity of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._min_severity

    @min_severity.setter
    def min_severity(self, min_severity):
        """Sets the min_severity of this SetSnmp.


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

        self._min_severity = min_severity

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


        :return: The trap_recipient of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._trap_recipient

    @trap_recipient.setter
    def trap_recipient(self, trap_recipient):
        """Sets the trap_recipient of this SetSnmp.


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

        self._trap_recipient = trap_recipient

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


        :return: The proto_version of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._proto_version

    @proto_version.setter
    def proto_version(self, proto_version):
        """Sets the proto_version of this SetSnmp.


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

        self._proto_version = proto_version

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


        :return: The community of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._community

    @community.setter
    def community(self, community):
        """Sets the community of this SetSnmp.


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

        self._community = community

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


        :return: The security_level of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._security_level

    @security_level.setter
    def security_level(self, security_level):
        """Sets the security_level of this SetSnmp.


        :param security_level: The security_level of this SetSnmp.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and security_level is None:
            raise ValueError("Invalid value for `security_level`, must not be `None`")  # noqa: E501
        allowed_values = ["NoAuthNoPriv", "AuthNoPriv", "AuthPriv"]  # noqa: E501
        if (self._configuration.client_side_validation and
                security_level not in allowed_values):
            raise ValueError(
                "Invalid value for `security_level` ({0}), must be one of {1}"  # noqa: E501
                .format(security_level, allowed_values)
            )

        self._security_level = security_level

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


        :return: The auth_proto of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._auth_proto

    @auth_proto.setter
    def auth_proto(self, auth_proto):
        """Sets the auth_proto of this SetSnmp.


        :param auth_proto: The auth_proto of this SetSnmp.  # noqa: E501
        :type: str
        """
        allowed_values = ["MD5", "SHA-1", "SHA-2-224", "SHA-2-256", "SHA-2-384", "SHA2-2-512"]  # noqa: E501
        if (self._configuration.client_side_validation and
                auth_proto not in allowed_values):
            raise ValueError(
                "Invalid value for `auth_proto` ({0}), must be one of {1}"  # noqa: E501
                .format(auth_proto, allowed_values)
            )

        self._auth_proto = auth_proto

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


        :return: The auth_user of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._auth_user

    @auth_user.setter
    def auth_user(self, auth_user):
        """Sets the auth_user of this SetSnmp.


        :param auth_user: The auth_user of this SetSnmp.  # noqa: E501
        :type: str
        """

        self._auth_user = auth_user

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


        :return: The auth_password of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._auth_password

    @auth_password.setter
    def auth_password(self, auth_password):
        """Sets the auth_password of this SetSnmp.


        :param auth_password: The auth_password of this SetSnmp.  # noqa: E501
        :type: str
        """

        self._auth_password = auth_password

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


        :return: The privacy_proto of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._privacy_proto

    @privacy_proto.setter
    def privacy_proto(self, privacy_proto):
        """Sets the privacy_proto of this SetSnmp.


        :param privacy_proto: The privacy_proto of this SetSnmp.  # noqa: E501
        :type: str
        """
        allowed_values = ["DES", "AES128", "AES192", "AES256", "3DES"]  # noqa: E501
        if (self._configuration.client_side_validation and
                privacy_proto not in allowed_values):
            raise ValueError(
                "Invalid value for `privacy_proto` ({0}), must be one of {1}"  # noqa: E501
                .format(privacy_proto, allowed_values)
            )

        self._privacy_proto = privacy_proto

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


        :return: The privacy_password of this SetSnmp.  # noqa: E501
        :rtype: str
        """
        return self._privacy_password

    @privacy_password.setter
    def privacy_password(self, privacy_password):
        """Sets the privacy_password of this SetSnmp.


        :param privacy_password: The privacy_password of this SetSnmp.  # noqa: E501
        :type: str
        """

        self._privacy_password = privacy_password

    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(SetSnmp, 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, SetSnmp):
            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, SetSnmp):
            return True

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