# coding: utf-8

"""
    DigitalRebar Provision Server

    # An RestFUL API-driven Provisioner and DHCP server  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from drppy_client.configuration import Configuration


class Info(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 = {
        'cluster_state': 'ClusterState',
        'license': 'LicenseBundle',
        'address': 'str',
        'api_port': 'int',
        'arch': 'str',
        'binl_enabled': 'bool',
        'binl_port': 'int',
        'dhcp_enabled': 'bool',
        'dhcp_port': 'int',
        'dns_enabled': 'bool',
        'dns_port': 'int',
        'errors': 'list[str]',
        'extra_api_ports': 'list[int]',
        'extra_file_ports': 'list[int]',
        'extra_secure_file_ports': 'list[int]',
        'features': 'list[str]',
        'file_port': 'int',
        'ha_active_id': 'str',
        'ha_enabled': 'bool',
        'ha_id': 'str',
        'ha_is_active': 'bool',
        'ha_passive_state': 'list[HaPassiveState]',
        'ha_status': 'str',
        'ha_virtual_address': 'str',
        'id': 'str',
        'local_id': 'str',
        'manager': 'bool',
        'os': 'str',
        'prov_enabled': 'bool',
        'scopes': 'dict(str, dict(str, object))',
        'secure_file_port': 'int',
        'secure_prov_enabled': 'bool',
        'server_hostname': 'str',
        'stats': 'list[Stat]',
        'tftp_enabled': 'bool',
        'tftp_port': 'int',
        'uuid': 'str',
        'version': 'str'
    }

    attribute_map = {
        'cluster_state': 'ClusterState',
        'license': 'License',
        'address': 'address',
        'api_port': 'api_port',
        'arch': 'arch',
        'binl_enabled': 'binl_enabled',
        'binl_port': 'binl_port',
        'dhcp_enabled': 'dhcp_enabled',
        'dhcp_port': 'dhcp_port',
        'dns_enabled': 'dns_enabled',
        'dns_port': 'dns_port',
        'errors': 'errors',
        'extra_api_ports': 'extra_api_ports',
        'extra_file_ports': 'extra_file_ports',
        'extra_secure_file_ports': 'extra_secure_file_ports',
        'features': 'features',
        'file_port': 'file_port',
        'ha_active_id': 'ha_active_id',
        'ha_enabled': 'ha_enabled',
        'ha_id': 'ha_id',
        'ha_is_active': 'ha_is_active',
        'ha_passive_state': 'ha_passive_state',
        'ha_status': 'ha_status',
        'ha_virtual_address': 'ha_virtual_address',
        'id': 'id',
        'local_id': 'local_id',
        'manager': 'manager',
        'os': 'os',
        'prov_enabled': 'prov_enabled',
        'scopes': 'scopes',
        'secure_file_port': 'secure_file_port',
        'secure_prov_enabled': 'secure_prov_enabled',
        'server_hostname': 'server_hostname',
        'stats': 'stats',
        'tftp_enabled': 'tftp_enabled',
        'tftp_port': 'tftp_port',
        'uuid': 'uuid',
        'version': 'version'
    }

    def __init__(self, cluster_state=None, license=None, address=None, api_port=None, arch=None, binl_enabled=None, binl_port=None, dhcp_enabled=None, dhcp_port=None, dns_enabled=None, dns_port=None, errors=None, extra_api_ports=None, extra_file_ports=None, extra_secure_file_ports=None, features=None, file_port=None, ha_active_id=None, ha_enabled=None, ha_id=None, ha_is_active=None, ha_passive_state=None, ha_status=None, ha_virtual_address=None, id=None, local_id=None, manager=None, os=None, prov_enabled=None, scopes=None, secure_file_port=None, secure_prov_enabled=None, server_hostname=None, stats=None, tftp_enabled=None, tftp_port=None, uuid=None, version=None, _configuration=None):  # noqa: E501
        """Info - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._cluster_state = None
        self._license = None
        self._address = None
        self._api_port = None
        self._arch = None
        self._binl_enabled = None
        self._binl_port = None
        self._dhcp_enabled = None
        self._dhcp_port = None
        self._dns_enabled = None
        self._dns_port = None
        self._errors = None
        self._extra_api_ports = None
        self._extra_file_ports = None
        self._extra_secure_file_ports = None
        self._features = None
        self._file_port = None
        self._ha_active_id = None
        self._ha_enabled = None
        self._ha_id = None
        self._ha_is_active = None
        self._ha_passive_state = None
        self._ha_status = None
        self._ha_virtual_address = None
        self._id = None
        self._local_id = None
        self._manager = None
        self._os = None
        self._prov_enabled = None
        self._scopes = None
        self._secure_file_port = None
        self._secure_prov_enabled = None
        self._server_hostname = None
        self._stats = None
        self._tftp_enabled = None
        self._tftp_port = None
        self._uuid = None
        self._version = None
        self.discriminator = None

        if cluster_state is not None:
            self.cluster_state = cluster_state
        if license is not None:
            self.license = license
        self.address = address
        self.api_port = api_port
        self.arch = arch
        self.binl_enabled = binl_enabled
        self.binl_port = binl_port
        self.dhcp_enabled = dhcp_enabled
        self.dhcp_port = dhcp_port
        self.dns_enabled = dns_enabled
        self.dns_port = dns_port
        self.errors = errors
        if extra_api_ports is not None:
            self.extra_api_ports = extra_api_ports
        if extra_file_ports is not None:
            self.extra_file_ports = extra_file_ports
        if extra_secure_file_ports is not None:
            self.extra_secure_file_ports = extra_secure_file_ports
        if features is not None:
            self.features = features
        self.file_port = file_port
        if ha_active_id is not None:
            self.ha_active_id = ha_active_id
        if ha_enabled is not None:
            self.ha_enabled = ha_enabled
        self.ha_id = ha_id
        self.ha_is_active = ha_is_active
        if ha_passive_state is not None:
            self.ha_passive_state = ha_passive_state
        self.ha_status = ha_status
        if ha_virtual_address is not None:
            self.ha_virtual_address = ha_virtual_address
        self.id = id
        self.local_id = local_id
        self.manager = manager
        self.os = os
        self.prov_enabled = prov_enabled
        if scopes is not None:
            self.scopes = scopes
        self.secure_file_port = secure_file_port
        self.secure_prov_enabled = secure_prov_enabled
        if server_hostname is not None:
            self.server_hostname = server_hostname
        self.stats = stats
        self.tftp_enabled = tftp_enabled
        self.tftp_port = tftp_port
        self.uuid = uuid
        self.version = version

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


        :return: The cluster_state of this Info.  # noqa: E501
        :rtype: ClusterState
        """
        return self._cluster_state

    @cluster_state.setter
    def cluster_state(self, cluster_state):
        """Sets the cluster_state of this Info.


        :param cluster_state: The cluster_state of this Info.  # noqa: E501
        :type: ClusterState
        """

        self._cluster_state = cluster_state

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


        :return: The license of this Info.  # noqa: E501
        :rtype: LicenseBundle
        """
        return self._license

    @license.setter
    def license(self, license):
        """Sets the license of this Info.


        :param license: The license of this Info.  # noqa: E501
        :type: LicenseBundle
        """

        self._license = license

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


        :return: The address of this Info.  # noqa: E501
        :rtype: str
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this Info.


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

        self._address = address

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

        ApiPort is the TCP port that the API lives on.  Defaults to 8092  # noqa: E501

        :return: The api_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._api_port

    @api_port.setter
    def api_port(self, api_port):
        """Sets the api_port of this Info.

        ApiPort is the TCP port that the API lives on.  Defaults to 8092  # noqa: E501

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

        self._api_port = api_port

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

        Arch is the system architecture of the running dr-provision endpoint. It is the same value that would be return by runtime.GOARCH  # noqa: E501

        :return: The arch of this Info.  # noqa: E501
        :rtype: str
        """
        return self._arch

    @arch.setter
    def arch(self, arch):
        """Sets the arch of this Info.

        Arch is the system architecture of the running dr-provision endpoint. It is the same value that would be return by runtime.GOARCH  # noqa: E501

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

        self._arch = arch

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

        BinlEnabled is true if the BINL server is enabled.  # noqa: E501

        :return: The binl_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._binl_enabled

    @binl_enabled.setter
    def binl_enabled(self, binl_enabled):
        """Sets the binl_enabled of this Info.

        BinlEnabled is true if the BINL server is enabled.  # noqa: E501

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

        self._binl_enabled = binl_enabled

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


        :return: The binl_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._binl_port

    @binl_port.setter
    def binl_port(self, binl_port):
        """Sets the binl_port of this Info.


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

        self._binl_port = binl_port

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

        DhcpEnabled is true if the DHCP server is enabled.  # noqa: E501

        :return: The dhcp_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._dhcp_enabled

    @dhcp_enabled.setter
    def dhcp_enabled(self, dhcp_enabled):
        """Sets the dhcp_enabled of this Info.

        DhcpEnabled is true if the DHCP server is enabled.  # noqa: E501

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

        self._dhcp_enabled = dhcp_enabled

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

        DhcpPort is the UDP port that the DHCPv4 server listens on. Defaults to 67  # noqa: E501

        :return: The dhcp_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._dhcp_port

    @dhcp_port.setter
    def dhcp_port(self, dhcp_port):
        """Sets the dhcp_port of this Info.

        DhcpPort is the UDP port that the DHCPv4 server listens on. Defaults to 67  # noqa: E501

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

        self._dhcp_port = dhcp_port

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

        Address is the IP address that the system appears to listen on. If a default address was assigned via environment variable or command line, it will be that address, otherwise it will be the IP address of the interface that has the default IPv4 route.  # noqa: E501

        :return: The dns_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._dns_enabled

    @dns_enabled.setter
    def dns_enabled(self, dns_enabled):
        """Sets the dns_enabled of this Info.

        Address is the IP address that the system appears to listen on. If a default address was assigned via environment variable or command line, it will be that address, otherwise it will be the IP address of the interface that has the default IPv4 route.  # noqa: E501

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

        self._dns_enabled = dns_enabled

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

        BinlPort is the UDP port that the BINL server listens on. Defaults to 4011  # noqa: E501

        :return: The dns_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._dns_port

    @dns_port.setter
    def dns_port(self, dns_port):
        """Sets the dns_port of this Info.

        BinlPort is the UDP port that the BINL server listens on. Defaults to 4011  # noqa: E501

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

        self._dns_port = dns_port

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

        Errors returns the current system errors.  # noqa: E501

        :return: The errors of this Info.  # noqa: E501
        :rtype: list[str]
        """
        return self._errors

    @errors.setter
    def errors(self, errors):
        """Sets the errors of this Info.

        Errors returns the current system errors.  # noqa: E501

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

        self._errors = errors

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

        ExtraApiPorts is any additional ports that the API is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :return: The extra_api_ports of this Info.  # noqa: E501
        :rtype: list[int]
        """
        return self._extra_api_ports

    @extra_api_ports.setter
    def extra_api_ports(self, extra_api_ports):
        """Sets the extra_api_ports of this Info.

        ExtraApiPorts is any additional ports that the API is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :param extra_api_ports: The extra_api_ports of this Info.  # noqa: E501
        :type: list[int]
        """

        self._extra_api_ports = extra_api_ports

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

        ExtraFilePorts is any additional ports that static file HTTP server is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :return: The extra_file_ports of this Info.  # noqa: E501
        :rtype: list[int]
        """
        return self._extra_file_ports

    @extra_file_ports.setter
    def extra_file_ports(self, extra_file_ports):
        """Sets the extra_file_ports of this Info.

        ExtraFilePorts is any additional ports that static file HTTP server is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :param extra_file_ports: The extra_file_ports of this Info.  # noqa: E501
        :type: list[int]
        """

        self._extra_file_ports = extra_file_ports

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

        ExtraSecureFilePorts is any additional ports that the static file HTTPS server is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :return: The extra_secure_file_ports of this Info.  # noqa: E501
        :rtype: list[int]
        """
        return self._extra_secure_file_ports

    @extra_secure_file_ports.setter
    def extra_secure_file_ports(self, extra_secure_file_ports):
        """Sets the extra_secure_file_ports of this Info.

        ExtraSecureFilePorts is any additional ports that the static file HTTPS server is also acessible on.  If no extra ports are specified, this field will be omitted.  # noqa: E501

        :param extra_secure_file_ports: The extra_secure_file_ports of this Info.  # noqa: E501
        :type: list[int]
        """

        self._extra_secure_file_ports = extra_secure_file_ports

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

        Features is a list of features implemented in this dr-provision endpoint. Clients should use this field when determining what features are available on anu given dr-provision instance.  # noqa: E501

        :return: The features of this Info.  # noqa: E501
        :rtype: list[str]
        """
        return self._features

    @features.setter
    def features(self, features):
        """Sets the features of this Info.

        Features is a list of features implemented in this dr-provision endpoint. Clients should use this field when determining what features are available on anu given dr-provision instance.  # noqa: E501

        :param features: The features of this Info.  # noqa: E501
        :type: list[str]
        """

        self._features = features

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

        FilePort is the TCP port that the static file HTTP server lives on. Defaults to 8091  # noqa: E501

        :return: The file_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._file_port

    @file_port.setter
    def file_port(self, file_port):
        """Sets the file_port of this Info.

        FilePort is the TCP port that the static file HTTP server lives on. Defaults to 8091  # noqa: E501

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

        self._file_port = file_port

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

        HaActiveId is the id of current active node  # noqa: E501

        :return: The ha_active_id of this Info.  # noqa: E501
        :rtype: str
        """
        return self._ha_active_id

    @ha_active_id.setter
    def ha_active_id(self, ha_active_id):
        """Sets the ha_active_id of this Info.

        HaActiveId is the id of current active node  # noqa: E501

        :param ha_active_id: The ha_active_id of this Info.  # noqa: E501
        :type: str
        """

        self._ha_active_id = ha_active_id

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

        HaEnabled indicates if High Availability is enabled  # noqa: E501

        :return: The ha_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._ha_enabled

    @ha_enabled.setter
    def ha_enabled(self, ha_enabled):
        """Sets the ha_enabled of this Info.

        HaEnabled indicates if High Availability is enabled  # noqa: E501

        :param ha_enabled: The ha_enabled of this Info.  # noqa: E501
        :type: bool
        """

        self._ha_enabled = ha_enabled

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

        HaId is the user-assigned high-availability ID for this endpoint. All endpoints in the same HA cluster must have the same HaId.  # noqa: E501

        :return: The ha_id of this Info.  # noqa: E501
        :rtype: str
        """
        return self._ha_id

    @ha_id.setter
    def ha_id(self, ha_id):
        """Sets the ha_id of this Info.

        HaId is the user-assigned high-availability ID for this endpoint. All endpoints in the same HA cluster must have the same HaId.  # noqa: E501

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

        self._ha_id = ha_id

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

        HaIsActive indicates Active (true) or Passive (false)  # noqa: E501

        :return: The ha_is_active of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._ha_is_active

    @ha_is_active.setter
    def ha_is_active(self, ha_is_active):
        """Sets the ha_is_active of this Info.

        HaIsActive indicates Active (true) or Passive (false)  # noqa: E501

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

        self._ha_is_active = ha_is_active

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

        HaPassiveState is a list of passive node's and their current state This is only valid from the Active node  # noqa: E501

        :return: The ha_passive_state of this Info.  # noqa: E501
        :rtype: list[HaPassiveState]
        """
        return self._ha_passive_state

    @ha_passive_state.setter
    def ha_passive_state(self, ha_passive_state):
        """Sets the ha_passive_state of this Info.

        HaPassiveState is a list of passive node's and their current state This is only valid from the Active node  # noqa: E501

        :param ha_passive_state: The ha_passive_state of this Info.  # noqa: E501
        :type: list[HaPassiveState]
        """

        self._ha_passive_state = ha_passive_state

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

        HaStatus indicates current state For Active, Up is the only value. For Passive, Connecting, Syncing, In-Sync  # noqa: E501

        :return: The ha_status of this Info.  # noqa: E501
        :rtype: str
        """
        return self._ha_status

    @ha_status.setter
    def ha_status(self, ha_status):
        """Sets the ha_status of this Info.

        HaStatus indicates current state For Active, Up is the only value. For Passive, Connecting, Syncing, In-Sync  # noqa: E501

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

        self._ha_status = ha_status

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

        HaVirtualAddress is the Virtual IP Address of the systems  # noqa: E501

        :return: The ha_virtual_address of this Info.  # noqa: E501
        :rtype: str
        """
        return self._ha_virtual_address

    @ha_virtual_address.setter
    def ha_virtual_address(self, ha_virtual_address):
        """Sets the ha_virtual_address of this Info.

        HaVirtualAddress is the Virtual IP Address of the systems  # noqa: E501

        :param ha_virtual_address: The ha_virtual_address of this Info.  # noqa: E501
        :type: str
        """

        self._ha_virtual_address = ha_virtual_address

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

        Id is the local ID for this dr-provision.  If not overridden by an environment variable or a command line argument, it will be the lowest MAC address of all the physical nics attached to the system.  # noqa: E501

        :return: The id of this Info.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this Info.

        Id is the local ID for this dr-provision.  If not overridden by an environment variable or a command line argument, it will be the lowest MAC address of all the physical nics attached to the system.  # noqa: E501

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

        self._id = id

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

        LocalId is the same as Id, except it is always the MAC address form.  # noqa: E501

        :return: The local_id of this Info.  # noqa: E501
        :rtype: str
        """
        return self._local_id

    @local_id.setter
    def local_id(self, local_id):
        """Sets the local_id of this Info.

        LocalId is the same as Id, except it is always the MAC address form.  # noqa: E501

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

        self._local_id = local_id

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

        Manager indicates whether this dr-provision can act as a manager of other dr-provision instances.  # noqa: E501

        :return: The manager of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._manager

    @manager.setter
    def manager(self, manager):
        """Sets the manager of this Info.

        Manager indicates whether this dr-provision can act as a manager of other dr-provision instances.  # noqa: E501

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

        self._manager = manager

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

        Os is the operating system the dr-provision endpoint is running on. It is the same value returned by runtime.GOARCH  # noqa: E501

        :return: The os of this Info.  # noqa: E501
        :rtype: str
        """
        return self._os

    @os.setter
    def os(self, os):
        """Sets the os of this Info.

        Os is the operating system the dr-provision endpoint is running on. It is the same value returned by runtime.GOARCH  # noqa: E501

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

        self._os = os

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

        ProvisionerEnabled is true if the static file HTTP server is enabled.  # noqa: E501

        :return: The prov_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._prov_enabled

    @prov_enabled.setter
    def prov_enabled(self, prov_enabled):
        """Sets the prov_enabled of this Info.

        ProvisionerEnabled is true if the static file HTTP server is enabled.  # noqa: E501

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

        self._prov_enabled = prov_enabled

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

        Scopes lists all static permission scopes available.  # noqa: E501

        :return: The scopes of this Info.  # noqa: E501
        :rtype: dict(str, dict(str, object))
        """
        return self._scopes

    @scopes.setter
    def scopes(self, scopes):
        """Sets the scopes of this Info.

        Scopes lists all static permission scopes available.  # noqa: E501

        :param scopes: The scopes of this Info.  # noqa: E501
        :type: dict(str, dict(str, object))
        """

        self._scopes = scopes

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

        SecureFilePort is the TCP port that the static file HTTPS server lives on. Defaults to 8090  # noqa: E501

        :return: The secure_file_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._secure_file_port

    @secure_file_port.setter
    def secure_file_port(self, secure_file_port):
        """Sets the secure_file_port of this Info.

        SecureFilePort is the TCP port that the static file HTTPS server lives on. Defaults to 8090  # noqa: E501

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

        self._secure_file_port = secure_file_port

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

        SecureProvisionerEnabled is true if the static file HTTPS server is enabled.  # noqa: E501

        :return: The secure_prov_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._secure_prov_enabled

    @secure_prov_enabled.setter
    def secure_prov_enabled(self, secure_prov_enabled):
        """Sets the secure_prov_enabled of this Info.

        SecureProvisionerEnabled is true if the static file HTTPS server is enabled.  # noqa: E501

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

        self._secure_prov_enabled = secure_prov_enabled

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

        ServerHostname is the DNS name for the DRP endpoint that managed systems should use. If a default hostname was assigned via environment variable or command line, it will be that hostname, otherwise it will be an empty string  # noqa: E501

        :return: The server_hostname of this Info.  # noqa: E501
        :rtype: str
        """
        return self._server_hostname

    @server_hostname.setter
    def server_hostname(self, server_hostname):
        """Sets the server_hostname of this Info.

        ServerHostname is the DNS name for the DRP endpoint that managed systems should use. If a default hostname was assigned via environment variable or command line, it will be that hostname, otherwise it will be an empty string  # noqa: E501

        :param server_hostname: The server_hostname of this Info.  # noqa: E501
        :type: str
        """

        self._server_hostname = server_hostname

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

        Stats lists some basic object statistics.  # noqa: E501

        :return: The stats of this Info.  # noqa: E501
        :rtype: list[Stat]
        """
        return self._stats

    @stats.setter
    def stats(self, stats):
        """Sets the stats of this Info.

        Stats lists some basic object statistics.  # noqa: E501

        :param stats: The stats of this Info.  # noqa: E501
        :type: list[Stat]
        """
        if self._configuration.client_side_validation and stats is None:
            raise ValueError("Invalid value for `stats`, must not be `None`")  # noqa: E501

        self._stats = stats

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

        TftpEnabled is true if the TFTP server is enabled.  # noqa: E501

        :return: The tftp_enabled of this Info.  # noqa: E501
        :rtype: bool
        """
        return self._tftp_enabled

    @tftp_enabled.setter
    def tftp_enabled(self, tftp_enabled):
        """Sets the tftp_enabled of this Info.

        TftpEnabled is true if the TFTP server is enabled.  # noqa: E501

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

        self._tftp_enabled = tftp_enabled

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

        TftpPort is the UDP port that the TFTP server listens on. Defaults to 69, dude.  # noqa: E501

        :return: The tftp_port of this Info.  # noqa: E501
        :rtype: int
        """
        return self._tftp_port

    @tftp_port.setter
    def tftp_port(self, tftp_port):
        """Sets the tftp_port of this Info.

        TftpPort is the UDP port that the TFTP server listens on. Defaults to 69, dude.  # noqa: E501

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

        self._tftp_port = tftp_port

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

        Uuid is the same as uuid of the endpoint  # noqa: E501

        :return: The uuid of this Info.  # noqa: E501
        :rtype: str
        """
        return self._uuid

    @uuid.setter
    def uuid(self, uuid):
        """Sets the uuid of this Info.

        Uuid is the same as uuid of the endpoint  # noqa: E501

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

        self._uuid = uuid

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

        Version is the full version of dr-provision.  # noqa: E501

        :return: The version of this Info.  # noqa: E501
        :rtype: str
        """
        return self._version

    @version.setter
    def version(self, version):
        """Sets the version of this Info.

        Version is the full version of dr-provision.  # noqa: E501

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

        self._version = version

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

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