@@ -2158,9 +2158,21 @@ def client_relations(self) -> list[Relation]:
2158
2158
@property
2159
2159
def relations_user_databases_map (self ) -> dict :
2160
2160
"""Returns a user->databases map for all relations."""
2161
- if not self .is_cluster_initialised or not self ._patroni .member_started :
2162
- return {USER : "all" , REPLICATION_USER : "all" , REWIND_USER : "all" }
2163
2161
user_database_map = {}
2162
+ # Copy relations users directly instead of waiting for them to be created
2163
+ for relation in self .model .relations [self .postgresql_client_relation .relation_name ]:
2164
+ user = f"relation-{ relation .id } "
2165
+ if database := self .postgresql_client_relation .database_provides .fetch_relation_field (
2166
+ relation .id , "database"
2167
+ ):
2168
+ user_database_map [user ] = database
2169
+ if not self .is_cluster_initialised or not self ._patroni .member_started :
2170
+ user_database_map .update ({
2171
+ USER : "all" ,
2172
+ REPLICATION_USER : "all" ,
2173
+ REWIND_USER : "all" ,
2174
+ })
2175
+ return user_database_map
2164
2176
try :
2165
2177
for user in sorted (
2166
2178
self .postgresql .list_users_from_relation (current_host = self .is_connectivity_enabled )
@@ -2194,17 +2206,6 @@ def relations_user_databases_map(self) -> dict:
2194
2206
REPLICATION_USER : "all" ,
2195
2207
REWIND_USER : "all" ,
2196
2208
})
2197
-
2198
- # Copy relations users directly instead of waiting for them to be created
2199
- for relation in self .model .relations [self .postgresql_client_relation .relation_name ]:
2200
- user = f"relation-{ relation .id } "
2201
- if user not in user_database_map and (
2202
- database
2203
- := self .postgresql_client_relation .database_provides .fetch_relation_field (
2204
- relation .id , "database"
2205
- )
2206
- ):
2207
- user_database_map [user ] = database
2208
2209
return user_database_map
2209
2210
except PostgreSQLListUsersError :
2210
2211
logger .debug ("relations_user_databases_map: Unable to get users" )
0 commit comments