forked from kyma-project/kyma
/
subscription_types.go
109 lines (91 loc) · 4.06 KB
/
subscription_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// TODO remove package v1alpha1 when Kyma is fully integrated with the new Eventing solution https://github.com/kyma-project/kyma/issues/10866
// package v1alpha1 is copied from https://github.com/kyma-project/kyma/tree/release-1.19/components/eventing-controller/api/v1alpha1
// because we cannot upgrade Kyma version to 1.19.0 because of Kubernetes version collision with Knative 0.12.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// Webhook defines the Webhook called by an active subscription in BEB
type WebhookAuth struct {
Type string `json:"type,omitempty"`
GrantType string `json:"grantType"`
ClientId string `json:"clientId"`
ClientSecret string `json:"clientSecret"`
TokenUrl string `json:"tokenUrl"`
Scope []string `json:"scope,omitempty"`
}
// ProtocolSettings defines the CE protocol setting specification implementation
type ProtocolSettings struct {
ContentMode string `json:"contentMode,omitempty"`
ExemptHandshake bool `json:"exemptHandshake,omitempty"`
Qos string `json:"qos,omitempty"`
WebhookAuth *WebhookAuth `json:"webhookAuth,omitempty"`
}
const (
ProtocolSettingsContentModeBinary string = "BINARY"
ProtocolSettingsContentModeStructured string = "STRUCTURED"
)
// Filter defines the CE filter element
type Filter struct {
Type string `json:"type,omitempty"`
Property string `json:"property"`
Value string `json:"value"`
}
// BebFilter defines the BEB filter element as a combination of two CE filter elements
type BebFilter struct {
EventSource *Filter `json:"eventSource"`
EventType *Filter `json:"eventType"`
}
// BebFilters defines the list of BEB filters
type BebFilters struct {
Dialect string `json:"dialect,omitempty"`
Filters []*BebFilter `json:"filters"`
}
// SubscriptionSpec defines the desired state of Subscription
type SubscriptionSpec struct {
// ID is the unique identifier of Subscription, read-only.
ID string `json:"id,omitempty"`
Protocol string `json:"protocol"`
ProtocolSettings *ProtocolSettings `json:"protocolsettings"`
Sink string `json:"sink"`
Filter *BebFilters `json:"filter"`
}
type EmsSubscriptionStatus struct {
SubscriptionStatus string `json:"subscriptionStatus,omitempty"`
SubscriptionStatusReason string `json:"subscriptionStatusReason,omitempty"`
LastSuccessfulDelivery string `json:"lastSuccessfulDelivery,omitempty"`
LastFailedDelivery string `json:"lastFailedDelivery,omitempty"`
LastFailedDeliveryReason string `json:"lastFailedDeliveryReason,omitempty"`
}
// +kubebuilder:subresource:status
// SubscriptionStatus defines the observed state of Subscription
type SubscriptionStatus struct {
Conditions []Condition `json:"conditions,omitempty"`
Ready bool `json:"ready"`
Ev2hash int64 `json:"ev2hash,omitempty"`
Emshash int64 `json:"emshash,omitempty"`
ExternalSink string `json:"externalSink,omitempty"`
FailedActivation string `json:"failedActivation,omitempty"`
APIRuleName string `json:"apiRuleName,omitempty"`
EmsSubscriptionStatus EmsSubscriptionStatus `json:"emsSubscriptionStatus,omitempty"`
}
// +kubebuilder:object:root=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:subresource:status
// Subscription is the Schema for the subscriptions API
type Subscription struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SubscriptionSpec `json:"spec,omitempty"`
Status SubscriptionStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// SubscriptionList contains a list of Subscription
type SubscriptionList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Subscription `json:"items"`
}
func init() {
SchemeBuilder.Register(&Subscription{}, &SubscriptionList{})
}