Documentation
¶
Index ¶
- type Callback
- type Checks
- type Option
- func WithBootstrapCondition(cond condition.Condition) Option
- func WithDeckhouseVersionGetter(deckhouseVersionGetter version.Getter) Option
- func WithDependencyGetter(dependencyGetter dependency.Getter) Option
- func WithKubeVersionGetter(kubeVersionGetter version.Getter) Option
- func WithOnDisable(callback Callback) Option
- func WithOnEnable(callback Callback) Option
- type Package
- type Scheduler
- type State
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Checks ¶
type Checks struct {
Kubernetes *semver.Constraints // Kubernetes version constraint (e.g., ">=1.21")
Deckhouse *semver.Constraints // Deckhouse version constraint
Modules map[string]dependency.Dependency // Module dependency constraints
}
Checks defines version constraints that must be satisfied for a package to be enabled.
type Option ¶
type Option func(*Scheduler)
func WithBootstrapCondition ¶
func WithDependencyGetter ¶
func WithDependencyGetter(dependencyGetter dependency.Getter) Option
func WithKubeVersionGetter ¶
func WithOnDisable ¶
func WithOnEnable ¶
type Package ¶
Package represents a package that can be scheduled for enable/disable based on conditions.
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler manages package enable/disable state based on version constraints and conditions. It evaluates checkers for each package and invokes callbacks when state changes.
Thread-safety: Uses mutex for nodes map and atomic.Bool for pause state.
func NewScheduler ¶
NewScheduler creates a new Scheduler instance. The scheduler starts in paused state and must be explicitly resumed.
func (*Scheduler) Add ¶
Add registers a package with the scheduler and creates checkers based on its constraints. If scheduler is not paused and checks pass, onEnable callback is invoked immediately.
Checker evaluation order:
- Kubernetes version
- Deckhouse version
- Bootstrap condition
Thread-safety: Acquires mutex to add node, releases before invoking callbacks to avoid deadlock.
func (*Scheduler) Pause ¶
func (s *Scheduler) Pause()
Pause prevents any state changes from being processed. Packages can still be added/removed, but no callbacks will be invoked.
func (*Scheduler) Remove ¶
Remove unregisters a package from the scheduler. No callback is invoked - the package is simply removed from tracking.
Directories
¶
| Path | Synopsis |
|---|---|
|
dependency
Package dependency provides a checker for validating package dependencies.
|
Package dependency provides a checker for validating package dependencies. |