Documentation ¶
Overview ¶
Package trait contains implementations of all available traits (features)
Index ¶
- Constants
- Variables
- func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog) *strset.Set
- func AddToTraits(factory Factory)
- func BoolP(b bool) *bool
- func IsFalse(b *bool) bool
- func IsNilOrFalse(b *bool) bool
- func IsNilOrTrue(b *bool) bool
- func IsTrue(b *bool) bool
- type BaseTrait
- func (trait *BaseTrait) ID() ID
- func (trait *BaseTrait) InfluencesKit() bool
- func (trait *BaseTrait) InjectClient(c client.Client)
- func (trait *BaseTrait) IsAllowedInProfile(v1.TraitProfile) bool
- func (trait *BaseTrait) IsPlatformTrait() bool
- func (trait *BaseTrait) Order() int
- func (trait *BaseTrait) RequiresIntegrationPlatform() bool
- type Catalog
- type Comparable
- type ComparableTrait
- type ControllerStrategy
- type ControllerStrategySelector
- type Environment
- func (e *Environment) DetermineCatalogNamespace() string
- func (e *Environment) DetermineControllerStrategy() (ControllerStrategy, error)
- func (e *Environment) DetermineProfile() v1.TraitProfile
- func (e *Environment) GetIntegrationContainer() *corev1.Container
- func (e *Environment) GetIntegrationContainerName() string
- func (e *Environment) GetIntegrationPodSpec() *corev1.PodSpec
- func (e *Environment) GetTrait(id ID) Trait
- func (e *Environment) InPhase(c v1.IntegrationKitPhase, i v1.IntegrationPhase) bool
- func (e *Environment) IntegrationInPhase(phases ...v1.IntegrationPhase) bool
- func (e *Environment) IntegrationInRunningPhases() bool
- func (e *Environment) IntegrationKitInPhase(phases ...v1.IntegrationKitPhase) bool
- type Factory
- type Finder
- type ID
- type Identifiable
- type Trait
Constants ¶
const ( True = "true" False = "false" )
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 ¶
var FactoryList []Factory
FactoryList contains the default list of trait Factory.
Functions ¶
func AddSourceDependencies ¶ added in v1.3.0
func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog) *strset.Set
func IsNilOrFalse ¶ added in v1.6.0
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 ¶ added in v1.6.0
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.
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 (*BaseTrait) InfluencesKit ¶
InfluencesKit determines if the trait has any influence on Integration Kits.
func (*BaseTrait) InjectClient ¶
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 ¶
IsPlatformTrait marks all fundamental traits that allow the platform to work.
func (*BaseTrait) RequiresIntegrationPlatform ¶
RequiresIntegrationPlatform indicates that the trait cannot work without an integration platform set.
type Catalog ¶
Catalog collects all information about traits in one place.
func (*Catalog) ComputeTraitsProperties ¶
ComputeTraitsProperties returns all key/value configuration properties that can be used to configure traits.
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 ¶ added in v1.7.0
type ComparableTrait ¶ added in v1.7.0
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 ¶ added in v1.4.0
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 ¶ added in v1.7.0
func (e *Environment) GetIntegrationContainer() *corev1.Container
func (*Environment) GetIntegrationContainerName ¶ added in v1.8.0
func (e *Environment) GetIntegrationContainerName() string
func (*Environment) GetIntegrationPodSpec ¶ added in v1.4.0
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 (e *Environment) InPhase(c v1.IntegrationKitPhase, i v1.IntegrationPhase) bool
func (*Environment) IntegrationInPhase ¶
func (e *Environment) IntegrationInPhase(phases ...v1.IntegrationPhase) bool
func (*Environment) IntegrationInRunningPhases ¶ added in v1.6.1
func (e *Environment) IntegrationInRunningPhases() bool
func (*Environment) IntegrationKitInPhase ¶
func (e *Environment) IntegrationKitInPhase(phases ...v1.IntegrationKitPhase) bool
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 ¶ added in v1.8.0
func NewInitTrait() Trait
Source Files ¶
- affinity.go
- builder.go
- camel.go
- container.go
- cron.go
- dependencies.go
- deployer.go
- deployment.go
- doc.go
- environment.go
- error_handler.go
- gc.go
- health.go
- ingress.go
- init.go
- istio.go
- jolokia.go
- jvm.go
- kamelets.go
- knative.go
- knative_service.go
- logging.go
- mount.go
- openapi.go
- owner.go
- pdb.go
- platform.go
- pod.go
- prometheus.go
- pull_secret.go
- quarkus.go
- route.go
- service.go
- service_binding.go
- toleration.go
- trait.go
- trait_catalog.go
- trait_configure.go
- trait_factory.go
- trait_register.go
- trait_types.go
- util.go
- zz_desc_generated.go
- zz_generated_doc.go