Skip to content

Commit f6f84c8

Browse files
committed
refactor(BA-5832): drop user-facing fragment/policy SDK + CLI surface
End users only interact with the merged AppConfig view (`my_get`, `my_search` on `V2AppConfigClient`); raw fragment / policy reads were just an API mirror without convention support. Removes: - SDK `V2AppConfigFragmentClient.get` / `.scope_search` (the latter did not match the per-scope `{scope}_search()` convention used by `user.py`, `session.py`, `vfolder.py`, etc.) - SDK `V2AppConfigPolicyClient.get` / `.search` - CLI groups `./bai app-config-fragment` and `./bai app-config-policy` Admin surface (`admin_search`, `admin_bulk_*`) is unchanged — both clients keep the methods their `admin/` CLI counterparts call.
1 parent efc9f50 commit f6f84c8

8 files changed

Lines changed: 19 additions & 275 deletions

File tree

src/ai/backend/client/cli/v2/__init__.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -256,25 +256,6 @@ def app_config() -> None:
256256
"""App config (merged-view) commands."""
257257

258258

259-
@v2.group(
260-
cls=LazyGroup,
261-
import_name="ai.backend.client.cli.v2.app_config_fragment:app_config_fragment",
262-
name="app-config-fragment",
263-
)
264-
def app_config_fragment() -> None:
265-
"""App config fragment commands."""
266-
267-
268-
@v2.group(
269-
cls=LazyGroup,
270-
import_name="ai.backend.client.cli.v2.app_config_policy:app_config_policy",
271-
name="app-config-policy",
272-
)
273-
def app_config_policy() -> None:
274-
"""App config policy commands."""
275-
276-
277-
278259
@v2.group(
279260
cls=LazyGroup,
280261
import_name="ai.backend.client.cli.v2.prometheus_query_preset:prometheus_query_preset",
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .commands import app_config as app_config
2+
3+
__all__ = ("app_config",)

src/ai/backend/client/cli/v2/app_config_fragment/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/ai/backend/client/cli/v2/app_config_fragment/commands.py

Lines changed: 0 additions & 107 deletions
This file was deleted.

src/ai/backend/client/cli/v2/app_config_policy/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/ai/backend/client/cli/v2/app_config_policy/commands.py

Lines changed: 0 additions & 91 deletions
This file was deleted.

src/ai/backend/client/v2/domains_v2/app_config_fragment.py

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
"""V2 SDK client for the app-config fragment domain (BEP-1052 §2)."""
1+
"""V2 SDK client for the app-config fragment domain (BEP-1052 §2).
2+
3+
Fragments are an admin-only surface — end users interact with the merged
4+
``AppConfig`` view (``V2AppConfigClient``) instead. Self-service
5+
``my_bulk_*`` writes that return the recomputed merged view also live on
6+
``V2AppConfigClient`` alongside the merged-view reads.
7+
"""
28

39
from __future__ import annotations
410

@@ -7,51 +13,24 @@
713
AdminBulkCreateAppConfigFragmentsInput,
814
AdminBulkPurgeAppConfigFragmentsInput,
915
AdminBulkUpdateAppConfigFragmentsInput,
10-
AppConfigFragmentKeyInput,
1116
SearchAppConfigFragmentsInput,
1217
)
1318
from ai.backend.common.dto.manager.v2.app_config_fragment.response import (
1419
AdminBulkCreateAppConfigFragmentsPayload,
1520
AdminBulkPurgeAppConfigFragmentsPayload,
1621
AdminBulkUpdateAppConfigFragmentsPayload,
17-
GetAppConfigFragmentPayload,
1822
SearchAppConfigFragmentsPayload,
1923
)
2024

2125
_PATH = "/v2/app-config-fragments"
2226

2327

2428
class V2AppConfigFragmentClient(BaseDomainClient):
25-
"""SDK client for AppConfigFragment raw-row operations.
29+
"""SDK client for AppConfigFragment admin operations.
2630
27-
Writes are bulk-only (BEP-1052 §3). Self-service `my_bulk_*`
28-
writes return the recomputed merged AppConfig — they live on
29-
`V2AppConfigClient` alongside the merged-view reads.
31+
Writes are bulk-only (BEP-1052 §3).
3032
"""
3133

32-
async def get(self, request: AppConfigFragmentKeyInput) -> GetAppConfigFragmentPayload:
33-
"""Read a single fragment by natural key."""
34-
return await self._client.typed_request(
35-
"POST",
36-
f"{_PATH}/get",
37-
request=request,
38-
response_model=GetAppConfigFragmentPayload,
39-
)
40-
41-
async def scope_search(
42-
self,
43-
scope_type: str,
44-
scope_id: str,
45-
request: SearchAppConfigFragmentsInput,
46-
) -> SearchAppConfigFragmentsPayload:
47-
"""Scope-bound search — caller pins `(scope_type, scope_id)`."""
48-
return await self._client.typed_request(
49-
"POST",
50-
f"{_PATH}/{scope_type}/{scope_id}/search",
51-
request=request,
52-
response_model=SearchAppConfigFragmentsPayload,
53-
)
54-
5534
async def admin_search(
5635
self, request: SearchAppConfigFragmentsInput
5736
) -> SearchAppConfigFragmentsPayload:

src/ai/backend/client/v2/domains_v2/app_config_policy.py

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
"""V2 SDK client for the app-config policy domain (BEP-1052 §1)."""
1+
"""V2 SDK client for the app-config policy domain (BEP-1052 §1).
2+
3+
Policies are an admin-only surface — end users observe their effects
4+
through the merged ``AppConfig`` view (``V2AppConfigClient``), not by
5+
reading raw policy rows.
6+
"""
27

38
from __future__ import annotations
49

@@ -7,43 +12,23 @@
712
AdminBulkCreateAppConfigPoliciesInput,
813
AdminBulkPurgeAppConfigPoliciesInput,
914
AdminBulkUpdateAppConfigPoliciesInput,
10-
SearchAppConfigPoliciesInput,
1115
)
1216
from ai.backend.common.dto.manager.v2.app_config_policy.response import (
1317
AdminBulkCreateAppConfigPoliciesPayload,
1418
AdminBulkPurgeAppConfigPoliciesPayload,
1519
AdminBulkUpdateAppConfigPoliciesPayload,
16-
GetAppConfigPolicyPayload,
17-
SearchAppConfigPoliciesPayload,
1820
)
1921

2022
_PATH = "/v2/app-config-policies"
2123

2224

2325
class V2AppConfigPolicyClient(BaseDomainClient):
24-
"""SDK client for AppConfigPolicy operations.
26+
"""SDK client for AppConfigPolicy admin operations.
2527
2628
Writes are bulk-only (BEP-1052 §3); single-item create / update /
2729
purge are intentionally absent.
2830
"""
2931

30-
async def get(self, config_name: str) -> GetAppConfigPolicyPayload:
31-
"""Get a single policy by `config_name`."""
32-
return await self._client.typed_request(
33-
"GET",
34-
f"{_PATH}/{config_name}",
35-
response_model=GetAppConfigPolicyPayload,
36-
)
37-
38-
async def search(self, request: SearchAppConfigPoliciesInput) -> SearchAppConfigPoliciesPayload:
39-
"""Paginated policy search (any authenticated user)."""
40-
return await self._client.typed_request(
41-
"POST",
42-
f"{_PATH}/search",
43-
request=request,
44-
response_model=SearchAppConfigPoliciesPayload,
45-
)
46-
4732
async def admin_bulk_create(
4833
self, request: AdminBulkCreateAppConfigPoliciesInput
4934
) -> AdminBulkCreateAppConfigPoliciesPayload:

0 commit comments

Comments
 (0)