Skip to content

Commit b984589

Browse files
committed
Ability to set pod_environment_secret and pod_environment_configmap on cluster resource
1 parent 8b404fd commit b984589

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

pkg/cluster/k8sres.go

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,23 @@ import (
99
"strings"
1010

1111
"github.com/sirupsen/logrus"
12-
13-
appsv1 "k8s.io/api/apps/v1"
14-
v1 "k8s.io/api/core/v1"
15-
policybeta1 "k8s.io/api/policy/v1beta1"
16-
"k8s.io/apimachinery/pkg/api/resource"
17-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
18-
"k8s.io/apimachinery/pkg/types"
19-
"k8s.io/apimachinery/pkg/util/intstr"
20-
12+
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
2113
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
2214
"github.com/zalando/postgres-operator/pkg/spec"
2315
"github.com/zalando/postgres-operator/pkg/util"
2416
"github.com/zalando/postgres-operator/pkg/util/config"
2517
"github.com/zalando/postgres-operator/pkg/util/constants"
2618
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
19+
appsv1 "k8s.io/api/apps/v1"
2720
batchv1 "k8s.io/api/batch/v1"
2821
batchv1beta1 "k8s.io/api/batch/v1beta1"
22+
v1 "k8s.io/api/core/v1"
23+
policybeta1 "k8s.io/api/policy/v1beta1"
24+
"k8s.io/apimachinery/pkg/api/resource"
25+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2926
"k8s.io/apimachinery/pkg/labels"
27+
"k8s.io/apimachinery/pkg/types"
28+
"k8s.io/apimachinery/pkg/util/intstr"
3029
)
3130

3231
const (
@@ -859,28 +858,29 @@ func deduplicateEnvVars(input []v1.EnvVar, containerName string, logger *logrus.
859858
return result
860859
}
861860

862-
// Return list of variables the pod recieved from the configured ConfigMap
861+
// Return list of variables the pod received from the configured ConfigMap
863862
func (c *Cluster) getPodEnvironmentConfigMapVariables() ([]v1.EnvVar, error) {
864863
configMapPodEnvVarsList := make([]v1.EnvVar, 0)
865864

866865
if c.OpConfig.PodEnvironmentConfigMap.Name == "" {
867866
return configMapPodEnvVarsList, nil
868867
}
869868

869+
configMapName := c.podEnvironmentObjectNameTemplate(c.OpConfig.PodEnvironmentConfigMap.Name)
870870
cm, err := c.KubeClient.ConfigMaps(c.OpConfig.PodEnvironmentConfigMap.Namespace).Get(
871871
context.TODO(),
872-
c.OpConfig.PodEnvironmentConfigMap.Name,
872+
configMapName,
873873
metav1.GetOptions{})
874874
if err != nil {
875875
// if not found, try again using the cluster's namespace if it's different (old behavior)
876876
if k8sutil.ResourceNotFound(err) && c.Namespace != c.OpConfig.PodEnvironmentConfigMap.Namespace {
877877
cm, err = c.KubeClient.ConfigMaps(c.Namespace).Get(
878878
context.TODO(),
879-
c.OpConfig.PodEnvironmentConfigMap.Name,
879+
configMapName,
880880
metav1.GetOptions{})
881881
}
882882
if err != nil {
883-
return nil, fmt.Errorf("could not read PodEnvironmentConfigMap: %v", err)
883+
return nil, fmt.Errorf("could not read PodEnvironmentConfigMap %s: %w", configMapName, err)
884884
}
885885
}
886886
for k, v := range cm.Data {
@@ -899,7 +899,7 @@ func (c *Cluster) getPodEnvironmentSecretVariables() ([]v1.EnvVar, error) {
899899

900900
secret, err := c.KubeClient.Secrets(c.Namespace).Get(
901901
context.TODO(),
902-
c.OpConfig.PodEnvironmentSecret,
902+
c.podEnvironmentObjectNameTemplate(c.OpConfig.PodEnvironmentSecret),
903903
metav1.GetOptions{})
904904
if err != nil {
905905
return nil, fmt.Errorf("could not read Secret PodEnvironmentSecretName: %v", err)
@@ -920,6 +920,11 @@ func (c *Cluster) getPodEnvironmentSecretVariables() ([]v1.EnvVar, error) {
920920
return secretPodEnvVarsList, nil
921921
}
922922

923+
func (c *Cluster) podEnvironmentObjectNameTemplate(template string) string {
924+
objectNameTemplate := config.StringTemplate(template)
925+
return objectNameTemplate.Format("cluster", c.clusterName().Name, "tprkind", acidv1.PostgresCRDResourceKind, "tprgroup", acidzalando.GroupName)
926+
}
927+
923928
func getSidecarContainer(sidecar acidv1.Sidecar, index int, resources *v1.ResourceRequirements) *v1.Container {
924929
name := sidecar.Name
925930
if name == "" {

pkg/cluster/k8sres_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,9 @@ func TestSecretVolume(t *testing.T) {
640640
}
641641

642642
const (
643-
testPodEnvironmentConfigMapName = "pod_env_cm"
644-
testPodEnvironmentSecretName = "pod_env_sc"
643+
testPodEnvironmentConfigMapName = "pod_env_cm"
644+
testPodEnvironmentSecretName = "pod_env_sc"
645+
testPodEnvironmentObjectNotExists = "idonotexist"
645646
)
646647

647648
type mockSecret struct {
@@ -723,11 +724,11 @@ func TestPodEnvironmentConfigMapVariables(t *testing.T) {
723724
opConfig: config.Config{
724725
Resources: config.Resources{
725726
PodEnvironmentConfigMap: spec.NamespacedName{
726-
Name: "idonotexist",
727+
Name: testPodEnvironmentObjectNotExists,
727728
},
728729
},
729730
},
730-
err: fmt.Errorf("could not read PodEnvironmentConfigMap: NotFound"),
731+
err: fmt.Errorf("could not read PodEnvironmentConfigMap %s: NotFound", testPodEnvironmentObjectNotExists),
731732
},
732733
{
733734
subTest: "simple PodEnvironmentConfigMap",
@@ -789,7 +790,7 @@ func TestPodEnvironmentSecretVariables(t *testing.T) {
789790
subTest: "Secret referenced by PodEnvironmentSecret does not exist",
790791
opConfig: config.Config{
791792
Resources: config.Resources{
792-
PodEnvironmentSecret: "idonotexist",
793+
PodEnvironmentSecret: testPodEnvironmentObjectNotExists,
793794
},
794795
},
795796
err: fmt.Errorf("could not read Secret PodEnvironmentSecretName: Secret PodEnvironmentSecret not found"),

0 commit comments

Comments
 (0)