...
1 package entrypoint
2
3 import (
4 "context"
5 "encoding/json"
6 "fmt"
7
8 "github.com/datawire/dlib/dlog"
9 amb "github.com/emissary-ingress/emissary/v3/pkg/api/getambassador.io/v3alpha1"
10 "github.com/emissary-ingress/emissary/v3/pkg/kates"
11 snapshotTypes "github.com/emissary-ingress/emissary/v3/pkg/snapshot/v1"
12 )
13
14
15 func NewKubernetesSnapshot() *snapshotTypes.KubernetesSnapshot {
16 a := &snapshotTypes.KubernetesSnapshot{}
17 a.FSSecrets = make(map[snapshotTypes.SecretRef]*kates.Secret)
18
19 return a
20 }
21
22
23 func GetAmbID(ctx context.Context, resource kates.Object) amb.AmbassadorID {
24 switch r := resource.(type) {
25 case *amb.Host:
26 var id amb.AmbassadorID
27 if r.Spec != nil {
28 if len(r.Spec.AmbassadorID) > 0 {
29 id = r.Spec.AmbassadorID
30 }
31 }
32 return id
33
34 case *amb.Mapping:
35 return r.Spec.AmbassadorID
36 case *amb.TCPMapping:
37 return r.Spec.AmbassadorID
38 case *amb.Module:
39 return r.Spec.AmbassadorID
40 case *amb.TLSContext:
41 return r.Spec.AmbassadorID
42 case *amb.AuthService:
43 return r.Spec.AmbassadorID
44 case *amb.RateLimitService:
45 return r.Spec.AmbassadorID
46 case *amb.LogService:
47 return r.Spec.AmbassadorID
48 case *amb.TracingService:
49 return r.Spec.AmbassadorID
50 case *amb.DevPortal:
51 return r.Spec.AmbassadorID
52 case *amb.ConsulResolver:
53 return r.Spec.AmbassadorID
54 case *amb.KubernetesEndpointResolver:
55 return r.Spec.AmbassadorID
56 case *amb.KubernetesServiceResolver:
57 return r.Spec.AmbassadorID
58 }
59
60 ann := resource.GetAnnotations()
61 idstr, ok := ann["getambassador.io/ambassador-id"]
62 if ok {
63 var id amb.AmbassadorID
64 err := json.Unmarshal([]byte(idstr), &id)
65 if err != nil {
66 dlog.Errorf(ctx, "%s: error parsing ambassador-id '%s'", location(resource), idstr)
67 } else {
68 return id
69 }
70 }
71
72 return amb.AmbassadorID{}
73 }
74
75 func location(obj kates.Object) string {
76 return fmt.Sprintf("%s %s in namespace %s", obj.GetObjectKind().GroupVersionKind().Kind, obj.GetName(),
77 obj.GetNamespace())
78 }
79
View as plain text