apps

package
v1.75.0 Latest Latest
Warning

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

Go to latest
Published: Mar 17, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Overview

Package apps provides the Application type representing a running package instance. It manages hooks, values, and execution lifecycle for a single application.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildName

func BuildName(namespace, name string) string

BuildName returns the full application identifier in format "namespace.name".

Types

type Application

type Application struct {
	// contains filtered or unexported fields
}

Application represents a running instance of a package. It contains hooks, values storage, and configuration for execution.

Thread Safety: The Application itself is not thread-safe, but its hooks and values storage components use internal synchronization.

func NewAppByConfig

func NewAppByConfig(name string, cfg *Config, logger *log.Logger) (*Application, error)

NewAppByConfig creates a new Application instance with the specified configuration. It initializes hook storage, adds all discovered hooks, and creates values storage.

Returns error if hook initialization or values storage creation fails.

func (*Application) ApplySettings

func (a *Application) ApplySettings(settings addonutils.Values) error

ApplySettings apply setting values to application

func (*Application) GetChecks

func (a *Application) GetChecks() schedule.Checks

GetChecks return scheduler checks, their determine if an app should be enabled/disabled

func (*Application) GetExtraNelmValues

func (a *Application) GetExtraNelmValues() string

GetExtraNelmValues returns runtime values in string format

func (*Application) GetHooksByBinding

func (a *Application) GetHooksByBinding(binding shtypes.BindingType) []*addonhooks.ModuleHook

GetHooksByBinding returns all hooks for the specified binding type, sorted by order.

func (*Application) GetInfo

func (a *Application) GetInfo() Info

func (*Application) GetName

func (a *Application) GetName() string

GetName returns the full application identifier in format "namespace.name".

func (*Application) GetNamespace

func (a *Application) GetNamespace() string

GetNamespace returns the application namespace.

func (*Application) GetPath

func (a *Application) GetPath() string

GetPath returns path to the package dir

func (*Application) GetQueues

func (a *Application) GetQueues() []string

GetQueues returns package queues from all hooks

func (*Application) GetRuntimeValues

func (a *Application) GetRuntimeValues() RuntimeValues

GetRuntimeValues returns values that are not part of schema. Instance contains name and namespace of the running instance. Package contains package metadata (name, version, digests, registry).

func (*Application) GetSettingsChecksum

func (a *Application) GetSettingsChecksum() string

GetSettingsChecksum returns a checksum of the current config values. Used to detect if settings changed.

func (*Application) GetValues

func (a *Application) GetValues() addonutils.Values

GetValues returns values for rendering

func (*Application) GetValuesChecksum

func (a *Application) GetValuesChecksum() string

GetValuesChecksum returns a checksum of the current values. Used to detect if values changed after hook execution.

func (*Application) GetVersion

func (a *Application) GetVersion() string

GetVersion return the package version

func (*Application) InitializeHooks

func (a *Application) InitializeHooks()

InitializeHooks initializes hook controllers and bind them to Kubernetes events and schedules

func (*Application) RunHookByName

func (a *Application) RunHookByName(ctx context.Context, name string, bctx []bctx.BindingContext) error

RunHookByName executes a specific hook by name with the provided binding context. Returns nil if hook is not found (silent no-op).

func (*Application) RunHooksByBinding

func (a *Application) RunHooksByBinding(ctx context.Context, binding shtypes.BindingType) error

RunHooksByBinding executes all hooks for a specific binding type in order. It creates a binding context with snapshots for BeforeHelm/AfterHelm/AfterDeleteHelm hooks.

func (*Application) UnlockKubernetesMonitors

func (a *Application) UnlockKubernetesMonitors(hook string, monitors ...string)

UnlockKubernetesMonitors called after sync task is completed to unlock getting events

func (*Application) ValidateSettings

func (a *Application) ValidateSettings(ctx context.Context, settings addonutils.Values) (settingscheck.Result, error)

ValidateSettings validates settings against openAPI and call setting check if exists

type Config

type Config struct {
	Path         string            // Path to package dir
	StaticValues addonutils.Values // Static values from values.yaml files

	Definition Definition // Application definition

	Digests    map[string]string // Package images digests(images_digests.json)
	Repository registry.Remote   // Package repository options

	ConfigSchema []byte // OpenAPI config schema (YAML)
	ValuesSchema []byte // OpenAPI values schema (YAML)

	Hooks []*addonhooks.ModuleHook // Discovered hooks

	SettingsCheck *kind.SettingsCheck

	Patcher           *objectpatch.ObjectPatcher
	ScheduleManager   schedulemanager.ScheduleManager
	KubeEventsManager kubeeventsmanager.KubeEventsManager
}

Config holds configuration for creating a new Application instance.

type Definition

type Definition struct {
	Name    string `json:"name" yaml:"name"`
	Version string `json:"version" yaml:"version"`
	Stage   string `json:"stage" yaml:"stage"`

	Requirements   Requirements   `json:"requirements" yaml:"requirements"`
	DisableOptions DisableOptions `json:"disableOptions" yaml:"disableOptions"`
}

Definition represents application metadata.

type Dependency

type Dependency struct {
	Constraints *semver.Constraints `json:"constraints" yaml:"constraints"`
	Optional    bool                `json:"optional" yaml:"optional"`
}

type DisableOptions

type DisableOptions struct {
	Confirmation bool   `json:"confirmation" yaml:"confirmation"` // Whether confirmation is required to disable
	Message      string `json:"message" yaml:"message"`           // Message to display when disabling
}

DisableOptions configures application disablement behavior.

type Info

type Info struct {
	Instance   string            `json:"name" yaml:"name"`
	Namespace  string            `json:"namespace" yaml:"namespace"`
	Definition Definition        `json:"definition" yaml:"definition"`
	Repository registry.Remote   `json:"repository" yaml:"repository"`
	Digests    map[string]string `json:"digests" yaml:"digests"`
	Values     addonutils.Values `json:"values,omitempty" yaml:"values,omitempty"`
	Hooks      []string          `json:"hooks,omitempty" yaml:"hooks,omitempty"`
}

type Requirements

type Requirements struct {
	Kubernetes *semver.Constraints   `json:"kubernetes" yaml:"kubernetes"`
	Deckhouse  *semver.Constraints   `json:"deckhouse" yaml:"deckhouse"`
	Modules    map[string]Dependency `json:"modules" yaml:"modules"`
}

Requirements specifies dependencies required by the application.

func (*Requirements) Checks

func (r *Requirements) Checks() schedule.Checks

type RuntimeValues

type RuntimeValues struct {
	Instance addonutils.Values
	Package  addonutils.Values
}

RuntimeValues holds runtime values that are not part of schema. These values are passed to helm templates under .Runtime prefix.

Jump to

Keyboard shortcuts

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