|
2 | 2 | from dataclasses import dataclass |
3 | 3 | from typing import override |
4 | 4 |
|
5 | | -from ai.backend.manager.actions.action import BaseActionResult |
| 5 | +from ai.backend.common.data.permission.types import RBACElementType |
6 | 6 | from ai.backend.manager.actions.types import ActionOperationType |
7 | 7 | 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.errors.api import InvalidAPIParameters |
| 10 | +from ai.backend.manager.services.artifact_registry.actions.base import ( |
| 11 | + ArtifactRegistrySingleEntityAction, |
| 12 | + ArtifactRegistrySingleEntityActionResult, |
| 13 | +) |
9 | 14 |
|
10 | 15 |
|
11 | 16 | @dataclass |
12 | | -class GetArtifactRegistryMetaAction(ArtifactRegistryAction): |
| 17 | +class GetArtifactRegistryMetaAction(ArtifactRegistrySingleEntityAction): |
13 | 18 | registry_id: uuid.UUID | None = None |
14 | 19 | registry_name: str | None = None |
15 | 20 |
|
16 | | - @override |
17 | | - def entity_id(self) -> str | None: |
18 | | - return str(self.registry_id) |
19 | | - |
20 | 21 | @override |
21 | 22 | @classmethod |
22 | 23 | def operation_type(cls) -> ActionOperationType: |
23 | 24 | return ActionOperationType.GET |
24 | 25 |
|
| 26 | + @override |
| 27 | + def target_entity_id(self) -> str: |
| 28 | + if self.registry_id: |
| 29 | + return str(self.registry_id) |
| 30 | + if self.registry_name: |
| 31 | + return self.registry_name |
| 32 | + raise InvalidAPIParameters("Either registry_id or registry_name must be provided.") |
| 33 | + |
| 34 | + @override |
| 35 | + def target_element(self) -> RBACElementRef: |
| 36 | + return RBACElementRef(RBACElementType.ARTIFACT_REGISTRY, self.target_entity_id()) |
| 37 | + |
25 | 38 |
|
26 | 39 | @dataclass |
27 | | -class GetArtifactRegistryMetaActionResult(BaseActionResult): |
| 40 | +class GetArtifactRegistryMetaActionResult(ArtifactRegistrySingleEntityActionResult): |
28 | 41 | result: ArtifactRegistryData |
29 | 42 |
|
30 | 43 | @override |
31 | | - def entity_id(self) -> str | None: |
| 44 | + def target_entity_id(self) -> str: |
32 | 45 | return str(self.result.id) |
0 commit comments