allow specifiying more extra owner roles

This commit is contained in:
Felix Kunde
2022-03-04 11:01:07 +01:00
parent 89801ef30a
commit 78eaae2efc
12 changed files with 86 additions and 62 deletions
+22 -29
View File
@@ -228,7 +228,7 @@ func (c *Cluster) initUsers() error {
return fmt.Errorf("could not init human users: %v", err)
}
c.initCronAdmin()
c.initAdditionalOwnerRoles()
return nil
}
@@ -1299,36 +1299,29 @@ func (c *Cluster) initRobotUsers() error {
return nil
}
func (c *Cluster) initCronAdmin() {
cronAdminName := c.OpConfig.CronAdminUsername
if cronAdminName == "" {
return
}
memberOf := make([]string, 0)
for username, pgUser := range c.pgUsers {
if pgUser.IsDbOwner {
memberOf = append(memberOf, username)
func (c *Cluster) initAdditionalOwnerRoles() {
for _, additionalOwner := range c.OpConfig.AddtionalOwnerRoles {
// fetch all database owners the additional should become a member of
memberOf := make([]string, 0)
for username, pgUser := range c.pgUsers {
if pgUser.IsDbOwner {
memberOf = append(memberOf, username)
}
}
}
if len(memberOf) > 1 {
namespace := c.Namespace
adminRole := ""
if c.OpConfig.EnableAdminRoleForUsers && cronAdminName != c.OpConfig.TeamAdminRole {
adminRole = c.OpConfig.TeamAdminRole
}
cronAdmin := spec.PgUser{
Origin: spec.RoleOriginSpilo,
MemberOf: memberOf,
Name: cronAdminName,
Namespace: namespace,
Flags: []string{constants.RoleFlagNoLogin},
AdminRole: adminRole,
}
if currentRole, present := c.pgUsers[cronAdminName]; present {
c.pgUsers[cronAdminName] = c.resolveNameConflict(&currentRole, &cronAdmin)
} else {
c.pgUsers[cronAdminName] = cronAdmin
if len(memberOf) > 1 {
namespace := c.Namespace
additionalOwnerPgUser := spec.PgUser{
Origin: spec.RoleOriginSpilo,
MemberOf: memberOf,
Name: additionalOwner,
Namespace: namespace,
}
if currentRole, present := c.pgUsers[additionalOwner]; present {
c.pgUsers[additionalOwner] = c.resolveNameConflict(&currentRole, &additionalOwnerPgUser)
} else {
c.pgUsers[additionalOwner] = additionalOwnerPgUser
}
}
}
}