1
1
package resources
2
2
3
3
import (
4
+ "fmt"
5
+
4
6
"gopkg.in/yaml.v3"
5
7
corev1 "k8s.io/api/core/v1"
6
8
"k8s.io/client-go/rest"
@@ -29,11 +31,65 @@ func (b *StorageClusterBuilder) Unwrap() *api.Storage {
29
31
return b .DeepCopy ()
30
32
}
31
33
32
- func (b * StorageClusterBuilder ) GetResourceBuilders (restConfig * rest.Config ) []ResourceBuilder {
33
- storageLabels := labels .StorageLabels (b .Unwrap ())
34
+ func (b * StorageClusterBuilder ) buildSelectorLabels (component string ) labels.Labels {
35
+ l := labels .Common (b .Name , b .Labels )
36
+ l .Merge (map [string ]string {labels .ComponentKey : component })
37
+
38
+ return l
39
+ }
40
+
41
+ func (b * StorageClusterBuilder ) buildLabels () labels.Labels {
42
+ l := b .buildSelectorLabels (labels .StorageComponent )
43
+ l .Merge (b .Spec .AdditionalLabels )
44
+
45
+ return l
46
+ }
34
47
35
- statefulSetLabels := storageLabels .Copy ()
36
- statefulSetLabels .Merge (map [string ]string {labels .StatefulsetComponent : b .Name })
48
+ func (b * StorageClusterBuilder ) buildInitJobLabels () labels.Labels {
49
+ l := b .buildSelectorLabels (labels .BlobstorageInitComponent )
50
+ l .Merge (b .Spec .AdditionalLabels )
51
+
52
+ if b .Spec .InitJob != nil {
53
+ l .Merge (b .Spec .InitJob .AdditionalLabels )
54
+ }
55
+
56
+ return l
57
+ }
58
+
59
+ func (b * StorageClusterBuilder ) buildNodeSetLabels (nodeSetSpecInline api.StorageNodeSetSpecInline ) labels.Labels {
60
+ l := b .buildLabels ()
61
+ l .Merge (nodeSetSpecInline .Labels )
62
+ l .Merge (map [string ]string {labels .StorageNodeSetComponent : nodeSetSpecInline .Name })
63
+ if nodeSetSpecInline .Remote != nil {
64
+ l .Merge (map [string ]string {labels .RemoteClusterKey : nodeSetSpecInline .Remote .Cluster })
65
+ }
66
+
67
+ return l
68
+ }
69
+
70
+ func (b * StorageClusterBuilder ) GetInitJobBuilder () ResourceBuilder {
71
+ jobName := fmt .Sprintf (InitJobNameFormat , b .Name )
72
+ jobLabels := b .buildInitJobLabels ()
73
+
74
+ jobAnnotations := CopyDict (b .Annotations )
75
+ if b .Spec .InitJob != nil {
76
+ for k , v := range b .Spec .InitJob .AdditionalAnnotations {
77
+ jobAnnotations [k ] = v
78
+ }
79
+ }
80
+
81
+ return & StorageInitJobBuilder {
82
+ Storage : b .Unwrap (),
83
+
84
+ Name : jobName ,
85
+ Labels : jobLabels ,
86
+ Annotations : jobAnnotations ,
87
+ }
88
+ }
89
+
90
+ func (b * StorageClusterBuilder ) GetResourceBuilders (restConfig * rest.Config ) []ResourceBuilder {
91
+ storageLabels := b .buildLabels ()
92
+ storageSelectorLabels := b .buildSelectorLabels (labels .StorageComponent )
37
93
38
94
statefulSetAnnotations := CopyDict (b .Spec .AdditionalAnnotations )
39
95
statefulSetAnnotations [annotations .ConfigurationChecksum ] = SHAChecksum (b .Spec .Configuration )
@@ -105,12 +161,12 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
105
161
RestConfig : restConfig ,
106
162
107
163
Name : b .Name ,
108
- Labels : statefulSetLabels ,
164
+ Labels : storageLabels ,
109
165
Annotations : statefulSetAnnotations ,
110
166
},
111
167
)
112
168
} else {
113
- optionalBuilders = append (optionalBuilders , b .getNodeSetBuilders (storageLabels )... )
169
+ optionalBuilders = append (optionalBuilders , b .getNodeSetBuilders ()... )
114
170
}
115
171
116
172
return append (
@@ -119,7 +175,7 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
119
175
Object : b ,
120
176
NameFormat : GRPCServiceNameFormat ,
121
177
Labels : grpcServiceLabels ,
122
- SelectorLabels : storageLabels ,
178
+ SelectorLabels : storageSelectorLabels ,
123
179
Annotations : b .Spec .Service .GRPC .AdditionalAnnotations ,
124
180
Ports : []corev1.ServicePort {{
125
181
Name : api .GRPCServicePortName ,
@@ -132,7 +188,7 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
132
188
Object : b ,
133
189
NameFormat : InterconnectServiceNameFormat ,
134
190
Labels : interconnectServiceLabels ,
135
- SelectorLabels : storageLabels ,
191
+ SelectorLabels : storageSelectorLabels ,
136
192
Annotations : b .Spec .Service .Interconnect .AdditionalAnnotations ,
137
193
Headless : true ,
138
194
Ports : []corev1.ServicePort {{
@@ -146,7 +202,7 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
146
202
Object : b ,
147
203
NameFormat : StatusServiceNameFormat ,
148
204
Labels : statusServiceLabels ,
149
- SelectorLabels : storageLabels ,
205
+ SelectorLabels : storageSelectorLabels ,
150
206
Annotations : b .Spec .Service .Status .AdditionalAnnotations ,
151
207
Ports : []corev1.ServicePort {{
152
208
Name : api .StatusServicePortName ,
@@ -158,16 +214,12 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
158
214
)
159
215
}
160
216
161
- func (b * StorageClusterBuilder ) getNodeSetBuilders (storageLabels labels. Labels ) []ResourceBuilder {
217
+ func (b * StorageClusterBuilder ) getNodeSetBuilders () []ResourceBuilder {
162
218
var nodeSetBuilders []ResourceBuilder
163
219
164
220
for _ , nodeSetSpecInline := range b .Spec .NodeSets {
165
- nodeSetLabels := storageLabels .Copy ()
166
- nodeSetLabels .Merge (nodeSetSpecInline .Labels )
167
- nodeSetLabels .Merge (map [string ]string {labels .StorageNodeSetComponent : nodeSetSpecInline .Name })
168
- if nodeSetSpecInline .Remote != nil {
169
- nodeSetLabels .Merge (map [string ]string {labels .RemoteClusterKey : nodeSetSpecInline .Remote .Cluster })
170
- }
221
+ nodeSetName := fmt .Sprintf ("%s-%s" , b .Name , nodeSetSpecInline .Name )
222
+ nodeSetLabels := b .buildNodeSetLabels (nodeSetSpecInline )
171
223
172
224
nodeSetAnnotations := CopyDict (b .Annotations )
173
225
if nodeSetSpecInline .Annotations != nil {
@@ -183,7 +235,7 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
183
235
& RemoteStorageNodeSetBuilder {
184
236
Object : b ,
185
237
186
- Name : b . Name + "-" + nodeSetSpecInline . Name ,
238
+ Name : nodeSetName ,
187
239
Labels : nodeSetLabels ,
188
240
Annotations : nodeSetAnnotations ,
189
241
@@ -196,7 +248,7 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
196
248
& StorageNodeSetBuilder {
197
249
Object : b ,
198
250
199
- Name : b . Name + "-" + nodeSetSpecInline . Name ,
251
+ Name : nodeSetName ,
200
252
Labels : nodeSetLabels ,
201
253
Annotations : nodeSetAnnotations ,
202
254
0 commit comments