diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 16d399865..124b22da8 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -49,7 +49,7 @@ var ( type Config struct { OpConfig config.Config RestConfig *rest.Config - PgTeamMap pgteams.PostgresTeamMap + PgTeamMap *pgteams.PostgresTeamMap InfrastructureRoles map[string]spec.PgUser // inherited from the controller PodServiceAccount *v1.ServiceAccount PodServiceAccountRoleBinding *rbacv1.RoleBinding diff --git a/pkg/cluster/cluster_test.go b/pkg/cluster/cluster_test.go index 1f6510e65..8ef69ddf3 100644 --- a/pkg/cluster/cluster_test.go +++ b/pkg/cluster/cluster_test.go @@ -8,6 +8,7 @@ import ( "github.com/sirupsen/logrus" acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" "github.com/zalando/postgres-operator/pkg/spec" + pgteams "github.com/zalando/postgres-operator/pkg/teams" "github.com/zalando/postgres-operator/pkg/util/config" "github.com/zalando/postgres-operator/pkg/util/constants" "github.com/zalando/postgres-operator/pkg/util/k8sutil" @@ -37,6 +38,7 @@ var cl = New( DownscalerAnnotations: []string{"downscaler/*"}, }, }, + PgTeamMap: new(pgteams.PostgresTeamMap), }, k8sutil.NewMockKubernetesClient(), acidv1.Postgresql{ObjectMeta: metav1.ObjectMeta{Name: "acid-test", Namespace: "test", Annotations: map[string]string{"downscaler/downtime_replicas": "0"}}}, diff --git a/pkg/cluster/util.go b/pkg/cluster/util.go index 393a490bd..f2c071d89 100644 --- a/pkg/cluster/util.go +++ b/pkg/cluster/util.go @@ -240,7 +240,14 @@ func (c *Cluster) getTeamMembers(teamID string) ([]string, error) { c.logger.Debugf("fetching possible additional team members for team %q", teamID) members := []string{} - additionalMembers := c.PgTeamMap[teamID].AdditionalMembers + additionalMembers := []string{} + + for team, membership := range *c.PgTeamMap { + if team == teamID { + additionalMembers = membership.AdditionalMembers + } + } + for _, member := range additionalMembers { members = append(members, member) } diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 0c29275e6..31c60f23a 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -37,7 +37,7 @@ import ( type Controller struct { config spec.ControllerConfig opConfig *config.Config - pgTeamMap teams.PostgresTeamMap + pgTeamMap *teams.PostgresTeamMap logger *logrus.Entry KubeClient k8sutil.KubernetesClient @@ -332,7 +332,7 @@ func (c *Controller) initController() { if c.opConfig.EnablePostgresTeamCRD { c.loadPostgresTeams() } else { - c.pgTeamMap = teams.PostgresTeamMap{} + c.pgTeamMap = new(teams.PostgresTeamMap) } if c.opConfig.DebugLogging { diff --git a/pkg/controller/util.go b/pkg/controller/util.go index 815bc7b74..9e7ac5a46 100644 --- a/pkg/controller/util.go +++ b/pkg/controller/util.go @@ -396,7 +396,7 @@ func (c *Controller) getInfrastructureRole( func (c *Controller) loadPostgresTeams() { // reset team map - c.pgTeamMap = teams.PostgresTeamMap{} + c.pgTeamMap = new(teams.PostgresTeamMap) pgTeams, err := c.KubeClient.PostgresTeamsGetter.PostgresTeams(c.opConfig.WatchedNamespace).List(context.TODO(), metav1.ListOptions{}) if err != nil {