1616from feast .infra .infra_object import Infra
1717from feast .infra .registry .base_registry import BaseRegistry
1818from feast .on_demand_feature_view import OnDemandFeatureView
19- from feast .permissions .action import CRUD , AuthzedAction
19+ from feast .permissions .action import AuthzedAction
2020from 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+ )
2226from feast .permissions .server .grpc import grpc_interceptors
2327from feast .permissions .server .utils import (
2428 ServerType ,
@@ -37,14 +41,16 @@ def __init__(self, registry: BaseRegistry) -> None:
3741 self .proxied_registry = registry
3842
3943 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 ,
4750 ),
51+ )
52+ self .proxied_registry .apply_entity (
53+ entity = entity ,
4854 project = request .project ,
4955 commit = request .commit ,
5056 )
@@ -95,19 +101,19 @@ def DeleteEntity(self, request: RegistryServer_pb2.DeleteEntityRequest, context)
95101 def ApplyDataSource (
96102 self , request : RegistryServer_pb2 .ApplyDataSourceRequest , context
97103 ):
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 ,
107109 project = request .project ,
108- commit = request .commit ,
109110 ),
110111 )
112+ self .proxied_registry .apply_data_source (
113+ data_source = data_source ,
114+ project = request .project ,
115+ commit = request .commit ,
116+ )
111117
112118 return Empty ()
113119
@@ -182,12 +188,16 @@ def ApplyFeatureView(
182188 elif feature_view_type == "stream_feature_view" :
183189 feature_view = StreamFeatureView .from_proto (request .stream_feature_view )
184190
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+
185198 (
186199 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 ,
191201 project = request .project ,
192202 commit = request .commit ,
193203 ),
@@ -305,14 +315,16 @@ def ListOnDemandFeatureViews(
305315 def ApplyFeatureService (
306316 self , request : RegistryServer_pb2 .ApplyFeatureServiceRequest , context
307317 ):
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 ,
315324 ),
325+ )
326+ self .proxied_registry .apply_feature_service (
327+ feature_service = feature_service ,
316328 project = request .project ,
317329 commit = request .commit ,
318330 )
@@ -371,19 +383,19 @@ def DeleteFeatureService(
371383 def ApplySavedDataset (
372384 self , request : RegistryServer_pb2 .ApplySavedDatasetRequest , context
373385 ):
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 ,
383391 project = request .project ,
384- commit = request .commit ,
385392 ),
386393 )
394+ self .proxied_registry .apply_saved_dataset (
395+ saved_dataset = saved_dataset ,
396+ project = request .project ,
397+ commit = request .commit ,
398+ )
387399
388400 return Empty ()
389401
@@ -437,14 +449,16 @@ def DeleteSavedDataset(
437449 def ApplyValidationReference (
438450 self , request : RegistryServer_pb2 .ApplyValidationReferenceRequest , context
439451 ):
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 ,
447458 ),
459+ )
460+ self .proxied_registry .apply_validation_reference (
461+ validation_reference = validation_reference ,
448462 project = request .project ,
449463 commit = request .commit ,
450464 )
@@ -547,13 +561,16 @@ def GetInfra(self, request: RegistryServer_pb2.GetInfraRequest, context):
547561 def ApplyPermission (
548562 self , request : RegistryServer_pb2 .ApplyPermissionRequest , context
549563 ):
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 ,
556570 ),
571+ )
572+ self .proxied_registry .apply_permission (
573+ permission = permission ,
557574 project = request .project ,
558575 commit = request .commit ,
559576 )
0 commit comments