Skip to content

Commit 94dded3

Browse files
authored
adding target storage account on capability host (#40751)
* adding capabiliy host target storage connection * removing 1.27 from change log * update version file * adding target storage param description and in samples * isort fix
1 parent 9793f88 commit 94dded3

File tree

11 files changed

+66
-62
lines changed

11 files changed

+66
-62
lines changed

sdk/ml/azure-ai-ml/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Release History
22

3+
## 1.26.5 (2025-04-28)
4+
5+
### Features Added
6+
- Added Target storage connection for capability host.
7+
38
## 1.26.4 (2025-04-23)
49

510
### Other Changes

sdk/ml/azure-ai-ml/azure/ai/ml/_ml_client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ def __init__(
541541
self._capability_hosts = CapabilityHostsOperations(
542542
self._operation_scope,
543543
self._operation_config,
544-
self._service_client_10_2024_preview,
544+
self._service_client_01_2025_preview,
545545
self._operation_container,
546546
self._credential,
547547
**kwargs,

sdk/ml/azure-ai-ml/azure/ai/ml/_schema/workspace/ai_workspaces/capability_host.py

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ class CapabilityHostSchema(PathAwareSchema):
1616
vector_store_connections = fields.List(fields.Str(), required=False)
1717
ai_services_connections = fields.List(fields.Str(), required=False)
1818
storage_connections = fields.List(fields.Str(), required=False)
19+
thread_storage_connections = fields.List(fields.Str(), required=False)

sdk/ml/azure-ai-ml/azure/ai/ml/_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
# Copyright (c) Microsoft Corporation. All rights reserved.
33
# ---------------------------------------------------------
44

5-
VERSION = "1.26.4"
5+
VERSION = "1.26.5"

sdk/ml/azure-ai-ml/azure/ai/ml/entities/_autogen_entities/_model_base.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@
66
# --------------------------------------------------------------------------
77
# pylint: disable=protected-access, broad-except, no-member
88

9+
import base64
910
import calendar
11+
import copy
1012
import decimal
13+
import email.utils
14+
import enum
1115
import functools
12-
import sys
1316
import logging
14-
import base64
1517
import re
16-
import copy
18+
import sys
1719
import typing
18-
import enum
19-
import email.utils
20-
from datetime import datetime, date, time, timedelta, timezone
20+
from datetime import date, datetime, time, timedelta, timezone
2121
from json import JSONEncoder
22-
from typing_extensions import Self
22+
2323
import isodate
24-
from azure.core.exceptions import DeserializationError
24+
from typing_extensions import Self
25+
2526
from azure.core import CaseInsensitiveEnumMeta
27+
from azure.core.exceptions import DeserializationError
2628
from azure.core.pipeline import PipelineResponse
2729
from azure.core.serialization import NULL
2830

sdk/ml/azure-ai-ml/azure/ai/ml/entities/_workspace/_ai_workspaces/capability_host.py

+17-24
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,20 @@
44

55
import os
66
from os import PathLike
7-
from typing import (
8-
List,
9-
Optional,
10-
Union,
11-
IO,
12-
Any,
13-
AnyStr,
14-
Dict,
15-
)
167
from pathlib import Path
17-
from azure.ai.ml._utils._experimental import experimental
18-
from azure.ai.ml.entities._resource import Resource
19-
from azure.ai.ml.constants._workspace import CapabilityHostKind
20-
from azure.ai.ml.constants._common import (
21-
BASE_PATH_CONTEXT_KEY,
22-
PARAMS_OVERRIDE_KEY,
23-
)
8+
from typing import IO, Any, AnyStr, Dict, List, Optional, Union
249

25-
from azure.ai.ml._schema.workspace.ai_workspaces.capability_host import (
26-
CapabilityHostSchema,
10+
from azure.ai.ml._restclient.v2025_01_01_preview.models._models_py3 import CapabilityHost as RestCapabilityHost
11+
from azure.ai.ml._restclient.v2025_01_01_preview.models._models_py3 import (
12+
CapabilityHostProperties as RestCapabilityHostProperties,
2713
)
14+
from azure.ai.ml._schema.workspace.ai_workspaces.capability_host import CapabilityHostSchema
15+
from azure.ai.ml._utils._experimental import experimental
2816
from azure.ai.ml._utils.utils import dump_yaml_to_file
17+
from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY, PARAMS_OVERRIDE_KEY
18+
from azure.ai.ml.constants._workspace import CapabilityHostKind
19+
from azure.ai.ml.entities._resource import Resource
2920
from azure.ai.ml.entities._util import load_from_dict
30-
from azure.ai.ml._restclient.v2024_10_01_preview.models._models_py3 import (
31-
CapabilityHost as RestCapabilityHost,
32-
)
33-
from azure.ai.ml._restclient.v2024_10_01_preview.models._models_py3 import (
34-
CapabilityHostProperties as RestCapabilityHostProperties,
35-
)
3621

3722

3823
@experimental
@@ -51,6 +36,8 @@ class CapabilityHost(Resource):
5136
:param storage_connections: A list of storage connections. Default storage connection value is
5237
projectname/workspaceblobstore for project workspace.
5338
:type storage_connections: Optional[List[str]]
39+
:param thread_storage_connections: A list of cosmos db connections, which will be used for thread storage.
40+
:type thread_storage_connections: Optional[List[str]]
5441
:param capability_host_kind: The kind of capability host, either as a string or CapabilityHostKind enum.
5542
Default is AGENTS.
5643
:type capability_host_kind: Union[str, CapabilityHostKind]
@@ -75,6 +62,7 @@ def __init__(
7562
vector_store_connections: Optional[List[str]] = None,
7663
ai_services_connections: Optional[List[str]] = None,
7764
storage_connections: Optional[List[str]] = None,
65+
thread_storage_connections: Optional[List[str]] = None,
7866
capability_host_kind: Union[str, CapabilityHostKind] = CapabilityHostKind.AGENTS,
7967
**kwargs: Any,
8068
):
@@ -83,6 +71,7 @@ def __init__(
8371
self.ai_services_connections = ai_services_connections
8472
self.storage_connections = storage_connections
8573
self.vector_store_connections = vector_store_connections
74+
self.thread_storage_connections = thread_storage_connections
8675

8776
def dump(
8877
self,
@@ -160,6 +149,9 @@ def _from_rest_object(cls, rest_obj: RestCapabilityHost) -> "CapabilityHost":
160149
ai_services_connections=(rest_obj.properties.ai_services_connections if rest_obj.properties else None),
161150
storage_connections=(rest_obj.properties.storage_connections if rest_obj.properties else None),
162151
vector_store_connections=(rest_obj.properties.vector_store_connections if rest_obj.properties else None),
152+
thread_storage_connections=(
153+
rest_obj.properties.thread_storage_connections if rest_obj.properties else None
154+
),
163155
capability_host_kind=(
164156
rest_obj.properties.capability_host_kind if rest_obj.properties else CapabilityHostKind.AGENTS
165157
),
@@ -178,6 +170,7 @@ def _to_rest_object(self) -> RestCapabilityHost:
178170
ai_services_connections=self.ai_services_connections,
179171
storage_connections=self.storage_connections,
180172
vector_store_connections=self.vector_store_connections,
173+
thread_storage_connections=self.thread_storage_connections,
181174
description=self.description,
182175
capability_host_kind=self.capability_host_kind,
183176
)

sdk/ml/azure-ai-ml/azure/ai/ml/operations/_capability_hosts_operations.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from marshmallow.exceptions import ValidationError as SchemaValidationError
99

1010
from azure.ai.ml._exception_helper import log_and_raise_error
11-
from azure.ai.ml._restclient.v2024_10_01_preview import AzureMachineLearningWorkspaces as ServiceClient102024Preview
11+
from azure.ai.ml._restclient.v2025_01_01_preview import AzureMachineLearningWorkspaces as ServiceClient012025Preview
1212
from azure.ai.ml._scope_dependent_operations import (
1313
OperationConfig,
1414
OperationsContainer,
@@ -40,9 +40,9 @@ class CapabilityHostsOperations(_ScopeDependentOperations):
4040
:type operation_scope: ~azure.ai.ml._scope_dependent_operations.OperationScope
4141
:param operation_config: Common configuration for operations classes of an MLClient object.
4242
:type operation_config: ~azure.ai.ml._scope_dependent_operations.OperationConfig
43-
:param service_client_10_2024: Service client to allow end users to operate on Azure Machine Learning Workspace
44-
resources (ServiceClient102024Preview).
45-
:type service_client_10_2024: ~azure.ai.ml._restclient.v2024_10_01_preview._azure_machine_learning_workspaces.AzureMachineLearningWorkspaces # pylint: disable=line-too-long
43+
:param service_client_01_2025: Service client to allow end users to operate on Azure Machine Learning Workspace
44+
resources (ServiceClient012025Preview).
45+
:type service_client_01_2025: ~azure.ai.ml._restclient.v2025_01_01_preview._azure_machine_learning_workspaces.AzureMachineLearningWorkspaces # pylint: disable=line-too-long
4646
:param all_operations: All operations classes of an MLClient object.
4747
:type all_operations: ~azure.ai.ml._scope_dependent_operations.OperationsContainer
4848
:param credentials: Credential to use for authentication.
@@ -55,7 +55,7 @@ def __init__(
5555
self,
5656
operation_scope: OperationScope,
5757
operation_config: OperationConfig,
58-
service_client_10_2024: ServiceClient102024Preview,
58+
service_client_01_2025: ServiceClient012025Preview,
5959
all_operations: OperationsContainer,
6060
credentials: TokenCredential,
6161
**kwargs: Any,
@@ -66,9 +66,9 @@ def __init__(
6666
:type operation_scope: ~azure.ai.ml._scope_dependent_operations.OperationScope
6767
:param operation_config: Common configuration for operations classes of an MLClient object.
6868
:type operation_config: ~azure.ai.ml._scope_dependent_operations.OperationConfig
69-
:param service_client_10_2024: Service client to allow end users to operate on Azure Machine Learning Workspace
70-
resources (ServiceClient102024Preview).
71-
:type service_client_10_2024: ~azure.ai.ml._restclient.v2024_10_01_preview._azure_machine_learning_workspaces.AzureMachineLearningWorkspaces # pylint: disable=line-too-long
69+
:param service_client_01_2025: Service client to allow end users to operate on Azure Machine Learning Workspace
70+
resources (ServiceClient012025Preview).
71+
:type service_client_01_2025: ~azure.ai.ml._restclient.v2025_01_01_preview._azure_machine_learning_workspaces.AzureMachineLearningWorkspaces # pylint: disable=line-too-long
7272
:param all_operations: All operations classes of an MLClient object.
7373
:type all_operations: ~azure.ai.ml._scope_dependent_operations.OperationsContainer
7474
:param credentials: Credential to use for authentication.
@@ -80,8 +80,8 @@ def __init__(
8080
super(CapabilityHostsOperations, self).__init__(operation_scope, operation_config)
8181
ops_logger.update_filter()
8282
self._all_operations = all_operations
83-
self._capability_hosts_operations = service_client_10_2024.capability_hosts
84-
self._workspace_operations = service_client_10_2024.workspaces
83+
self._capability_hosts_operations = service_client_01_2025.capability_hosts
84+
self._workspace_operations = service_client_01_2025.workspaces
8585
self._credentials = credentials
8686
self._init_kwargs = kwargs
8787

sdk/ml/azure-ai-ml/samples/ml_samples_capability_host.py

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def ml_capability_host_config(self):
9494
ai_services_connections=["connection1"],
9595
storage_connections=["projectname/workspaceblobstore"],
9696
vector_store_connections=["connection1"],
97+
thread_storage_connections=["connection1"],
9798
)
9899
result = ml_client.capability_hosts.begin_create_or_update(capability_host).result()
99100
# [END capability_host_begin_create_or_update_operation]

sdk/ml/azure-ai-ml/tests/test_configs/workspace/ai_workspaces/test_capability_host_project.yml

+2
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ ai_services_connections:
66
- "aiservice_connection_1"
77
storage_connections:
88
- "storage_connection_1"
9+
thread_storage_connections:
10+
- "thread_storage_connection_1"
911
capability_host_kind: "Agents"

sdk/ml/azure-ai-ml/tests/workspace/ai_workspaces/unittests/test_capability_host_entity.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1+
import os
2+
from datetime import datetime
3+
14
import pytest
25

36
from azure.ai.ml import load_capability_host
4-
from azure.ai.ml.entities._workspace._ai_workspaces.capability_host import (
5-
CapabilityHost,
6-
)
7-
from azure.ai.ml._restclient.v2024_10_01_preview.models._models_py3 import (
8-
CapabilityHost as RestCapabilityHost,
9-
)
10-
from azure.ai.ml._restclient.v2024_10_01_preview.models._models_py3 import (
7+
from azure.ai.ml._restclient.v2025_01_01_preview.models._models_py3 import CapabilityHost as RestCapabilityHost
8+
from azure.ai.ml._restclient.v2025_01_01_preview.models._models_py3 import (
119
CapabilityHostProperties as RestCapabilityHostProperties,
1210
)
13-
from datetime import datetime
14-
import os
11+
from azure.ai.ml.entities._workspace._ai_workspaces.capability_host import CapabilityHost
1512

1613

1714
@pytest.mark.unittest
@@ -54,6 +51,11 @@ def test_capability_host_project_schema(self) -> None:
5451
and len(capability_host.vector_store_connections) == 1
5552
and capability_host.vector_store_connections[0] == "vector_store_connection_1"
5653
)
54+
assert (
55+
capability_host.thread_storage_connections is not None
56+
and len(capability_host.thread_storage_connections) == 1
57+
and capability_host.thread_storage_connections[0] == "thread_storage_connection_1"
58+
)
5759

5860
def test_capability_host_constructor(self) -> None:
5961
capability_host = CapabilityHost(

sdk/ml/azure-ai-ml/tests/workspace/ai_workspaces/unittests/test_capability_host_operations.py

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
from unittest.mock import Mock
22

33
import pytest
4-
from azure.ai.ml import load_capability_host
54

6-
from azure.ai.ml._scope_dependent_operations import OperationScope, OperationConfig
7-
from azure.ai.ml.operations._capability_hosts_operations import (
8-
CapabilityHostsOperations,
9-
)
5+
from azure.ai.ml import load_capability_host
6+
from azure.ai.ml._scope_dependent_operations import OperationConfig, OperationScope
107
from azure.ai.ml.exceptions import MlException
8+
from azure.ai.ml.operations._capability_hosts_operations import CapabilityHostsOperations
119

1210

1311
@pytest.fixture
@@ -19,14 +17,14 @@ def mock_credential() -> Mock:
1917
def mock_capability_hosts_operation(
2018
mock_workspace_scope: OperationScope,
2119
mock_operation_config: OperationConfig,
22-
mock_aml_services_2024_10_01_preview: Mock,
20+
mock_aml_services_2025_01_01_preview: Mock,
2321
mock_machinelearning_client: Mock,
2422
mock_credential: Mock,
2523
) -> CapabilityHostsOperations:
2624
yield CapabilityHostsOperations(
2725
operation_scope=mock_workspace_scope,
2826
operation_config=mock_operation_config,
29-
service_client_10_2024=mock_aml_services_2024_10_01_preview,
27+
service_client_01_2025=mock_aml_services_2025_01_01_preview,
3028
all_operations=mock_machinelearning_client._operation_container,
3129
credentials=mock_credential,
3230
)
@@ -36,14 +34,14 @@ def mock_capability_hosts_operation(
3634
def mock_invalid_capability_hosts_operation(
3735
mock_registry_scope: OperationScope,
3836
mock_operation_config: OperationConfig,
39-
mock_aml_services_2024_10_01_preview: Mock,
37+
mock_aml_services_2025_01_01_preview: Mock,
4038
mock_machinelearning_client: Mock,
4139
mock_credential: Mock,
4240
) -> CapabilityHostsOperations:
4341
yield CapabilityHostsOperations(
4442
operation_scope=mock_registry_scope,
4543
operation_config=mock_operation_config,
46-
service_client_10_2024=mock_aml_services_2024_10_01_preview,
44+
service_client_01_2025=mock_aml_services_2025_01_01_preview,
4745
all_operations=mock_machinelearning_client._operation_container,
4846
credentials=mock_credential,
4947
)

0 commit comments

Comments
 (0)