trait

package
v0.0.0-...-ded4385 Latest Latest
Warning

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

Go to latest
Published: May 18, 2021 License: Apache-2.0 Imports: 77 Imported by: 0

Documentation

Overview

Package trait contains implementations of all available traits (features)

Index

Constants

View Source
const (
	// TraitOrderBeforeControllerCreation can be used to inject configuration such as properties and environment variables
	// into the running integration, before the actual controller is created.
	TraitOrderBeforeControllerCreation = 850
	// TraitOrderControllerSelection can be used if you intend to provide an alternative controller for the integration
	// (e.g. Deployment, CronJob, ...).
	TraitOrderControllerSelection = 950
	// TraitOrderPostProcessResources is executed after all other traits are executed (except for important core traits such as
	// the "owner" trait), so it can be used to post-process generated resources before their actual creation.
	TraitOrderPostProcessResources = 2450
)

A list of named orders, useful for correctly binding addons

View Source
const True = "true"

True --

Variables

View Source
var FactoryList []Factory

FactoryList contains the default list of trait Factory

Functions

func AddSourceDependencies

func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog) *strset.Set

func AddToTraits

func AddToTraits(factory Factory)

AddToTraits registers a trait Factory

Types

type BaseTrait

type BaseTrait struct {
	TraitID ID `json:"-"`
	// Can be used to enable or disable a trait. All traits share this common property.
	Enabled        *bool           `property:"enabled" json:"enabled,omitempty"`
	Client         client.Client   `json:"-"`
	Ctx            context.Context `json:"-"`
	ExecutionOrder int             `json:"-"`
	L              log.Logger      `json:"-"`
}

BaseTrait is the root trait with noop implementations for hooks

func NewBaseTrait

func NewBaseTrait(id string, order int) BaseTrait

NewBaseTrait --

func (*BaseTrait) ID

func (trait *BaseTrait) ID() ID

ID returns the identifier of the trait

func (*BaseTrait) InfluencesKit

func (trait *BaseTrait) InfluencesKit() bool

InfluencesKit determines if the trait has any influence on Integration Kits

func (*BaseTrait) InjectClient

func (trait *BaseTrait) InjectClient(c client.Client)

InjectClient implements client.ClientInject and allows to inject a client into the trait

func (*BaseTrait) InjectContext

func (trait *BaseTrait) InjectContext(ctx context.Context)

InjectContext allows to inject a context into the trait

func (*BaseTrait) IsAllowedInProfile

func (trait *BaseTrait) IsAllowedInProfile(v1.TraitProfile) bool

IsAllowedInProfile returns true for any profile by default

func (*BaseTrait) IsPlatformTrait

func (trait *BaseTrait) IsPlatformTrait() bool

IsPlatformTrait marks all fundamental traits that allow the platform to work.

func (*BaseTrait) Order

func (trait *BaseTrait) Order() int

Order contains the order value provided during initialization

func (*BaseTrait) RequiresIntegrationPlatform

func (trait *BaseTrait) RequiresIntegrationPlatform() bool

RequiresIntegrationPlatform indicates that the trait cannot work without an integration platform set

type Catalog

type Catalog struct {
	L log.Logger
	// contains filtered or unexported fields
}

Catalog collects all information about traits in one place

func NewCatalog

func NewCatalog(ctx context.Context, c client.Client) *Catalog

NewCatalog creates a new trait Catalog

func (*Catalog) ComputeTraitsProperties

func (c *Catalog) ComputeTraitsProperties() []string

ComputeTraitsProperties returns all key/value configuration properties that can be used to configure traits

func (*Catalog) GetTrait

func (c *Catalog) GetTrait(id string) Trait

GetTrait returns the trait with the given ID

func (*Catalog) TraitsForProfile

func (c *Catalog) TraitsForProfile(profile v1.TraitProfile) []Trait

TraitsForProfile returns all traits associated with a given profile.

Traits may depend on the result of previously executed ones, so care must be taken while changing the lists order.

type ControllerStrategy

type ControllerStrategy string

ControllerStrategy is used to determine the kind of controller that needs to be created for the integration

const (
	ControllerStrategyDeployment     ControllerStrategy = "deployment"
	ControllerStrategyKnativeService ControllerStrategy = "knative-service"
	ControllerStrategyCronJob        ControllerStrategy = "cron-job"

	DefaultControllerStrategy = ControllerStrategyDeployment
)

List of controller strategies

type ControllerStrategySelector

type ControllerStrategySelector interface {
	// SelectControllerStrategy tells if the trait with current configuration can select a specific controller to use
	SelectControllerStrategy(*Environment) (*ControllerStrategy, error)
	// ControllerStrategySelectorOrder returns the order (priority) of the controller strategy selector
	ControllerStrategySelectorOrder() int
}

ControllerStrategySelector is the interface for traits that can determine the kind of controller that will run the integration.

type Environment

type Environment struct {
	CamelCatalog          *camel.RuntimeCatalog
	RuntimeVersion        string
	Catalog               *Catalog
	C                     context.Context
	Client                client.Client
	Platform              *v1.IntegrationPlatform
	IntegrationKit        *v1.IntegrationKit
	Integration           *v1.Integration
	Resources             *kubernetes.Collection
	PostActions           []func(*Environment) error
	PostStepProcessors    []func(*Environment) error
	PostProcessors        []func(*Environment) error
	BuildTasks            []v1.Task
	ConfiguredTraits      []Trait
	ExecutedTraits        []Trait
	EnvVars               []corev1.EnvVar
	ApplicationProperties map[string]string
	Interceptors          []string
	ServiceBindings       map[string]string
}

A Environment provides the context where the trait is executed

func Apply

func Apply(ctx context.Context, c client.Client, integration *v1.Integration, kit *v1.IntegrationKit) (*Environment, error)

func (*Environment) DetermineCatalogNamespace

func (e *Environment) DetermineCatalogNamespace() string

DetermineCatalogNamespace --

func (*Environment) DetermineControllerStrategy

func (e *Environment) DetermineControllerStrategy() (ControllerStrategy, error)

DetermineControllerStrategy determines the type of controller that should be used for the integration

func (*Environment) DetermineProfile

func (e *Environment) DetermineProfile() v1.TraitProfile

DetermineProfile determines the TraitProfile of the environment. First looking at the Integration.Spec for a Profile, next looking at the IntegrationKit.Spec and lastly the Platform Profile

func (*Environment) GetIntegrationPodSpec

func (e *Environment) GetIntegrationPodSpec() *corev1.PodSpec

GetIntegrationPodSpec return the Integration Template Pod Specification, regardless of the deployment strategy

func (*Environment) GetTrait

func (e *Environment) GetTrait(id ID) Trait

GetTrait --

func (*Environment) InPhase

InPhase --

func (*Environment) IntegrationInPhase

func (e *Environment) IntegrationInPhase(phases ...v1.IntegrationPhase) bool

IntegrationInPhase --

func (*Environment) IntegrationKitInPhase

func (e *Environment) IntegrationKitInPhase(phases ...v1.IntegrationKitPhase) bool

IntegrationKitInPhase --

type Factory

type Factory = func() Trait

Factory is a generic factory for a trait

type ID

type ID string

ID uniquely identifies a trait

type Identifiable

type Identifiable interface {
	ID() ID
}

Identifiable represent an identifiable type

type Trait

type Trait interface {
	Identifiable
	client.Injectable

	// InjectContext to inject a context
	InjectContext(context.Context)

	// Configure the trait
	Configure(environment *Environment) (bool, error)

	// Apply executes a customization of the Environment
	Apply(environment *Environment) error

	// InfluencesKit determines if the trait has any influence on Integration Kits
	InfluencesKit() bool

	// IsPlatformTrait marks all fundamental traits that allow the platform to work
	IsPlatformTrait() bool

	// RequiresIntegrationPlatform indicates that the trait cannot work without an integration platform set
	RequiresIntegrationPlatform() bool

	// IsAllowedInProfile tels if the trait supports the given profile
	IsAllowedInProfile(v1.TraitProfile) bool

	// Order is the order in which the trait should be executed in the normal flow
	Order() int
}

Trait is the interface of all traits

Jump to

Keyboard shortcuts

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