# 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 V1LightningappInstanceStatus(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 = {
        'code_server_url': 'str',
        'dependency_cache_state': 'V1DependencyCacheState',
        'image_id': 'str',
        'ip_address': 'str',
        'last_state_status_transition_timestamp': 'datetime',
        'message': 'str',
        'phase': 'V1LightningappInstanceState',
        'server_id': 'str',
        'source_upload_url': 'str',
        'start_timestamp': 'datetime',
        'stop_timestamp': 'datetime',
        'total_cost': 'float',
        'url': 'str'
    }

    attribute_map = {
        'code_server_url': 'codeServerUrl',
        'dependency_cache_state': 'dependencyCacheState',
        'image_id': 'imageId',
        'ip_address': 'ipAddress',
        'last_state_status_transition_timestamp': 'lastStateStatusTransitionTimestamp',
        'message': 'message',
        'phase': 'phase',
        'server_id': 'serverId',
        'source_upload_url': 'sourceUploadUrl',
        'start_timestamp': 'startTimestamp',
        'stop_timestamp': 'stopTimestamp',
        'total_cost': 'totalCost',
        'url': 'url'
    }

    def __init__(self, code_server_url: 'str' =None, dependency_cache_state: 'V1DependencyCacheState' =None, image_id: 'str' =None, ip_address: 'str' =None, last_state_status_transition_timestamp: 'datetime' =None, message: 'str' =None, phase: 'V1LightningappInstanceState' =None, server_id: 'str' =None, source_upload_url: 'str' =None, start_timestamp: 'datetime' =None, stop_timestamp: 'datetime' =None, total_cost: 'float' =None, url: 'str' =None):  # noqa: E501
        """V1LightningappInstanceStatus - a model defined in Swagger"""  # noqa: E501
        self._code_server_url = None
        self._dependency_cache_state = None
        self._image_id = None
        self._ip_address = None
        self._last_state_status_transition_timestamp = None
        self._message = None
        self._phase = None
        self._server_id = None
        self._source_upload_url = None
        self._start_timestamp = None
        self._stop_timestamp = None
        self._total_cost = None
        self._url = None
        self.discriminator = None
        if code_server_url is not None:
            self.code_server_url = code_server_url
        if dependency_cache_state is not None:
            self.dependency_cache_state = dependency_cache_state
        if image_id is not None:
            self.image_id = image_id
        if ip_address is not None:
            self.ip_address = ip_address
        if last_state_status_transition_timestamp is not None:
            self.last_state_status_transition_timestamp = last_state_status_transition_timestamp
        if message is not None:
            self.message = message
        if phase is not None:
            self.phase = phase
        if server_id is not None:
            self.server_id = server_id
        if source_upload_url is not None:
            self.source_upload_url = source_upload_url
        if start_timestamp is not None:
            self.start_timestamp = start_timestamp
        if stop_timestamp is not None:
            self.stop_timestamp = stop_timestamp
        if total_cost is not None:
            self.total_cost = total_cost
        if url is not None:
            self.url = url

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


        :return: The code_server_url of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._code_server_url

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


        :param code_server_url: The code_server_url of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._code_server_url = code_server_url

    @property
    def dependency_cache_state(self) -> 'V1DependencyCacheState':
        """Gets the dependency_cache_state of this V1LightningappInstanceStatus.  # noqa: E501


        :return: The dependency_cache_state of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: V1DependencyCacheState
        """
        return self._dependency_cache_state

    @dependency_cache_state.setter
    def dependency_cache_state(self, dependency_cache_state: 'V1DependencyCacheState'):
        """Sets the dependency_cache_state of this V1LightningappInstanceStatus.


        :param dependency_cache_state: The dependency_cache_state of this V1LightningappInstanceStatus.  # noqa: E501
        :type: V1DependencyCacheState
        """

        self._dependency_cache_state = dependency_cache_state

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


        :return: The image_id of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._image_id

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


        :param image_id: The image_id of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._image_id = image_id

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


        :return: The ip_address of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._ip_address

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


        :param ip_address: The ip_address of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._ip_address = ip_address

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


        :return: The last_state_status_transition_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: datetime
        """
        return self._last_state_status_transition_timestamp

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


        :param last_state_status_transition_timestamp: The last_state_status_transition_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :type: datetime
        """

        self._last_state_status_transition_timestamp = last_state_status_transition_timestamp

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


        :return: The message of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._message

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


        :param message: The message of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._message = message

    @property
    def phase(self) -> 'V1LightningappInstanceState':
        """Gets the phase of this V1LightningappInstanceStatus.  # noqa: E501


        :return: The phase of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: V1LightningappInstanceState
        """
        return self._phase

    @phase.setter
    def phase(self, phase: 'V1LightningappInstanceState'):
        """Sets the phase of this V1LightningappInstanceStatus.


        :param phase: The phase of this V1LightningappInstanceStatus.  # noqa: E501
        :type: V1LightningappInstanceState
        """

        self._phase = phase

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


        :return: The server_id of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._server_id

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


        :param server_id: The server_id of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._server_id = server_id

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


        :return: The source_upload_url of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._source_upload_url

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


        :param source_upload_url: The source_upload_url of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._source_upload_url = source_upload_url

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


        :return: The start_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: datetime
        """
        return self._start_timestamp

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


        :param start_timestamp: The start_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :type: datetime
        """

        self._start_timestamp = start_timestamp

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


        :return: The stop_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: datetime
        """
        return self._stop_timestamp

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


        :param stop_timestamp: The stop_timestamp of this V1LightningappInstanceStatus.  # noqa: E501
        :type: datetime
        """

        self._stop_timestamp = stop_timestamp

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


        :return: The total_cost of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: float
        """
        return self._total_cost

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


        :param total_cost: The total_cost of this V1LightningappInstanceStatus.  # noqa: E501
        :type: float
        """

        self._total_cost = total_cost

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


        :return: The url of this V1LightningappInstanceStatus.  # noqa: E501
        :rtype: str
        """
        return self._url

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


        :param url: The url of this V1LightningappInstanceStatus.  # noqa: E501
        :type: str
        """

        self._url = url

    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(V1LightningappInstanceStatus, 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: 'V1LightningappInstanceStatus') -> bool:
        """Returns true if both objects are equal"""
        if not isinstance(other, V1LightningappInstanceStatus):
            return False

        return self.__dict__ == other.__dict__

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