# coding: utf-8

"""
    external/v1/auth_service.proto

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: version not set
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git

    NOTE
    ----
    standard swagger-codegen-cli for this python client has been modified
    by custom templates. The purpose of these templates is to include
    typing information in the API and Model code. Please refer to the
    main grid repository for more info
"""

import pprint
import re  # noqa: F401

from typing import TYPE_CHECKING

import six

if TYPE_CHECKING:
    from datetime import datetime
    from lightning_cloud.openapi.models import *

class V1ClusterAccelerator(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 = {
        'accelerator_type': 'str',
        'available_in_seconds': 'str',
        'cluster_id': 'str',
        'cost': 'float',
        'device_card': 'str',
        'device_info': 'str',
        'display_name': 'str',
        'enabled': 'bool',
        'instance_id': 'str',
        'is_tier_restricted': 'bool',
        'quota_checked_at': 'datetime',
        'quota_code': 'str',
        'quota_name': 'str',
        'quota_page_url': 'str',
        'quota_service_code': 'str',
        'quota_utilization': 'str',
        'quota_value': 'str',
        'resources': 'V1Resources',
        'slug': 'str'
    }

    attribute_map = {
        'accelerator_type': 'acceleratorType',
        'available_in_seconds': 'availableInSeconds',
        'cluster_id': 'clusterId',
        'cost': 'cost',
        'device_card': 'deviceCard',
        'device_info': 'deviceInfo',
        'display_name': 'displayName',
        'enabled': 'enabled',
        'instance_id': 'instanceId',
        'is_tier_restricted': 'isTierRestricted',
        'quota_checked_at': 'quotaCheckedAt',
        'quota_code': 'quotaCode',
        'quota_name': 'quotaName',
        'quota_page_url': 'quotaPageUrl',
        'quota_service_code': 'quotaServiceCode',
        'quota_utilization': 'quotaUtilization',
        'quota_value': 'quotaValue',
        'resources': 'resources',
        'slug': 'slug'
    }

    def __init__(self, accelerator_type: 'str' =None, available_in_seconds: 'str' =None, cluster_id: 'str' =None, cost: 'float' =None, device_card: 'str' =None, device_info: 'str' =None, display_name: 'str' =None, enabled: 'bool' =None, instance_id: 'str' =None, is_tier_restricted: 'bool' =None, quota_checked_at: 'datetime' =None, quota_code: 'str' =None, quota_name: 'str' =None, quota_page_url: 'str' =None, quota_service_code: 'str' =None, quota_utilization: 'str' =None, quota_value: 'str' =None, resources: 'V1Resources' =None, slug: 'str' =None):  # noqa: E501
        """V1ClusterAccelerator - a model defined in Swagger"""  # noqa: E501
        self._accelerator_type = None
        self._available_in_seconds = None
        self._cluster_id = None
        self._cost = None
        self._device_card = None
        self._device_info = None
        self._display_name = None
        self._enabled = None
        self._instance_id = None
        self._is_tier_restricted = None
        self._quota_checked_at = None
        self._quota_code = None
        self._quota_name = None
        self._quota_page_url = None
        self._quota_service_code = None
        self._quota_utilization = None
        self._quota_value = None
        self._resources = None
        self._slug = None
        self.discriminator = None
        if accelerator_type is not None:
            self.accelerator_type = accelerator_type
        if available_in_seconds is not None:
            self.available_in_seconds = available_in_seconds
        if cluster_id is not None:
            self.cluster_id = cluster_id
        if cost is not None:
            self.cost = cost
        if device_card is not None:
            self.device_card = device_card
        if device_info is not None:
            self.device_info = device_info
        if display_name is not None:
            self.display_name = display_name
        if enabled is not None:
            self.enabled = enabled
        if instance_id is not None:
            self.instance_id = instance_id
        if is_tier_restricted is not None:
            self.is_tier_restricted = is_tier_restricted
        if quota_checked_at is not None:
            self.quota_checked_at = quota_checked_at
        if quota_code is not None:
            self.quota_code = quota_code
        if quota_name is not None:
            self.quota_name = quota_name
        if quota_page_url is not None:
            self.quota_page_url = quota_page_url
        if quota_service_code is not None:
            self.quota_service_code = quota_service_code
        if quota_utilization is not None:
            self.quota_utilization = quota_utilization
        if quota_value is not None:
            self.quota_value = quota_value
        if resources is not None:
            self.resources = resources
        if slug is not None:
            self.slug = slug

    @property
    def accelerator_type(self) -> 'str':
        """Gets the accelerator_type of this V1ClusterAccelerator.  # noqa: E501


        :return: The accelerator_type of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._accelerator_type

    @accelerator_type.setter
    def accelerator_type(self, accelerator_type: 'str'):
        """Sets the accelerator_type of this V1ClusterAccelerator.


        :param accelerator_type: The accelerator_type of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._accelerator_type = accelerator_type

    @property
    def available_in_seconds(self) -> 'str':
        """Gets the available_in_seconds of this V1ClusterAccelerator.  # noqa: E501


        :return: The available_in_seconds of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._available_in_seconds

    @available_in_seconds.setter
    def available_in_seconds(self, available_in_seconds: 'str'):
        """Sets the available_in_seconds of this V1ClusterAccelerator.


        :param available_in_seconds: The available_in_seconds of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._available_in_seconds = available_in_seconds

    @property
    def cluster_id(self) -> 'str':
        """Gets the cluster_id of this V1ClusterAccelerator.  # noqa: E501


        :return: The cluster_id of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._cluster_id

    @cluster_id.setter
    def cluster_id(self, cluster_id: 'str'):
        """Sets the cluster_id of this V1ClusterAccelerator.


        :param cluster_id: The cluster_id of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._cluster_id = cluster_id

    @property
    def cost(self) -> 'float':
        """Gets the cost of this V1ClusterAccelerator.  # noqa: E501


        :return: The cost of this V1ClusterAccelerator.  # noqa: E501
        :rtype: float
        """
        return self._cost

    @cost.setter
    def cost(self, cost: 'float'):
        """Sets the cost of this V1ClusterAccelerator.


        :param cost: The cost of this V1ClusterAccelerator.  # noqa: E501
        :type: float
        """

        self._cost = cost

    @property
    def device_card(self) -> 'str':
        """Gets the device_card of this V1ClusterAccelerator.  # noqa: E501


        :return: The device_card of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._device_card

    @device_card.setter
    def device_card(self, device_card: 'str'):
        """Sets the device_card of this V1ClusterAccelerator.


        :param device_card: The device_card of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._device_card = device_card

    @property
    def device_info(self) -> 'str':
        """Gets the device_info of this V1ClusterAccelerator.  # noqa: E501


        :return: The device_info of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._device_info

    @device_info.setter
    def device_info(self, device_info: 'str'):
        """Sets the device_info of this V1ClusterAccelerator.


        :param device_info: The device_info of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._device_info = device_info

    @property
    def display_name(self) -> 'str':
        """Gets the display_name of this V1ClusterAccelerator.  # noqa: E501


        :return: The display_name of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name: 'str'):
        """Sets the display_name of this V1ClusterAccelerator.


        :param display_name: The display_name of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._display_name = display_name

    @property
    def enabled(self) -> 'bool':
        """Gets the enabled of this V1ClusterAccelerator.  # noqa: E501


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

    @enabled.setter
    def enabled(self, enabled: 'bool'):
        """Sets the enabled of this V1ClusterAccelerator.


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

        self._enabled = enabled

    @property
    def instance_id(self) -> 'str':
        """Gets the instance_id of this V1ClusterAccelerator.  # noqa: E501


        :return: The instance_id of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._instance_id

    @instance_id.setter
    def instance_id(self, instance_id: 'str'):
        """Sets the instance_id of this V1ClusterAccelerator.


        :param instance_id: The instance_id of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._instance_id = instance_id

    @property
    def is_tier_restricted(self) -> 'bool':
        """Gets the is_tier_restricted of this V1ClusterAccelerator.  # noqa: E501


        :return: The is_tier_restricted of this V1ClusterAccelerator.  # noqa: E501
        :rtype: bool
        """
        return self._is_tier_restricted

    @is_tier_restricted.setter
    def is_tier_restricted(self, is_tier_restricted: 'bool'):
        """Sets the is_tier_restricted of this V1ClusterAccelerator.


        :param is_tier_restricted: The is_tier_restricted of this V1ClusterAccelerator.  # noqa: E501
        :type: bool
        """

        self._is_tier_restricted = is_tier_restricted

    @property
    def quota_checked_at(self) -> 'datetime':
        """Gets the quota_checked_at of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_checked_at of this V1ClusterAccelerator.  # noqa: E501
        :rtype: datetime
        """
        return self._quota_checked_at

    @quota_checked_at.setter
    def quota_checked_at(self, quota_checked_at: 'datetime'):
        """Sets the quota_checked_at of this V1ClusterAccelerator.


        :param quota_checked_at: The quota_checked_at of this V1ClusterAccelerator.  # noqa: E501
        :type: datetime
        """

        self._quota_checked_at = quota_checked_at

    @property
    def quota_code(self) -> 'str':
        """Gets the quota_code of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_code of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_code

    @quota_code.setter
    def quota_code(self, quota_code: 'str'):
        """Sets the quota_code of this V1ClusterAccelerator.


        :param quota_code: The quota_code of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_code = quota_code

    @property
    def quota_name(self) -> 'str':
        """Gets the quota_name of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_name of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_name

    @quota_name.setter
    def quota_name(self, quota_name: 'str'):
        """Sets the quota_name of this V1ClusterAccelerator.


        :param quota_name: The quota_name of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_name = quota_name

    @property
    def quota_page_url(self) -> 'str':
        """Gets the quota_page_url of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_page_url of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_page_url

    @quota_page_url.setter
    def quota_page_url(self, quota_page_url: 'str'):
        """Sets the quota_page_url of this V1ClusterAccelerator.


        :param quota_page_url: The quota_page_url of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_page_url = quota_page_url

    @property
    def quota_service_code(self) -> 'str':
        """Gets the quota_service_code of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_service_code of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_service_code

    @quota_service_code.setter
    def quota_service_code(self, quota_service_code: 'str'):
        """Sets the quota_service_code of this V1ClusterAccelerator.


        :param quota_service_code: The quota_service_code of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_service_code = quota_service_code

    @property
    def quota_utilization(self) -> 'str':
        """Gets the quota_utilization of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_utilization of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_utilization

    @quota_utilization.setter
    def quota_utilization(self, quota_utilization: 'str'):
        """Sets the quota_utilization of this V1ClusterAccelerator.


        :param quota_utilization: The quota_utilization of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_utilization = quota_utilization

    @property
    def quota_value(self) -> 'str':
        """Gets the quota_value of this V1ClusterAccelerator.  # noqa: E501


        :return: The quota_value of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._quota_value

    @quota_value.setter
    def quota_value(self, quota_value: 'str'):
        """Sets the quota_value of this V1ClusterAccelerator.


        :param quota_value: The quota_value of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._quota_value = quota_value

    @property
    def resources(self) -> 'V1Resources':
        """Gets the resources of this V1ClusterAccelerator.  # noqa: E501


        :return: The resources of this V1ClusterAccelerator.  # noqa: E501
        :rtype: V1Resources
        """
        return self._resources

    @resources.setter
    def resources(self, resources: 'V1Resources'):
        """Sets the resources of this V1ClusterAccelerator.


        :param resources: The resources of this V1ClusterAccelerator.  # noqa: E501
        :type: V1Resources
        """

        self._resources = resources

    @property
    def slug(self) -> 'str':
        """Gets the slug of this V1ClusterAccelerator.  # noqa: E501


        :return: The slug of this V1ClusterAccelerator.  # noqa: E501
        :rtype: str
        """
        return self._slug

    @slug.setter
    def slug(self, slug: 'str'):
        """Sets the slug of this V1ClusterAccelerator.


        :param slug: The slug of this V1ClusterAccelerator.  # noqa: E501
        :type: str
        """

        self._slug = slug

    def to_dict(self) -> dict:
        """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(V1ClusterAccelerator, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self) -> str:
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self) -> str:
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other: 'V1ClusterAccelerator') -> bool:
        """Returns true if both objects are equal"""
        if not isinstance(other, V1ClusterAccelerator):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other: 'V1ClusterAccelerator') -> bool:
        """Returns true if both objects are not equal"""
        return not self == other
