Skip to content

Commit 9016647

Browse files
authored
fix(BA-6036): expose resource_group on ModelDeploymentMetadata (#11598)
1 parent c3347d3 commit 9016647

9 files changed

Lines changed: 42 additions & 0 deletions

File tree

changes/11598.fix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Expose `resource_group` on `ModelDeploymentMetadata` so the resource group selected at deployment creation is visible in detail responses (GraphQL and REST v2).

docs/manager/graphql-reference/supergraph.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9350,6 +9350,11 @@ Added in 25.19.0. Contains metadata information for a model deployment including
93509350
type ModelDeploymentMetadata
93519351
@join__type(graph: STRAWBERRY)
93529352
{
9353+
"""
9354+
Added in UNRELEASED. The resource group this deployment runs in, resolved via DataLoader.
9355+
"""
9356+
resourceGroup: ResourceGroup
9357+
93539358
"""The project of this entity."""
93549359
project: GroupNode @deprecated(reason: "Use project_v2 instead.")
93559360

@@ -9370,6 +9375,7 @@ type ModelDeploymentMetadata
93709375
name: String!
93719376
status: DeploymentStatus!
93729377
tags: [String!]!
9378+
resourceGroupName: String!
93739379
createdAt: DateTime!
93749380
updatedAt: DateTime!
93759381
}

docs/manager/graphql-reference/v2-schema.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6147,6 +6147,11 @@ type ModelDeploymentEdge {
61476147
Added in 25.19.0. Contains metadata information for a model deployment including its name, status, tags, and timestamps. Also provides access to the associated project and domain.
61486148
"""
61496149
type ModelDeploymentMetadata {
6150+
"""
6151+
Added in UNRELEASED. The resource group this deployment runs in, resolved via DataLoader.
6152+
"""
6153+
resourceGroup: ResourceGroup
6154+
61506155
"""The project of this entity."""
61516156
project: GroupNode @deprecated(reason: "Use project_v2 instead.")
61526157

@@ -6167,6 +6172,7 @@ type ModelDeploymentMetadata {
61676172
name: String!
61686173
status: DeploymentStatus!
61696174
tags: [String!]!
6175+
resourceGroupName: String!
61706176
createdAt: DateTime!
61716177
updatedAt: DateTime!
61726178
}

src/ai/backend/common/dto/manager/v2/deployment/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ class DeploymentMetadataInfoDTO(BaseResponseModel):
434434
name: str
435435
status: ModelDeploymentStatus
436436
tags: list[str]
437+
resource_group_name: str
437438
created_at: datetime
438439
updated_at: datetime
439440

src/ai/backend/manager/api/adapters/deployment/adapter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,6 +2178,7 @@ def _deployment_data_to_dto(data: ModelDeploymentData) -> DeploymentNode:
21782178
name=data.metadata.name,
21792179
status=data.metadata.status,
21802180
tags=data.metadata.tags,
2181+
resource_group_name=data.metadata.resource_group_name,
21812182
created_at=data.metadata.created_at,
21822183
updated_at=data.metadata.updated_at,
21832184
),

src/ai/backend/manager/api/gql/deployment/types/deployment.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@
167167
if TYPE_CHECKING:
168168
from ai.backend.manager.api.gql.domain_v2.types.node import DomainV2GQL
169169
from ai.backend.manager.api.gql.project_v2.types.node import ProjectV2GQL
170+
from ai.backend.manager.api.gql.resource_group.types import ResourceGroupGQL
170171
from ai.backend.manager.api.gql.user.types.node import UserV2GQL
171172

172173
DeploymentStatusGQL: type[ModelDeploymentStatus] = gql_enum(
@@ -231,6 +232,29 @@ class ModelDeploymentMetadata:
231232
tags: list[str]
232233
created_at: datetime
233234
updated_at: datetime
235+
resource_group_name: str = gql_added_field(
236+
BackendAIGQLMeta(
237+
added_version=NEXT_RELEASE_VERSION,
238+
description="Name of the resource group (scaling group) this deployment runs in.",
239+
)
240+
)
241+
242+
@gql_added_field(
243+
BackendAIGQLMeta(
244+
added_version=NEXT_RELEASE_VERSION,
245+
description="The resource group this deployment runs in, resolved via DataLoader.",
246+
)
247+
) # type: ignore[misc]
248+
async def resource_group(
249+
self, info: Info[StrawberryGQLContext]
250+
) -> (
251+
Annotated[
252+
ResourceGroupGQL,
253+
strawberry.lazy("ai.backend.manager.api.gql.resource_group.types"),
254+
]
255+
| None
256+
):
257+
return await info.context.data_loaders.resource_group_loader.load(self.resource_group_name)
234258

235259
@gql_field(
236260
description="The project of this entity.",

src/ai/backend/manager/data/deployment/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,7 @@ class ModelDeploymentMetadataInfo:
10021002
tags: list[str]
10031003
project_id: UUID
10041004
domain_name: str
1005+
resource_group_name: str
10051006
created_at: datetime
10061007
updated_at: datetime
10071008

src/ai/backend/manager/services/deployment/service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ def _convert_deployment_info_to_data(info: DeploymentInfo) -> ModelDeploymentDat
252252
tags=[info.metadata.tag] if info.metadata.tag else [],
253253
project_id=info.metadata.project,
254254
domain_name=info.metadata.domain,
255+
resource_group_name=info.metadata.resource_group,
255256
created_at=info.metadata.created_at or datetime.now(UTC),
256257
updated_at=info.metadata.created_at or datetime.now(UTC),
257258
),

tests/unit/common/dto/manager/v2/deployment/test_response.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def _make_deployment_metadata(**kwargs: object) -> DeploymentMetadataInfoDTO:
105105
"name": "test-deployment",
106106
"status": ModelDeploymentStatus.READY,
107107
"tags": [],
108+
"resource_group_name": "default",
108109
"created_at": now,
109110
"updated_at": now,
110111
}

0 commit comments

Comments
 (0)