mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-18 10:29:50 +02:00
rename re-addedwq roles
This commit is contained in:
@@ -586,6 +586,10 @@ func (c *Cluster) syncRoles() (err error) {
|
|||||||
|
|
||||||
for _, u := range c.pgUsers {
|
for _, u := range c.pgUsers {
|
||||||
userNames = append(userNames, u.Name)
|
userNames = append(userNames, u.Name)
|
||||||
|
// add team user name with rename suffix in case we need to rename it back
|
||||||
|
if u.Origin == spec.RoleOriginTeamsAPI {
|
||||||
|
userNames = append(userNames, u.Name+constants.RoleRenameSuffix)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add removed additional team members from cache
|
// add removed additional team members from cache
|
||||||
|
|||||||
+20
-6
@@ -40,7 +40,8 @@ func (strategy DefaultUserSyncStrategy) ProduceSyncRequests(dbUsers spec.PgUserM
|
|||||||
var reqs []spec.PgSyncUserRequest
|
var reqs []spec.PgSyncUserRequest
|
||||||
for name, newUser := range newUsers {
|
for name, newUser := range newUsers {
|
||||||
dbUser, exists := dbUsers[name]
|
dbUser, exists := dbUsers[name]
|
||||||
if !exists {
|
_, existsRenamed := dbUsers[name+constants.RoleRenameSuffix]
|
||||||
|
if !exists && !existsRenamed {
|
||||||
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncUserAdd, User: newUser})
|
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncUserAdd, User: newUser})
|
||||||
if len(newUser.Parameters) > 0 {
|
if len(newUser.Parameters) > 0 {
|
||||||
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncAlterSet, User: newUser})
|
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncAlterSet, User: newUser})
|
||||||
@@ -74,10 +75,7 @@ func (strategy DefaultUserSyncStrategy) ProduceSyncRequests(dbUsers spec.PgUserM
|
|||||||
// No existing roles are deleted or stripped of role memebership/flags
|
// No existing roles are deleted or stripped of role memebership/flags
|
||||||
// but they will be renamed acting as a simple blocker
|
// but they will be renamed acting as a simple blocker
|
||||||
for name, dbUser := range dbUsers {
|
for name, dbUser := range dbUsers {
|
||||||
_, exists := newUsers[name]
|
if _, exists := newUsers[name]; !exists {
|
||||||
nameSuffixDiff := len(name) - len(constants.RoleRenameSuffix)
|
|
||||||
|
|
||||||
if !exists && (nameSuffixDiff <= 0 || (nameSuffixDiff > 0 && name[nameSuffixDiff:] != constants.RoleRenameSuffix)) {
|
|
||||||
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncUserRename, User: dbUser})
|
reqs = append(reqs, spec.PgSyncUserRequest{Kind: spec.PGSyncUserRename, User: dbUser})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,7 +139,23 @@ func (strategy DefaultUserSyncStrategy) alterPgUserSet(user spec.PgUser, db *sql
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (strategy DefaultUserSyncStrategy) alterPgUserRename(user spec.PgUser, db *sql.DB) error {
|
func (strategy DefaultUserSyncStrategy) alterPgUserRename(user spec.PgUser, db *sql.DB) error {
|
||||||
query := fmt.Sprintf(alterUserRenameSQL, user.Name, user.Name, constants.RoleRenameSuffix)
|
var query string
|
||||||
|
|
||||||
|
renamedBack := false
|
||||||
|
|
||||||
|
nameSuffixDiff := len(user.Name) - len(constants.RoleRenameSuffix)
|
||||||
|
|
||||||
|
if nameSuffixDiff > 0 {
|
||||||
|
if user.Name[nameSuffixDiff:] == constants.RoleRenameSuffix {
|
||||||
|
query = fmt.Sprintf(alterUserRenameSQL, user.Name, user.Name[:nameSuffixDiff], "")
|
||||||
|
renamedBack = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !renamedBack {
|
||||||
|
query = fmt.Sprintf(alterUserRenameSQL, user.Name, user.Name, constants.RoleRenameSuffix)
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := db.Exec(query); err != nil {
|
if _, err := db.Exec(query); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user