Skip to content

Commit 2e40cc4

Browse files
committed
Merge branch 'master' into YDBOPS-8536
2 parents 5ba1e13 + 7245f02 commit 2e40cc4

File tree

8 files changed

+45
-139
lines changed

8 files changed

+45
-139
lines changed

internal/controllers/database/sync.go

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
"github.com/ydb-platform/ydb-kubernetes-operator/api/v1alpha1"
2222
. "github.com/ydb-platform/ydb-kubernetes-operator/internal/controllers/constants" //nolint:revive,stylecheck
23-
"github.com/ydb-platform/ydb-kubernetes-operator/internal/labels"
2423
"github.com/ydb-platform/ydb-kubernetes-operator/internal/resources"
2524
)
2625

@@ -304,11 +303,11 @@ func (r *Reconciler) waitForStatefulSetToScale(
304303
return Continue, ctrl.Result{Requeue: false}, nil
305304
}
306305

307-
found := &appsv1.StatefulSet{}
306+
foundStatefulSet := &appsv1.StatefulSet{}
308307
err := r.Get(ctx, types.NamespacedName{
309308
Name: database.Name,
310309
Namespace: database.Namespace,
311-
}, found)
310+
}, foundStatefulSet)
312311
if err != nil {
313312
if apierrors.IsNotFound(err) {
314313
r.Recorder.Event(
@@ -328,42 +327,18 @@ func (r *Reconciler) waitForStatefulSetToScale(
328327
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
329328
}
330329

331-
podList := &corev1.PodList{}
332-
opts := []client.ListOption{
333-
client.InNamespace(database.Namespace),
334-
client.MatchingLabels{labels.StatefulsetComponent: database.Name},
335-
}
336-
337-
err = r.List(ctx, podList, opts...)
338-
if err != nil {
339-
r.Recorder.Event(
340-
database,
341-
corev1.EventTypeWarning,
342-
"ControllerError",
343-
fmt.Sprintf("Failed to list StatefulSet pods: %s", err),
344-
)
345-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
346-
}
347-
348-
runningPods := 0
349-
for _, e := range podList.Items {
350-
if resources.PodIsReady(e) {
351-
runningPods++
352-
}
353-
}
354-
355-
if runningPods != int(database.Spec.Nodes) {
330+
if foundStatefulSet.Status.ReadyReplicas != database.Spec.Nodes {
356331
r.Recorder.Event(
357332
database,
358333
corev1.EventTypeNormal,
359334
string(DatabaseProvisioning),
360-
fmt.Sprintf("Waiting for number of running pods to match expected: %d != %d", runningPods, database.Spec.Nodes),
335+
fmt.Sprintf("Waiting for number of running pods to match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, database.Spec.Nodes),
361336
)
362337
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
363338
Type: DatabaseProvisionedCondition,
364339
Status: metav1.ConditionFalse,
365340
Reason: ReasonInProgress,
366-
Message: fmt.Sprintf("Number of running pods does not match expected: %d != %d", runningPods, database.Spec.Nodes),
341+
Message: fmt.Sprintf("Number of running pods does not match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, database.Spec.Nodes),
367342
})
368343
return r.updateStatus(ctx, database, DefaultRequeueDelay)
369344
}

internal/controllers/databasenodeset/sync.go

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ import (
1414
"k8s.io/apimachinery/pkg/runtime"
1515
"k8s.io/apimachinery/pkg/types"
1616
ctrl "sigs.k8s.io/controller-runtime"
17-
"sigs.k8s.io/controller-runtime/pkg/client"
1817
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1918

2019
"github.com/ydb-platform/ydb-kubernetes-operator/api/v1alpha1"
2120
. "github.com/ydb-platform/ydb-kubernetes-operator/internal/controllers/constants" //nolint:revive,stylecheck
22-
"github.com/ydb-platform/ydb-kubernetes-operator/internal/labels"
2321
"github.com/ydb-platform/ydb-kubernetes-operator/internal/resources"
2422
)
2523

@@ -204,11 +202,11 @@ func (r *Reconciler) waitForStatefulSetToScale(
204202
return r.updateStatus(ctx, databaseNodeSet, StatusUpdateRequeueDelay)
205203
}
206204

207-
found := &appsv1.StatefulSet{}
205+
foundStatefulSet := &appsv1.StatefulSet{}
208206
err := r.Get(ctx, types.NamespacedName{
209207
Name: databaseNodeSet.Name,
210208
Namespace: databaseNodeSet.Namespace,
211-
}, found)
209+
}, foundStatefulSet)
212210
if err != nil {
213211
if apierrors.IsNotFound(err) {
214212
r.Recorder.Event(
@@ -223,51 +221,23 @@ func (r *Reconciler) waitForStatefulSetToScale(
223221
databaseNodeSet,
224222
corev1.EventTypeWarning,
225223
"ControllerError",
226-
fmt.Sprintf("Failed to get StatefulSets: %s", err),
224+
fmt.Sprintf("Failed to get StatefulSet: %s", err),
227225
)
228226
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
229227
}
230228

231-
matchingLabels := client.MatchingLabels{}
232-
for k, v := range databaseNodeSet.Labels {
233-
matchingLabels[k] = v
234-
}
235-
236-
podList := &corev1.PodList{}
237-
opts := []client.ListOption{
238-
client.InNamespace(databaseNodeSet.Namespace),
239-
client.MatchingLabels{labels.StatefulsetComponent: databaseNodeSet.Name},
240-
}
241-
err = r.List(ctx, podList, opts...)
242-
if err != nil {
243-
r.Recorder.Event(
244-
databaseNodeSet,
245-
corev1.EventTypeWarning,
246-
"ControllerError",
247-
fmt.Sprintf("Failed to list StatefulSet pods: %s", err),
248-
)
249-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
250-
}
251-
252-
runningPods := 0
253-
for _, e := range podList.Items {
254-
if resources.PodIsReady(e) {
255-
runningPods++
256-
}
257-
}
258-
259-
if runningPods != int(databaseNodeSet.Spec.Nodes) {
229+
if foundStatefulSet.Status.ReadyReplicas != databaseNodeSet.Spec.Nodes {
260230
r.Recorder.Event(
261231
databaseNodeSet,
262232
corev1.EventTypeNormal,
263233
string(DatabaseNodeSetProvisioning),
264-
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", runningPods, databaseNodeSet.Spec.Nodes),
234+
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, databaseNodeSet.Spec.Nodes),
265235
)
266236
meta.SetStatusCondition(&databaseNodeSet.Status.Conditions, metav1.Condition{
267237
Type: NodeSetProvisionedCondition,
268238
Status: metav1.ConditionFalse,
269239
Reason: ReasonInProgress,
270-
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", runningPods, databaseNodeSet.Spec.Nodes),
240+
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, databaseNodeSet.Spec.Nodes),
271241
})
272242
return r.updateStatus(ctx, databaseNodeSet, DefaultRequeueDelay)
273243
}

internal/controllers/storage/sync.go

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/ydb-platform/ydb-kubernetes-operator/api/v1alpha1"
2222
. "github.com/ydb-platform/ydb-kubernetes-operator/internal/controllers/constants" //nolint:revive,stylecheck
2323
"github.com/ydb-platform/ydb-kubernetes-operator/internal/healthcheck"
24-
"github.com/ydb-platform/ydb-kubernetes-operator/internal/labels"
2524
"github.com/ydb-platform/ydb-kubernetes-operator/internal/resources"
2625
)
2726

@@ -124,11 +123,11 @@ func (r *Reconciler) waitForStatefulSetToScale(
124123
return r.updateStatus(ctx, storage, StatusUpdateRequeueDelay)
125124
}
126125

127-
found := &appsv1.StatefulSet{}
126+
foundStatefulSet := &appsv1.StatefulSet{}
128127
err := r.Get(ctx, types.NamespacedName{
129128
Name: storage.Name,
130129
Namespace: storage.Namespace,
131-
}, found)
130+
}, foundStatefulSet)
132131
if err != nil {
133132
if apierrors.IsNotFound(err) {
134133
r.Recorder.Event(
@@ -148,42 +147,18 @@ func (r *Reconciler) waitForStatefulSetToScale(
148147
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
149148
}
150149

151-
podList := &corev1.PodList{}
152-
opts := []client.ListOption{
153-
client.InNamespace(storage.Namespace),
154-
client.MatchingLabels{labels.StatefulsetComponent: storage.Name},
155-
}
156-
157-
err = r.List(ctx, podList, opts...)
158-
if err != nil {
159-
r.Recorder.Event(
160-
storage,
161-
corev1.EventTypeWarning,
162-
"ControllerError",
163-
fmt.Sprintf("Failed to list StatefulSet pods: %s", err),
164-
)
165-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
166-
}
167-
168-
runningPods := 0
169-
for _, e := range podList.Items {
170-
if resources.PodIsReady(e) {
171-
runningPods++
172-
}
173-
}
174-
175-
if runningPods != int(storage.Spec.Nodes) {
150+
if foundStatefulSet.Status.ReadyReplicas != storage.Spec.Nodes {
176151
r.Recorder.Event(
177152
storage,
178153
corev1.EventTypeNormal,
179154
string(StorageProvisioning),
180-
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", runningPods, storage.Spec.Nodes),
155+
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, storage.Spec.Nodes),
181156
)
182157
meta.SetStatusCondition(&storage.Status.Conditions, metav1.Condition{
183158
Type: StorageProvisionedCondition,
184159
Status: metav1.ConditionFalse,
185160
Reason: ReasonInProgress,
186-
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", runningPods, storage.Spec.Nodes),
161+
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, storage.Spec.Nodes),
187162
})
188163
return r.updateStatus(ctx, storage, DefaultRequeueDelay)
189164
}

internal/controllers/storagenodeset/sync.go

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ import (
1414
"k8s.io/apimachinery/pkg/runtime"
1515
"k8s.io/apimachinery/pkg/types"
1616
ctrl "sigs.k8s.io/controller-runtime"
17-
"sigs.k8s.io/controller-runtime/pkg/client"
1817
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1918

2019
"github.com/ydb-platform/ydb-kubernetes-operator/api/v1alpha1"
2120
. "github.com/ydb-platform/ydb-kubernetes-operator/internal/controllers/constants" //nolint:revive,stylecheck
22-
"github.com/ydb-platform/ydb-kubernetes-operator/internal/labels"
2321
"github.com/ydb-platform/ydb-kubernetes-operator/internal/resources"
2422
)
2523

@@ -228,42 +226,18 @@ func (r *Reconciler) waitForStatefulSetToScale(
228226
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
229227
}
230228

231-
podList := &corev1.PodList{}
232-
opts := []client.ListOption{
233-
client.InNamespace(storageNodeSet.Namespace),
234-
client.MatchingLabels{labels.StatefulsetComponent: storageNodeSet.Name},
235-
}
236-
237-
err = r.List(ctx, podList, opts...)
238-
if err != nil {
239-
r.Recorder.Event(
240-
storageNodeSet,
241-
corev1.EventTypeWarning,
242-
"ControllerError",
243-
fmt.Sprintf("Failed to list StatefulSet pods: %s", err),
244-
)
245-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
246-
}
247-
248-
runningPods := 0
249-
for _, e := range podList.Items {
250-
if resources.PodIsReady(e) {
251-
runningPods++
252-
}
253-
}
254-
255-
if runningPods != int(storageNodeSet.Spec.Nodes) {
229+
if foundStatefulSet.Status.ReadyReplicas != storageNodeSet.Spec.Nodes {
256230
r.Recorder.Event(
257231
storageNodeSet,
258232
corev1.EventTypeNormal,
259233
string(StorageNodeSetProvisioning),
260-
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", runningPods, storageNodeSet.Spec.Nodes),
234+
fmt.Sprintf("Waiting for number of running nodes to match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, storageNodeSet.Spec.Nodes),
261235
)
262236
meta.SetStatusCondition(&storageNodeSet.Status.Conditions, metav1.Condition{
263237
Type: NodeSetProvisionedCondition,
264238
Status: metav1.ConditionFalse,
265239
Reason: ReasonInProgress,
266-
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", runningPods, storageNodeSet.Spec.Nodes),
240+
Message: fmt.Sprintf("Number of running nodes does not match expected: %d != %d", foundStatefulSet.Status.ReadyReplicas, storageNodeSet.Spec.Nodes),
267241
})
268242
return r.updateStatus(ctx, storageNodeSet, DefaultRequeueDelay)
269243
}

internal/resources/database.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ func (b *DatabaseBuilder) getNodeSetBuilders(databaseLabels labels.Labels) []Res
200200
nodeSetLabels := databaseLabels.Copy()
201201
nodeSetLabels.Merge(nodeSetSpecInline.Labels)
202202
nodeSetLabels.Merge(map[string]string{labels.DatabaseNodeSetComponent: nodeSetSpecInline.Name})
203+
if nodeSetSpecInline.Remote != nil {
204+
nodeSetLabels.Merge(map[string]string{labels.RemoteClusterKey: nodeSetSpecInline.Remote.Cluster})
205+
}
203206

204207
nodeSetAnnotations := CopyDict(b.Annotations)
205208
if nodeSetSpecInline.Annotations != nil {
@@ -210,9 +213,6 @@ func (b *DatabaseBuilder) getNodeSetBuilders(databaseLabels labels.Labels) []Res
210213

211214
databaseNodeSetSpec := b.recastDatabaseNodeSetSpecInline(nodeSetSpecInline.DeepCopy())
212215
if nodeSetSpecInline.Remote != nil {
213-
nodeSetLabels = nodeSetLabels.Merge(map[string]string{
214-
labels.RemoteClusterKey: nodeSetSpecInline.Remote.Cluster,
215-
})
216216
nodeSetBuilders = append(
217217
nodeSetBuilders,
218218
&RemoteDatabaseNodeSetBuilder{

internal/resources/databasenodeset.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,26 @@ func (b *DatabaseNodeSetResource) GetResourceBuilders(restConfig *rest.Config) [
5858
ydbCr := api.RecastDatabaseNodeSet(b.Unwrap())
5959
databaseLabels := labels.DatabaseLabels(ydbCr)
6060

61+
statefulSetName := b.Name
6162
statefulSetLabels := databaseLabels.Copy()
62-
statefulSetLabels.Merge(map[string]string{labels.DatabaseNodeSetComponent: b.Labels[labels.DatabaseNodeSetComponent]})
63-
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: b.Name})
63+
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: statefulSetName})
64+
65+
databaseNodeSetName := b.Labels[labels.DatabaseNodeSetComponent]
66+
statefulSetLabels.Merge(map[string]string{labels.DatabaseNodeSetComponent: databaseNodeSetName})
67+
if remoteCluster, exist := b.Labels[labels.RemoteClusterKey]; exist {
68+
statefulSetLabels.Merge(map[string]string{labels.RemoteClusterKey: remoteCluster})
69+
}
6470

6571
statefulSetAnnotations := CopyDict(b.Spec.AdditionalAnnotations)
6672
statefulSetAnnotations[annotations.ConfigurationChecksum] = GetConfigurationChecksum(b.Spec.Configuration)
6773

6874
var resourceBuilders []ResourceBuilder
6975
resourceBuilders = append(resourceBuilders,
7076
&DatabaseStatefulSetBuilder{
71-
Database: api.RecastDatabaseNodeSet(b.DatabaseNodeSet),
77+
Database: ydbCr,
7278
RestConfig: restConfig,
7379

74-
Name: b.Name,
80+
Name: statefulSetName,
7581
Labels: statefulSetLabels,
7682
Annotations: statefulSetAnnotations,
7783
},

internal/resources/storage.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
165165
nodeSetLabels := storageLabels.Copy()
166166
nodeSetLabels.Merge(nodeSetSpecInline.Labels)
167167
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+
}
168171

169172
nodeSetAnnotations := CopyDict(b.Annotations)
170173
if nodeSetSpecInline.Annotations != nil {
@@ -175,9 +178,6 @@ func (b *StorageClusterBuilder) getNodeSetBuilders(storageLabels labels.Labels)
175178

176179
storageNodeSetSpec := b.recastStorageNodeSetSpecInline(nodeSetSpecInline.DeepCopy())
177180
if nodeSetSpecInline.Remote != nil {
178-
nodeSetLabels = nodeSetLabels.Merge(map[string]string{
179-
labels.RemoteClusterKey: nodeSetSpecInline.Remote.Cluster,
180-
})
181181
nodeSetBuilders = append(
182182
nodeSetBuilders,
183183
&RemoteStorageNodeSetBuilder{

internal/resources/storagenodeset.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,15 @@ func (b *StorageNodeSetResource) GetResourceBuilders(restConfig *rest.Config) []
5858
ydbCr := api.RecastStorageNodeSet(b.Unwrap())
5959
storageLabels := labels.StorageLabels(ydbCr)
6060

61+
statefulSetName := b.Name
6162
statefulSetLabels := storageLabels.Copy()
62-
statefulSetLabels.Merge(map[string]string{labels.StorageNodeSetComponent: b.Labels[labels.DatabaseNodeSetComponent]})
63-
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: b.Name})
63+
statefulSetLabels.Merge(map[string]string{labels.StatefulsetComponent: statefulSetName})
64+
65+
storageNodeSetName := b.Labels[labels.StorageNodeSetComponent]
66+
statefulSetLabels.Merge(map[string]string{labels.StorageNodeSetComponent: storageNodeSetName})
67+
if remoteCluster, exist := b.Labels[labels.RemoteClusterKey]; exist {
68+
statefulSetLabels.Merge(map[string]string{labels.RemoteClusterKey: remoteCluster})
69+
}
6470

6571
statefulSetAnnotations := CopyDict(b.Spec.AdditionalAnnotations)
6672
statefulSetAnnotations[annotations.ConfigurationChecksum] = GetConfigurationChecksum(b.Spec.Configuration)
@@ -69,10 +75,10 @@ func (b *StorageNodeSetResource) GetResourceBuilders(restConfig *rest.Config) []
6975
resourceBuilders = append(
7076
resourceBuilders,
7177
&StorageStatefulSetBuilder{
72-
Storage: api.RecastStorageNodeSet(b.StorageNodeSet),
78+
Storage: ydbCr,
7379
RestConfig: restConfig,
7480

75-
Name: b.Name,
81+
Name: statefulSetName,
7682
Labels: statefulSetLabels,
7783
Annotations: statefulSetAnnotations,
7884
},

0 commit comments

Comments
 (0)