# coding: utf-8

"""
    UBIKA WAAP Gateway and Cloud API

    The UBIKA's WAAP management API provides a REST/JSON programming interface. It allows automation and scripting of WAAP administration tasks, such as management of reverse proxies and tunnels. The API documentation is shipped with the product itself. Once the product installed, you can access the documentation on the following URL https://ManagementWAAP:3001/api/v1/doc/  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from ubika_waap_api_client.configuration import Configuration


class UpdateReverseProxySuccessData(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 = {
        'appliance': 'CreateApplianceSysctlProfile',
        'uid': 'str',
        'name': 'str',
        'enabled': 'bool',
        'healthcheck_uri': 'str',
        'access_log': 'CreateApplianceSysctlProfile',
        'advanced_parameters': 'CreateApplianceSysctlProfile',
        'block_default_tunnel': 'AddReverseProxyBlockDefaultTunnel',
        'request_timeout': 'CreateApplianceSysctlProfile',
        'no_log_on': 'AddReverseProxyNoLogOn',
        'labels': 'list[UpdateReverseProxyLabelsSuccessArray]',
        'syslog_destinations': 'AddReverseProxySyslogDestinations',
        'logs': 'AddReverseProxySuccessDataLogs',
        'monitor': 'AddReverseProxyMonitor'
    }

    attribute_map = {
        'appliance': 'appliance',
        'uid': 'uid',
        'name': 'name',
        'enabled': 'enabled',
        'healthcheck_uri': 'healthcheckURI',
        'access_log': 'accessLog',
        'advanced_parameters': 'advancedParameters',
        'block_default_tunnel': 'blockDefaultTunnel',
        'request_timeout': 'requestTimeout',
        'no_log_on': 'noLogOn',
        'labels': 'labels',
        'syslog_destinations': 'syslogDestinations',
        'logs': 'logs',
        'monitor': 'monitor'
    }

    def __init__(self, appliance=None, uid=None, name=None, enabled=None, healthcheck_uri=None, access_log=None, advanced_parameters=None, block_default_tunnel=None, request_timeout=None, no_log_on=None, labels=None, syslog_destinations=None, logs=None, monitor=None, local_vars_configuration=None):  # noqa: E501
        """UpdateReverseProxySuccessData - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._appliance = None
        self._uid = None
        self._name = None
        self._enabled = None
        self._healthcheck_uri = None
        self._access_log = None
        self._advanced_parameters = None
        self._block_default_tunnel = None
        self._request_timeout = None
        self._no_log_on = None
        self._labels = None
        self._syslog_destinations = None
        self._logs = None
        self._monitor = None
        self.discriminator = None

        if appliance is not None:
            self.appliance = appliance
        if uid is not None:
            self.uid = uid
        if name is not None:
            self.name = name
        if enabled is not None:
            self.enabled = enabled
        if healthcheck_uri is not None:
            self.healthcheck_uri = healthcheck_uri
        if access_log is not None:
            self.access_log = access_log
        if advanced_parameters is not None:
            self.advanced_parameters = advanced_parameters
        if block_default_tunnel is not None:
            self.block_default_tunnel = block_default_tunnel
        if request_timeout is not None:
            self.request_timeout = request_timeout
        if no_log_on is not None:
            self.no_log_on = no_log_on
        if labels is not None:
            self.labels = labels
        if syslog_destinations is not None:
            self.syslog_destinations = syslog_destinations
        if logs is not None:
            self.logs = logs
        if monitor is not None:
            self.monitor = monitor

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


        :return: The appliance of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._appliance

    @appliance.setter
    def appliance(self, appliance):
        """Sets the appliance of this UpdateReverseProxySuccessData.


        :param appliance: The appliance of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._appliance = appliance

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


        :return: The uid of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: str
        """
        return self._uid

    @uid.setter
    def uid(self, uid):
        """Sets the uid of this UpdateReverseProxySuccessData.


        :param uid: The uid of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: str
        """

        self._uid = uid

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


        :return: The name of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this UpdateReverseProxySuccessData.


        :param name: The name of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: str
        """

        self._name = name

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


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

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


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

        self._enabled = enabled

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


        :return: The healthcheck_uri of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: str
        """
        return self._healthcheck_uri

    @healthcheck_uri.setter
    def healthcheck_uri(self, healthcheck_uri):
        """Sets the healthcheck_uri of this UpdateReverseProxySuccessData.


        :param healthcheck_uri: The healthcheck_uri of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: str
        """

        self._healthcheck_uri = healthcheck_uri

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


        :return: The access_log of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._access_log

    @access_log.setter
    def access_log(self, access_log):
        """Sets the access_log of this UpdateReverseProxySuccessData.


        :param access_log: The access_log of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._access_log = access_log

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


        :return: The advanced_parameters of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._advanced_parameters

    @advanced_parameters.setter
    def advanced_parameters(self, advanced_parameters):
        """Sets the advanced_parameters of this UpdateReverseProxySuccessData.


        :param advanced_parameters: The advanced_parameters of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._advanced_parameters = advanced_parameters

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


        :return: The block_default_tunnel of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: AddReverseProxyBlockDefaultTunnel
        """
        return self._block_default_tunnel

    @block_default_tunnel.setter
    def block_default_tunnel(self, block_default_tunnel):
        """Sets the block_default_tunnel of this UpdateReverseProxySuccessData.


        :param block_default_tunnel: The block_default_tunnel of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: AddReverseProxyBlockDefaultTunnel
        """

        self._block_default_tunnel = block_default_tunnel

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


        :return: The request_timeout of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._request_timeout

    @request_timeout.setter
    def request_timeout(self, request_timeout):
        """Sets the request_timeout of this UpdateReverseProxySuccessData.


        :param request_timeout: The request_timeout of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._request_timeout = request_timeout

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


        :return: The no_log_on of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: AddReverseProxyNoLogOn
        """
        return self._no_log_on

    @no_log_on.setter
    def no_log_on(self, no_log_on):
        """Sets the no_log_on of this UpdateReverseProxySuccessData.


        :param no_log_on: The no_log_on of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: AddReverseProxyNoLogOn
        """

        self._no_log_on = no_log_on

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


        :return: The labels of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: list[UpdateReverseProxyLabelsSuccessArray]
        """
        return self._labels

    @labels.setter
    def labels(self, labels):
        """Sets the labels of this UpdateReverseProxySuccessData.


        :param labels: The labels of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: list[UpdateReverseProxyLabelsSuccessArray]
        """

        self._labels = labels

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


        :return: The syslog_destinations of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: AddReverseProxySyslogDestinations
        """
        return self._syslog_destinations

    @syslog_destinations.setter
    def syslog_destinations(self, syslog_destinations):
        """Sets the syslog_destinations of this UpdateReverseProxySuccessData.


        :param syslog_destinations: The syslog_destinations of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: AddReverseProxySyslogDestinations
        """

        self._syslog_destinations = syslog_destinations

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


        :return: The logs of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: AddReverseProxySuccessDataLogs
        """
        return self._logs

    @logs.setter
    def logs(self, logs):
        """Sets the logs of this UpdateReverseProxySuccessData.


        :param logs: The logs of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: AddReverseProxySuccessDataLogs
        """

        self._logs = logs

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


        :return: The monitor of this UpdateReverseProxySuccessData.  # noqa: E501
        :rtype: AddReverseProxyMonitor
        """
        return self._monitor

    @monitor.setter
    def monitor(self, monitor):
        """Sets the monitor of this UpdateReverseProxySuccessData.


        :param monitor: The monitor of this UpdateReverseProxySuccessData.  # noqa: E501
        :type: AddReverseProxyMonitor
        """

        self._monitor = monitor

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

        for attr, _ in six.iteritems(self.openapi_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 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, UpdateReverseProxySuccessData):
            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, UpdateReverseProxySuccessData):
            return True

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