apps

package
v1.74.2 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2026 License: Apache-2.0 Imports: 19 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 NewApplication

func NewApplication(name, path string, cfg ApplicationConfig) (*Application, error)

NewApplication 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) GetHooks

func (a *Application) GetHooks() []*addonhooks.ModuleHook

GetHooks returns all hooks for this application in arbitrary order.

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) GetRuntimeValues

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

GetRuntimeValues returns values that is not part of schema(name, namespace, version)

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

func (*Application) RunHookByName

func (a *Application) RunHookByName(ctx context.Context, name string, bctx []bindingcontext.BindingContext, dc DependencyContainer) 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, dc DependencyContainer) 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

type ApplicationConfig

type ApplicationConfig struct {
	StaticValues addonutils.Values // Static values from values.yaml files

	Definition Definition // Application definition

	Digests  map[string]string // Package images digests
	Registry registry.Registry

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

	Hooks []*addonhooks.ModuleHook // Discovered hooks
}

ApplicationConfig 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 DependencyContainer

type DependencyContainer interface {
	KubeObjectPatcher() *objectpatch.ObjectPatcher
}

DependencyContainer provides access to shared services needed by applications.

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"`
	Registry   registry.Registry `json:"registry" yaml:"registry"`
	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.

Jump to

Keyboard shortcuts

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