# 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 CreateApplianceSuccessData(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 = {
        'uid': 'str',
        'name': 'str',
        'role': 'str',
        'autoscale': 'bool',
        'admin_ip': 'str',
        'admin_port': 'int',
        'location': 'str',
        'contact': 'str',
        'os_version': 'str',
        'ssh': 'CreateApplianceSuccessDataSsh',
        'dns': 'CreateApplianceSuccessDataDns',
        'snmp': 'CreateApplianceSuccessDataSnmp',
        'hosts': 'CreateApplianceSuccessDataHosts',
        'network_devices': 'list[CreateApplianceNetworkDevicesSuccessArray]',
        'sysctl_profile': 'CreateApplianceSysctlProfile',
        't_update': 'float'
    }

    attribute_map = {
        'uid': 'uid',
        'name': 'name',
        'role': 'role',
        'autoscale': 'autoscale',
        'admin_ip': 'adminIp',
        'admin_port': 'adminPort',
        'location': 'location',
        'contact': 'contact',
        'os_version': 'osVersion',
        'ssh': 'ssh',
        'dns': 'dns',
        'snmp': 'snmp',
        'hosts': 'hosts',
        'network_devices': 'networkDevices',
        'sysctl_profile': 'sysctlProfile',
        't_update': 'tUpdate'
    }

    def __init__(self, uid=None, name=None, role=None, autoscale=None, admin_ip=None, admin_port=None, location=None, contact=None, os_version=None, ssh=None, dns=None, snmp=None, hosts=None, network_devices=None, sysctl_profile=None, t_update=None, local_vars_configuration=None):  # noqa: E501
        """CreateApplianceSuccessData - 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._uid = None
        self._name = None
        self._role = None
        self._autoscale = None
        self._admin_ip = None
        self._admin_port = None
        self._location = None
        self._contact = None
        self._os_version = None
        self._ssh = None
        self._dns = None
        self._snmp = None
        self._hosts = None
        self._network_devices = None
        self._sysctl_profile = None
        self._t_update = None
        self.discriminator = None

        if uid is not None:
            self.uid = uid
        if name is not None:
            self.name = name
        if role is not None:
            self.role = role
        if autoscale is not None:
            self.autoscale = autoscale
        if admin_ip is not None:
            self.admin_ip = admin_ip
        if admin_port is not None:
            self.admin_port = admin_port
        if location is not None:
            self.location = location
        if contact is not None:
            self.contact = contact
        if os_version is not None:
            self.os_version = os_version
        if ssh is not None:
            self.ssh = ssh
        if dns is not None:
            self.dns = dns
        if snmp is not None:
            self.snmp = snmp
        if hosts is not None:
            self.hosts = hosts
        if network_devices is not None:
            self.network_devices = network_devices
        if sysctl_profile is not None:
            self.sysctl_profile = sysctl_profile
        if t_update is not None:
            self.t_update = t_update

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


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

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


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

        self._uid = uid

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


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

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


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

        self._name = name

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


        :return: The role of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: str
        """
        return self._role

    @role.setter
    def role(self, role):
        """Sets the role of this CreateApplianceSuccessData.


        :param role: The role of this CreateApplianceSuccessData.  # noqa: E501
        :type: str
        """

        self._role = role

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


        :return: The autoscale of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: bool
        """
        return self._autoscale

    @autoscale.setter
    def autoscale(self, autoscale):
        """Sets the autoscale of this CreateApplianceSuccessData.


        :param autoscale: The autoscale of this CreateApplianceSuccessData.  # noqa: E501
        :type: bool
        """

        self._autoscale = autoscale

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


        :return: The admin_ip of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: str
        """
        return self._admin_ip

    @admin_ip.setter
    def admin_ip(self, admin_ip):
        """Sets the admin_ip of this CreateApplianceSuccessData.


        :param admin_ip: The admin_ip of this CreateApplianceSuccessData.  # noqa: E501
        :type: str
        """

        self._admin_ip = admin_ip

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


        :return: The admin_port of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: int
        """
        return self._admin_port

    @admin_port.setter
    def admin_port(self, admin_port):
        """Sets the admin_port of this CreateApplianceSuccessData.


        :param admin_port: The admin_port of this CreateApplianceSuccessData.  # noqa: E501
        :type: int
        """

        self._admin_port = admin_port

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


        :return: The location of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: str
        """
        return self._location

    @location.setter
    def location(self, location):
        """Sets the location of this CreateApplianceSuccessData.


        :param location: The location of this CreateApplianceSuccessData.  # noqa: E501
        :type: str
        """

        self._location = location

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


        :return: The contact of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: str
        """
        return self._contact

    @contact.setter
    def contact(self, contact):
        """Sets the contact of this CreateApplianceSuccessData.


        :param contact: The contact of this CreateApplianceSuccessData.  # noqa: E501
        :type: str
        """

        self._contact = contact

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


        :return: The os_version of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: str
        """
        return self._os_version

    @os_version.setter
    def os_version(self, os_version):
        """Sets the os_version of this CreateApplianceSuccessData.


        :param os_version: The os_version of this CreateApplianceSuccessData.  # noqa: E501
        :type: str
        """

        self._os_version = os_version

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


        :return: The ssh of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: CreateApplianceSuccessDataSsh
        """
        return self._ssh

    @ssh.setter
    def ssh(self, ssh):
        """Sets the ssh of this CreateApplianceSuccessData.


        :param ssh: The ssh of this CreateApplianceSuccessData.  # noqa: E501
        :type: CreateApplianceSuccessDataSsh
        """

        self._ssh = ssh

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


        :return: The dns of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: CreateApplianceSuccessDataDns
        """
        return self._dns

    @dns.setter
    def dns(self, dns):
        """Sets the dns of this CreateApplianceSuccessData.


        :param dns: The dns of this CreateApplianceSuccessData.  # noqa: E501
        :type: CreateApplianceSuccessDataDns
        """

        self._dns = dns

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


        :return: The snmp of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: CreateApplianceSuccessDataSnmp
        """
        return self._snmp

    @snmp.setter
    def snmp(self, snmp):
        """Sets the snmp of this CreateApplianceSuccessData.


        :param snmp: The snmp of this CreateApplianceSuccessData.  # noqa: E501
        :type: CreateApplianceSuccessDataSnmp
        """

        self._snmp = snmp

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


        :return: The hosts of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: CreateApplianceSuccessDataHosts
        """
        return self._hosts

    @hosts.setter
    def hosts(self, hosts):
        """Sets the hosts of this CreateApplianceSuccessData.


        :param hosts: The hosts of this CreateApplianceSuccessData.  # noqa: E501
        :type: CreateApplianceSuccessDataHosts
        """

        self._hosts = hosts

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


        :return: The network_devices of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: list[CreateApplianceNetworkDevicesSuccessArray]
        """
        return self._network_devices

    @network_devices.setter
    def network_devices(self, network_devices):
        """Sets the network_devices of this CreateApplianceSuccessData.


        :param network_devices: The network_devices of this CreateApplianceSuccessData.  # noqa: E501
        :type: list[CreateApplianceNetworkDevicesSuccessArray]
        """

        self._network_devices = network_devices

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


        :return: The sysctl_profile of this CreateApplianceSuccessData.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._sysctl_profile

    @sysctl_profile.setter
    def sysctl_profile(self, sysctl_profile):
        """Sets the sysctl_profile of this CreateApplianceSuccessData.


        :param sysctl_profile: The sysctl_profile of this CreateApplianceSuccessData.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._sysctl_profile = sysctl_profile

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


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

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


        :param t_update: The t_update of this CreateApplianceSuccessData.  # 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, CreateApplianceSuccessData):
            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, CreateApplianceSuccessData):
            return True

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