Skip to content

Commit 9aac93b

Browse files
fregataaclaude
andcommitted
refactor(BA-5046): migrate artifact registry action classes to RBAC base classes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 747c603 commit 9aac93b

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

src/ai/backend/manager/services/artifact_registry/actions/base.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from dataclasses import dataclass
21
from typing import override
32

43
from ai.backend.common.data.permission.types import EntityType
@@ -11,15 +10,13 @@
1110
from ai.backend.manager.actions.action.types import FieldData
1211

1312

14-
@dataclass
1513
class ArtifactRegistryAction(BaseAction):
1614
@override
1715
@classmethod
1816
def entity_type(cls) -> EntityType:
1917
return EntityType.ARTIFACT_REGISTRY
2018

2119

22-
@dataclass
2320
class ArtifactBatchRegistryAction(BaseBatchAction):
2421
@override
2522
@classmethod

src/ai/backend/manager/services/artifact_registry/actions/common/get_meta.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,41 @@
22
from dataclasses import dataclass
33
from typing import override
44

5-
from ai.backend.manager.actions.action import BaseActionResult
5+
from ai.backend.common.data.permission.types import RBACElementType
66
from ai.backend.manager.actions.types import ActionOperationType
77
from ai.backend.manager.data.artifact_registries.types import ArtifactRegistryData
8-
from ai.backend.manager.services.artifact_registry.actions.base import ArtifactRegistryAction
8+
from ai.backend.manager.data.permission.types import RBACElementRef
9+
from ai.backend.manager.services.artifact_registry.actions.base import (
10+
ArtifactRegistrySingleEntityAction,
11+
ArtifactRegistrySingleEntityActionResult,
12+
)
913

1014

1115
@dataclass
12-
class GetArtifactRegistryMetaAction(ArtifactRegistryAction):
16+
class GetArtifactRegistryMetaAction(ArtifactRegistrySingleEntityAction):
1317
registry_id: uuid.UUID | None = None
1418
registry_name: str | None = None
1519

16-
@override
17-
def entity_id(self) -> str | None:
18-
return str(self.registry_id)
19-
2020
@override
2121
@classmethod
2222
def operation_type(cls) -> ActionOperationType:
2323
return ActionOperationType.GET
2424

25+
@override
26+
def target_entity_id(self) -> str:
27+
if self.registry_id:
28+
return str(self.registry_id)
29+
return self.registry_name or ""
30+
31+
@override
32+
def target_element(self) -> RBACElementRef:
33+
return RBACElementRef(RBACElementType.ARTIFACT_REGISTRY, self.target_entity_id())
34+
2535

2636
@dataclass
27-
class GetArtifactRegistryMetaActionResult(BaseActionResult):
37+
class GetArtifactRegistryMetaActionResult(ArtifactRegistrySingleEntityActionResult):
2838
result: ArtifactRegistryData
2939

3040
@override
31-
def entity_id(self) -> str | None:
41+
def target_entity_id(self) -> str:
3242
return str(self.result.id)

src/ai/backend/manager/services/artifact_registry/processors.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class ArtifactRegistryProcessors(AbstractProcessorPackage):
121121
search_reservoir_registries: ActionProcessor[
122122
SearchReservoirRegistriesAction, SearchReservoirRegistriesActionResult
123123
]
124-
get_registry_meta: ActionProcessor[
124+
get_registry_meta: SingleEntityActionProcessor[
125125
GetArtifactRegistryMetaAction, GetArtifactRegistryMetaActionResult
126126
]
127127
get_registry_metas: ActionProcessor[
@@ -192,14 +192,19 @@ def __init__(
192192
validators=[validators.rbac.single_entity],
193193
)
194194

195+
self.get_registry_meta = SingleEntityActionProcessor(
196+
service.get_registry_meta,
197+
action_monitors,
198+
validators=[validators.rbac.single_entity],
199+
)
200+
195201
# Internal/batch actions without RBAC
196202
self.get_huggingface_registries = ActionProcessor(
197203
service.get_huggingface_registries, action_monitors
198204
)
199205
self.get_reservoir_registries = ActionProcessor(
200206
service.get_reservoir_registries, action_monitors
201207
)
202-
self.get_registry_meta = ActionProcessor(service.get_registry_meta, action_monitors)
203208
self.get_registry_metas = ActionProcessor(service.get_registry_metas, action_monitors)
204209

205210
@override

0 commit comments

Comments
 (0)