11package resources
22
33import (
4+ "fmt"
5+
46 "gopkg.in/yaml.v3"
57 corev1 "k8s.io/api/core/v1"
68 "k8s.io/client-go/rest"
@@ -29,15 +31,67 @@ func (b *StorageClusterBuilder) Unwrap() *api.Storage {
2931 return b .DeepCopy ()
3032}
3133
34+ func (b * StorageClusterBuilder ) NewLabels () labels.Labels {
35+ l := labels .Common (b .Name , b .Labels )
36+
37+ l .Merge (b .Spec .AdditionalLabels )
38+ l .Merge (map [string ]string {labels .ComponentKey : labels .StorageComponent })
39+
40+ return l
41+ }
42+
43+ func (b * StorageClusterBuilder ) NewAnnotations () map [string ]string {
44+ an := annotations .Common (b .Annotations )
45+
46+ an .Merge (b .Spec .AdditionalAnnotations )
47+ an .Merge (map [string ]string {annotations .ConfigurationChecksum : GetSHA256Checksum (b .Spec .Configuration )})
48+
49+ return an
50+ }
51+
52+ func (b * StorageClusterBuilder ) NewInitJobLabels () labels.Labels {
53+ l := labels .Common (b .Name , b .Labels )
54+
55+ if b .Spec .InitJob != nil {
56+ l .Merge (b .Spec .InitJob .AdditionalLabels )
57+ }
58+ l .Merge (map [string ]string {labels .ComponentKey : labels .BlobstorageInitComponent })
59+
60+ return l
61+ }
62+
63+ func (b * StorageClusterBuilder ) NewInitJobAnnotations () map [string ]string {
64+ an := annotations .Common (b .Annotations )
65+
66+ if b .Spec .InitJob != nil {
67+ an .Merge (b .Spec .InitJob .AdditionalLabels )
68+ }
69+ an .Merge (map [string ]string {annotations .ConfigurationChecksum : GetSHA256Checksum (b .Spec .Configuration )})
70+
71+ return an
72+ }
73+
74+ func (b * StorageClusterBuilder ) GetInitJobBuilder () ResourceBuilder {
75+ jobName := fmt .Sprintf (InitJobNameFormat , b .Name )
76+ jobLabels := b .NewInitJobLabels ()
77+ jobAnnotations := b .NewInitJobAnnotations ()
78+
79+ return & StorageInitJobBuilder {
80+ Storage : b .Unwrap (),
81+
82+ Name : jobName ,
83+ Labels : jobLabels ,
84+ Annotations : jobAnnotations ,
85+ }
86+ }
87+
3288func (b * StorageClusterBuilder ) GetResourceBuilders (restConfig * rest.Config ) []ResourceBuilder {
33- storageLabels := labels .StorageLabels (b .Unwrap ())
89+ storageLabels := b .NewLabels ()
90+ storageAnnotations := b .NewAnnotations ()
3491
3592 statefulSetLabels := storageLabels .Copy ()
3693 statefulSetLabels .Merge (map [string ]string {labels .StatefulsetComponent : b .Name })
3794
38- statefulSetAnnotations := CopyDict (b .Spec .AdditionalAnnotations )
39- statefulSetAnnotations [annotations .ConfigurationChecksum ] = GetConfigurationChecksum (b .Spec .Configuration )
40-
4195 grpcServiceLabels := storageLabels .Copy ()
4296 grpcServiceLabels .Merge (b .Spec .Service .GRPC .AdditionalLabels )
4397 grpcServiceLabels .Merge (map [string ]string {labels .ServiceComponent : labels .GRPCComponent })
@@ -106,11 +160,14 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
106160
107161 Name : b .Name ,
108162 Labels : statefulSetLabels ,
109- Annotations : statefulSetAnnotations ,
163+ Annotations : storageAnnotations ,
110164 },
111165 )
112166 } else {
113- optionalBuilders = append (optionalBuilders , b .getNodeSetBuilders (storageLabels )... )
167+ optionalBuilders = append (
168+ optionalBuilders ,
169+ b .getNodeSetBuilders (storageLabels , storageAnnotations )... ,
170+ )
114171 }
115172
116173 return append (
@@ -158,23 +215,24 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
158215 )
159216}
160217
161- func (b * StorageClusterBuilder ) getNodeSetBuilders (storageLabels labels.Labels ) []ResourceBuilder {
218+ func (b * StorageClusterBuilder ) getNodeSetBuilders (
219+ storageLabels labels.Labels ,
220+ storageAnnotations annotations.Annotations ,
221+ ) []ResourceBuilder {
162222 var nodeSetBuilders []ResourceBuilder
163223
164224 for _ , nodeSetSpecInline := range b .Spec .NodeSets {
225+ nodeSetName := fmt .Sprintf ("%s-%s" , b .Name , nodeSetSpecInline .Name )
226+
165227 nodeSetLabels := storageLabels .Copy ()
166228 nodeSetLabels .Merge (nodeSetSpecInline .Labels )
167229 nodeSetLabels .Merge (map [string ]string {labels .StorageNodeSetComponent : nodeSetSpecInline .Name })
168230 if nodeSetSpecInline .Remote != nil {
169231 nodeSetLabels .Merge (map [string ]string {labels .RemoteClusterKey : nodeSetSpecInline .Remote .Cluster })
170232 }
171233
172- nodeSetAnnotations := CopyDict (b .Annotations )
173- if nodeSetSpecInline .Annotations != nil {
174- for k , v := range nodeSetSpecInline .Annotations {
175- nodeSetAnnotations [k ] = v
176- }
177- }
234+ nodeSetAnnotations := storageAnnotations .Copy ()
235+ nodeSetAnnotations .Merge (nodeSetSpecInline .Annotations )
178236
179237 storageNodeSetSpec := b .recastStorageNodeSetSpecInline (nodeSetSpecInline .DeepCopy ())
180238 if nodeSetSpecInline .Remote != nil {
@@ -183,7 +241,7 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
183241 & RemoteStorageNodeSetBuilder {
184242 Object : b ,
185243
186- Name : b . Name + "-" + nodeSetSpecInline . Name ,
244+ Name : nodeSetName ,
187245 Labels : nodeSetLabels ,
188246 Annotations : nodeSetAnnotations ,
189247
@@ -196,7 +254,7 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
196254 & StorageNodeSetBuilder {
197255 Object : b ,
198256
199- Name : b . Name + "-" + nodeSetSpecInline . Name ,
257+ Name : nodeSetName ,
200258 Labels : nodeSetLabels ,
201259 Annotations : nodeSetAnnotations ,
202260
0 commit comments