Allow whitelisting of teams to do auto upgrade upgrade via operator.
This commit is contained in:
parent
a6d4f23f90
commit
cc4d5c1c77
|
|
@ -44,9 +44,32 @@ func (c *Cluster) GetDesiredMajorVersion() string {
|
||||||
return c.Spec.PgVersion
|
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 {
|
func (c *Cluster) majorVersionUpgrade() error {
|
||||||
|
|
||||||
if c.OpConfig.MajorVersionUpgradeMode == "off" {
|
if c.OpConfig.MajorVersionUpgradeMode == "off" && !isTeamWhitelisted(c) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,7 @@ type Config struct {
|
||||||
MajorVersionUpgradeMode string `name:"major_version_upgrade_mode" default:"off"`
|
MajorVersionUpgradeMode string `name:"major_version_upgrade_mode" default:"off"`
|
||||||
MinimalMajorVersion string `name:"minimal_major_version" default:"9.6"`
|
MinimalMajorVersion string `name:"minimal_major_version" default:"9.6"`
|
||||||
TargetMajorVersion string `name:"target_major_version" default:"14"`
|
TargetMajorVersion string `name:"target_major_version" default:"14"`
|
||||||
|
MajorVersionUpgradeTeamWhitelist []string `name:"major_version_upgrade_team_whitelist" default:""`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MustMarshal marshals the config or panics
|
// MustMarshal marshals the config or panics
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue