Skip to content

Commit 826806c

Browse files
committed
propagate ydb.tech annotations
1 parent 7225c97 commit 826806c

File tree

9 files changed

+193
-109
lines changed

9 files changed

+193
-109
lines changed

internal/controllers/storage/controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ var _ = Describe("Storage controller medium tests", func() {
123123
}, &foundStorage)).Should(Succeed())
124124

125125
foundConfigurationChecksumAnnotation := false
126-
if podAnnotations[annotations.ConfigurationChecksum] == resources.GetConfigurationChecksum(foundStorage.Spec.Configuration) {
126+
if podAnnotations[annotations.ConfigurationChecksum] == resources.GetSHA256Checksum(foundStorage.Spec.Configuration) {
127127
foundConfigurationChecksumAnnotation = true
128128
}
129129
Expect(foundConfigurationChecksumAnnotation).To(BeTrue())

internal/controllers/storage/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func (r *Reconciler) createInitBlobstorageJob(
306306
ctx context.Context,
307307
storage *resources.StorageClusterBuilder,
308308
) error {
309-
builder := resources.GetInitJobBuilder(storage.DeepCopy())
309+
builder := storage.GetInitJobBuilder()
310310
newResource := builder.Placeholder(storage)
311311
_, err := resources.CreateOrUpdateOrMaybeIgnore(ctx, r.Client, newResource, func() error {
312312
var err error

internal/labels/label.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ const (
3131
StorageGeneration = "ydb.tech/storage-generation"
3232
DatabaseGeneration = "ydb.tech/database-generation"
3333

34-
StorageComponent = "storage-node"
35-
DynamicComponent = "dynamic-node"
34+
StorageComponent = "storage-node"
35+
DynamicComponent = "dynamic-node"
36+
BlobstorageInitComponent = "blobstorage-init"
3637

3738
GRPCComponent = "grpc"
3839
InterconnectComponent = "interconnect"

internal/resources/database.go

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package resources
22

33
import (
4+
"fmt"
5+
46
corev1 "k8s.io/api/core/v1"
57
"k8s.io/client-go/rest"
68

@@ -25,6 +27,28 @@ func NewDatabase(ydbCr *api.Database) DatabaseBuilder {
2527
return DatabaseBuilder{Database: cr, Storage: nil}
2628
}
2729

30+
func (b *DatabaseBuilder) NewLabels() labels.Labels {
31+
l := labels.Common(b.Name, b.Labels)
32+
33+
l.Merge(b.Spec.AdditionalLabels)
34+
l.Merge(map[string]string{labels.ComponentKey: labels.DynamicComponent})
35+
36+
return l
37+
}
38+
39+
func (b *DatabaseBuilder) NewAnnotations() map[string]string {
40+
an := annotations.Common(b.Annotations)
41+
42+
an.Merge(b.Spec.AdditionalAnnotations)
43+
if b.Spec.Configuration != "" {
44+
an.Merge(map[string]string{annotations.ConfigurationChecksum: GetSHA256Checksum(b.Spec.Configuration)})
45+
} else {
46+
an.Merge(map[string]string{annotations.ConfigurationChecksum: GetSHA256Checksum(b.Storage.Spec.Configuration)})
47+
}
48+
49+
return an
50+
}
51+
2852
func (b *DatabaseBuilder) Unwrap() *api.Database {
2953
return b.DeepCopy()
3054
}
@@ -34,14 +58,12 @@ func (b *DatabaseBuilder) GetResourceBuilders(restConfig *rest.Config) []Resourc
3458
return []ResourceBuilder{}
3559
}
3660

37-
databaseLabels := labels.DatabaseLabels(b.Unwrap())
61+
databaseLabels := b.NewLabels()
62+
databaseAnnotations := b.NewAnnotations()
3863

3964
statefulSetLabels := databaseLabels.Copy()
4065
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: b.Name})
4166

42-
statefulSetAnnotations := CopyDict(b.Spec.AdditionalAnnotations)
43-
statefulSetAnnotations[annotations.ConfigurationChecksum] = GetConfigurationChecksum(b.Spec.Configuration)
44-
4567
grpcServiceLabels := databaseLabels.Copy()
4668
grpcServiceLabels.Merge(b.Spec.Service.GRPC.AdditionalLabels)
4769
grpcServiceLabels.Merge(map[string]string{labels.ServiceComponent: labels.GRPCComponent})
@@ -183,33 +205,36 @@ func (b *DatabaseBuilder) GetResourceBuilders(restConfig *rest.Config) []Resourc
183205

184206
Name: b.Name,
185207
Labels: statefulSetLabels,
186-
Annotations: statefulSetAnnotations,
208+
Annotations: databaseAnnotations,
187209
},
188210
)
189211
} else {
190-
optionalBuilders = append(optionalBuilders, b.getNodeSetBuilders(databaseLabels)...)
212+
optionalBuilders = append(
213+
optionalBuilders,
214+
b.getNodeSetBuilders(databaseLabels, databaseAnnotations)...)
191215
}
192216

193217
return optionalBuilders
194218
}
195219

196-
func (b *DatabaseBuilder) getNodeSetBuilders(databaseLabels labels.Labels) []ResourceBuilder {
220+
func (b *DatabaseBuilder) getNodeSetBuilders(
221+
databaseLabels labels.Labels,
222+
databaseAnnotations annotations.Annotations,
223+
) []ResourceBuilder {
197224
var nodeSetBuilders []ResourceBuilder
198225

199226
for _, nodeSetSpecInline := range b.Spec.NodeSets {
227+
nodeSetName := fmt.Sprintf("%s-%s", b.Name, nodeSetSpecInline.Name)
228+
200229
nodeSetLabels := databaseLabels.Copy()
201230
nodeSetLabels.Merge(nodeSetSpecInline.Labels)
202231
nodeSetLabels.Merge(map[string]string{labels.DatabaseNodeSetComponent: nodeSetSpecInline.Name})
203232
if nodeSetSpecInline.Remote != nil {
204233
nodeSetLabels.Merge(map[string]string{labels.RemoteClusterKey: nodeSetSpecInline.Remote.Cluster})
205234
}
206235

207-
nodeSetAnnotations := CopyDict(b.Annotations)
208-
if nodeSetSpecInline.Annotations != nil {
209-
for k, v := range nodeSetSpecInline.Annotations {
210-
nodeSetAnnotations[k] = v
211-
}
212-
}
236+
nodeSetAnnotations := databaseAnnotations.Copy()
237+
nodeSetAnnotations.Merge(nodeSetSpecInline.Annotations)
213238

214239
databaseNodeSetSpec := b.recastDatabaseNodeSetSpecInline(nodeSetSpecInline.DeepCopy())
215240
if nodeSetSpecInline.Remote != nil {
@@ -218,7 +243,7 @@ func (b *DatabaseBuilder) getNodeSetBuilders(databaseLabels labels.Labels) []Res
218243
&RemoteDatabaseNodeSetBuilder{
219244
Object: b,
220245

221-
Name: b.Name + "-" + nodeSetSpecInline.Name,
246+
Name: nodeSetName,
222247
Labels: nodeSetLabels,
223248
Annotations: nodeSetAnnotations,
224249

@@ -231,7 +256,7 @@ func (b *DatabaseBuilder) getNodeSetBuilders(databaseLabels labels.Labels) []Res
231256
&DatabaseNodeSetBuilder{
232257
Object: b,
233258

234-
Name: b.Name + "-" + nodeSetSpecInline.Name,
259+
Name: nodeSetName,
235260
Labels: nodeSetLabels,
236261
Annotations: nodeSetAnnotations,
237262

internal/resources/databasenodeset.go

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ type DatabaseNodeSetBuilder struct {
2222
DatabaseNodeSetSpec api.DatabaseNodeSetSpec
2323
}
2424

25-
type DatabaseNodeSetResource struct {
26-
*api.DatabaseNodeSet
27-
}
28-
2925
func (b *DatabaseNodeSetBuilder) Build(obj client.Object) error {
3026
dns, ok := obj.(*api.DatabaseNodeSet)
3127
if !ok {
@@ -54,32 +50,50 @@ func (b *DatabaseNodeSetBuilder) Placeholder(cr client.Object) client.Object {
5450
}
5551
}
5652

57-
func (b *DatabaseNodeSetResource) GetResourceBuilders(restConfig *rest.Config) []ResourceBuilder {
58-
ydbCr := api.RecastDatabaseNodeSet(b.Unwrap())
59-
databaseLabels := labels.DatabaseLabels(ydbCr)
53+
type DatabaseNodeSetResource struct {
54+
*api.DatabaseNodeSet
55+
}
56+
57+
func (b *DatabaseNodeSetResource) NewLabels() labels.Labels {
58+
l := labels.Common(b.Name, b.Labels)
6059

61-
statefulSetName := b.Name
62-
statefulSetLabels := databaseLabels.Copy()
63-
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: statefulSetName})
60+
l.Merge(b.Spec.AdditionalLabels)
61+
l.Merge(map[string]string{labels.ComponentKey: labels.DynamicComponent})
6462

6563
databaseNodeSetName := b.Labels[labels.DatabaseNodeSetComponent]
66-
statefulSetLabels.Merge(map[string]string{labels.DatabaseNodeSetComponent: databaseNodeSetName})
64+
l.Merge(map[string]string{labels.DatabaseNodeSetComponent: databaseNodeSetName})
65+
6766
if remoteCluster, exist := b.Labels[labels.RemoteClusterKey]; exist {
68-
statefulSetLabels.Merge(map[string]string{labels.RemoteClusterKey: remoteCluster})
67+
l.Merge(map[string]string{labels.RemoteClusterKey: remoteCluster})
6968
}
7069

71-
statefulSetAnnotations := CopyDict(b.Spec.AdditionalAnnotations)
72-
statefulSetAnnotations[annotations.ConfigurationChecksum] = GetConfigurationChecksum(b.Spec.Configuration)
70+
return l
71+
}
72+
73+
func (b *DatabaseNodeSetResource) NewAnnotations() map[string]string {
74+
an := annotations.Common(b.Annotations)
75+
76+
an.Merge(b.Spec.AdditionalAnnotations)
77+
78+
return an
79+
}
80+
81+
func (b *DatabaseNodeSetResource) GetResourceBuilders(restConfig *rest.Config) []ResourceBuilder {
82+
nodeSetLabels := b.NewLabels()
83+
nodeSetAnnotations := b.NewAnnotations()
84+
85+
statefulSetLabels := nodeSetLabels.Copy()
86+
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: b.Name})
7387

7488
var resourceBuilders []ResourceBuilder
7589
resourceBuilders = append(resourceBuilders,
7690
&DatabaseStatefulSetBuilder{
77-
Database: ydbCr,
91+
Database: api.RecastDatabaseNodeSet(b.Unwrap()),
7892
RestConfig: restConfig,
7993

80-
Name: statefulSetName,
94+
Name: b.Name,
8195
Labels: statefulSetLabels,
82-
Annotations: statefulSetAnnotations,
96+
Annotations: nodeSetAnnotations,
8397
},
8498
)
8599
return resourceBuilders

internal/resources/resource.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@ func buildCAStorePatchingCommandArgs(
574574
return command, args
575575
}
576576

577-
func GetConfigurationChecksum(configuration string) string {
577+
func GetSHA256Checksum(configuration string) string {
578578
hasher := sha256.New()
579579
hasher.Write([]byte(configuration))
580580
return hex.EncodeToString(hasher.Sum(nil))
@@ -592,17 +592,6 @@ func CompareMaps(map1, map2 map[string]string) bool {
592592
return true
593593
}
594594

595-
func PodIsReady(e corev1.Pod) bool {
596-
if e.Status.Phase == corev1.PodRunning {
597-
for _, condition := range e.Status.Conditions {
598-
if condition.Type == corev1.PodReady && condition.Status == corev1.ConditionTrue {
599-
return true
600-
}
601-
}
602-
}
603-
return false
604-
}
605-
606595
func isSignAlgorithmSupported(alg string) bool {
607596
supportedAlgs := jwt.GetAlgorithms()
608597

internal/resources/storage.go

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package resources
22

33
import (
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+
3288
func (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

Comments
 (0)