77
88
99class PermissionBackup (TypedDict ):
10- backend : str
10+ collection : str
1111
1212
1313class WeaviatePermission (TypedDict ):
@@ -99,7 +99,7 @@ def _to_weaviate(self) -> WeaviatePermission:
9999 return {
100100 "action" : self .action ,
101101 "backup" : {
102- "backend " : "*" ,
102+ "collection " : "*" ,
103103 },
104104 "collection" : self .collection ,
105105 "role" : "*" ,
@@ -116,7 +116,7 @@ def _to_weaviate(self) -> WeaviatePermission:
116116 return {
117117 "action" : self .action ,
118118 "backup" : {
119- "backend " : "*" ,
119+ "collection " : "*" ,
120120 },
121121 "collection" : "*" ,
122122 "role" : self .role ,
@@ -133,7 +133,7 @@ def _to_weaviate(self) -> WeaviatePermission:
133133 return {
134134 "action" : self .action ,
135135 "backup" : {
136- "backend " : "*" ,
136+ "collection " : "*" ,
137137 },
138138 "user" : self .user ,
139139 "role" : "*" ,
@@ -143,7 +143,7 @@ def _to_weaviate(self) -> WeaviatePermission:
143143
144144
145145class _BackupsPermission (_Permission ):
146- backend : str
146+ collection : str
147147 action : BackupsAction
148148
149149 def _to_weaviate (self ) -> WeaviatePermission :
@@ -154,7 +154,7 @@ def _to_weaviate(self) -> WeaviatePermission:
154154 "user" : "*" ,
155155 "collection" : "*" ,
156156 "backup" : {
157- "backend " : self .backend ,
157+ "collection " : self .collection ,
158158 },
159159 }
160160
@@ -166,7 +166,7 @@ def _to_weaviate(self) -> WeaviatePermission:
166166 return {
167167 "action" : self .action ,
168168 "backup" : {
169- "backend " : "*" ,
169+ "collection " : "*" ,
170170 },
171171 "role" : "*" ,
172172 "tenant" : "*" ,
@@ -184,7 +184,7 @@ def _to_weaviate(self) -> WeaviatePermission:
184184 return {
185185 "action" : self .action ,
186186 "backup" : {
187- "backend " : "*" ,
187+ "collection " : "*" ,
188188 },
189189 "collection" : self .collection ,
190190 "role" : "*" ,
@@ -218,6 +218,12 @@ class UsersPermission:
218218 action : UsersAction
219219
220220
221+ @dataclass
222+ class BackupsPermission :
223+ collection : str
224+ action : BackupsAction
225+
226+
221227@dataclass
222228class Role :
223229 name : str
@@ -226,6 +232,7 @@ class Role:
226232 data_permissions : Optional [List [DataPermission ]]
227233 roles_permissions : Optional [List [RolesPermission ]]
228234 users_permissions : Optional [List [UsersPermission ]]
235+ backups_permissions : Optional [List [BackupsPermission ]]
229236
230237 @classmethod
231238 def _from_weaviate_role (cls , role : WeaviateRole ) -> "Role" :
@@ -234,6 +241,7 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
234241 config_permissions : List [ConfigPermission ] = []
235242 roles_permissions : List [RolesPermission ] = []
236243 data_permissions : List [DataPermission ] = []
244+ backups_permissions : List [BackupsPermission ] = []
237245
238246 for permission in role ["permissions" ]:
239247 if permission ["action" ] in ClusterAction .values ():
@@ -265,6 +273,13 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
265273 action = DataAction (permission ["action" ]),
266274 )
267275 )
276+ elif permission ["action" ] in BackupsAction .values ():
277+ backups_permissions .append (
278+ BackupsPermission (
279+ collection = permission ["backup" ]["collection" ],
280+ action = BackupsAction (permission ["action" ]),
281+ )
282+ )
268283 else :
269284 raise ValueError (
270285 f"The actions of role { role ['name' ]} are mixed between levels somehow!"
@@ -275,7 +290,8 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
275290 users_permissions = up if len (up := users_permissions ) > 0 else None ,
276291 config_permissions = cp if len (cp := config_permissions ) > 0 else None ,
277292 roles_permissions = rp if len (rp := roles_permissions ) > 0 else None ,
278- data_permissions = (dp if len (dp := data_permissions ) > 0 else None ),
293+ data_permissions = dp if len (dp := data_permissions ) > 0 else None ,
294+ backups_permissions = bp if len (bp := backups_permissions ) > 0 else None ,
279295 )
280296
281297
@@ -354,8 +370,8 @@ def manage() -> _ClusterPermission:
354370
355371class _BackupsFactory :
356372 @staticmethod
357- def manage (* , backend : Optional [str ] = None ) -> _BackupsPermission :
358- return _BackupsPermission (backend = backend or "*" , action = BackupsAction .MANAGE )
373+ def manage (* , collection : Optional [str ] = None ) -> _BackupsPermission :
374+ return _BackupsPermission (collection = collection or "*" , action = BackupsAction .MANAGE )
359375
360376
361377class ActionsFactory :
0 commit comments