From cc4d5c1c7733f8c8a46bb89a0372f7c9606fd7ed Mon Sep 17 00:00:00 2001 From: Jan Mussler Date: Tue, 23 Nov 2021 11:28:26 +0100 Subject: [PATCH] Allow whitelisting of teams to do auto upgrade upgrade via operator. --- pkg/cluster/majorversionupgrade.go | 25 ++++++++++++++++++++++++- pkg/util/config/config.go | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/majorversionupgrade.go b/pkg/cluster/majorversionupgrade.go index edb55c882..7308f834e 100644 --- a/pkg/cluster/majorversionupgrade.go +++ b/pkg/cluster/majorversionupgrade.go @@ -44,9 +44,32 @@ func (c *Cluster) GetDesiredMajorVersion() string { return c.Spec.PgVersion } +func isTeamWhitelisted(c *Cluster) bool { + whitelistedTeams := c.OpConfig.MajorVersionUpgradeTeamWhitelist + owningTeam := c.Spec.teamID + + if len(whitelistedTeams) == 0 { + return false + } + + for _, t := range whitelistedTeams { + if t == owningTeam { + return true + } + } + return false +} + +/* + Execute upgrade when mode is set to manual or full or when the owning team is whitelisted for upgrade. + + Manual upgrade means, it us triggered by the user via manifest version change + Full upgrade means, operator also determins the minimal version used accross all clusters and upgrades violators. + +*/ func (c *Cluster) majorVersionUpgrade() error { - if c.OpConfig.MajorVersionUpgradeMode == "off" { + if c.OpConfig.MajorVersionUpgradeMode == "off" && !isTeamWhitelisted(c) { return nil } diff --git a/pkg/util/config/config.go b/pkg/util/config/config.go index 78e0a6c49..2296f9ca0 100644 --- a/pkg/util/config/config.go +++ b/pkg/util/config/config.go @@ -214,6 +214,7 @@ type Config struct { MajorVersionUpgradeMode string `name:"major_version_upgrade_mode" default:"off"` MinimalMajorVersion string `name:"minimal_major_version" default:"9.6"` TargetMajorVersion string `name:"target_major_version" default:"14"` + MajorVersionUpgradeTeamWhitelist []string `name:"major_version_upgrade_team_whitelist" default:""` } // MustMarshal marshals the config or panics