| 176 | |
| 177 | |
| 178 | class RegistryServer(RegistryServer_pb2_grpc.RegistryServerServicer): |
| 179 | def __init__(self, registry: BaseRegistry) -> None: |
| 180 | super().__init__() |
| 181 | self.proxied_registry = registry |
| 182 | |
| 183 | def ApplyEntity(self, request: RegistryServer_pb2.ApplyEntityRequest, context): |
| 184 | entity = cast( |
| 185 | Entity, |
| 186 | assert_permissions_to_update( |
| 187 | resource=Entity.from_proto(request.entity), |
| 188 | getter=self.proxied_registry.get_entity, |
| 189 | project=request.project, |
| 190 | ), |
| 191 | ) |
| 192 | self.proxied_registry.apply_entity( |
| 193 | entity=entity, |
| 194 | project=request.project, |
| 195 | commit=request.commit, |
| 196 | ) |
| 197 | |
| 198 | return Empty() |
| 199 | |
| 200 | def GetEntity(self, request: RegistryServer_pb2.GetEntityRequest, context): |
| 201 | return assert_permissions( |
| 202 | self.proxied_registry.get_entity( |
| 203 | name=request.name, |
| 204 | project=request.project, |
| 205 | allow_cache=request.allow_cache, |
| 206 | ), |
| 207 | actions=[AuthzedAction.DESCRIBE], |
| 208 | ).to_proto() |
| 209 | |
| 210 | def ListEntities(self, request: RegistryServer_pb2.ListEntitiesRequest, context): |
| 211 | paginated_entities, pagination_metadata = apply_pagination_and_sorting( |
| 212 | permitted_resources( |
| 213 | resources=cast( |
| 214 | list[FeastObject], |
| 215 | self.proxied_registry.list_entities( |
| 216 | project=request.project, |
| 217 | allow_cache=request.allow_cache, |
| 218 | tags=dict(request.tags), |
| 219 | ), |
| 220 | ), |
| 221 | actions=AuthzedAction.DESCRIBE, |
| 222 | ), |
| 223 | pagination=request.pagination, |
| 224 | sorting=request.sorting, |
| 225 | ) |
| 226 | |
| 227 | return RegistryServer_pb2.ListEntitiesResponse( |
| 228 | entities=[entity.to_proto() for entity in paginated_entities], |
| 229 | pagination=pagination_metadata, |
| 230 | ) |
| 231 | |
| 232 | def DeleteEntity(self, request: RegistryServer_pb2.DeleteEntityRequest, context): |
| 233 | assert_permissions( |
| 234 | resource=self.proxied_registry.get_entity( |
| 235 | name=request.name, project=request.project |
no outgoing calls