in pkg/trait/knative.go [69:180]
func (t *knativeTrait) Configure(e *Environment) (bool, error) {
if e.Integration == nil || !pointer.BoolDeref(t.Enabled, true) {
return false, nil
}
if !e.IntegrationInPhase(v1.IntegrationPhaseInitialization) && !e.IntegrationInRunningPhases() {
return false, nil
}
if pointer.BoolDeref(t.Auto, true) {
if len(t.ChannelSources) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.FromURIs, knativeapi.CamelServiceTypeChannel)...)
return true
}); err != nil {
return false, err
}
t.ChannelSources = items
}
if len(t.ChannelSinks) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.ToURIs, knativeapi.CamelServiceTypeChannel)...)
return true
}); err != nil {
return false, err
}
t.ChannelSinks = items
}
if len(t.EndpointSources) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.FromURIs, knativeapi.CamelServiceTypeEndpoint)...)
return true
}); err != nil {
return false, err
}
t.EndpointSources = items
}
if len(t.EndpointSinks) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.ToURIs, knativeapi.CamelServiceTypeEndpoint)...)
return true
}); err != nil {
return false, err
}
t.EndpointSinks = items
}
if len(t.EventSources) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.FromURIs, knativeapi.CamelServiceTypeEvent)...)
return true
}); err != nil {
return false, err
}
t.EventSources = items
}
if len(t.EventSinks) == 0 {
items := make([]string, 0)
sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
if err != nil {
return false, err
}
if err := metadata.Each(e.CamelCatalog, sources, func(_ int, meta metadata.IntegrationMetadata) bool {
items = append(items, knativeutil.FilterURIs(meta.ToURIs, knativeapi.CamelServiceTypeEvent)...)
return true
}); err != nil {
return false, err
}
t.EventSinks = items
}
if t.FilterSourceChannels == nil {
// Filtering is no longer used by default
t.FilterSourceChannels = pointer.Bool(false)
}
if t.SinkBinding == nil {
allowed := t.isSinkBindingAllowed(e)
t.SinkBinding = &allowed
}
}
return true, nil
}