Skip to content

Commit 0f32722

Browse files
committed
simplify logic to specifying job spec
1 parent 10698a9 commit 0f32722

File tree

1 file changed

+40
-67
lines changed

1 file changed

+40
-67
lines changed

internal/controller/postgrescluster/pgbackrest.go

Lines changed: 40 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,88 +1367,61 @@ func (r *Reconciler) generateRestoreJobIntent(cluster *v1beta1.PostgresCluster,
13671367
},
13681368
}
13691369

1370-
// Add init containers from RepoHost.InitContainers if provided
1371-
if cluster.Spec.Backups.PGBackRest.RepoHost != nil &&
1372-
cluster.Spec.Backups.PGBackRest.RepoHost.InitContainers != nil {
1373-
1374-
// Get the init containers from RepoHost
1375-
initContainers := cluster.Spec.Backups.PGBackRest.RepoHost.InitContainers
1370+
repoHost := cluster.Spec.Backups.PGBackRest.RepoHost
13761371

1377-
// If EnvFromSecret is specified, add the reference to each init container
1378-
if cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret != nil {
1379-
secretName := *cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret
1380-
1381-
// Add the envFrom reference to each init container
1382-
for i := range initContainers {
1383-
initContainers[i].EnvFrom = append(
1384-
initContainers[i].EnvFrom,
1385-
corev1.EnvFromSource{
1386-
SecretRef: &corev1.SecretEnvSource{
1387-
LocalObjectReference: corev1.LocalObjectReference{
1388-
Name: secretName,
1389-
},
1390-
},
1391-
})
1392-
}
1372+
if repoHost != nil && repoHost.EnvFromSecret != nil {
1373+
envFrom := corev1.EnvFromSource{
1374+
SecretRef: &corev1.SecretEnvSource{
1375+
LocalObjectReference: corev1.LocalObjectReference{
1376+
Name: *repoHost.EnvFromSecret,
1377+
},
1378+
},
13931379
}
13941380

1395-
// Add the init containers to the job's pod spec
1396-
job.Spec.Template.Spec.InitContainers = initContainers
1381+
job.Spec.Template.Spec.Containers[0].EnvFrom = append(job.Spec.Template.Spec.Containers[0].EnvFrom, envFrom)
13971382
}
13981383

1399-
// Add environment variables from the pgBackRest.RepoHost.EnvFromSecret if provided
1400-
// This allows for environment variables to be set on the restore job from a Secret
1401-
if cluster.Spec.Backups.PGBackRest.RepoHost != nil &&
1402-
cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret != nil {
1403-
1404-
secretName := *cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret
1384+
// Add init containers from RepoHost.InitContainers if provided
1385+
if repoHost != nil && repoHost.EnvFromSecret != nil && repoHost.InitContainers != nil {
1386+
initContainers := make([]corev1.Container, 0, len(repoHost.InitContainers))
14051387

1406-
// Find the pgbackrest-restore container and add the envFrom reference
1407-
for i := range job.Spec.Template.Spec.Containers {
1408-
if job.Spec.Template.Spec.Containers[i].Name == naming.PGBackRestRestoreContainerName {
1409-
job.Spec.Template.Spec.Containers[i].EnvFrom = append(
1410-
job.Spec.Template.Spec.Containers[i].EnvFrom,
1411-
corev1.EnvFromSource{
1412-
SecretRef: &corev1.SecretEnvSource{
1413-
LocalObjectReference: corev1.LocalObjectReference{
1414-
Name: secretName,
1415-
},
1416-
},
1417-
})
1418-
break
1388+
// If EnvFromSecret is specified, add the reference to each init container
1389+
for _, ic := range repoHost.InitContainers {
1390+
envFrom := corev1.EnvFromSource{
1391+
SecretRef: &corev1.SecretEnvSource{
1392+
LocalObjectReference: corev1.LocalObjectReference{
1393+
Name: *repoHost.EnvFromSecret,
1394+
},
1395+
},
14191396
}
1397+
ic.EnvFrom = append(ic.EnvFrom, envFrom)
1398+
1399+
initContainers = append(initContainers, ic)
14201400
}
1401+
1402+
job.Spec.Template.Spec.InitContainers = append(job.Spec.Template.Spec.InitContainers, initContainers...)
14211403
}
14221404

14231405
// Add sidecars from RepoHost.Containers to the restore job
1424-
if cluster.Spec.Backups.PGBackRest.RepoHost != nil &&
1425-
cluster.Spec.Backups.PGBackRest.RepoHost.Containers != nil {
1426-
1427-
// Get the sidecars from RepoHost
1428-
sidecars := cluster.Spec.Backups.PGBackRest.RepoHost.Containers
1429-
1430-
// If EnvFromSecret is specified, add the reference to each sidecar container
1431-
if cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret != nil {
1432-
secretName := *cluster.Spec.Backups.PGBackRest.RepoHost.EnvFromSecret
1433-
1434-
// Add the envFrom reference to each sidecar container
1435-
for i := range sidecars {
1436-
sidecars[i].EnvFrom = append(
1437-
sidecars[i].EnvFrom,
1438-
corev1.EnvFromSource{
1439-
SecretRef: &corev1.SecretEnvSource{
1440-
LocalObjectReference: corev1.LocalObjectReference{
1441-
Name: secretName,
1442-
},
1443-
},
1444-
})
1406+
if repoHost != nil && repoHost.EnvFromSecret != nil && repoHost.Containers != nil {
1407+
containers := make([]corev1.Container, 0, len(repoHost.Containers))
1408+
1409+
// Add the envFrom reference to each sidecar container
1410+
for _, c := range repoHost.Containers {
1411+
envFrom := corev1.EnvFromSource{
1412+
SecretRef: &corev1.SecretEnvSource{
1413+
LocalObjectReference: corev1.LocalObjectReference{
1414+
Name: *repoHost.EnvFromSecret,
1415+
},
1416+
},
14451417
}
1418+
c.EnvFrom = append(c.EnvFrom, envFrom)
1419+
1420+
containers = append(containers, c)
14461421
}
14471422

14481423
// Add the sidecars to the job's containers
1449-
job.Spec.Template.Spec.Containers = append(
1450-
job.Spec.Template.Spec.Containers,
1451-
sidecars...)
1424+
job.Spec.Template.Spec.Containers = append(job.Spec.Template.Spec.Containers, containers...)
14521425
}
14531426

14541427
// Set the image pull secrets, if any exist.

0 commit comments

Comments
 (0)