application

package
v1.9.11 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: Apache-2.0 Imports: 84 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ComponentNamespaceContextKey is the key in context that defines the override namespace of component
	ComponentNamespaceContextKey contextKey = iota
	// ComponentContextKey is the key in context that records the component
	ComponentContextKey
	// ReplicaKeyContextKey is the key in context that records the replica key
	ReplicaKeyContextKey
	// OriginalAppKey is the key in the context that records the in coming original app
	OriginalAppKey
)

Variables

View Source
var (
	// DisableAllComponentRevision disable component revision creation
	DisableAllComponentRevision = false
	// DisableAllApplicationRevision disable application revision creation
	DisableAllApplicationRevision = false
)
View Source
var (
	// DisableResourceApplyDoubleCheck optimize applyComponentFunc by disable post resource existing check after dispatch
	DisableResourceApplyDoubleCheck = false
)
View Source
var (
	// EnableResourceTrackerDeleteOnlyTrigger optimize ResourceTracker mutate event trigger by only receiving deleting events
	EnableResourceTrackerDeleteOnlyTrigger = true
)

Functions

func ComputeAppRevisionHash

func ComputeAppRevisionHash(appRevision *v1beta1.ApplicationRevision) (string, error)

ComputeAppRevisionHash computes a single hash value for an appRevision object Spec of Application/WorkloadDefinitions/ComponentDefinitions/TraitDefinitions/ScopeDefinitions will be taken into compute

func DeepEqualRevision

func DeepEqualRevision(old, new *v1beta1.ApplicationRevision) bool

DeepEqualRevision will compare the spec of Application and Definition to see if the Application is the same revision Spec of AC and Component will not be compared as they are generated by the application and definitions Note the Spec compare can only work when the RawExtension are decoded well in the RawExtension.Object instead of in RawExtension.Raw(bytes)

func GetAppRevisions

func GetAppRevisions(ctx context.Context, cli client.Client, appName string, appNs string) ([]v1beta1.ApplicationRevision, error)

GetAppRevisions get application revisions by label

func GetSortedAppRevisions

func GetSortedAppRevisions(ctx context.Context, cli client.Client, appName string, appNs string) ([]v1beta1.ApplicationRevision, error)

GetSortedAppRevisions get application revisions by revision number

func Setup

func Setup(mgr ctrl.Manager, args core.Args) error

Setup adds a controller that reconciles App.

Types

type AppHandler

type AppHandler struct {
	client.Client
	// contains filtered or unexported fields
}

AppHandler handles application reconcile

func NewAppHandler

func NewAppHandler(ctx context.Context, r *Reconciler, app *v1beta1.Application) (*AppHandler, error)

NewAppHandler create new app handler

func (*AppHandler) ApplyPolicies

func (h *AppHandler) ApplyPolicies(ctx context.Context, af *appfile.Appfile) error

ApplyPolicies will render policies into manifests from appfile and dispatch them Note the builtin policy like apply-once, shared-resource, etc. is not handled here.

func (*AppHandler) CheckWorkflowRestart

func (h *AppHandler) CheckWorkflowRestart(ctx monitorContext.Context, app *v1beta1.Application)

CheckWorkflowRestart check if application workflow need restart and return the desired rev to be set in status 1. If workflow status is empty, it means no previous running record, the workflow will restart (cold start) 2. If workflow status is not empty, and publishVersion is set, the desired rev will be the publishVersion 3. If workflow status is not empty, the desired rev will be the ApplicationRevision name. For backward compatibility, the legacy style <rev>:<hash> will be recognized and reduced into <rev>

func (*AppHandler) Delete

func (h *AppHandler) Delete(ctx context.Context, cluster string, owner string, manifest *unstructured.Unstructured) error

Delete delete manifests from k8s.

func (*AppHandler) Dispatch

func (h *AppHandler) Dispatch(ctx context.Context, cluster string, owner string, manifests ...*unstructured.Unstructured) error

Dispatch apply manifests into k8s.

func (*AppHandler) FinalizeAndApplyAppRevision

func (h *AppHandler) FinalizeAndApplyAppRevision(ctx context.Context) error

FinalizeAndApplyAppRevision finalise AppRevision object and apply it

func (*AppHandler) GenerateApplicationSteps

func (h *AppHandler) GenerateApplicationSteps(ctx monitorContext.Context,
	app *v1beta1.Application,
	appParser *appfile.Parser,
	af *appfile.Appfile) (*wfTypes.WorkflowInstance, []wfTypes.TaskRunner, error)

GenerateApplicationSteps generate application steps. nolint:gocyclo

func (*AppHandler) PrepareCurrentAppRevision

func (h *AppHandler) PrepareCurrentAppRevision(ctx context.Context, af *appfile.Appfile) error

PrepareCurrentAppRevision will generate a pure revision without metadata and rendered result the generated revision will be compare with the last revision to see if there's any difference.

func (*AppHandler) UpdateAppLatestRevisionStatus

func (h *AppHandler) UpdateAppLatestRevisionStatus(ctx context.Context, patchStatus statusPatcher) error

UpdateAppLatestRevisionStatus only call to update app's latest revision status after applying manifests successfully otherwise it will override previous revision which is used during applying to do GC jobs

func (*AppHandler) UpdateApplicationRevisionStatus

func (h *AppHandler) UpdateApplicationRevisionStatus(ctx context.Context, appRev *v1beta1.ApplicationRevision, wfStatus *common.WorkflowStatus)

UpdateApplicationRevisionStatus update application revision status

type DispatchOptions

type DispatchOptions struct {
	Workload          *unstructured.Unstructured
	Traits            []*unstructured.Unstructured
	OverrideNamespace string
	Stage             StageType
}

DispatchOptions is the options for dispatch

type Reconciler

type Reconciler struct {
	client.Client

	Scheme   *runtime.Scheme
	Recorder event.Recorder
	// contains filtered or unexported fields
}

Reconciler reconciles an Application object

func (*Reconciler) Reconcile

func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

Reconcile process app event nolint:gocyclo

func (*Reconciler) SetupWithManager

func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager install to manager

type SortDispatchOptions

type SortDispatchOptions []DispatchOptions

SortDispatchOptions describe the sorting for options

func (SortDispatchOptions) Len

func (s SortDispatchOptions) Len() int

func (SortDispatchOptions) Less

func (s SortDispatchOptions) Less(i, j int) bool

func (SortDispatchOptions) Swap

func (s SortDispatchOptions) Swap(i, j int)

type StageType

type StageType int

StageType is a valid value for TraitDefinitionSpec.Stage

const (
	// PreDispatch means that pre dispatch for manifests
	PreDispatch StageType = iota
	// DefaultDispatch means that default dispatch for manifests
	DefaultDispatch
	// PostDispatch means that post dispatch for manifests
	PostDispatch
)

func ParseStageType

func ParseStageType(s string) (StageType, error)

ParseStageType parse the StageType from a string

type TraitFilter

type TraitFilter func(trait appfile.Trait) bool

TraitFilter is used to filter trait object.

func ByTraitType

func ByTraitType(readyTraits, checkTraits []*unstructured.Unstructured) TraitFilter

ByTraitType returns a filter that does not match the given type and belongs to readyTraits.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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