@@ -112,7 +112,7 @@ def __init__(
112112 self ,
113113 conn_info : Union [str , Dict [str , Any ]],
114114 filtered_db : Optional [str ] = None ,
115- filtered_roles : Optional [str ] = None ,
115+ filtered_roles : Tuple [str ] = ((),) ,
116116 mangle : bool = False
117117 ):
118118 self .log = logging .getLogger (self .__class__ .__name__ )
@@ -131,10 +131,8 @@ def __init__(
131131 self .filtered_db = filtered_db .split ("," )
132132 else :
133133 self .filtered_db = []
134- if filtered_roles :
135- self .filtered_roles = filtered_roles .split ("," )
136- else :
137- self .filtered_roles = []
134+ self .filtered_roles = filtered_roles
135+
138136 if "application_name" not in self .conn_info :
139137 self .conn_info ["application_name" ] = f"aiven-db-migrate/{ __version__ } "
140138 self ._mangle = mangle
@@ -328,18 +326,19 @@ def pg_lang(self) -> List[Dict[str, Any]]:
328326
329327 @property
330328 def pg_roles (self ) -> Dict [str , PGRole ]:
331- filtered_roles = ["rdstopmgr" ]
332- if self .filtered_roles :
333- filtered_roles .extend (self .filtered_roles )
334- roles_list = "," .join (f"'{ role } '" for role in filtered_roles )
335329
336330 if not self ._pg_roles :
337331 # exclude system roles
338- roles = self .c (
339- f"SELECT quote_ident(rolname) as safe_rolname, * FROM pg_catalog.pg_roles WHERE oid > 16384 AND rolname NOT IN ({ roles_list } )"
340- )
332+ roles = self .c (f"SELECT quote_ident(rolname) as safe_rolname, * FROM pg_catalog.pg_roles WHERE oid > 16384" )
333+
341334 for r in roles :
342335 rolname = r ["rolname" ]
336+
337+ if rolname in self .filtered_roles :
338+ self .log .debug (f'Skipping filtered role: [{ r ["rolname" ]} ]' )
339+ continue
340+
341+ self .log .debug (f'Migrating role: [{ r ["rolname" ]} ]' )
343342 # create semi-random placeholder password for role with login
344343 rolpassword = (
345344 "placeholder_{}" .format ("" .join (random .choices (string .ascii_lowercase , k = 16 )))
@@ -755,7 +754,7 @@ def __init__(
755754 verbose : bool = False ,
756755 mangle : bool = False ,
757756 filtered_db : Optional [str ] = None ,
758- filtered_roles : Optional [str ] = None ,
757+ filtered_roles : Tuple [str ] = ((),) ,
759758 skip_tables : Optional [List [str ]] = None ,
760759 with_tables : Optional [List [str ]] = None ,
761760 replicate_extensions : bool = True ,
@@ -1373,6 +1372,9 @@ def main(args=None, *, prog="pg_migrate"):
13731372 else :
13741373 logging .basicConfig (level = logging .INFO , format = log_format )
13751374
1375+ if not args .filtered_roles :
1376+ args .filtered_roles = ()
1377+
13761378 pg_mig = PGMigrate (
13771379 source_conn_info = args .source ,
13781380 target_conn_info = args .target ,
0 commit comments