# 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 GetReverseProxiesDataSuccessArray(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[GetReverseProxiesLabelsSuccessArray]',
        'syslog_destinations': 'AddReverseProxySyslogDestinations',
        'logs': 'AddReverseProxySuccessDataLogs',
        'monitor': 'AddReverseProxyMonitor',
        't_update': 'float'
    }

    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',
        't_update': 'tUpdate'
    }

    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, t_update=None, local_vars_configuration=None):  # noqa: E501
        """GetReverseProxiesDataSuccessArray - 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._t_update = 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
        if t_update is not None:
            self.t_update = t_update

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


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

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


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

        self._appliance = appliance

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


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

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


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

        self._uid = uid

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


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

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


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

        self._name = name

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


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

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


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

        self._enabled = enabled

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


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

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


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

        self._healthcheck_uri = healthcheck_uri

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


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

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


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

        self._access_log = access_log

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


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

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


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

        self._advanced_parameters = advanced_parameters

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


        :return: The block_default_tunnel of this GetReverseProxiesDataSuccessArray.  # 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 GetReverseProxiesDataSuccessArray.


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

        self._block_default_tunnel = block_default_tunnel

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


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

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


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

        self._request_timeout = request_timeout

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


        :return: The no_log_on of this GetReverseProxiesDataSuccessArray.  # 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 GetReverseProxiesDataSuccessArray.


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

        self._no_log_on = no_log_on

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


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

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


        :param labels: The labels of this GetReverseProxiesDataSuccessArray.  # noqa: E501
        :type: list[GetReverseProxiesLabelsSuccessArray]
        """

        self._labels = labels

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


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

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


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

        self._syslog_destinations = syslog_destinations

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


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

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


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

        self._logs = logs

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


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

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


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

        self._monitor = monitor

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


        :return: The t_update of this GetReverseProxiesDataSuccessArray.  # noqa: E501
        :rtype: float
        """
        return self._t_update

    @t_update.setter
    def t_update(self, t_update):
        """Sets the t_update of this GetReverseProxiesDataSuccessArray.


        :param t_update: The t_update of this GetReverseProxiesDataSuccessArray.  # noqa: E501
        :type: float
        """

        self._t_update = t_update

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

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