# 
# Generated by the nebius.base.protos.compiler.  DO NOT EDIT!
# 

import nebius.base.protos.pb_classes as pb_classes
import nebius.api.nebius.msp.v1alpha1.cluster_pb2 as cluster_pb2
import nebius.base.protos.descriptor as descriptor
import google.protobuf.descriptor as descriptor_1
import nebius.base.protos.pb_enum as pb_enum
import google.protobuf.message as message
import nebius.base.protos.unset as unset
import builtins as builtins
import collections.abc as abc
#@ local imports here @#

# file: nebius/msp/v1alpha1/cluster.proto
class ClusterStatus(pb_classes.Message):
    __PB2_CLASS__ = cluster_pb2.ClusterStatus
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.msp.v1alpha1.ClusterStatus",cluster_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    class Phase(pb_enum.Enum):
        __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.EnumDescriptor](".nebius.msp.v1alpha1.ClusterStatus.Phase",cluster_pb2.DESCRIPTOR,descriptor_1.EnumDescriptor)
        PHASE_UNSPECIFIED = 0
        PHASE_PROVISIONING = 1
        PHASE_RUNNING = 2
        PHASE_UPDATING = 3
        PHASE_DELETING = 4
        PHASE_DELETED = 5
        PHASE_PURGING = 6
        PHASE_STOPPING = 7
        PHASE_RESUMING = 8
    
    class State(pb_enum.Enum):
        __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.EnumDescriptor](".nebius.msp.v1alpha1.ClusterStatus.State",cluster_pb2.DESCRIPTOR,descriptor_1.EnumDescriptor)
        STATE_UNSPECIFIED = 0
        STATE_IN_PROGRESS = 1
        STATE_FINISHED = 2
        STATE_ERROR = 3
        STATE_DEGRADED = 4
        STATE_SCHEDULED = 5
    
    def __init__(
        self,
        initial_message: message.Message|None = None,
        *,
        phase: "ClusterStatus.Phase|cluster_pb2.ClusterStatus.Phase|None|unset.UnsetType" = unset.Unset,
        state: "ClusterStatus.State|cluster_pb2.ClusterStatus.State|None|unset.UnsetType" = unset.Unset,
        reconciling: "builtins.bool|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(phase, unset.UnsetType):
            self.phase = phase
        if not isinstance(state, unset.UnsetType):
            self.state = state
        if not isinstance(reconciling, unset.UnsetType):
            self.reconciling = reconciling
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "phase",
            "state",
            "reconciling",
            "Phase",
            "State",
        ]
    
    @builtins.property
    def phase(self) -> "ClusterStatus.Phase":
        """
         Current phase of the cluster.
        """
        
        return super()._get_field("phase", explicit_presence=False,
        wrap=ClusterStatus.Phase,
        )
    @phase.setter
    def phase(self, value: "ClusterStatus.Phase|cluster_pb2.ClusterStatus.Phase|None") -> None:
        return super()._set_field("phase",value,explicit_presence=False,
        )
    
    @builtins.property
    def state(self) -> "ClusterStatus.State":
        """
         State reflects substatus of the phase to define whether it's healthy or not.
        """
        
        return super()._get_field("state", explicit_presence=False,
        wrap=ClusterStatus.State,
        )
    @state.setter
    def state(self, value: "ClusterStatus.State|cluster_pb2.ClusterStatus.State|None") -> None:
        return super()._set_field("state",value,explicit_presence=False,
        )
    
    @builtins.property
    def reconciling(self) -> "builtins.bool":
        return super()._get_field("reconciling", explicit_presence=False,
        )
    @reconciling.setter
    def reconciling(self, value: "builtins.bool|None") -> None:
        return super()._set_field("reconciling",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "phase":"phase",
        "state":"state",
        "reconciling":"reconciling",
        "Phase":"Phase",
        "State":"State",
    }
    
__all__ = [
    #@ local import names here @#
    "ClusterStatus",
]
