Skip to content

Commit 2871c31

Browse files
committed
Change util.AddAdditionalVolumesAndMounts to take a PodSpec
This was the only field of the template it used.
1 parent 645d505 commit 2871c31

File tree

6 files changed

+32
-48
lines changed

6 files changed

+32
-48
lines changed

internal/controller/postgrescluster/instance.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1214,7 +1214,7 @@ func (r *Reconciler) reconcileInstance(
12141214

12151215
// mount additional volumes to the Postgres instance containers
12161216
if err == nil && spec.Volumes != nil && len(spec.Volumes.Additional) > 0 {
1217-
missingContainers := util.AddAdditionalVolumesAndMounts(&instance.Spec.Template, spec.Volumes.Additional)
1217+
missingContainers := util.AddAdditionalVolumesAndMounts(&instance.Spec.Template.Spec, spec.Volumes.Additional)
12181218

12191219
if len(missingContainers) > 0 {
12201220
r.Recorder.Eventf(cluster, corev1.EventTypeWarning, "SpecifiedContainerNotFound",

internal/controller/postgrescluster/pgbackrest.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ func (r *Reconciler) generateRepoHostIntent(ctx context.Context, postgresCluster
721721

722722
// mount additional volumes to the repo host containers
723723
if repoHost != nil && repoHost.Volumes != nil && len(repoHost.Volumes.Additional) > 0 {
724-
missingContainers := util.AddAdditionalVolumesAndMounts(&repo.Spec.Template, repoHost.Volumes.Additional)
724+
missingContainers := util.AddAdditionalVolumesAndMounts(&repo.Spec.Template.Spec, repoHost.Volumes.Additional)
725725

726726
if len(missingContainers) > 0 {
727727
r.Recorder.Eventf(postgresCluster, corev1.EventTypeWarning, "SpecifiedContainerNotFound",
@@ -908,7 +908,7 @@ func (r *Reconciler) generateBackupJobSpecIntent(ctx context.Context, postgresCl
908908

909909
// mount additional volumes to the job containers
910910
if jobs != nil && jobs.Volumes != nil && len(jobs.Volumes.Additional) > 0 {
911-
missingContainers := util.AddAdditionalVolumesAndMounts(&jobSpec.Template, jobs.Volumes.Additional)
911+
missingContainers := util.AddAdditionalVolumesAndMounts(&jobSpec.Template.Spec, jobs.Volumes.Additional)
912912

913913
if len(missingContainers) > 0 {
914914
r.Recorder.Eventf(postgresCluster, corev1.EventTypeWarning, "SpecifiedContainerNotFound",
@@ -1408,7 +1408,7 @@ func (r *Reconciler) generateRestoreJobIntent(cluster *v1beta1.PostgresCluster,
14081408
job.Spec.Template.Spec.PriorityClassName = initialize.FromPointer(dataSource.PriorityClassName)
14091409

14101410
if dataSource.Volumes != nil && len(dataSource.Volumes.Additional) > 0 {
1411-
missingContainers := util.AddAdditionalVolumesAndMounts(&job.Spec.Template, dataSource.Volumes.Additional)
1411+
missingContainers := util.AddAdditionalVolumesAndMounts(&job.Spec.Template.Spec, dataSource.Volumes.Additional)
14121412

14131413
if len(missingContainers) > 0 {
14141414
r.Recorder.Eventf(cluster, corev1.EventTypeWarning, "SpecifiedContainerNotFound",

internal/controller/postgrescluster/pgbouncer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ func (r *Reconciler) generatePGBouncerDeployment(
478478

479479
// mount additional volumes to the pgbouncer containers
480480
if volumes := cluster.Spec.Proxy.PGBouncer.Volumes; err == nil && volumes != nil && len(volumes.Additional) > 0 {
481-
missingContainers := util.AddAdditionalVolumesAndMounts(&deploy.Spec.Template, volumes.Additional)
481+
missingContainers := util.AddAdditionalVolumesAndMounts(&deploy.Spec.Template.Spec, volumes.Additional)
482482

483483
if len(missingContainers) > 0 {
484484
r.Recorder.Eventf(cluster, corev1.EventTypeWarning, "SpecifiedContainerNotFound",

internal/controller/standalone_pgadmin/statefulset.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func (r *PGAdminReconciler) statefulset(
141141

142142
// mount additional volumes to the Postgres instance containers
143143
if pgadmin.Spec.Volumes != nil && len(pgadmin.Spec.Volumes.Additional) > 0 {
144-
missingContainers := util.AddAdditionalVolumesAndMounts(&sts.Spec.Template, pgadmin.Spec.Volumes.Additional)
144+
missingContainers := util.AddAdditionalVolumesAndMounts(&sts.Spec.Template.Spec, pgadmin.Spec.Volumes.Additional)
145145

146146
if len(missingContainers) > 0 {
147147
r.Recorder.Eventf(pgadmin, corev1.EventTypeWarning, "SpecifiedContainerNotFound",

internal/util/volumes.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ func AdditionalVolumeMount(name string, readOnly bool) corev1.VolumeMount {
2222
}
2323
}
2424

25-
// AddAdditionalVolumesAndMounts adds volumes as [corev1.Volume]s and [corev1.VolumeMount]s in template.
25+
// AddAdditionalVolumesAndMounts adds volumes as [corev1.Volume]s and [corev1.VolumeMount]s in pod.
2626
// Volume names are chosen in [AdditionalVolumeMount].
27-
func AddAdditionalVolumesAndMounts(template *corev1.PodTemplateSpec, volumes []v1beta1.AdditionalVolume) []string {
27+
func AddAdditionalVolumesAndMounts(pod *corev1.PodSpec, volumes []v1beta1.AdditionalVolume) []string {
2828
missingContainers := []string{}
2929

3030
for _, spec := range volumes {
3131
mount := AdditionalVolumeMount(spec.Name, spec.ReadOnly)
32-
template.Spec.Volumes = append(template.Spec.Volumes, spec.AsVolume(mount.Name))
32+
pod.Volumes = append(pod.Volumes, spec.AsVolume(mount.Name))
3333

3434
// Create a set of all the requested containers,
3535
// then in the loops below when we attach the volume to a container,
@@ -39,18 +39,18 @@ func AddAdditionalVolumesAndMounts(template *corev1.PodTemplateSpec, volumes []v
3939
// - https://github.com/kubernetes/api/blob/b40c1cacbb902b21a7e0c7bf0967321860c1a632/core/v1/types.go#L3895C27-L3896C33
4040
names := sets.New(spec.Containers...)
4141

42-
for i, c := range template.Spec.Containers {
42+
for i, c := range pod.Containers {
4343
if spec.Containers == nil || names.Has(c.Name) {
4444
c.VolumeMounts = append(c.VolumeMounts, mount)
45-
template.Spec.Containers[i] = c
45+
pod.Containers[i] = c
4646
}
4747
names.Delete(c.Name)
4848
}
4949

50-
for i, c := range template.Spec.InitContainers {
50+
for i, c := range pod.InitContainers {
5151
if spec.Containers == nil || names.Has(c.Name) {
5252
c.VolumeMounts = append(c.VolumeMounts, mount)
53-
template.Spec.InitContainers[i] = c
53+
pod.InitContainers[i] = c
5454
}
5555
names.Delete(c.Name)
5656
}

internal/util/volumes_test.go

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package util
66

77
import (
8+
"slices"
89
"testing"
910

1011
"github.com/google/go-cmp/cmp/cmpopts"
@@ -19,16 +20,16 @@ import (
1920
func TestAddAdditionalVolumesAndMounts(t *testing.T) {
2021
t.Parallel()
2122

22-
podTemplate := &corev1.PodTemplateSpec{
23-
Spec: corev1.PodSpec{
24-
InitContainers: []corev1.Container{
25-
{Name: "startup"},
26-
{Name: "config"},
27-
},
28-
Containers: []corev1.Container{
29-
{Name: "database"},
30-
{Name: "other"},
31-
}}}
23+
podSpec := corev1.PodSpec{
24+
InitContainers: []corev1.Container{
25+
{Name: "startup"},
26+
{Name: "config"},
27+
},
28+
Containers: []corev1.Container{
29+
{Name: "database"},
30+
{Name: "other"},
31+
},
32+
}
3233

3334
testCases := []struct {
3435
tcName string
@@ -209,33 +210,16 @@ func TestAddAdditionalVolumesAndMounts(t *testing.T) {
209210

210211
for _, tc := range testCases {
211212
t.Run(tc.tcName, func(t *testing.T) {
212-
copyPodTemplate := podTemplate.DeepCopy()
213+
sink := podSpec.DeepCopy()
214+
missingContainers := AddAdditionalVolumesAndMounts(sink, tc.additionalVolumes)
213215

214-
missingContainers := AddAdditionalVolumesAndMounts(
215-
copyPodTemplate,
216-
tc.additionalVolumes,
217-
)
216+
assert.Assert(t, cmp.MarshalMatches(sink.Containers, tc.expectedContainers))
217+
assert.Assert(t, cmp.MarshalMatches(sink.InitContainers, tc.expectedInitContainers))
218+
assert.Assert(t, cmp.MarshalMatches(sink.Volumes, tc.expectedVolumes))
218219

219-
assert.Assert(t, cmp.MarshalMatches(
220-
copyPodTemplate.Spec.Containers,
221-
tc.expectedContainers))
222-
assert.Assert(t, cmp.MarshalMatches(
223-
copyPodTemplate.Spec.InitContainers,
224-
tc.expectedInitContainers))
225-
assert.Assert(t, cmp.MarshalMatches(
226-
copyPodTemplate.Spec.Volumes,
227-
tc.expectedVolumes))
228-
if len(tc.expectedMissing) == 0 {
229-
assert.Assert(t, cmp.DeepEqual(
230-
missingContainers,
231-
tc.expectedMissing))
232-
} else {
233-
for _, mc := range tc.expectedMissing {
234-
assert.Assert(t, cmp.Contains(
235-
missingContainers,
236-
mc))
237-
}
238-
}
220+
slices.Sort(missingContainers)
221+
slices.Sort(tc.expectedMissing)
222+
assert.DeepEqual(t, missingContainers, tc.expectedMissing)
239223
})
240224
}
241225
}

0 commit comments

Comments
 (0)