16
16
from feast .infra .infra_object import Infra
17
17
from feast .infra .registry .base_registry import BaseRegistry
18
18
from feast .on_demand_feature_view import OnDemandFeatureView
19
- from feast .permissions .action import CRUD , AuthzedAction
19
+ from feast .permissions .action import AuthzedAction
20
20
from feast .permissions .permission import Permission
21
- from feast .permissions .security_manager import assert_permissions , permitted_resources
21
+ from feast .permissions .security_manager import (
22
+ assert_permissions ,
23
+ assert_permissions_to_update ,
24
+ permitted_resources ,
25
+ )
22
26
from feast .permissions .server .grpc import grpc_interceptors
23
27
from feast .permissions .server .utils import (
24
28
ServerType ,
@@ -37,14 +41,16 @@ def __init__(self, registry: BaseRegistry) -> None:
37
41
self .proxied_registry = registry
38
42
39
43
def ApplyEntity (self , request : RegistryServer_pb2 .ApplyEntityRequest , context ):
40
- self .proxied_registry .apply_entity (
41
- entity = cast (
42
- Entity ,
43
- assert_permissions (
44
- resource = Entity .from_proto (request .entity ),
45
- actions = CRUD ,
46
- ),
44
+ entity = cast (
45
+ Entity ,
46
+ assert_permissions_to_update (
47
+ resource = Entity .from_proto (request .entity ),
48
+ getter = self .proxied_registry .get_entity ,
49
+ project = request .project ,
47
50
),
51
+ )
52
+ self .proxied_registry .apply_entity (
53
+ entity = entity ,
48
54
project = request .project ,
49
55
commit = request .commit ,
50
56
)
@@ -95,19 +101,19 @@ def DeleteEntity(self, request: RegistryServer_pb2.DeleteEntityRequest, context)
95
101
def ApplyDataSource (
96
102
self , request : RegistryServer_pb2 .ApplyDataSourceRequest , context
97
103
):
98
- (
99
- self .proxied_registry .apply_data_source (
100
- data_source = cast (
101
- DataSource ,
102
- assert_permissions (
103
- resource = DataSource .from_proto (request .data_source ),
104
- actions = CRUD ,
105
- ),
106
- ),
104
+ data_source = cast (
105
+ DataSource ,
106
+ assert_permissions_to_update (
107
+ resource = DataSource .from_proto (request .data_source ),
108
+ getter = self .proxied_registry .get_data_source ,
107
109
project = request .project ,
108
- commit = request .commit ,
109
110
),
110
111
)
112
+ self .proxied_registry .apply_data_source (
113
+ data_source = data_source ,
114
+ project = request .project ,
115
+ commit = request .commit ,
116
+ )
111
117
112
118
return Empty ()
113
119
@@ -182,12 +188,16 @@ def ApplyFeatureView(
182
188
elif feature_view_type == "stream_feature_view" :
183
189
feature_view = StreamFeatureView .from_proto (request .stream_feature_view )
184
190
191
+ assert_permissions_to_update (
192
+ resource = feature_view ,
193
+ # Will replace with the new get_any_feature_view method later
194
+ getter = self .proxied_registry .get_feature_view ,
195
+ project = request .project ,
196
+ )
197
+
185
198
(
186
199
self .proxied_registry .apply_feature_view (
187
- feature_view = cast (
188
- FeatureView ,
189
- assert_permissions (resource = feature_view , actions = CRUD ),
190
- ),
200
+ feature_view = feature_view ,
191
201
project = request .project ,
192
202
commit = request .commit ,
193
203
),
@@ -305,14 +315,16 @@ def ListOnDemandFeatureViews(
305
315
def ApplyFeatureService (
306
316
self , request : RegistryServer_pb2 .ApplyFeatureServiceRequest , context
307
317
):
308
- self .proxied_registry .apply_feature_service (
309
- feature_service = cast (
310
- FeatureService ,
311
- assert_permissions (
312
- resource = FeatureService .from_proto (request .feature_service ),
313
- actions = CRUD ,
314
- ),
318
+ feature_service = cast (
319
+ FeatureService ,
320
+ assert_permissions_to_update (
321
+ resource = FeatureService .from_proto (request .feature_service ),
322
+ getter = self .proxied_registry .get_feature_service ,
323
+ project = request .project ,
315
324
),
325
+ )
326
+ self .proxied_registry .apply_feature_service (
327
+ feature_service = feature_service ,
316
328
project = request .project ,
317
329
commit = request .commit ,
318
330
)
@@ -371,19 +383,19 @@ def DeleteFeatureService(
371
383
def ApplySavedDataset (
372
384
self , request : RegistryServer_pb2 .ApplySavedDatasetRequest , context
373
385
):
374
- (
375
- self .proxied_registry .apply_saved_dataset (
376
- saved_dataset = cast (
377
- SavedDataset ,
378
- assert_permissions (
379
- resource = SavedDataset .from_proto (request .saved_dataset ),
380
- actions = CRUD ,
381
- ),
382
- ),
386
+ saved_dataset = cast (
387
+ SavedDataset ,
388
+ assert_permissions_to_update (
389
+ resource = SavedDataset .from_proto (request .saved_dataset ),
390
+ getter = self .proxied_registry .get_saved_dataset ,
383
391
project = request .project ,
384
- commit = request .commit ,
385
392
),
386
393
)
394
+ self .proxied_registry .apply_saved_dataset (
395
+ saved_dataset = saved_dataset ,
396
+ project = request .project ,
397
+ commit = request .commit ,
398
+ )
387
399
388
400
return Empty ()
389
401
@@ -437,14 +449,16 @@ def DeleteSavedDataset(
437
449
def ApplyValidationReference (
438
450
self , request : RegistryServer_pb2 .ApplyValidationReferenceRequest , context
439
451
):
440
- self .proxied_registry .apply_validation_reference (
441
- validation_reference = cast (
442
- ValidationReference ,
443
- assert_permissions (
444
- ValidationReference .from_proto (request .validation_reference ),
445
- actions = CRUD ,
446
- ),
452
+ validation_reference = cast (
453
+ ValidationReference ,
454
+ assert_permissions_to_update (
455
+ resource = ValidationReference .from_proto (request .validation_reference ),
456
+ getter = self .proxied_registry .get_validation_reference ,
457
+ project = request .project ,
447
458
),
459
+ )
460
+ self .proxied_registry .apply_validation_reference (
461
+ validation_reference = validation_reference ,
448
462
project = request .project ,
449
463
commit = request .commit ,
450
464
)
@@ -547,13 +561,16 @@ def GetInfra(self, request: RegistryServer_pb2.GetInfraRequest, context):
547
561
def ApplyPermission (
548
562
self , request : RegistryServer_pb2 .ApplyPermissionRequest , context
549
563
):
550
- self . proxied_registry . apply_permission (
551
- permission = cast (
552
- Permission ,
553
- assert_permissions (
554
- Permission . from_proto ( request . permission ), actions = CRUD
555
- ) ,
564
+ permission = cast (
565
+ Permission ,
566
+ assert_permissions_to_update (
567
+ resource = Permission . from_proto ( request . permission ),
568
+ getter = self . proxied_registry . get_permission ,
569
+ project = request . project ,
556
570
),
571
+ )
572
+ self .proxied_registry .apply_permission (
573
+ permission = permission ,
557
574
project = request .project ,
558
575
commit = request .commit ,
559
576
)
0 commit comments