Skip to content

Commit 85dec58

Browse files
committed
added monitoring-user to initSystemUsers() & added to update-func check for the need to create monitoring user
1 parent b165e84 commit 85dec58

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

pkg/cluster/cluster.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -973,11 +973,14 @@ func (c *Cluster) Update(oldSpec, newSpec *cpov1.Postgresql) error {
973973
// only when disabled in oldSpec and enabled in newSpec
974974
needPoolerUser := c.needConnectionPoolerUser(&oldSpec.Spec, &newSpec.Spec)
975975

976+
// Check if Monitor-User needs to be created
977+
needMonitoring := newSpec.Spec.Monitoring != nil && oldSpec.Spec.Monitoring == nil
978+
976979
// streams new replication user created who is initialized in initUsers
977980
// only when streams were not specified in oldSpec but in newSpec
978981
needStreamUser := len(oldSpec.Spec.Streams) == 0 && len(newSpec.Spec.Streams) > 0
979982

980-
if !sameUsers || !sameRotatedUsers || needPoolerUser || needStreamUser {
983+
if !sameUsers || !sameRotatedUsers || needPoolerUser || needMonitoring || needStreamUser {
981984
c.logger.Debugf("initialize users")
982985
if err := c.initUsers(); err != nil {
983986
c.logger.Errorf("could not init users - skipping sync of secrets and databases: %v", err)
@@ -1443,6 +1446,22 @@ func (c *Cluster) initSystemUsers() error {
14431446
}
14441447
}
14451448

1449+
// if the monitor object has been created, a monitoring user is required.
1450+
if c.Spec.Monitoring != nil {
1451+
c.logger.Debugf("MONITOR: Create cpo_monitoring user")
1452+
connectionPoolerUser := spec.PgUser{
1453+
Origin: spec.RoleMonitoring,
1454+
Name: constants.MonitoringUserKeyName,
1455+
Namespace: c.Namespace,
1456+
Flags: []string{constants.RoleFlagLogin},
1457+
Password: util.RandomPassword(constants.PasswordLength),
1458+
}
1459+
1460+
if _, exists := c.systemUsers[constants.MonitoringUserKeyName]; !exists {
1461+
c.systemUsers[constants.ConnectionPoolerUserKeyName] = connectionPoolerUser
1462+
}
1463+
}
1464+
14461465
// replication users for event streams are another exception
14471466
// the operator will create one replication user for all streams
14481467
if len(c.Spec.Streams) > 0 {

pkg/spec/types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const (
3333
RoleOriginSystem
3434
RoleOriginBootstrap
3535
RoleOriginConnectionPooler
36+
RoleMonitoring
3637
RoleOriginStream
3738
)
3839

@@ -198,6 +199,8 @@ func (r RoleOrigin) String() string {
198199
return "bootstrapped role"
199200
case RoleOriginConnectionPooler:
200201
return "connection pooler role"
202+
case RoleMonitor:
203+
return "Monitoring role"
201204
default:
202205
panic(fmt.Sprintf("bogus role origin value %d", r))
203206
}

pkg/util/constants/roles.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const (
66
SuperuserKeyName = "superuser"
77
ReplicationUserKeyName = "replication"
88
ConnectionPoolerUserKeyName = "pooler"
9+
MonitoringUserKeyName = "cpo_exporter"
910
EventStreamUserKeyName = "streamer"
1011
RoleFlagSuperuser = "SUPERUSER"
1112
RoleFlagInherit = "INHERIT"

0 commit comments

Comments
 (0)