-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcommon.go
140 lines (118 loc) · 3.6 KB
/
common.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package k8sutil
import (
"math/rand"
"time"
marklogicv1 "github.com/marklogic/marklogic-operator-kubernetes/api/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)
var CustomLabels = map[string]string{}
var CustomAnnotations = map[string]string{}
// generateTypeMeta generates the TyeMeta
func generateTypeMeta(resourceKind string, apiVersion string) metav1.TypeMeta {
return metav1.TypeMeta{
Kind: resourceKind,
APIVersion: apiVersion,
}
}
// generateObjectMeta generates the ObjectMeta
func generateObjectMeta(name string, namespace string, labels map[string]string, annotations map[string]string) metav1.ObjectMeta {
return metav1.ObjectMeta{
Name: name,
Namespace: namespace,
Labels: labels,
Annotations: annotations,
}
}
func AddOwnerRefToObject(obj metav1.Object, ownerRef metav1.OwnerReference) {
obj.SetOwnerReferences(append(obj.GetOwnerReferences(), ownerRef))
}
func marklogicServerAsOwner(cr *marklogicv1.MarklogicGroup) metav1.OwnerReference {
trueVar := true
return metav1.OwnerReference{
APIVersion: cr.APIVersion,
Kind: cr.Kind,
Name: cr.Name,
UID: cr.UID,
Controller: &trueVar,
}
}
func LabelSelectors(labels map[string]string) *metav1.LabelSelector {
return &metav1.LabelSelector{MatchLabels: labels}
}
func SetCommonLabels(labels map[string]string) {
CustomLabels = labels
}
func SetCommonAnnotations(annotations map[string]string) {
CustomAnnotations = annotations
}
func getSelectorLabels(name string) map[string]string {
selectorLabels := map[string]string{
"app.kubernetes.io/name": "marklogic",
"app.kubernetes.io/instance": name,
"app.kubernetes.io/managed-by": "marklogic-operator",
"app.kubernetes.io/component": "database",
}
return selectorLabels
}
func getCommonLabels(name string) map[string]string {
defaultLabels := getSelectorLabels(name)
mergedLabels := map[string]string{}
if len(CustomLabels) > 0 {
for k, v := range defaultLabels {
mergedLabels[k] = v
}
for k, v := range CustomLabels {
if _, ok := defaultLabels[k]; !ok {
mergedLabels[k] = v
}
}
} else {
return defaultLabels
}
return mergedLabels
}
func getCommonAnnotations() map[string]string {
return CustomAnnotations
}
func getFluentBitLabels(name string) map[string]string {
return map[string]string{
"app.kubernetes.io/name": "fluent-bit",
"app.kubernetes.io/instance": name,
}
}
func marklogicClusterAsOwner(cr *marklogicv1.MarklogicCluster) metav1.OwnerReference {
trueVar := true
return metav1.OwnerReference{
APIVersion: cr.APIVersion,
Kind: cr.Kind,
Name: cr.Name,
UID: cr.UID,
Controller: &trueVar,
}
}
func setOperatorInternalStatus(oc *OperatorContext, newState marklogicv1.InternalState) error {
oc.ReqLogger.Info("common::setOperatorProgressStatus")
currentState := oc.MarklogicGroup.Status.MarklogicGroupStatus
if currentState == newState {
// no need to change.
return nil
}
patch := client.MergeFrom(oc.MarklogicGroup.DeepCopy())
oc.MarklogicGroup.Status.MarklogicGroupStatus = newState
if err := oc.Client.Status().Patch(oc.Ctx, oc.MarklogicGroup, patch); err != nil {
oc.ReqLogger.Error(err, "error updating the MarkLogic Operator Internal status")
return err
}
return nil
}
func generateRandomAlphaNumeric(length int) string {
const charset = "abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
seededRand := rand.New(rand.NewSource(time.Now().UnixNano()))
result := make([]byte, length)
for i := range result {
result[i] = charset[seededRand.Intn(len(charset))]
}
return string(result)
}