trait

package
v1.6.2 Latest Latest
Warning

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

Go to latest
Published: Jun 9, 2022 License: Apache-2.0 Imports: 93 Imported by: 0

Documentation

Overview

Package trait contains implementations of all available traits (features)

Index

Constants

View Source
const (
	True  = "true"
	False = "false"
)
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.

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.

func BoolP

func BoolP(b bool) *bool

BoolP returns a pointer to a bool value.

func IsFalse

func IsFalse(b *bool) bool

IsFalse checks if the bool pointer is defined and false.

func IsNilOrFalse

func IsNilOrFalse(b *bool) bool

IsNilOrFalse checks if the bool pointer is nil or false. You can use it if the bool pointer is meant to be false by default.

func IsNilOrTrue

func IsNilOrTrue(b *bool) bool

IsNilOrTrue checks if the bool pointer is nil or true. You can use it if the bool pointer is meant to be true by default.

func IsTrue

func IsTrue(b *bool) bool

IsTrue checks if the bool pointer is defined and true.

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:"-"`
	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

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) 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(c client.Client) *Catalog

NewCatalog creates a new trait Catalog.

func (*Catalog) AllTraits

func (c *Catalog) AllTraits() []Trait

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 Comparable

type Comparable interface {
	Matches(Trait) bool
}

type ComparableTrait

type ComparableTrait interface {
	Trait
	Comparable
}

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
	// The Go standard context for the traits execution
	Ctx context.Context
	// The client to the API server
	Client client.Client
	// The active Platform
	Platform *v1.IntegrationPlatform
	// The current Integration
	Integration *v1.Integration
	// The IntegrationKit associated to the Integration
	IntegrationKit *v1.IntegrationKit
	// The IntegrationKits to be created for the Integration
	IntegrationKits []v1.IntegrationKit
	// The resources owned by the Integration that are applied to the API server
	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
	ServiceBindingSecret  string
}

An Environment provides the context for the execution of the traits.

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

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

func (e *Environment) GetIntegrationContainer() *corev1.Container

func (*Environment) GetIntegrationContainerName

func (e *Environment) GetIntegrationContainerName() string

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

func (*Environment) InPhase

func (*Environment) IntegrationInPhase

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

func (*Environment) IntegrationInRunningPhases

func (e *Environment) IntegrationInRunningPhases() bool

func (*Environment) IntegrationKitInPhase

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

type Factory

type Factory = func() Trait

Factory is a generic factory for a trait.

type Finder

type Finder interface {
	GetTrait(id string) 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

	// 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.

func NewInitTrait

func NewInitTrait() Trait

Jump to

Keyboard shortcuts

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