Allow whitelisting of teams to do auto upgrade upgrade via operator.

This commit is contained in:
Jan Mussler 2021-11-23 11:28:26 +01:00
parent a6d4f23f90
commit cc4d5c1c77
2 changed files with 25 additions and 1 deletions

View File

@ -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
}

View File

@ -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