# coding: utf-8

"""
    Zadara Provisioning Portal API

     # Overview  This document outlines the methods available for creation and high-level administration of Zadara Storage VPSAs via a Zadara Storage Provisioning Portal. This API supports form-encoded requests, and can return either JSON or XML responses.  ## Endpoint  The base URL for the requests is the Provisioning Portal URL you created your VPSA through - for example: https://manage.zadarastorage.com/, and all APIs will be prefixed with /api as noted in the documentation below.  ## Authentication  To use this API, an authentication token is required. The API for retrieving this token can be found below in the Authentication section. You may pass this token in requests either via the the X-Token header or via basic authentication (base64 encoded) in Authorization header.  ## Questions  If you have any questions or need support involving the REST API, please contact for assistance.   # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from ProvisioningPortal.configuration import Configuration


class InlineResponse2001Data(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 = {
        'id': 'str',
        'name': 'str',
        'uuid': 'str',
        'enabled': 'str',
        'app_engines': 'list[InlineResponse2001AppEngines]',
        'nova_url': 'str',
        'auth_url': 'str',
        'keystone_url': 'str',
        'glance_url': 'str',
        'drive_types': 'list[InlineResponse2001DriveTypes]',
        'engine_types': 'list[InlineResponse2001EngineTypes]',
        'fibre_channel': 'InlineResponse2001FibreChannel',
        'flash_cache': 'InlineResponse2001FlashCache',
        'minimum_drives': 'int',
        'supports_app_engines': 'bool',
        'zios': 'InlineResponse2001FibreChannel',
        'zones': 'list[InlineResponse2001Zones]',
        'vpsa_zone_group_storage_policy_types': 'InlineResponse2001VpsazoneGroupStoragePolicyTypes'
    }

    attribute_map = {
        'id': 'id',
        'name': 'name',
        'uuid': 'uuid',
        'enabled': 'enabled',
        'app_engines': 'app_engines',
        'nova_url': 'nova_url',
        'auth_url': 'auth_url',
        'keystone_url': 'keystone_url',
        'glance_url': 'glance_url',
        'drive_types': 'drive_types',
        'engine_types': 'engine_types',
        'fibre_channel': 'fibre_channel',
        'flash_cache': 'flash_cache',
        'minimum_drives': 'minimum_drives',
        'supports_app_engines': 'supports_app_engines',
        'zios': 'zios',
        'zones': 'zones',
        'vpsa_zone_group_storage_policy_types': 'vpsa-zone_group_storage_policy_types'
    }

    def __init__(self, id=None, name=None, uuid=None, enabled=None, app_engines=None, nova_url=None, auth_url=None, keystone_url=None, glance_url=None, drive_types=None, engine_types=None, fibre_channel=None, flash_cache=None, minimum_drives=None, supports_app_engines=None, zios=None, zones=None, vpsa_zone_group_storage_policy_types=None, _configuration=None):  # noqa: E501
        """InlineResponse2001Data - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._id = None
        self._name = None
        self._uuid = None
        self._enabled = None
        self._app_engines = None
        self._nova_url = None
        self._auth_url = None
        self._keystone_url = None
        self._glance_url = None
        self._drive_types = None
        self._engine_types = None
        self._fibre_channel = None
        self._flash_cache = None
        self._minimum_drives = None
        self._supports_app_engines = None
        self._zios = None
        self._zones = None
        self._vpsa_zone_group_storage_policy_types = None
        self.discriminator = None

        if id is not None:
            self.id = id
        if name is not None:
            self.name = name
        if uuid is not None:
            self.uuid = uuid
        if enabled is not None:
            self.enabled = enabled
        if app_engines is not None:
            self.app_engines = app_engines
        if nova_url is not None:
            self.nova_url = nova_url
        if auth_url is not None:
            self.auth_url = auth_url
        if keystone_url is not None:
            self.keystone_url = keystone_url
        if glance_url is not None:
            self.glance_url = glance_url
        if drive_types is not None:
            self.drive_types = drive_types
        if engine_types is not None:
            self.engine_types = engine_types
        if fibre_channel is not None:
            self.fibre_channel = fibre_channel
        if flash_cache is not None:
            self.flash_cache = flash_cache
        if minimum_drives is not None:
            self.minimum_drives = minimum_drives
        if supports_app_engines is not None:
            self.supports_app_engines = supports_app_engines
        if zios is not None:
            self.zios = zios
        if zones is not None:
            self.zones = zones
        if vpsa_zone_group_storage_policy_types is not None:
            self.vpsa_zone_group_storage_policy_types = vpsa_zone_group_storage_policy_types

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


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

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


        :param id: The id of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._id = id

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


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

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


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

        self._name = name

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


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

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


        :param uuid: The uuid of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._uuid = uuid

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


        :return: The enabled of this InlineResponse2001Data.  # noqa: E501
        :rtype: str
        """
        return self._enabled

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


        :param enabled: The enabled of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._enabled = enabled

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


        :return: The app_engines of this InlineResponse2001Data.  # noqa: E501
        :rtype: list[InlineResponse2001AppEngines]
        """
        return self._app_engines

    @app_engines.setter
    def app_engines(self, app_engines):
        """Sets the app_engines of this InlineResponse2001Data.


        :param app_engines: The app_engines of this InlineResponse2001Data.  # noqa: E501
        :type: list[InlineResponse2001AppEngines]
        """

        self._app_engines = app_engines

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


        :return: The nova_url of this InlineResponse2001Data.  # noqa: E501
        :rtype: str
        """
        return self._nova_url

    @nova_url.setter
    def nova_url(self, nova_url):
        """Sets the nova_url of this InlineResponse2001Data.


        :param nova_url: The nova_url of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._nova_url = nova_url

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


        :return: The auth_url of this InlineResponse2001Data.  # noqa: E501
        :rtype: str
        """
        return self._auth_url

    @auth_url.setter
    def auth_url(self, auth_url):
        """Sets the auth_url of this InlineResponse2001Data.


        :param auth_url: The auth_url of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._auth_url = auth_url

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


        :return: The keystone_url of this InlineResponse2001Data.  # noqa: E501
        :rtype: str
        """
        return self._keystone_url

    @keystone_url.setter
    def keystone_url(self, keystone_url):
        """Sets the keystone_url of this InlineResponse2001Data.


        :param keystone_url: The keystone_url of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._keystone_url = keystone_url

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


        :return: The glance_url of this InlineResponse2001Data.  # noqa: E501
        :rtype: str
        """
        return self._glance_url

    @glance_url.setter
    def glance_url(self, glance_url):
        """Sets the glance_url of this InlineResponse2001Data.


        :param glance_url: The glance_url of this InlineResponse2001Data.  # noqa: E501
        :type: str
        """

        self._glance_url = glance_url

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


        :return: The drive_types of this InlineResponse2001Data.  # noqa: E501
        :rtype: list[InlineResponse2001DriveTypes]
        """
        return self._drive_types

    @drive_types.setter
    def drive_types(self, drive_types):
        """Sets the drive_types of this InlineResponse2001Data.


        :param drive_types: The drive_types of this InlineResponse2001Data.  # noqa: E501
        :type: list[InlineResponse2001DriveTypes]
        """

        self._drive_types = drive_types

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


        :return: The engine_types of this InlineResponse2001Data.  # noqa: E501
        :rtype: list[InlineResponse2001EngineTypes]
        """
        return self._engine_types

    @engine_types.setter
    def engine_types(self, engine_types):
        """Sets the engine_types of this InlineResponse2001Data.


        :param engine_types: The engine_types of this InlineResponse2001Data.  # noqa: E501
        :type: list[InlineResponse2001EngineTypes]
        """

        self._engine_types = engine_types

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


        :return: The fibre_channel of this InlineResponse2001Data.  # noqa: E501
        :rtype: InlineResponse2001FibreChannel
        """
        return self._fibre_channel

    @fibre_channel.setter
    def fibre_channel(self, fibre_channel):
        """Sets the fibre_channel of this InlineResponse2001Data.


        :param fibre_channel: The fibre_channel of this InlineResponse2001Data.  # noqa: E501
        :type: InlineResponse2001FibreChannel
        """

        self._fibre_channel = fibre_channel

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


        :return: The flash_cache of this InlineResponse2001Data.  # noqa: E501
        :rtype: InlineResponse2001FlashCache
        """
        return self._flash_cache

    @flash_cache.setter
    def flash_cache(self, flash_cache):
        """Sets the flash_cache of this InlineResponse2001Data.


        :param flash_cache: The flash_cache of this InlineResponse2001Data.  # noqa: E501
        :type: InlineResponse2001FlashCache
        """

        self._flash_cache = flash_cache

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


        :return: The minimum_drives of this InlineResponse2001Data.  # noqa: E501
        :rtype: int
        """
        return self._minimum_drives

    @minimum_drives.setter
    def minimum_drives(self, minimum_drives):
        """Sets the minimum_drives of this InlineResponse2001Data.


        :param minimum_drives: The minimum_drives of this InlineResponse2001Data.  # noqa: E501
        :type: int
        """

        self._minimum_drives = minimum_drives

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


        :return: The supports_app_engines of this InlineResponse2001Data.  # noqa: E501
        :rtype: bool
        """
        return self._supports_app_engines

    @supports_app_engines.setter
    def supports_app_engines(self, supports_app_engines):
        """Sets the supports_app_engines of this InlineResponse2001Data.


        :param supports_app_engines: The supports_app_engines of this InlineResponse2001Data.  # noqa: E501
        :type: bool
        """

        self._supports_app_engines = supports_app_engines

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


        :return: The zios of this InlineResponse2001Data.  # noqa: E501
        :rtype: InlineResponse2001FibreChannel
        """
        return self._zios

    @zios.setter
    def zios(self, zios):
        """Sets the zios of this InlineResponse2001Data.


        :param zios: The zios of this InlineResponse2001Data.  # noqa: E501
        :type: InlineResponse2001FibreChannel
        """

        self._zios = zios

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


        :return: The zones of this InlineResponse2001Data.  # noqa: E501
        :rtype: list[InlineResponse2001Zones]
        """
        return self._zones

    @zones.setter
    def zones(self, zones):
        """Sets the zones of this InlineResponse2001Data.


        :param zones: The zones of this InlineResponse2001Data.  # noqa: E501
        :type: list[InlineResponse2001Zones]
        """

        self._zones = zones

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


        :return: The vpsa_zone_group_storage_policy_types of this InlineResponse2001Data.  # noqa: E501
        :rtype: InlineResponse2001VpsazoneGroupStoragePolicyTypes
        """
        return self._vpsa_zone_group_storage_policy_types

    @vpsa_zone_group_storage_policy_types.setter
    def vpsa_zone_group_storage_policy_types(self, vpsa_zone_group_storage_policy_types):
        """Sets the vpsa_zone_group_storage_policy_types of this InlineResponse2001Data.


        :param vpsa_zone_group_storage_policy_types: The vpsa_zone_group_storage_policy_types of this InlineResponse2001Data.  # noqa: E501
        :type: InlineResponse2001VpsazoneGroupStoragePolicyTypes
        """

        self._vpsa_zone_group_storage_policy_types = vpsa_zone_group_storage_policy_types

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

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