appfile

package
v0.0.0-...-2c539bb Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// WriteConnectionSecretToRefKey is used to create a secret for cloud resource connection
	WriteConnectionSecretToRefKey = "writeConnectionSecretToRef"
	// RegionKey is the region of a Cloud Provider
	RegionKey = "region"
	// ProviderRefKey is the reference of a Provider
	ProviderRefKey = "providerRef"
)
View Source
const (
	// UsageTag is usage comment annotation
	UsageTag = "+usage="
	// ShortTag is the short alias annotation
	ShortTag = "+short"
)

Variables

This section is empty.

Functions

func ConvertTemplateJSON2Object

func ConvertTemplateJSON2Object(capabilityName string, in *runtime.RawExtension, schematic *common.Schematic) (types.Capability, error)

ConvertTemplateJSON2Object convert spec.extension or spec.schematic to object

func GenerateCUETemplate

func GenerateCUETemplate(wl *Workload) (string, error)

GenerateCUETemplate generate CUE Template from Kube module and Helm module

func GenerateContextDataFromAppFile

func GenerateContextDataFromAppFile(appfile *Appfile, wlName string) process.ContextData

GenerateContextDataFromAppFile generates process context data from app file

func GetScopeDefAndGVK

GetScopeDefAndGVK get grouped API version of the given scope

func GetScopeDefAndGVKFromRevision

func GetScopeDefAndGVKFromRevision(name string, appRev *v1beta1.ApplicationRevision) (*v1beta1.ScopeDefinition, metav1.GroupVersionKind, error)

GetScopeDefAndGVKFromRevision get grouped API version of the given scope

func NewBasicContext

func NewBasicContext(contextData process.ContextData, params map[string]interface{}) process.Context

NewBasicContext prepares a basic DSL process Context

func PrepareProcessContext

func PrepareProcessContext(wl *Workload, ctxData process.ContextData) (process.Context, error)

PrepareProcessContext prepares a DSL process Context

Types

type Appfile

type Appfile struct {
	Name            string
	Namespace       string
	AppRevisionName string
	Workloads       []*Workload

	AppRevisionHash string
	AppLabels       map[string]string
	AppAnnotations  map[string]string

	RelatedTraitDefinitions     map[string]*v1beta1.TraitDefinition
	RelatedComponentDefinitions map[string]*v1beta1.ComponentDefinition
	RelatedScopeDefinitions     map[string]*v1beta1.ScopeDefinition

	Policies        []v1beta1.AppPolicy
	PolicyWorkloads []*Workload
	WorkflowSteps   []v1beta1.WorkflowStep
	Components      []common.ApplicationComponent
	Artifacts       []*types.ComponentManifest
	WorkflowMode    common.WorkflowMode
	// contains filtered or unexported fields
}

Appfile describes application

func (*Appfile) GenerateComponentManifest

func (af *Appfile) GenerateComponentManifest(wl *Workload) (*types.ComponentManifest, error)

GenerateComponentManifest generate only one ComponentManifest

func (*Appfile) GenerateComponentManifests

func (af *Appfile) GenerateComponentManifests() ([]*types.ComponentManifest, error)

GenerateComponentManifests converts an appFile to a slice of ComponentManifest

func (*Appfile) PrepareWorkflowAndPolicy

func (af *Appfile) PrepareWorkflowAndPolicy(ctx context.Context) ([]*unstructured.Unstructured, error)

PrepareWorkflowAndPolicy generates workflow steps and policies from an appFile

func (*Appfile) SetOAMContract

func (af *Appfile) SetOAMContract(comp *types.ComponentManifest) error

SetOAMContract will set OAM labels and annotations for resources as contract

type Handler

type Handler interface {
	HandleComponentsRevision(ctx context.Context, compManifests []*types.ComponentManifest) error
	Dispatch(ctx context.Context, manifests ...*unstructured.Unstructured) error
}

Handler handles reconcile

type Parser

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

Parser is an application parser

func NewApplicationParser

func NewApplicationParser(cli client.Client, dm discoverymapper.DiscoveryMapper, pd *packages.PackageDiscover) *Parser

NewApplicationParser create appfile parser

func NewDryRunApplicationParser

func NewDryRunApplicationParser(cli client.Client, dm discoverymapper.DiscoveryMapper, pd *packages.PackageDiscover, defs []oam.Object) *Parser

NewDryRunApplicationParser create an appfile parser for DryRun

func (*Parser) GenerateAppFile

func (p *Parser) GenerateAppFile(ctx context.Context, app *v1beta1.Application) (*Appfile, error)

GenerateAppFile converts an application to an Appfile

func (*Parser) GenerateAppFileFromRevision

func (p *Parser) GenerateAppFileFromRevision(appRev *v1beta1.ApplicationRevision) (*Appfile, error)

GenerateAppFileFromRevision converts an application revision to an Appfile

func (*Parser) ParseWorkloadFromRevision

func (p *Parser) ParseWorkloadFromRevision(comp common.ApplicationComponent, appRev *v1beta1.ApplicationRevision) (*Workload, error)

ParseWorkloadFromRevision resolve an ApplicationComponent and generate a Workload containing ALL information required by an Appfile from app revision.

func (*Parser) ValidateCUESchematicAppfile

func (p *Parser) ValidateCUESchematicAppfile(a *Appfile) error

ValidateCUESchematicAppfile validates CUE schematic workloads in an Appfile

func (*Parser) ValidateComponentNames

func (p *Parser) ValidateComponentNames(ctx context.Context, af *Appfile) (int, error)

ValidateComponentNames validate all component name whether repeat in cluster and template

type Scope

type Scope struct {
	Name            string
	GVK             metav1.GroupVersionKind
	ResourceVersion string
}

Scope defines the scope of workload

type Template

type Template struct {
	TemplateStr        string
	Health             string
	CustomStatus       string
	CapabilityCategory types.CapabilityCategory
	Reference          common.WorkloadTypeDescriptor
	Helm               *common.Helm
	Kube               *common.Kube
	Terraform          *common.Terraform

	ComponentDefinition *v1beta1.ComponentDefinition
	WorkloadDefinition  *v1beta1.WorkloadDefinition
	TraitDefinition     *v1beta1.TraitDefinition
	ScopeDefinition     *v1beta1.ScopeDefinition

	PolicyDefinition       *v1beta1.PolicyDefinition
	WorkflowStepDefinition *v1beta1.WorkflowStepDefinition
}

Template is a helper struct for processing capability including ComponentDefinition, TraitDefinition, ScopeDefinition. It mainly collects schematic and status data of a capability definition.

func LoadTemplate

func LoadTemplate(ctx context.Context, dm discoverymapper.DiscoveryMapper, cli client.Reader, capName string, capType types.CapType) (*Template, error)

LoadTemplate gets the capability definition from cluster and resolve it. It returns a helper struct, Template, which will be used for further processing.

func LoadTemplateFromRevision

func LoadTemplateFromRevision(capName string, capType types.CapType, apprev *v1beta1.ApplicationRevision, dm discoverymapper.DiscoveryMapper) (*Template, error)

LoadTemplateFromRevision will load Definition template from app revision

type TemplateLoaderFn

TemplateLoaderFn load template of a capability definition

func DryRunTemplateLoader

func DryRunTemplateLoader(defs []oam.Object) TemplateLoaderFn

DryRunTemplateLoader return a function that do the same work as LoadTemplate, but load template from provided ones before loading from cluster through LoadTemplate

func (TemplateLoaderFn) LoadTemplate

func (fn TemplateLoaderFn) LoadTemplate(ctx context.Context, dm discoverymapper.DiscoveryMapper, c client.Reader, capName string, capType types.CapType) (*Template, error)

LoadTemplate load template of a capability definition

type Trait

type Trait struct {
	// The Name is name of TraitDefinition, actually it's a type of the trait instance
	Name               string
	CapabilityCategory types.CapabilityCategory
	Params             map[string]interface{}

	Template           string
	HealthCheckPolicy  string
	CustomStatusFormat string

	// RequiredSecrets stores secret names which the trait needs from cloud resource component and its context
	RequiredSecrets []process.RequiredSecrets

	FullTemplate *Template
	// contains filtered or unexported fields
}

Trait is ComponentTrait

func (*Trait) EvalContext

func (trait *Trait) EvalContext(ctx process.Context) error

EvalContext eval trait template and set result to context

func (*Trait) EvalHealth

func (trait *Trait) EvalHealth(ctx process.Context, client client.Client, namespace string) (bool, error)

EvalHealth eval trait health check

func (*Trait) EvalStatus

func (trait *Trait) EvalStatus(ctx process.Context, cli client.Client, ns string) (string, error)

EvalStatus eval trait status

type Workload

type Workload struct {
	Name               string
	Type               string
	ExternalRevision   string
	CapabilityCategory types.CapabilityCategory
	Params             map[string]interface{}
	Traits             []*Trait
	Scopes             []Scope
	ScopeDefinition    []*v1beta1.ScopeDefinition
	FullTemplate       *Template
	Ctx                process.Context
	Patch              *value.Value

	SkipApplyWorkload bool
	// contains filtered or unexported fields
}

Workload is component

func (*Workload) EvalContext

func (wl *Workload) EvalContext(ctx process.Context) error

EvalContext eval workload template and set result to context

func (*Workload) EvalHealth

func (wl *Workload) EvalHealth(ctx process.Context, client client.Client, namespace string) (bool, error)

EvalHealth eval workload health check

func (*Workload) EvalStatus

func (wl *Workload) EvalStatus(ctx process.Context, cli client.Client, ns string) (string, error)

EvalStatus eval workload status

Directories

Path Synopsis
flux2apis
Package apis contains typed structs from fluxcd/helm-controller and fluxcd/source-controller.
Package apis contains typed structs from fluxcd/helm-controller and fluxcd/source-controller.

Jump to

Keyboard shortcuts

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