# coding: utf-8

"""
AsupUpdateRequest.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 AsupUpdateRequest(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self):
        """
        AsupUpdateRequest - 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 = {
            'enable': 'bool',  # (required parameter)
            'schedule_type_req': 'int',  # (required parameter)
            'week_days_req': 'list[int]',  
            'months_req': 'list[int]',  
            'scheduled_days_req': 'list[int]',  
            'delivery_type': 'int',  # (required parameter)
            'http_delivery_type': 'int',  
            'proxy_host_addr': 'str',  
            'proxy_host_port': 'str',  
            'auth_required': 'bool',  
            'auth_user_name': 'str',  
            'auth_password': 'str',  
            'proxy_script': 'str',  
            'mail_server': 'str',  
            'mail_sender_addr': 'str',  
            'mail_reply_addr': 'str'
        }

        self.attribute_map = {
            'enable': 'enable',  # (required parameter)
            'schedule_type_req': 'scheduleTypeReq',  # (required parameter)
            'week_days_req': 'weekDaysReq',  
            'months_req': 'monthsReq',  
            'scheduled_days_req': 'scheduledDaysReq',  
            'delivery_type': 'deliveryType',  # (required parameter)
            'http_delivery_type': 'httpDeliveryType',  
            'proxy_host_addr': 'proxyHostAddr',  
            'proxy_host_port': 'proxyHostPort',  
            'auth_required': 'authRequired',  
            'auth_user_name': 'authUserName',  
            'auth_password': 'authPassword',  
            'proxy_script': 'proxyScript',  
            'mail_server': 'mailServer',  
            'mail_sender_addr': 'mailSenderAddr',  
            'mail_reply_addr': 'mailReplyAddr'
        }

        self._enable = None
        self._schedule_type_req = None
        self._week_days_req = None
        self._months_req = None
        self._scheduled_days_req = None
        self._delivery_type = None
        self._http_delivery_type = None
        self._proxy_host_addr = None
        self._proxy_host_port = None
        self._auth_required = None
        self._auth_user_name = None
        self._auth_password = None
        self._proxy_script = None
        self._mail_server = None
        self._mail_sender_addr = None
        self._mail_reply_addr = None

    @property
    def enable(self):
        """
        Gets the enable of this AsupUpdateRequest.
        Enable or disable AutoSupport

        :return: The enable of this AsupUpdateRequest.
        :rtype: bool
        :required/optional: required
        """
        return self._enable

    @enable.setter
    def enable(self, enable):
        """
        Sets the enable of this AsupUpdateRequest.
        Enable or disable AutoSupport

        :param enable: The enable of this AsupUpdateRequest.
        :type: bool
        """
        self._enable = enable

    @property
    def schedule_type_req(self):
        """
        Gets the schedule_type_req of this AsupUpdateRequest.
        The schedule type

        :return: The schedule_type_req of this AsupUpdateRequest.
        :rtype: int
        :required/optional: required
        """
        return self._schedule_type_req

    @schedule_type_req.setter
    def schedule_type_req(self, schedule_type_req):
        """
        Sets the schedule_type_req of this AsupUpdateRequest.
        The schedule type

        :param schedule_type_req: The schedule_type_req of this AsupUpdateRequest.
        :type: int
        """
        self._schedule_type_req = schedule_type_req

    @property
    def week_days_req(self):
        """
        Gets the week_days_req of this AsupUpdateRequest.
        Days of the week

        :return: The week_days_req of this AsupUpdateRequest.
        :rtype: list[int]
        :required/optional: optional
        """
        return self._week_days_req

    @week_days_req.setter
    def week_days_req(self, week_days_req):
        """
        Sets the week_days_req of this AsupUpdateRequest.
        Days of the week

        :param week_days_req: The week_days_req of this AsupUpdateRequest.
        :type: list[int]
        """
        self._week_days_req = week_days_req

    @property
    def months_req(self):
        """
        Gets the months_req of this AsupUpdateRequest.
        Months

        :return: The months_req of this AsupUpdateRequest.
        :rtype: list[int]
        :required/optional: optional
        """
        return self._months_req

    @months_req.setter
    def months_req(self, months_req):
        """
        Sets the months_req of this AsupUpdateRequest.
        Months

        :param months_req: The months_req of this AsupUpdateRequest.
        :type: list[int]
        """
        self._months_req = months_req

    @property
    def scheduled_days_req(self):
        """
        Gets the scheduled_days_req of this AsupUpdateRequest.
        Days of the month

        :return: The scheduled_days_req of this AsupUpdateRequest.
        :rtype: list[int]
        :required/optional: optional
        """
        return self._scheduled_days_req

    @scheduled_days_req.setter
    def scheduled_days_req(self, scheduled_days_req):
        """
        Sets the scheduled_days_req of this AsupUpdateRequest.
        Days of the month

        :param scheduled_days_req: The scheduled_days_req of this AsupUpdateRequest.
        :type: list[int]
        """
        self._scheduled_days_req = scheduled_days_req

    @property
    def delivery_type(self):
        """
        Gets the delivery_type of this AsupUpdateRequest.
        Delivery method

        :return: The delivery_type of this AsupUpdateRequest.
        :rtype: int
        :required/optional: required
        """
        return self._delivery_type

    @delivery_type.setter
    def delivery_type(self, delivery_type):
        """
        Sets the delivery_type of this AsupUpdateRequest.
        Delivery method

        :param delivery_type: The delivery_type of this AsupUpdateRequest.
        :type: int
        """
        self._delivery_type = delivery_type

    @property
    def http_delivery_type(self):
        """
        Gets the http_delivery_type of this AsupUpdateRequest.
        Http delivery method

        :return: The http_delivery_type of this AsupUpdateRequest.
        :rtype: int
        :required/optional: optional
        """
        return self._http_delivery_type

    @http_delivery_type.setter
    def http_delivery_type(self, http_delivery_type):
        """
        Sets the http_delivery_type of this AsupUpdateRequest.
        Http delivery method

        :param http_delivery_type: The http_delivery_type of this AsupUpdateRequest.
        :type: int
        """
        self._http_delivery_type = http_delivery_type

    @property
    def proxy_host_addr(self):
        """
        Gets the proxy_host_addr of this AsupUpdateRequest.
        Proxy server address

        :return: The proxy_host_addr of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._proxy_host_addr

    @proxy_host_addr.setter
    def proxy_host_addr(self, proxy_host_addr):
        """
        Sets the proxy_host_addr of this AsupUpdateRequest.
        Proxy server address

        :param proxy_host_addr: The proxy_host_addr of this AsupUpdateRequest.
        :type: str
        """
        self._proxy_host_addr = proxy_host_addr

    @property
    def proxy_host_port(self):
        """
        Gets the proxy_host_port of this AsupUpdateRequest.
        Proxy server port

        :return: The proxy_host_port of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._proxy_host_port

    @proxy_host_port.setter
    def proxy_host_port(self, proxy_host_port):
        """
        Sets the proxy_host_port of this AsupUpdateRequest.
        Proxy server port

        :param proxy_host_port: The proxy_host_port of this AsupUpdateRequest.
        :type: str
        """
        self._proxy_host_port = proxy_host_port

    @property
    def auth_required(self):
        """
        Gets the auth_required of this AsupUpdateRequest.
        Authentication required

        :return: The auth_required of this AsupUpdateRequest.
        :rtype: bool
        :required/optional: optional
        """
        return self._auth_required

    @auth_required.setter
    def auth_required(self, auth_required):
        """
        Sets the auth_required of this AsupUpdateRequest.
        Authentication required

        :param auth_required: The auth_required of this AsupUpdateRequest.
        :type: bool
        """
        self._auth_required = auth_required

    @property
    def auth_user_name(self):
        """
        Gets the auth_user_name of this AsupUpdateRequest.
        Authentication username

        :return: The auth_user_name of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._auth_user_name

    @auth_user_name.setter
    def auth_user_name(self, auth_user_name):
        """
        Sets the auth_user_name of this AsupUpdateRequest.
        Authentication username

        :param auth_user_name: The auth_user_name of this AsupUpdateRequest.
        :type: str
        """
        self._auth_user_name = auth_user_name

    @property
    def auth_password(self):
        """
        Gets the auth_password of this AsupUpdateRequest.
        Authentication password

        :return: The auth_password of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._auth_password

    @auth_password.setter
    def auth_password(self, auth_password):
        """
        Sets the auth_password of this AsupUpdateRequest.
        Authentication password

        :param auth_password: The auth_password of this AsupUpdateRequest.
        :type: str
        """
        self._auth_password = auth_password

    @property
    def proxy_script(self):
        """
        Gets the proxy_script of this AsupUpdateRequest.
        Proxy configuration script

        :return: The proxy_script of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._proxy_script

    @proxy_script.setter
    def proxy_script(self, proxy_script):
        """
        Sets the proxy_script of this AsupUpdateRequest.
        Proxy configuration script

        :param proxy_script: The proxy_script of this AsupUpdateRequest.
        :type: str
        """
        self._proxy_script = proxy_script

    @property
    def mail_server(self):
        """
        Gets the mail_server of this AsupUpdateRequest.
        SMTP mail server

        :return: The mail_server of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._mail_server

    @mail_server.setter
    def mail_server(self, mail_server):
        """
        Sets the mail_server of this AsupUpdateRequest.
        SMTP mail server

        :param mail_server: The mail_server of this AsupUpdateRequest.
        :type: str
        """
        self._mail_server = mail_server

    @property
    def mail_sender_addr(self):
        """
        Gets the mail_sender_addr of this AsupUpdateRequest.
        Sender email address

        :return: The mail_sender_addr of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._mail_sender_addr

    @mail_sender_addr.setter
    def mail_sender_addr(self, mail_sender_addr):
        """
        Sets the mail_sender_addr of this AsupUpdateRequest.
        Sender email address

        :param mail_sender_addr: The mail_sender_addr of this AsupUpdateRequest.
        :type: str
        """
        self._mail_sender_addr = mail_sender_addr

    @property
    def mail_reply_addr(self):
        """
        Gets the mail_reply_addr of this AsupUpdateRequest.
        Reply email address

        :return: The mail_reply_addr of this AsupUpdateRequest.
        :rtype: str
        :required/optional: optional
        """
        return self._mail_reply_addr

    @mail_reply_addr.setter
    def mail_reply_addr(self, mail_reply_addr):
        """
        Sets the mail_reply_addr of this AsupUpdateRequest.
        Reply email address

        :param mail_reply_addr: The mail_reply_addr of this AsupUpdateRequest.
        :type: str
        """
        self._mail_reply_addr = mail_reply_addr

    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

