Documentation
¶
Overview ¶
Package conditions provides standard Kubernetes condition management for BubuStack resources.
This package defines standard condition types and reasons used across all BubuStack resources, along with utilities for managing condition transitions. It implements the Kubernetes condition conventions for status reporting.
Condition Types ¶
Standard condition types are defined as constants:
- ConditionReady: Resource is ready for use
- ConditionProgressing: Resource is progressing towards ready state
- ConditionDegraded: Resource is degraded but operational
- ConditionValidated: Template/spec validation passed
- ConditionTemplateResolved: Template reference resolved successfully
Condition Reasons ¶
Standard reasons for condition transitions:
- ReasonValidationPassed, ReasonValidationFailed
- ReasonTemplateResolved, ReasonTemplateNotFound
- ReasonCompleted, ReasonExecutionFailed
Condition Manager ¶
The ConditionManager provides atomic condition updates:
cm := conditions.NewConditionManager(obj.Generation) cm.SetReadyCondition(&obj.Status.Conditions, true, ReasonCompleted, "ready") cm.TransitionConditions(&obj.Status.Conditions, "Ready", ReasonCompleted, "done")
Condition Queries ¶
Helper functions for querying conditions:
if conditions.IsReady(obj.Status.Conditions) {
// Resource is ready
}
cond := conditions.GetCondition(obj.Status.Conditions, ConditionValidated)
This package follows Kubernetes API conventions for condition management and integrates with the standard metav1.Condition type.
Index ¶
- Constants
- func GetCondition(conditions []metav1.Condition, conditionType string) *metav1.Condition
- func IsConditionFalse(conditions []metav1.Condition, conditionType string) bool
- func IsConditionTrue(conditions []metav1.Condition, conditionType string) bool
- func IsDegraded(conditions []metav1.Condition) bool
- func IsProgressing(conditions []metav1.Condition) bool
- func IsReady(conditions []metav1.Condition) bool
- func IsTerminating(conditions []metav1.Condition) bool
- type ConditionManager
- func (cm *ConditionManager) SetCondition(conditions *[]metav1.Condition, conditionType string, ...)
- func (cm *ConditionManager) SetDegradedCondition(conditions *[]metav1.Condition, degraded bool, reason, message string)
- func (cm *ConditionManager) SetLargeDataDelegatedCondition(conditions *[]metav1.Condition, delegated bool, reason, message string)
- func (cm *ConditionManager) SetProgressingCondition(conditions *[]metav1.Condition, progressing bool, reason, message string)
- func (cm *ConditionManager) SetReadyCondition(conditions *[]metav1.Condition, ready bool, reason, message string)
- func (cm *ConditionManager) SetTerminatingCondition(conditions *[]metav1.Condition, terminating bool, reason, message string)
- func (cm *ConditionManager) TransitionConditions(conditions *[]metav1.Condition, targetState string, reason, message string)
- func (cm *ConditionManager) UpdateGeneration(generation int64)
Constants ¶
const ( // Universal conditions (all resources) ConditionReady = "Ready" // Resource is ready for use ConditionProgressing = "Progressing" // Resource is progressing towards ready state ConditionDegraded = "Degraded" // Resource is degraded but still operational ConditionTerminating = "Terminating" // Resource is being terminated // Template-specific conditions ConditionValidated = "Validated" // Template/spec validation passed ConditionTemplateResolved = "TemplateResolved" // Template reference resolved successfully // Data handling conditions ConditionLargeDataDelegated = "LargeDataDelegated" // Large input/output delegated to engram/impulse // Story-specific conditions ConditionCompiled = "Compiled" // Story compiled and ready for execution // Execution-specific conditions ConditionScheduled = "Scheduled" // StepRun scheduled for execution ConditionResolvedInputs = "ResolvedInputs" // StoryRun inputs resolved successfully ConditionStepsCompleted = "StepsCompleted" // All steps completed // Impulse-specific conditions ConditionListening = "Listening" // Impulse is listening for triggers ConditionStoryResolved = "StoryResolved" // Story reference resolved successfully // Transport-specific conditions ConditionTransportReady = "TransportReady" // Transport is configured and ready )
Standard condition types for all bobrapet resources
const ( // Success reasons ReasonValidationPassed = "ValidationPassed" ReasonTemplateResolved = "TemplateResolved" ReasonStoryResolved = "StoryResolved" ReasonCompiled = "Compiled" ReasonScheduled = "Scheduled" ReasonListening = "Listening" ReasonCompleted = "Completed" ReasonLargeDataDelegated = "LargeDataDelegated" // Error reasons ReasonValidationFailed = "ValidationFailed" ReasonTemplateNotFound = "TemplateNotFound" ReasonTemplateResolutionFailed = "TemplateResolutionFailed" ReasonOutputResolutionFailed = "OutputResolutionFailed" ReasonStoryNotFound = "StoryNotFound" ReasonStoryReferenceInvalid = "StoryReferenceInvalid" ReasonEngramReferenceInvalid = "EngramReferenceInvalid" ReasonTransportReferenceInvalid = "TransportReferenceInvalid" ReasonCompilationFailed = "CompilationFailed" ReasonSchedulingFailed = "SchedulingFailed" ReasonExecutionFailed = "ExecutionFailed" ReasonReferenceNotFound = "ReferenceNotFound" ReasonInvalidConfiguration = "InvalidConfiguration" ReasonDeploymentReady = "DeploymentReady" // Progressing reasons ReasonValidating = "Validating" ReasonResolvingTemplate = "ResolvingTemplate" ReasonResolvingStory = "ResolvingStory" ReasonCompiling = "Compiling" ReasonStartingExecution = "StartingExecution" ReasonProcessingSteps = "ProcessingSteps" // Terminating reasons ReasonDeletionRequested = "DeletionRequested" ReasonCleaningUp = "CleaningUp" ReasonInputTooLarge = "InputTooLarge" ReasonOutputTooLarge = "OutputTooLarge" ReasonCanceled = "Canceled" // Transport-specific reasons ReasonTransportReady = "TransportReady" ReasonTransportFailed = "TransportFailed" ReasonReconciling = "Reconciling" ReasonAwaitingTransport = "AwaitingTransport" ReasonAwaitingStoryRun = "AwaitingStoryRun" // Run lifecycle reasons (StoryRun/StepRun) ReasonPending = "Pending" ReasonRunning = "Running" ReasonPaused = "Paused" ReasonBlocked = "Blocked" ReasonTimedOut = "TimedOut" ReasonSkipped = "Skipped" ReasonCompensated = "Compensated" ReasonCompensationFailed = "CompensationFailed" ReasonCleanupFailed = "CleanupFailed" ReasonRetryScheduled = "RetryScheduled" ReasonInputSchemaFailed = "InputSchemaFailed" ReasonOutputSchemaFailed = "OutputSchemaFailed" ReasonExpressionFailed = "ExpressionFailed" ReasonDependencyFailed = "DependencyFailed" ReasonTopologyTerminated = "TopologyTerminated" // Transport validation reason codes ReasonTransportDriverMissing = "DriverMissing" ReasonTransportCapabilitiesMissing = "CapabilitiesMissing" ReasonTransportCodecInvalid = "CodecInvalid" ReasonTransportCodecDuplicate = "CodecDuplicate" ReasonTransportMimeTypeInvalid = "MimeTypeInvalid" )
Standard condition reasons
Variables ¶
This section is empty.
Functions ¶
func GetCondition ¶
GetCondition returns a condition by type
func IsConditionFalse ¶
IsConditionFalse returns true if the condition is False
func IsConditionTrue ¶
IsConditionTrue returns true if the condition is True
func IsDegraded ¶
IsDegraded returns true if the Degraded condition is True
func IsProgressing ¶
IsProgressing returns true if the Progressing condition is True
func IsTerminating ¶
IsTerminating returns true if the Terminating condition is True
Types ¶
type ConditionManager ¶
type ConditionManager struct {
// contains filtered or unexported fields
}
ConditionManager provides standard condition management
func NewConditionManager ¶
func NewConditionManager(generation int64) *ConditionManager
NewConditionManager creates a new condition manager
func (*ConditionManager) SetCondition ¶
func (cm *ConditionManager) SetCondition( conditions *[]metav1.Condition, conditionType string, status metav1.ConditionStatus, reason, message string, )
SetCondition sets a condition on the conditions slice
func (*ConditionManager) SetDegradedCondition ¶
func (cm *ConditionManager) SetDegradedCondition( conditions *[]metav1.Condition, degraded bool, reason, message string, )
SetDegradedCondition sets the Degraded condition
func (*ConditionManager) SetLargeDataDelegatedCondition ¶
func (cm *ConditionManager) SetLargeDataDelegatedCondition( conditions *[]metav1.Condition, delegated bool, reason, message string, )
SetLargeDataDelegatedCondition sets the LargeDataDelegated condition
func (*ConditionManager) SetProgressingCondition ¶
func (cm *ConditionManager) SetProgressingCondition( conditions *[]metav1.Condition, progressing bool, reason, message string, )
SetProgressingCondition sets the Progressing condition
func (*ConditionManager) SetReadyCondition ¶
func (cm *ConditionManager) SetReadyCondition(conditions *[]metav1.Condition, ready bool, reason, message string)
SetReadyCondition sets the Ready condition
func (*ConditionManager) SetTerminatingCondition ¶
func (cm *ConditionManager) SetTerminatingCondition( conditions *[]metav1.Condition, terminating bool, reason, message string, )
SetTerminatingCondition sets the Terminating condition
func (*ConditionManager) TransitionConditions ¶
func (cm *ConditionManager) TransitionConditions( conditions *[]metav1.Condition, targetState string, reason, message string, )
TransitionConditions handles standard resource state transitions
func (*ConditionManager) UpdateGeneration ¶
func (cm *ConditionManager) UpdateGeneration(generation int64)
UpdateGeneration updates the generation for condition tracking