1111 SubjectFilter ,
1212 WriteRelationshipsRequest ,
1313)
14+ from ulid import ULID
1415
1516from renku_data_services .authz .authz import Authz , ResourceType , _AuthzConverter , _Relation
1617from renku_data_services .authz .models import Scope
1718from renku_data_services .background_jobs .config import SyncConfig
1819from renku_data_services .base_models .core import InternalServiceAdmin , ServiceAdminId
20+ from renku_data_services .errors import errors
1921from renku_data_services .message_queue .avro_models .io .renku .events import v2
2022from renku_data_services .message_queue .converters import EventConverter
2123from renku_data_services .namespace .models import NamespaceKind
@@ -97,7 +99,22 @@ async def fix_mismatched_project_namespace_ids(config: SyncConfig) -> None:
9799 async for rel in res :
98100 logging .info (f"Checking project namespace - group relation { rel } for correct group ID" )
99101 project_id = rel .relationship .resource .object_id
100- project = await config .project_repo .get_project (api_user , project_id )
102+ try :
103+ project = await config .project_repo .get_project (api_user , project_id )
104+ except errors .MissingResourceError :
105+ logging .info (f"Couldn't find project { project_id } , deleting relation" )
106+ authz .client .WriteRelationships (
107+ WriteRelationshipsRequest (
108+ updates = [
109+ RelationshipUpdate (
110+ operation = RelationshipUpdate .OPERATION_DELETE ,
111+ relationship = rel .relationship ,
112+ ),
113+ ]
114+ )
115+ )
116+ continue
117+
101118 if project .namespace .kind != NamespaceKind .group :
102119 continue
103120 correct_group_id = project .namespace .underlying_resource_id
@@ -117,7 +134,7 @@ async def fix_mismatched_project_namespace_ids(config: SyncConfig) -> None:
117134 relation = rel .relationship .relation ,
118135 subject = SubjectReference (
119136 object = ObjectReference (
120- object_type = ResourceType .group .value , object_id = correct_group_id
137+ object_type = ResourceType .group .value , object_id = str ( correct_group_id )
121138 )
122139 ),
123140 ),
@@ -169,7 +186,7 @@ async def migrate_groups_make_all_public(config: SyncConfig) -> None:
169186 all_users = SubjectReference (object = _AuthzConverter .all_users ())
170187 all_anon_users = SubjectReference (object = _AuthzConverter .anonymous_users ())
171188 for group_id in groups_to_process :
172- group_res = _AuthzConverter .group (group_id )
189+ group_res = _AuthzConverter .group (ULID . from_str ( group_id ) )
173190 all_users_are_viewers = Relationship (
174191 resource = group_res ,
175192 relation = _Relation .public_viewer .value ,
@@ -228,7 +245,7 @@ async def migrate_user_namespaces_make_all_public(config: SyncConfig) -> None:
228245 all_users = SubjectReference (object = _AuthzConverter .all_users ())
229246 all_anon_users = SubjectReference (object = _AuthzConverter .anonymous_users ())
230247 for ns_id in namespaces_to_process :
231- namespace_res = _AuthzConverter .user_namespace (ns_id )
248+ namespace_res = _AuthzConverter .user_namespace (ULID . from_str ( ns_id ) )
232249 all_users_are_viewers = Relationship (
233250 resource = namespace_res ,
234251 relation = _Relation .public_viewer .value ,
0 commit comments