Skip to content

Commit 7cc90a5

Browse files
authored
{ACR} Reconcile tasks SDK split: update to azure-mgmt-containerregistrytasks 1.0.0b1 and azure-mgmt-containerregistry 15.1.0b1 with API version 2026-01-01-preview (#33017)
1 parent dc9fdb3 commit 7cc90a5

File tree

77 files changed

+30639
-27768
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+30639
-27768
lines changed

src/azure-cli-core/azure/cli/core/profiles/_shared.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class ResourceType(Enum): # pylint: disable=too-few-public-methods
5151
MGMT_NETWORK_PRIVATEDNS = ('azure.mgmt.privatedns', 'PrivateDnsManagementClient')
5252
MGMT_AUTHORIZATION = ('azure.mgmt.authorization', 'AuthorizationManagementClient')
5353
MGMT_CONTAINERREGISTRY = ('azure.mgmt.containerregistry', 'ContainerRegistryManagementClient')
54+
MGMT_CONTAINERREGISTRYTASKS = ('azure.mgmt.containerregistrytasks', 'ContainerRegistryTasksMgmtClient')
5455
MGMT_RESOURCE_FEATURES = ('azure.mgmt.resource.features', 'FeatureClient')
5556
MGMT_RESOURCE_LINKS = ('azure.mgmt.resource.links', 'ManagementLinkClient')
5657
MGMT_RESOURCE_LOCKS = ('azure.mgmt.resource.locks', 'ManagementLockClient')
@@ -187,15 +188,8 @@ def default_api_version(self):
187188
ResourceType.MGMT_NETWORK_PRIVATEDNS: None,
188189
ResourceType.MGMT_KEYVAULT: None,
189190
ResourceType.MGMT_AUTHORIZATION: None,
190-
ResourceType.MGMT_CONTAINERREGISTRY: SDKProfile('2025-03-01-preview', {
191-
'agent_pools': '2025-03-01-preview',
192-
'tasks': '2025-03-01-preview',
193-
'task_runs': '2025-03-01-preview',
194-
'runs': '2025-03-01-preview',
195-
'network_rule': '2021-08-01-preview',
196-
'cache_rules': '2023-01-01-preview',
197-
'credential_sets': '2023-01-01-preview'
198-
}),
191+
ResourceType.MGMT_CONTAINERREGISTRY: None,
192+
ResourceType.MGMT_CONTAINERREGISTRYTASKS: None,
199193
# The order does make things different.
200194
# Please keep ResourceType.DATA_KEYVAULT_KEYS before ResourceType.DATA_KEYVAULT
201195
ResourceType.DATA_KEYVAULT_CERTIFICATES: None,
@@ -234,18 +228,6 @@ def default_api_version(self):
234228
# src/azure-cli/azure/cli/command_modules/appservice/_constants.py:68
235229
'app_service_certificate_orders': '2022-09-01'
236230
},
237-
ResourceType.MGMT_CONTAINERREGISTRY: {
238-
# src/azure-cli/azure/cli/command_modules/acr/_client_factory.py:8
239-
'VERSION_2019_05_01_PREVIEW': "2019-05-01-preview",
240-
'VERSION_2019_06_01_PREVIEW': "2019-06-01-preview",
241-
'VERSION_2020_11_01_PREVIEW': "2020-11-01-preview",
242-
'VERSION_2021_08_01_PREVIEW': "2021-08-01-preview",
243-
'VERSION_2022_02_01_PREVIEW': "2022-02-01-preview",
244-
'VERSION_2023_11_01_PREVIEW': "2023-11-01-preview",
245-
'VERSION_2024_11_01_PREVIEW': "2024-11-01-preview",
246-
'VERSION_2025_03_01_PREVIEW': "2025-03-01-preview",
247-
'VERSION_2025_04_01': "2025-04-01"
248-
},
249231
ResourceType.MGMT_MSI: {
250232
'user_assigned_identities': '2022-01-31-preview',
251233
}

src/azure-cli/azure/cli/command_modules/acr/_agentpool_polling.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,57 +3,51 @@
33
# Licensed under the MIT License. See License.txt in the project root for license information.
44
# --------------------------------------------------------------------------------------------
55

6+
import json
67
import time
78

8-
from msrest import Deserializer
99
from azure.core.exceptions import HttpResponseError
1010
from azure.core.polling import PollingMethod, LROPoller
1111

12-
from ._constants import get_acr_task_models, get_succeeded_agentpool_status, get_finished_agentpool_status
12+
from ._constants import get_succeeded_agentpool_status, get_finished_agentpool_status
1313

1414

15-
def delete_agentpool_with_polling(cmd,
16-
client,
15+
def delete_agentpool_with_polling(client,
1716
agent_pool_name,
1817
registry_name,
1918
resource_group_name):
20-
deserializer = Deserializer(
21-
{k: v for k, v in get_acr_task_models(cmd).__dict__.items() if isinstance(v, type)})
19+
from azure.mgmt.containerregistrytasks.models import AgentPool
2220

2321
def deserialize_agentpool(response):
24-
return deserializer('AgentPool', response)
22+
return AgentPool(json.loads(response.http_response.text()))
2523

2624
return LROPoller(
2725
client=client,
2826
initial_response=client.get(
2927
resource_group_name, registry_name, agent_pool_name, cls=lambda x, y, z: x),
3028
deserialization_callback=deserialize_agentpool,
3129
polling_method=RunPolling(
32-
cmd=cmd,
3330
registry_name=registry_name,
3431
agent_pool_name=agent_pool_name
3532
))
3633

3734

3835
class RunPolling(PollingMethod): # pylint: disable=too-many-instance-attributes
3936

40-
def __init__(self, cmd, registry_name, agent_pool_name, timeout=30):
41-
self._cmd = cmd
37+
def __init__(self, registry_name, agent_pool_name, timeout=30):
4238
self._registry_name = registry_name
4339
self._agent_pool_name = agent_pool_name
4440
self._timeout = timeout
4541
self._client = None
4642
self._response = None # Will hold latest received response
4743
self._url = None # The URL used to get the run
48-
self._deserialize = None # The deserializer for Run
4944
self.operation_status = ""
5045
self.operation_result = None
5146

5247
def initialize(self, client, initial_response, deserialization_callback):
5348
self._client = client._client # pylint: disable=protected-access
5449
self._response = initial_response
5550
self._url = initial_response.http_request.url
56-
self._deserialize = deserialization_callback
5751

5852
self._set_operation_status(initial_response)
5953

@@ -62,7 +56,7 @@ def run(self):
6256
time.sleep(self._timeout)
6357
self._update_status()
6458

65-
if self.operation_status not in get_succeeded_agentpool_status(self._cmd):
59+
if self.operation_status not in get_succeeded_agentpool_status():
6660
from knack.util import CLIError
6761
raise CLIError("The agent pool deletion with name '{}' finished with unsuccessful status '{}'. "
6862
"Show run details by 'az acr agentpool show -r {} -n {}'. ".format(
@@ -77,15 +71,15 @@ def status(self):
7771
return self.operation_status
7872

7973
def finished(self):
80-
return self.operation_status in get_finished_agentpool_status(self._cmd)
74+
return self.operation_status in get_finished_agentpool_status()
8175

8276
def resource(self):
8377
return self.operation_result
8478

8579
def _set_operation_status(self, response):
86-
AgentPoolStatus = self._cmd.get_models('ProvisioningState')
80+
from azure.mgmt.containerregistrytasks.models import AgentPool, ProvisioningState as AgentPoolStatus
8781
if response.http_response.status_code == 200 or response.http_response.status_code == 404:
88-
self.operation_result = self._deserialize(response)
82+
self.operation_result = AgentPool(json.loads(response.http_response.text()))
8983
self.operation_status = self.operation_result.provisioning_state or AgentPoolStatus.succeeded.value
9084
return
9185
raise HttpResponseError(response)

src/azure-cli/azure/cli/command_modules/acr/_client_factory.py

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,34 @@
55

66
from azure.cli.core.commands.client_factory import get_mgmt_service_client
77

8-
VERSION_2019_05_01_PREVIEW = "2019-05-01-preview"
9-
VERSION_2019_06_01_PREVIEW = "2019-06-01-preview"
10-
VERSION_2020_11_01_PREVIEW = "2020-11-01-preview"
11-
VERSION_2021_08_01_PREVIEW = "2021-08-01-preview"
12-
VERSION_2022_02_01_PREVIEW = "2022-02-01-preview"
13-
VERSION_2023_01_01_PREVIEW = "2023-01-01-preview"
14-
VERSION_2024_11_01_PREVIEW = "2024-11-01-preview"
15-
VERSION_2025_03_01_PREVIEW = "2025-03-01-preview"
16-
VERSION_2025_04_01 = "2025-04-01"
17-
188

199
def get_acr_service_client(cli_ctx, api_version=None):
2010
"""Returns the client for managing container registries. """
2111
from azure.cli.core.profiles import ResourceType
2212
return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_CONTAINERREGISTRY, api_version=api_version)
2313

2414

15+
def get_acr_tasks_service_client(cli_ctx, api_version=None):
16+
"""Returns the client for managing container registry tasks."""
17+
from azure.cli.core.profiles import ResourceType
18+
return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_CONTAINERREGISTRYTASKS, api_version=api_version)
19+
20+
2521
# The function is used in Azure and Edge and hybrid profile is used to support the different API versions.
2622
def cf_acr_registries(cli_ctx, *_):
2723
return get_acr_service_client(cli_ctx).registries
2824

2925

3026
def cf_acr_cache(cli_ctx, *_):
31-
return get_acr_service_client(cli_ctx, api_version=VERSION_2023_01_01_PREVIEW).cache_rules
27+
return get_acr_service_client(cli_ctx).cache_rules
3228

3329

3430
def cf_acr_cred_sets(cli_ctx, *_):
35-
return get_acr_service_client(cli_ctx, api_version=VERSION_2023_01_01_PREVIEW).credential_sets
36-
37-
38-
def cf_acr_network_rules(cli_ctx, *_):
39-
return get_acr_service_client(cli_ctx, api_version=VERSION_2021_08_01_PREVIEW).registries
31+
return get_acr_service_client(cli_ctx).credential_sets
4032

4133

4234
def cf_acr_registries_tasks(cli_ctx, *_):
43-
return get_acr_service_client(cli_ctx, api_version=VERSION_2025_03_01_PREVIEW).registries
35+
return get_acr_tasks_service_client(cli_ctx).registries
4436

4537

4638
def cf_acr_replications(cli_ctx, *_):
@@ -56,32 +48,32 @@ def cf_acr_private_endpoint_connections(cli_ctx, *_):
5648

5749

5850
def cf_acr_tasks(cli_ctx, *_):
59-
return get_acr_service_client(cli_ctx, VERSION_2025_03_01_PREVIEW).tasks
51+
return get_acr_tasks_service_client(cli_ctx).tasks
6052

6153

6254
def cf_acr_taskruns(cli_ctx, *_):
63-
return get_acr_service_client(cli_ctx, VERSION_2025_03_01_PREVIEW).task_runs
55+
return get_acr_tasks_service_client(cli_ctx).task_runs
6456

6557

6658
def cf_acr_runs(cli_ctx, *_):
67-
return get_acr_service_client(cli_ctx, VERSION_2025_03_01_PREVIEW).runs
59+
return get_acr_tasks_service_client(cli_ctx).runs
6860

6961

7062
def cf_acr_scope_maps(cli_ctx, *_):
71-
return get_acr_service_client(cli_ctx, VERSION_2024_11_01_PREVIEW).scope_maps
63+
return get_acr_service_client(cli_ctx).scope_maps
7264

7365

7466
def cf_acr_tokens(cli_ctx, *_):
75-
return get_acr_service_client(cli_ctx, VERSION_2024_11_01_PREVIEW).tokens
67+
return get_acr_service_client(cli_ctx).tokens
7668

7769

7870
def cf_acr_token_credentials(cli_ctx, *_):
79-
return get_acr_service_client(cli_ctx, VERSION_2024_11_01_PREVIEW).registries
71+
return get_acr_service_client(cli_ctx).registries
8072

8173

8274
def cf_acr_agentpool(cli_ctx, *_):
83-
return get_acr_service_client(cli_ctx, VERSION_2025_03_01_PREVIEW).agent_pools
75+
return get_acr_tasks_service_client(cli_ctx).agent_pools
8476

8577

8678
def cf_acr_connected_registries(cli_ctx, *_):
87-
return get_acr_service_client(cli_ctx, VERSION_2025_04_01).connected_registries
79+
return get_acr_service_client(cli_ctx).connected_registries

src/azure-cli/azure/cli/command_modules/acr/_constants.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
# --------------------------------------------------------------------------------------------
55
# pylint: disable=line-too-long
66

7-
from azure.cli.core.profiles import ResourceType
87
from enum import Enum
98

109
ACR_RESOURCE_PROVIDER = 'Microsoft.ContainerRegistry'
@@ -63,47 +62,42 @@ def get_premium_sku(cmd):
6362
return [SkuName.premium.value]
6463

6564

66-
def get_valid_os(cmd):
67-
OS = cmd.get_models('OS', operation_group='task_runs')
65+
def get_valid_os():
66+
from azure.mgmt.containerregistrytasks.models import OS
6867
return [item.value.lower() for item in OS]
6968

7069

71-
def get_valid_architecture(cmd):
72-
Architecture = cmd.get_models('Architecture', operation_group='task_runs')
70+
def get_valid_architecture():
71+
from azure.mgmt.containerregistrytasks.models import Architecture
7372
return [item.value.lower() for item in Architecture]
7473

7574

76-
def get_valid_variant(cmd):
77-
Variant = cmd.get_models('Variant', operation_group='task_runs')
75+
def get_valid_variant():
76+
from azure.mgmt.containerregistrytasks.models import Variant
7877
return [item.value.lower() for item in Variant]
7978

8079

81-
def get_finished_run_status(cmd):
82-
RunStatus = cmd.get_models('RunStatus', operation_group='task_runs')
80+
def get_finished_run_status():
81+
from azure.mgmt.containerregistrytasks.models import RunStatus
8382
return [RunStatus.succeeded.value,
8483
RunStatus.failed.value,
8584
RunStatus.canceled.value,
8685
RunStatus.error.value,
8786
RunStatus.timeout.value]
8887

8988

90-
def get_succeeded_run_status(cmd):
91-
RunStatus = cmd.get_models('RunStatus', operation_group='task_runs')
89+
def get_succeeded_run_status():
90+
from azure.mgmt.containerregistrytasks.models import RunStatus
9291
return [RunStatus.succeeded.value]
9392

9493

95-
def get_acr_task_models(cmd):
96-
from azure.cli.core.profiles import get_sdk
97-
return get_sdk(cmd.cli_ctx, ResourceType.MGMT_CONTAINERREGISTRY, 'models', operation_group='tasks')
94+
def get_succeeded_agentpool_status():
95+
from azure.mgmt.containerregistrytasks.models import ProvisioningState
96+
return [ProvisioningState.succeeded.value]
9897

9998

100-
def get_succeeded_agentpool_status(cmd):
101-
AgentPoolStatus = cmd.get_models('ProvisioningState', operation_group='agent_pools')
102-
return [AgentPoolStatus.succeeded.value]
103-
104-
105-
def get_finished_agentpool_status(cmd):
106-
AgentPoolStatus = cmd.get_models('ProvisioningState', operation_group='agent_pools')
107-
return [AgentPoolStatus.succeeded.value,
108-
AgentPoolStatus.failed.value,
109-
AgentPoolStatus.canceled.value]
99+
def get_finished_agentpool_status():
100+
from azure.mgmt.containerregistrytasks.models import ProvisioningState
101+
return [ProvisioningState.succeeded.value,
102+
ProvisioningState.failed.value,
103+
ProvisioningState.canceled.value]

src/azure-cli/azure/cli/command_modules/acr/_params.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,8 @@ def load_arguments(self, _): # pylint: disable=too-many-statements
7777
TokenStatus, ZoneRedundancy, AutoGeneratedDomainNameLabelScope = self.get_models(
7878
'PasswordName', 'DefaultAction', 'PolicyStatus', 'WebhookAction', 'WebhookStatus',
7979
'TokenStatus', 'ZoneRedundancy', 'AutoGeneratedDomainNameLabelScope')
80-
TaskStatus, BaseImageTriggerType, SourceRegistryLoginMode, UpdateTriggerPayloadType = self.get_models(
81-
'TaskStatus', 'BaseImageTriggerType', 'SourceRegistryLoginMode', 'UpdateTriggerPayloadType', operation_group='tasks')
82-
RunStatus = self.get_models('RunStatus', operation_group='runs')
80+
from azure.mgmt.containerregistrytasks.models import (
81+
TaskStatus, BaseImageTriggerType, SourceRegistryLoginMode, UpdateTriggerPayloadType, RunStatus)
8382

8483
with self.argument_context('acr') as c:
8584
c.argument('tags', arg_type=tags_type)

0 commit comments

Comments
 (0)