Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit c9a53ff

Browse files
authored
Fallback to CRD event annotations if reconciler's method is failing (#272)
1 parent c6da735 commit c9a53ff

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

pkg/triggermesh/components/source/source.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -233,27 +233,26 @@ func (s *Source) GetEventTypes() ([]string, error) {
233233
// try GetEventTypes method first
234234
o, err := s.asUnstructured()
235235
if err != nil {
236-
return []string{}, fmt.Errorf("unstructured object: %w", err)
236+
return s.tryCRDEventTypes()
237237
}
238238
eventAttributes, err := adapter.EventAttributes(o)
239239
if err != nil {
240-
return []string{}, fmt.Errorf("source event attributes: %w", err)
240+
return s.tryCRDEventTypes()
241241
}
242242
if len(eventAttributes.ProducedEventTypes) != 0 {
243243
return eventAttributes.ProducedEventTypes, nil
244244
}
245-
// then read CRD annotations
246-
// sourceCRD, err := crd.GetResourceCRD(s.Kind, s.CRD)
247-
// if err != nil {
248-
// return []string{}, fmt.Errorf("source CRD: %w", err)
249-
// }
245+
return s.tryCRDEventTypes()
246+
}
247+
248+
func (s *Source) tryCRDEventTypes() ([]string, error) {
250249
var et crd.EventTypes
251-
if err := json.Unmarshal([]byte(s.CRD.Metadata.Annotations.EventTypes), &et); err != nil {
252-
return []string{}, fmt.Errorf("event types CRD: %w", err)
250+
if err := json.Unmarshal([]byte(s.CRD.Metadata.Annotations.ProducedEventTypes), &et); err != nil {
251+
return []string{}, fmt.Errorf("unable to parse event annotations: %w", err)
253252
}
254253
var result []string
255-
for _, v := range et {
256-
result = append(result, v.Type)
254+
for _, e := range et {
255+
result = append(result, e.Type)
257256
}
258257
return result, nil
259258
}

pkg/triggermesh/components/target/target.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package target
1818

1919
import (
2020
"context"
21+
"encoding/json"
2122
"fmt"
2223
"io"
2324
"strconv"
@@ -224,15 +225,27 @@ func (t *Target) GetChildren() ([]triggermesh.Component, error) {
224225
func (t *Target) ConsumedEventTypes() ([]string, error) {
225226
o, err := t.asUnstructured()
226227
if err != nil {
227-
return nil, err
228+
return t.tryCRDEventTypes()
228229
}
229230
eventAttributes, err := adapter.EventAttributes(o)
230231
if err != nil {
231-
return []string{}, err
232+
return t.tryCRDEventTypes()
232233
}
233234
return eventAttributes.AcceptedEventTypes, nil
234235
}
235236

237+
func (t *Target) tryCRDEventTypes() ([]string, error) {
238+
var et crd.EventTypes
239+
if err := json.Unmarshal([]byte(t.CRD.Metadata.Annotations.ConsumedEventTypes), &et); err != nil {
240+
return []string{}, fmt.Errorf("unable to parse event annotations: %w", err)
241+
}
242+
var result []string
243+
for _, e := range et {
244+
result = append(result, e.Type)
245+
}
246+
return result, nil
247+
}
248+
236249
func (t *Target) Start(ctx context.Context, additionalEnvs map[string]string, restart bool) (*docker.Container, error) {
237250
client, err := docker.NewClient()
238251
if err != nil {

pkg/triggermesh/crd/crd.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ type CRD struct {
6363
Metadata struct {
6464
Name string `yaml:"name"`
6565
Annotations struct {
66-
EventTypes string `yaml:"registry.knative.dev/eventTypes"`
66+
ProducedEventTypes string `yaml:"registry.knative.dev/eventTypes"`
67+
ConsumedEventTypes string `yaml:"registry.triggermesh.io/acceptedEventTypes"`
6768
} `yaml:"annotations"`
6869
} `yaml:"metadata"`
6970
Spec struct {
@@ -94,7 +95,8 @@ type CRD struct {
9495
}
9596

9697
type EventTypes []struct {
97-
Type string `json:"type"`
98+
Type string `json:"type"`
99+
Schema string `json:"schema"`
98100
}
99101

100102
// Fetch downloads the release version of TriggerMesh CRDs for specified version.

0 commit comments

Comments
 (0)