-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathlabels.go
91 lines (78 loc) · 2.24 KB
/
labels.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
package constants
import (
"context"
"encoding/json"
"fmt"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
)
const (
LabelNamespace = "rhtas.redhat.com"
)
func LabelsFor(component, name, instance string) map[string]string {
labels := LabelsForComponent(component, instance)
labels["app.kubernetes.io/name"] = name
return labels
}
func LabelsForComponent(component, instance string) map[string]string {
return map[string]string{
"app.kubernetes.io/instance": instance,
"app.kubernetes.io/component": component,
"app.kubernetes.io/part-of": "trusted-artifact-signer",
"app.kubernetes.io/managed-by": "controller-manager",
}
}
func LabelsRHTAS() map[string]string {
return map[string]string{
"app.kubernetes.io/part-of": "trusted-artifact-signer",
"app.kubernetes.io/managed-by": "controller-manager",
}
}
func AddLabel(ctx context.Context, object *metav1.PartialObjectMetadata, c client.Client, label string, value string) error {
object.SetGroupVersionKind(schema.GroupVersionKind{
Group: "",
Version: "v1",
Kind: "Secret",
})
patch, err := json.Marshal([]map[string]any{
{
"op": "add",
"path": "/metadata/labels",
"value": map[string]string{
label: value,
},
},
})
if err != nil {
return fmt.Errorf("failed to marshal patch: %v", err)
}
err = c.Patch(ctx, object, client.RawPatch(types.JSONPatchType, patch))
if err != nil {
return fmt.Errorf("unable to add '%s' label to object: %w", label, err)
}
return nil
}
func RemoveLabel(ctx context.Context, object *metav1.PartialObjectMetadata, c client.Client, label string) error {
object.SetGroupVersionKind(schema.GroupVersionKind{
Group: "",
Version: "v1",
Kind: "Secret",
})
patch, err := json.Marshal([]map[string]string{
{
"op": "remove",
"path": fmt.Sprintf("/metadata/labels/%s", strings.ReplaceAll(label, "/", "~1")),
},
})
if err != nil {
return fmt.Errorf("failed to marshal patch: %v", err)
}
err = c.Patch(ctx, object, client.RawPatch(types.JSONPatchType, patch))
if err != nil {
return fmt.Errorf("unable to remove '%s' label from secret: %w", label, err)
}
return nil
}