Skip to content

Commit ed8ca88

Browse files
committed
Pass slices of *PostgresCluster rather than *PostgresClusterList
1 parent 4aacf8f commit ed8ca88

File tree

4 files changed

+25
-29
lines changed

4 files changed

+25
-29
lines changed

internal/controller/standalone_pgadmin/configmap.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import (
99
"context"
1010
"encoding/json"
1111
"fmt"
12+
"slices"
1213
"sort"
1314
"strconv"
15+
"strings"
1416

1517
corev1 "k8s.io/api/core/v1"
1618

@@ -27,7 +29,7 @@ import (
2729
// reconcilePGAdminConfigMap writes the ConfigMap for pgAdmin.
2830
func (r *PGAdminReconciler) reconcilePGAdminConfigMap(
2931
ctx context.Context, pgadmin *v1beta1.PGAdmin,
30-
clusters map[string]*v1beta1.PostgresClusterList,
32+
clusters map[string][]*v1beta1.PostgresCluster,
3133
) (*corev1.ConfigMap, error) {
3234
configmap, err := configmap(pgadmin, clusters)
3335
if err == nil {
@@ -42,7 +44,7 @@ func (r *PGAdminReconciler) reconcilePGAdminConfigMap(
4244

4345
// configmap returns a v1.ConfigMap for pgAdmin.
4446
func configmap(pgadmin *v1beta1.PGAdmin,
45-
clusters map[string]*v1beta1.PostgresClusterList,
47+
clusters map[string][]*v1beta1.PostgresCluster,
4648
) (*corev1.ConfigMap, error) {
4749
configmap := &corev1.ConfigMap{ObjectMeta: naming.StandalonePGAdmin(pgadmin)}
4850
configmap.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap"))
@@ -126,7 +128,7 @@ func generateConfig(pgadmin *v1beta1.PGAdmin) (string, error) {
126128
// }
127129
// }
128130
func generateClusterConfig(
129-
clusters map[string]*v1beta1.PostgresClusterList,
131+
clusters map[string][]*v1beta1.PostgresCluster,
130132
) (string, error) {
131133
// To avoid spurious reconciles, the following value must not change when
132134
// the spec does not change. [json.Encoder] and [json.Marshal] do this by
@@ -149,11 +151,10 @@ func generateClusterConfig(
149151

150152
clusterServers := map[int]any{}
151153
for _, serverGroupName := range keys {
152-
sort.Slice(clusters[serverGroupName].Items,
153-
func(i, j int) bool {
154-
return clusters[serverGroupName].Items[i].Name < clusters[serverGroupName].Items[j].Name
155-
})
156-
for _, cluster := range clusters[serverGroupName].Items {
154+
slices.SortFunc(clusters[serverGroupName], func(a, b *v1beta1.PostgresCluster) int {
155+
return strings.Compare(a.Name, b.Name)
156+
})
157+
for _, cluster := range clusters[serverGroupName] {
157158
object := map[string]any{
158159
"Name": cluster.Name,
159160
"Group": serverGroupName,

internal/controller/standalone_pgadmin/configmap_test.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,10 @@ func TestGenerateClusterConfig(t *testing.T) {
7878

7979
cluster := testCluster()
8080
cluster.Namespace = "postgres-operator"
81-
clusterList := &v1beta1.PostgresClusterList{
82-
Items: []v1beta1.PostgresCluster{*cluster, *cluster},
83-
}
84-
clusters := map[string]*v1beta1.PostgresClusterList{
85-
"shared": clusterList,
86-
"test": clusterList,
87-
"hello": clusterList,
81+
clusters := map[string][]*v1beta1.PostgresCluster{
82+
"shared": {cluster, cluster},
83+
"test": {cluster, cluster},
84+
"hello": {cluster, cluster},
8885
}
8986

9087
expectedString := `{
@@ -163,7 +160,7 @@ func TestGeneratePGAdminConfigMap(t *testing.T) {
163160
pgadmin := new(v1beta1.PGAdmin)
164161
pgadmin.Namespace = "some-ns"
165162
pgadmin.Name = "pg1"
166-
clusters := map[string]*v1beta1.PostgresClusterList{}
163+
clusters := map[string][]*v1beta1.PostgresCluster{}
167164
t.Run("Data,ObjectMeta,TypeMeta", func(t *testing.T) {
168165
pgadmin := pgadmin.DeepCopy()
169166

internal/controller/standalone_pgadmin/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (r *PGAdminReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
110110
var (
111111
configmap *corev1.ConfigMap
112112
dataVolume *corev1.PersistentVolumeClaim
113-
clusters map[string]*v1beta1.PostgresClusterList
113+
clusters map[string][]*v1beta1.PostgresCluster
114114
_ *corev1.Service
115115
)
116116

internal/controller/standalone_pgadmin/postgrescluster.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ package standalone_pgadmin
77
import (
88
"context"
99

10+
"github.com/crunchydata/postgres-operator/internal/initialize"
1011
"github.com/crunchydata/postgres-operator/internal/naming"
1112
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
1213

1314
"k8s.io/apimachinery/pkg/labels"
14-
"k8s.io/apimachinery/pkg/types"
1515
"sigs.k8s.io/controller-runtime/pkg/client"
1616
)
1717

@@ -56,33 +56,31 @@ func (r *PGAdminReconciler) findPGAdminsForPostgresCluster(
5656
func (r *PGAdminReconciler) getClustersForPGAdmin(
5757
ctx context.Context,
5858
pgAdmin *v1beta1.PGAdmin,
59-
) (map[string]*v1beta1.PostgresClusterList, error) {
60-
matching := make(map[string]*v1beta1.PostgresClusterList)
59+
) (map[string][]*v1beta1.PostgresCluster, error) {
60+
matching := make(map[string][]*v1beta1.PostgresCluster)
6161
var err error
6262
var selector labels.Selector
6363

6464
for _, serverGroup := range pgAdmin.Spec.ServerGroups {
65-
cluster := &v1beta1.PostgresCluster{}
65+
var cluster v1beta1.PostgresCluster
6666
if serverGroup.PostgresClusterName != "" {
67-
err = r.Get(ctx, types.NamespacedName{
67+
err = r.Get(ctx, client.ObjectKey{
6868
Name: serverGroup.PostgresClusterName,
6969
Namespace: pgAdmin.GetNamespace(),
70-
}, cluster)
70+
}, &cluster)
7171
if err == nil {
72-
matching[serverGroup.Name] = &v1beta1.PostgresClusterList{
73-
Items: []v1beta1.PostgresCluster{*cluster},
74-
}
72+
matching[serverGroup.Name] = []*v1beta1.PostgresCluster{&cluster}
7573
}
7674
continue
7775
}
7876
if selector, err = naming.AsSelector(serverGroup.PostgresClusterSelector); err == nil {
79-
var filteredList v1beta1.PostgresClusterList
80-
err = r.List(ctx, &filteredList,
77+
var list v1beta1.PostgresClusterList
78+
err = r.List(ctx, &list,
8179
client.InNamespace(pgAdmin.Namespace),
8280
client.MatchingLabelsSelector{Selector: selector},
8381
)
8482
if err == nil {
85-
matching[serverGroup.Name] = &filteredList
83+
matching[serverGroup.Name] = initialize.Pointers(list.Items...)
8684
}
8785
}
8886
}

0 commit comments

Comments
 (0)