Skip to content

Commit 88a96e1

Browse files
Foundry change (Azure#40679)
* adding target storage for capability host * Update sdk/ml/azure-ai-ml/CHANGELOG.md Co-authored-by: Copilot <[email protected]> * unit test fix * correcting change log --------- Co-authored-by: Copilot <[email protected]>
1 parent f31ab9a commit 88a96e1

File tree

9 files changed

+60
-61
lines changed

9 files changed

+60
-61
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## 1.27.0 (unreleased)
44

5+
### Features Added
6+
- Added Target storage connection for capability host.
7+
58
### Bugs Fixed
69
- Fix for compute Instance, disableLocalAuth property should be depend on ssh public access enabled.
710
- Removing Git-related properties from job properties if a PAT token is detected in the repository URL.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ def __init__(
543543
self._capability_hosts = CapabilityHostsOperations(
544544
self._operation_scope,
545545
self._operation_config,
546-
self._service_client_10_2024_preview,
546+
self._service_client_01_2025_preview,
547547
self._operation_container,
548548
self._credential,
549549
**kwargs,

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

Lines changed: 1 addition & 0 deletions
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/entities/_autogen_entities/_model_base.py

Lines changed: 10 additions & 8 deletions
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

Lines changed: 15 additions & 24 deletions
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
@@ -75,6 +60,7 @@ def __init__(
7560
vector_store_connections: Optional[List[str]] = None,
7661
ai_services_connections: Optional[List[str]] = None,
7762
storage_connections: Optional[List[str]] = None,
63+
thread_storage_connections: Optional[List[str]] = None,
7864
capability_host_kind: Union[str, CapabilityHostKind] = CapabilityHostKind.AGENTS,
7965
**kwargs: Any,
8066
):
@@ -83,6 +69,7 @@ def __init__(
8369
self.ai_services_connections = ai_services_connections
8470
self.storage_connections = storage_connections
8571
self.vector_store_connections = vector_store_connections
72+
self.thread_storage_connections = thread_storage_connections
8673

8774
def dump(
8875
self,
@@ -160,6 +147,9 @@ def _from_rest_object(cls, rest_obj: RestCapabilityHost) -> "CapabilityHost":
160147
ai_services_connections=(rest_obj.properties.ai_services_connections if rest_obj.properties else None),
161148
storage_connections=(rest_obj.properties.storage_connections if rest_obj.properties else None),
162149
vector_store_connections=(rest_obj.properties.vector_store_connections if rest_obj.properties else None),
150+
thread_storage_connections=(
151+
rest_obj.properties.thread_storage_connections if rest_obj.properties else None
152+
),
163153
capability_host_kind=(
164154
rest_obj.properties.capability_host_kind if rest_obj.properties else CapabilityHostKind.AGENTS
165155
),
@@ -178,6 +168,7 @@ def _to_rest_object(self) -> RestCapabilityHost:
178168
ai_services_connections=self.ai_services_connections,
179169
storage_connections=self.storage_connections,
180170
vector_store_connections=self.vector_store_connections,
171+
thread_storage_connections=self.thread_storage_connections,
181172
description=self.description,
182173
capability_host_kind=self.capability_host_kind,
183174
)

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

Lines changed: 10 additions & 10 deletions
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/tests/test_configs/workspace/ai_workspaces/test_capability_host_project.yml

Lines changed: 2 additions & 0 deletions
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

Lines changed: 11 additions & 9 deletions
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

Lines changed: 7 additions & 9 deletions
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)