Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 22ab593

Browse files
Issue event for missing containers
1 parent 6f650ea commit 22ab593

File tree

3 files changed

+59
-5
lines changed

3 files changed

+59
-5
lines changed

‎internal/controller/postgrescluster/instance.go‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1255,7 +1255,12 @@ func (r *Reconciler) reconcileInstance(
12551255

12561256
// mount additional volumes to the Postgres instance containers
12571257
if err == nil && spec.Volumes != nil && len(spec.Volumes.Additional) > 0 {
1258-
addAdditionalVolumesToSpecifiedContainers(&instance.Spec.Template, spec.Volumes.Additional)
1258+
missingContainers := addAdditionalVolumesToSpecifiedContainers(&instance.Spec.Template, spec.Volumes.Additional)
1259+
1260+
if len(missingContainers) > 0 {
1261+
r.Recorder.Eventf(cluster, corev1.EventTypeWarning, "MissingContainers",
1262+
"The following containers were specified for additional volumes but are missing: %s.", missingContainers)
1263+
}
12591264
}
12601265

12611266
if err == nil {

‎internal/controller/postgrescluster/util.go‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,9 @@ func AdditionalVolumeMount(name string, readOnly bool) corev1.VolumeMount {
303303
// as `volumes-<additionalVolumeRequest.Name>`
304304
// and adds the directory to the path `/volumes/<additionalVolumeRequest.Name>`
305305
func addAdditionalVolumesToSpecifiedContainers(template *corev1.PodTemplateSpec,
306-
additionalVolumes []v1beta1.AdditionalVolume) {
306+
additionalVolumes []v1beta1.AdditionalVolume) []string{
307307

308+
missingContainers := []string{}
308309
for _, additionalVolumeRequest := range additionalVolumes {
309310

310311
additionalVolumeMount := AdditionalVolumeMount(
@@ -323,25 +324,40 @@ func addAdditionalVolumesToSpecifiedContainers(template *corev1.PodTemplateSpec,
323324
}
324325

325326
names := sets.New(additionalVolumeRequest.Containers...)
327+
allContainers := false
328+
if names.Len() == 0 {
329+
allContainers = true
330+
}
326331

327332
for i := range template.Spec.Containers {
328-
if names.Len() ==0 || names.Has(template.Spec.Containers[i].Name) {
333+
if allContainers || names.Has(template.Spec.Containers[i].Name) {
329334
template.Spec.Containers[i].VolumeMounts = append(
330335
template.Spec.Containers[i].VolumeMounts,
331336
additionalVolumeMount)
337+
338+
if names.Has(template.Spec.Containers[i].Name) {
339+
names.Delete(template.Spec.Containers[i].Name)
340+
}
332341
}
333342
}
334343

335344
for i := range template.Spec.InitContainers {
336-
if names.Len() ==0 || names.Has(template.Spec.InitContainers[i].Name) {
345+
if allContainers || names.Has(template.Spec.InitContainers[i].Name) {
337346
template.Spec.InitContainers[i].VolumeMounts = append(
338347
template.Spec.InitContainers[i].VolumeMounts,
339348
additionalVolumeMount)
349+
350+
if names.Has(template.Spec.InitContainers[i].Name) {
351+
names.Delete(template.Spec.InitContainers[i].Name)
352+
}
340353
}
341354
}
342355

356+
missingContainers = append(missingContainers, names.UnsortedList()...)
357+
343358
template.Spec.Volumes = append(
344359
template.Spec.Volumes,
345360
additionalVolume)
346361
}
362+
return missingContainers
347363
}

‎internal/controller/postgrescluster/util_test.go‎

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
399399
expectedContainers string
400400
expectedInitContainers string
401401
expectedVolumes string
402+
expectedMissing []string
402403
}{{
403404
tcName: "all",
404405
additionalVolumes: []v1beta1.AdditionalVolume{{
@@ -429,6 +430,7 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
429430
expectedVolumes: `- name: volumes-required
430431
persistentVolumeClaim:
431432
claimName: required`,
433+
expectedMissing: []string{},
432434
}, {
433435
tcName: "multiple additional volumes",
434436
additionalVolumes: []v1beta1.AdditionalVolume{{
@@ -474,6 +476,7 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
474476
- name: volumes-other
475477
persistentVolumeClaim:
476478
claimName: also`,
479+
expectedMissing: []string{},
477480
}, {
478481
tcName: "database and startup containers only",
479482
additionalVolumes: []v1beta1.AdditionalVolume{{
@@ -498,6 +501,32 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
498501
expectedVolumes: `- name: volumes-required
499502
persistentVolumeClaim:
500503
claimName: required`,
504+
expectedMissing: []string{},
505+
}, {
506+
tcName: "container is missing",
507+
additionalVolumes: []v1beta1.AdditionalVolume{{
508+
Containers: []string{"database", "startup", "missing", "container"},
509+
ClaimName: "required",
510+
Name: "required",
511+
}},
512+
expectedContainers: `- name: database
513+
resources: {}
514+
volumeMounts:
515+
- mountPath: /volumes/required
516+
name: volumes-required
517+
- name: other
518+
resources: {}`,
519+
expectedInitContainers: `- name: startup
520+
resources: {}
521+
volumeMounts:
522+
- mountPath: /volumes/required
523+
name: volumes-required
524+
- name: config
525+
resources: {}`,
526+
expectedVolumes: `- name: volumes-required
527+
persistentVolumeClaim:
528+
claimName: required`,
529+
expectedMissing: []string{"missing", "container"},
501530
}, {
502531
tcName: "readonly",
503532
additionalVolumes: []v1beta1.AdditionalVolume{{
@@ -522,14 +551,15 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
522551
persistentVolumeClaim:
523552
claimName: required
524553
readOnly: true`,
554+
expectedMissing: []string{},
525555
}}
526556

527557
for _, tc := range testCases {
528558
t.Run(tc.tcName, func(t *testing.T) {
529559

530560
copyPodTemplate := podTemplate.DeepCopy()
531561

532-
addAdditionalVolumesToSpecifiedContainers(
562+
missingContainers:=addAdditionalVolumesToSpecifiedContainers(
533563
copyPodTemplate,
534564
tc.additionalVolumes,
535565
)
@@ -543,6 +573,9 @@ func TestAddAdditionalVolumesToSpecifiedContainers(t *testing.T) {
543573
assert.Assert(t, cmp.MarshalMatches(
544574
copyPodTemplate.Spec.Volumes,
545575
tc.expectedVolumes))
576+
assert.Assert(t, cmp.DeepEqual(
577+
missingContainers,
578+
tc.expectedMissing))
546579
})
547580
}
548581
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /