/
types.go
93 lines (85 loc) · 2.77 KB
/
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
package k8s
import (
"github.com/haproxytech/kubernetes-ingress/pkg/store"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// SyncType represents type of k8s received message
type SyncType string
// k8s.SyncDataEvent represents converted k8s received message
type SyncDataEvent struct {
_ [0]int
Data interface{}
EventProcessed chan struct{}
SyncType
Namespace string
Name string
}
//nolint:golint,stylecheck
const (
// SyncType values
COMMAND SyncType = "COMMAND"
CONFIGMAP SyncType = "CONFIGMAP"
ENDPOINTS SyncType = "ENDPOINTS"
INGRESS SyncType = "INGRESS"
INGRESS_CLASS SyncType = "INGRESS_CLASS"
NAMESPACE SyncType = "NAMESPACE"
POD SyncType = "POD"
SERVICE SyncType = "SERVICE"
SECRET SyncType = "SECRET"
CR_GLOBAL SyncType = "Global"
CR_DEFAULTS SyncType = "Defaults"
CR_BACKEND SyncType = "Backend"
PUBLISH_SERVICE SyncType = "PUBLISH_SERVICE"
GATEWAYCLASS SyncType = "GATEWAYCLASS"
GATEWAY SyncType = "GATEWAY"
TCPROUTE SyncType = "TCPROUTE"
REFERENCEGRANT SyncType = "REFERENCEGRANT"
)
func ConvertToK8SLabelSelector(labelSelector *store.LabelSelector) *metav1.LabelSelector {
if labelSelector == nil {
return nil
}
matchLabels := make(map[string]string, len(labelSelector.MatchLabels))
for k, v := range labelSelector.MatchLabels {
matchLabels[k] = v
}
matchExpressions := make([]metav1.LabelSelectorRequirement, len(labelSelector.MatchExpressions))
for i, matchExpression := range labelSelector.MatchExpressions {
values := make([]string, len(matchExpression.Values))
copy(values, matchExpression.Values)
matchExpressions[i] = metav1.LabelSelectorRequirement{
Key: matchExpression.Key,
Operator: metav1.LabelSelectorOperator(matchExpression.Operator),
Values: values,
}
}
selector := &metav1.LabelSelector{
MatchLabels: matchLabels,
MatchExpressions: matchExpressions,
}
return selector
}
func ConvertFromK8SLabelSelector(labelSelector *metav1.LabelSelector) *store.LabelSelector {
if labelSelector == nil {
return nil
}
matchLabels := make(map[string]string, len(labelSelector.MatchLabels))
for k, v := range labelSelector.MatchLabels {
matchLabels[k] = v
}
matchExpressions := make([]store.LabelSelectorRequirement, len(labelSelector.MatchExpressions))
for i, matchExpression := range labelSelector.MatchExpressions {
values := make([]string, len(matchExpression.Values))
copy(values, matchExpression.Values)
matchExpressions[i] = store.LabelSelectorRequirement{
Key: matchExpression.Key,
Operator: string(matchExpression.Operator),
Values: values,
}
}
selector := &store.LabelSelector{
MatchLabels: matchLabels,
MatchExpressions: matchExpressions,
}
return selector
}