conditions

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

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

View Source
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

View Source
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

func GetCondition(conditions []metav1.Condition, conditionType string) *metav1.Condition

GetCondition returns a condition by type

func IsConditionFalse

func IsConditionFalse(conditions []metav1.Condition, conditionType string) bool

IsConditionFalse returns true if the condition is False

func IsConditionTrue

func IsConditionTrue(conditions []metav1.Condition, conditionType string) bool

IsConditionTrue returns true if the condition is True

func IsDegraded

func IsDegraded(conditions []metav1.Condition) bool

IsDegraded returns true if the Degraded condition is True

func IsProgressing

func IsProgressing(conditions []metav1.Condition) bool

IsProgressing returns true if the Progressing condition is True

func IsReady

func IsReady(conditions []metav1.Condition) bool

IsReady returns true if the Ready condition is True

func IsTerminating

func IsTerminating(conditions []metav1.Condition) bool

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL