@@ -65,11 +65,11 @@ type kubeResources struct {
6565 PatroniConfigMaps map [string ]* v1.ConfigMap
6666 Secrets map [types.UID ]* v1.Secret
6767 Statefulset * appsv1.StatefulSet
68+ VolumeClaims map [types.UID ]* v1.PersistentVolumeClaim
6869 PodDisruptionBudget * policyv1.PodDisruptionBudget
6970 LogicalBackupJob * batchv1.CronJob
7071 Streams map [string ]* zalandov1.FabricEventStream
7172 //Pods are treated separately
72- //PVCs are treated separately
7373}
7474
7575// Cluster describes postgresql cluster
@@ -140,6 +140,7 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres
140140 Endpoints : make (map [PostgresRole ]* v1.Endpoints ),
141141 PatroniEndpoints : make (map [string ]* v1.Endpoints ),
142142 PatroniConfigMaps : make (map [string ]* v1.ConfigMap ),
143+ VolumeClaims : make (map [types.UID ]* v1.PersistentVolumeClaim ),
143144 Streams : make (map [string ]* zalandov1.FabricEventStream )},
144145 userSyncStrategy : users.DefaultUserSyncStrategy {
145146 PasswordEncryption : passwordEncryption ,
@@ -363,6 +364,11 @@ func (c *Cluster) Create() (err error) {
363364 c .logger .Infof ("pods are ready" )
364365 c .eventRecorder .Event (c .GetReference (), v1 .EventTypeNormal , "StatefulSet" , "Pods are ready" )
365366
367+ // sync volume may already transition volumes to gp3, if iops/throughput or type is specified
368+ if err = c .syncVolumes (); err != nil {
369+ return err
370+ }
371+
366372 // sync resources created by Patroni
367373 if err = c .syncPatroniResources (); err != nil {
368374 c .logger .Warnf ("Patroni resources not yet synced: %v" , err )
@@ -1390,18 +1396,18 @@ func (c *Cluster) initPreparedDatabaseRoles() error {
13901396 preparedSchemas = map [string ]acidv1.PreparedSchema {"data" : {DefaultRoles : util .True ()}}
13911397 }
13921398
1393- var searchPath strings.Builder
1394- searchPath .WriteString (constants .DefaultSearchPath )
1399+ searchPathArr := []string {constants .DefaultSearchPath }
13951400 for preparedSchemaName := range preparedSchemas {
1396- searchPath . WriteString ( ", " + preparedSchemaName )
1401+ searchPathArr = append ( searchPathArr , fmt . Sprintf ( "%q" , preparedSchemaName ) )
13971402 }
1403+ searchPath := strings .Join (searchPathArr , ", " )
13981404
13991405 // default roles per database
1400- if err := c .initDefaultRoles (defaultRoles , "admin" , preparedDbName , searchPath . String () , preparedDB .SecretNamespace ); err != nil {
1406+ if err := c .initDefaultRoles (defaultRoles , "admin" , preparedDbName , searchPath , preparedDB .SecretNamespace ); err != nil {
14011407 return fmt .Errorf ("could not initialize default roles for database %s: %v" , preparedDbName , err )
14021408 }
14031409 if preparedDB .DefaultUsers {
1404- if err := c .initDefaultRoles (defaultUsers , "admin" , preparedDbName , searchPath . String () , preparedDB .SecretNamespace ); err != nil {
1410+ if err := c .initDefaultRoles (defaultUsers , "admin" , preparedDbName , searchPath , preparedDB .SecretNamespace ); err != nil {
14051411 return fmt .Errorf ("could not initialize default roles for database %s: %v" , preparedDbName , err )
14061412 }
14071413 }
@@ -1412,14 +1418,16 @@ func (c *Cluster) initPreparedDatabaseRoles() error {
14121418 if err := c .initDefaultRoles (defaultRoles ,
14131419 preparedDbName + constants .OwnerRoleNameSuffix ,
14141420 preparedDbName + "_" + preparedSchemaName ,
1415- constants .DefaultSearchPath + ", " + preparedSchemaName , preparedDB .SecretNamespace ); err != nil {
1421+ fmt .Sprintf ("%s, %q" , constants .DefaultSearchPath , preparedSchemaName ),
1422+ preparedDB .SecretNamespace ); err != nil {
14161423 return fmt .Errorf ("could not initialize default roles for database schema %s: %v" , preparedSchemaName , err )
14171424 }
14181425 if preparedSchema .DefaultUsers {
14191426 if err := c .initDefaultRoles (defaultUsers ,
14201427 preparedDbName + constants .OwnerRoleNameSuffix ,
14211428 preparedDbName + "_" + preparedSchemaName ,
1422- constants .DefaultSearchPath + ", " + preparedSchemaName , preparedDB .SecretNamespace ); err != nil {
1429+ fmt .Sprintf ("%s, %q" , constants .DefaultSearchPath , preparedSchemaName ),
1430+ preparedDB .SecretNamespace ); err != nil {
14231431 return fmt .Errorf ("could not initialize default users for database schema %s: %v" , preparedSchemaName , err )
14241432 }
14251433 }
0 commit comments