diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 0354f8747..3157132b2 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -1163,12 +1163,14 @@ func (c *Cluster) initHumanUsers() error { } } - additionalTeams := c.Config.PgTeamMap.GetAdditionalTeams(c.Spec.TeamID, true) - for _, additionalTeam := range additionalTeams { - if !(util.SliceContains(superuserTeams, additionalTeam)) { - err := c.initTeamMembers(additionalTeam, false) - if err != nil { - return fmt.Errorf("Cannot initialize members for additional team %q for cluster owned by %q: %v", additionalTeam, c.Spec.TeamID, err) + if c.Config.PgTeamMap != nil { + additionalTeams := c.Config.PgTeamMap.GetAdditionalTeams(c.Spec.TeamID, true) + for _, additionalTeam := range additionalTeams { + if !(util.SliceContains(superuserTeams, additionalTeam)) { + err := c.initTeamMembers(additionalTeam, false) + if err != nil { + return fmt.Errorf("Cannot initialize members for additional team %q for cluster owned by %q: %v", additionalTeam, c.Spec.TeamID, err) + } } } } diff --git a/pkg/cluster/cluster_test.go b/pkg/cluster/cluster_test.go index 758e614dd..1f6510e65 100644 --- a/pkg/cluster/cluster_test.go +++ b/pkg/cluster/cluster_test.go @@ -8,7 +8,6 @@ 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" @@ -24,7 +23,6 @@ const ( var logger = logrus.New().WithField("test", "cluster") var eventRecorder = record.NewFakeRecorder(1) -var teamMap = make(pgteams.PostgresTeamMap, 0) var cl = New( Config{ @@ -39,7 +37,6 @@ var cl = New( DownscalerAnnotations: []string{"downscaler/*"}, }, }, - PgTeamMap: &teamMap, }, 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 f3cf17638..e32b32e92 100644 --- a/pkg/cluster/util.go +++ b/pkg/cluster/util.go @@ -242,9 +242,11 @@ func (c *Cluster) getTeamMembers(teamID string) ([]string, error) { members := []string{} additionalMembers := []string{} - for team, membership := range *c.Config.PgTeamMap { - if team == teamID { - additionalMembers = membership.AdditionalMembers + if c.Config.PgTeamMap != nil { + for team, membership := range *c.Config.PgTeamMap { + if team == teamID { + additionalMembers = membership.AdditionalMembers + } } } diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 03bc2911c..0c29275e6 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -332,7 +332,7 @@ func (c *Controller) initController() { if c.opConfig.EnablePostgresTeamCRD { c.loadPostgresTeams() } else { - c.pgTeamMap.Reset() + c.pgTeamMap = teams.PostgresTeamMap{} } if c.opConfig.DebugLogging { diff --git a/pkg/teams/postgres_team.go b/pkg/teams/postgres_team.go index 21d3f7656..3ebbc55aa 100644 --- a/pkg/teams/postgres_team.go +++ b/pkg/teams/postgres_team.go @@ -6,11 +6,11 @@ import ( ) // PostgresTeamMap is the operator's internal representation of all PostgresTeam CRDs -type PostgresTeamMap map[string]*PostgresTeamMembership +type PostgresTeamMap map[string]*postgresTeamMembership var emptyTeamMap = make(PostgresTeamMap, 0) -type PostgresTeamMembership struct { +type postgresTeamMembership struct { AdditionalSuperuserTeams []string AdditionalTeams []string AdditionalMembers []string @@ -115,15 +115,10 @@ func (ptm *PostgresTeamMap) Load(pgTeams *acidv1.PostgresTeamList) { fetchTeams(&teamIDs, teamMemberSet) for teamID := range teamIDs { - (*ptm)[teamID] = &PostgresTeamMembership{ + (*ptm)[teamID] = &postgresTeamMembership{ AdditionalSuperuserTeams: util.CoalesceStrArr(superuserTeamSet.toMap()[teamID], []string{}), AdditionalTeams: util.CoalesceStrArr(teamSet.toMap()[teamID], []string{}), AdditionalMembers: util.CoalesceStrArr(teamMemberSet.toMap()[teamID], []string{}), } } } - -// Reset a PostgresTeamMap -func (ptm *PostgresTeamMap) Reset() { - *ptm = emptyTeamMap -} diff --git a/pkg/teams/postgres_team_test.go b/pkg/teams/postgres_team_test.go index 9f7340744..f138ec124 100644 --- a/pkg/teams/postgres_team_test.go +++ b/pkg/teams/postgres_team_test.go @@ -3,7 +3,6 @@ package teams import ( "testing" - "github.com/stretchr/testify/assert" acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" "github.com/zalando/postgres-operator/pkg/util" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -109,14 +108,6 @@ func TestLoadingPostgresTeamCRD(t *testing.T) { } } -// TestLoadingPostgresTeamCRD PostgresTeamMap is the operator's internal representation of all PostgresTeam CRDs -func TestResetPostgresTeamCRD(t *testing.T) { - teamMap := &pgTeamMap - teamMap.Reset() - - assert.Equal(t, teamMap, &PostgresTeamMap{}) -} - // TestGetAdditionalTeams if returns teams with and without transitive dependencies func TestGetAdditionalTeams(t *testing.T) { tests := []struct {