Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package azure-cli-core for openSUSE:Factory checked in at 2025-06-04 20:29:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/azure-cli-core (Old) and /work/SRC/openSUSE:Factory/.azure-cli-core.new.16005 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-core" Wed Jun 4 20:29:30 2025 rev:81 rq:1282708 version:2.73.0 Changes: -------- --- /work/SRC/openSUSE:Factory/azure-cli-core/azure-cli-core.changes 2025-05-06 16:43:34.009614735 +0200 +++ /work/SRC/openSUSE:Factory/.azure-cli-core.new.16005/azure-cli-core.changes 2025-06-04 20:29:38.291679582 +0200 @@ -1,0 +2,8 @@ +Wed Jun 4 10:18:57 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- New upstream release + + Version 2.73.0 + + For detailed information about changes see the + HISTORY.rst file provided with this package + +------------------------------------------------------------------- Old: ---- azure_cli_core-2.72.0.tar.gz New: ---- azure_cli_core-2.73.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ azure-cli-core.spec ++++++ --- /var/tmp/diff_new_pack.k2Wdp9/_old 2025-06-04 20:29:38.863703280 +0200 +++ /var/tmp/diff_new_pack.k2Wdp9/_new 2025-06-04 20:29:38.867703446 +0200 @@ -24,7 +24,7 @@ %global _sitelibdir %{%{pythons}_sitelib} Name: azure-cli-core -Version: 2.72.0 +Version: 2.73.0 Release: 0 Summary: Microsoft Azure CLI Core Module License: MIT ++++++ azure_cli_core-2.72.0.tar.gz -> azure_cli_core-2.73.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/HISTORY.rst new/azure_cli_core-2.73.0/HISTORY.rst --- old/azure_cli_core-2.72.0/HISTORY.rst 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/HISTORY.rst 2025-05-13 13:09:47.000000000 +0200 @@ -3,6 +3,11 @@ Release History =============== +2.73.0 +++++++ +* [BREAKING CHANGE] Remove azure stack profiles `2020-09-01-hybrid`, `2019-03-01-hybrid`, `2018-03-01-hybrid` and `2017-03-09-profile` (#31307) +* Use MSAL for managed identity authentication (#25959) + 2.72.0 ++++++ * Minor fixes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/PKG-INFO new/azure_cli_core-2.73.0/PKG-INFO --- old/azure_cli_core-2.72.0/PKG-INFO 2025-04-28 11:28:40.545786100 +0200 +++ new/azure_cli_core-2.73.0/PKG-INFO 2025-05-13 13:10:28.116465000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: azure-cli-core -Version: 2.72.0 +Version: 2.73.0 Summary: Microsoft Azure Command-Line Tools Core Module Home-page: https://github.com/Azure/azure-cli Author: Microsoft Corporation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/__init__.py new/azure_cli_core-2.73.0/azure/cli/core/__init__.py --- old/azure_cli_core-2.72.0/azure/cli/core/__init__.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/__init__.py 2025-05-13 13:09:47.000000000 +0200 @@ -4,7 +4,7 @@ # -------------------------------------------------------------------------------------------- # pylint: disable=line-too-long -__version__ = "2.72.0" +__version__ = "2.73.0" import os import sys diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/_breaking_change.py new/azure_cli_core-2.73.0/azure/cli/core/_breaking_change.py --- old/azure_cli_core-2.72.0/azure/cli/core/_breaking_change.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/_breaking_change.py 2025-05-13 13:09:47.000000000 +0200 @@ -3,13 +3,3 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- # pylint: disable=line-too-long - -from azure.cli.core.breaking_change import AzCLIOtherChange, register_conditional_breaking_change - -register_conditional_breaking_change( - tag='CloudProfilesDeprecate', - breaking_change=AzCLIOtherChange( - cmd='', - message="Starting from 2.73.0, the azure stack profiles ('2017-03-09-profile', '2018-03-01-hybrid', '2019-03-01-hybrid', '2020-09-01-hybrid') will be deprecated. Please use the 'latest' profile or the CLI 2.66.* (LTS) version instead." - ) -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/_profile.py new/azure_cli_core-2.73.0/azure/cli/core/_profile.py --- old/azure_cli_core-2.72.0/azure/cli/core/_profile.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/_profile.py 2025-05-13 13:09:47.000000000 +0200 @@ -220,27 +220,20 @@ self._set_subscriptions(consolidated) return deepcopy(consolidated) - def login_with_managed_identity(self, identity_id=None, client_id=None, object_id=None, resource_id=None, - allow_no_subscriptions=None): - if _use_msal_managed_identity(self.cli_ctx): - if identity_id: - raise CLIError('--username is not supported by MSAL managed identity. ' - 'Use --client-id, --object-id or --resource-id instead.') - return self.login_with_managed_identity_msal( - client_id=client_id, object_id=object_id, resource_id=resource_id, - allow_no_subscriptions=allow_no_subscriptions) - + def login_with_managed_identity_msrestazure(self, client_id=None, object_id=None, resource_id=None, + allow_no_subscriptions=None): + # Old way of using msrestazure for managed identity import jwt - from azure.mgmt.core.tools import is_valid_resource_id from azure.cli.core.auth.adal_authentication import MSIAuthenticationWrapper resource = self.cli_ctx.cloud.endpoints.active_directory_resource_id - id_arg_count = len([arg for arg in (client_id, object_id, resource_id, identity_id) if arg]) + id_arg_count = len([arg for arg in (client_id, object_id, resource_id) if arg]) if id_arg_count > 1: - raise CLIError('Usage error: Provide only one of --client-id, --object-id, --resource-id, or --username.') + raise CLIError('Usage error: Provide only one of --client-id, --object-id, --resource-id.') if id_arg_count == 0: identity_type = MsiAccountTypes.system_assigned + identity_id = None msi_creds = MSIAuthenticationWrapper(resource=resource) elif client_id: identity_type = MsiAccountTypes.user_assigned_client_id @@ -254,37 +247,6 @@ identity_type = MsiAccountTypes.user_assigned_resource_id identity_id = resource_id msi_creds = MSIAuthenticationWrapper(resource=resource, msi_res_id=resource_id) - # The old way of re-using the same --username for 3 types of ID - elif identity_id: - if is_valid_resource_id(identity_id): - msi_creds = MSIAuthenticationWrapper(resource=resource, msi_res_id=identity_id) - identity_type = MsiAccountTypes.user_assigned_resource_id - else: - authenticated = False - from azure.cli.core.azclierror import AzureResponseError - try: - msi_creds = MSIAuthenticationWrapper(resource=resource, client_id=identity_id) - identity_type = MsiAccountTypes.user_assigned_client_id - authenticated = True - except AzureResponseError as ex: - if 'http error: 400, reason: Bad Request' in ex.error_msg: - logger.info('Sniff: not an MSI client id') - else: - raise - - if not authenticated: - try: - identity_type = MsiAccountTypes.user_assigned_object_id - msi_creds = MSIAuthenticationWrapper(resource=resource, object_id=identity_id) - authenticated = True - except AzureResponseError as ex: - if 'http error: 400, reason: Bad Request' in ex.error_msg: - logger.info('Sniff: not an MSI object id') - else: - raise - - if not authenticated: - raise CLIError('Failed to connect to MSI, check your managed service identity id.') token_entry = msi_creds.token token = token_entry['access_token'] @@ -308,8 +270,13 @@ self._set_subscriptions(consolidated) return deepcopy(consolidated) - def login_with_managed_identity_msal(self, client_id=None, object_id=None, resource_id=None, - allow_no_subscriptions=None): + def login_with_managed_identity(self, client_id=None, object_id=None, resource_id=None, + allow_no_subscriptions=None): + if not _use_msal_managed_identity(self.cli_ctx): + return self.login_with_managed_identity_msrestazure( + client_id=client_id, object_id=object_id, resource_id=resource_id, + allow_no_subscriptions=allow_no_subscriptions) + import jwt from .auth.constants import ACCESS_TOKEN @@ -1020,10 +987,8 @@ def _use_msal_managed_identity(cli_ctx): - # This indicates an Azure Arc-enabled server - from msal.managed_identity import get_managed_identity_source, AZURE_ARC from azure.cli.core.telemetry import set_use_msal_managed_identity - # PREVIEW: Use core.use_msal_managed_identity=true to enable managed identity authentication with MSAL - use_msal_managed_identity = cli_ctx.config.getboolean('core', 'use_msal_managed_identity', fallback=False) + # Use core.use_msal_managed_identity=false to use the old msrestazure implementation + use_msal_managed_identity = cli_ctx.config.getboolean('core', 'use_msal_managed_identity', fallback=True) set_use_msal_managed_identity(use_msal_managed_identity) - return use_msal_managed_identity or get_managed_identity_source() == AZURE_ARC + return use_msal_managed_identity diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/auth/binary_cache.py new/azure_cli_core-2.73.0/azure/cli/core/auth/binary_cache.py --- old/azure_cli_core-2.72.0/azure/cli/core/auth/binary_cache.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/auth/binary_cache.py 2025-05-13 13:09:47.000000000 +0200 @@ -42,10 +42,11 @@ logger.debug("load: %s", self.filename) try: self.data = self._load() - except (pickle.UnpicklingError, EOFError) as ex: - # We still get exception after retry: + except Exception as ex: # pylint: disable=broad-exception-caught + # If we still get exception after retry, ignore all types of exceptions and use a new cache. # - pickle.UnpicklingError is caused by corrupted cache file, perhaps due to concurrent writes. # - EOFError is caused by empty cache file created by other az instance, but hasn't been filled yet. + # - AttributeError is caused by reading cache generated by different MSAL versions. logger.debug("Failed to load cache: %s. Using a fresh one.", ex) self.data = {} # Ignore a non-existing or corrupted http_cache diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/auth/msal_credentials.py new/azure_cli_core-2.73.0/azure/cli/core/auth/msal_credentials.py --- old/azure_cli_core-2.72.0/azure/cli/core/auth/msal_credentials.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/auth/msal_credentials.py 2025-05-13 13:09:47.000000000 +0200 @@ -68,25 +68,32 @@ # browser is available. if 'data' in kwargs: logger.warning(ex) - logger.warning("\nThe default web browser has been opened at %s for scope '%s'. " - "Please continue the login in the web browser.", - self._msal_app.authority.authorization_endpoint, ' '.join(scopes)) - - from .util import read_response_templates - success_template, error_template = read_response_templates() - - result = self._msal_app.acquire_token_interactive( - scopes, login_hint=self._account['username'], - port=8400 if self._msal_app.authority.is_adfs else None, - success_template=success_template, error_template=error_template, **kwargs) - check_result(result) - + result = self._acquire_token_interactive(scopes, **kwargs) # For other scenarios like Storage Conditional Access MFA step-up, do not # launch browser, but show the error message and `az login` command instead. else: raise return result + def _acquire_token_interactive(self, scopes, **kwargs): + from .util import read_response_templates + success_template, error_template = read_response_templates() + + def _prompt_launching_ui(ui=None, **_): + logger.warning( + "Interactively acquiring token for scope '%s'. Continue the login in the %s.", + ' '.join(scopes), 'web browser' if ui == 'browser' else 'pop-up window') + + result = self._msal_app.acquire_token_interactive( + scopes, login_hint=self._account['username'], + port=8400 if self._msal_app.authority.is_adfs else None, + success_template=success_template, error_template=error_template, + parent_window_handle=self._msal_app.CONSOLE_WINDOW_HANDLE, + on_before_launching_ui=_prompt_launching_ui, + **kwargs) + check_result(result) + return result + class ServicePrincipalCredential: # pylint: disable=too-few-public-methods diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/breaking_change.py new/azure_cli_core-2.73.0/azure/cli/core/breaking_change.py --- old/azure_cli_core-2.72.0/azure/cli/core/breaking_change.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/breaking_change.py 2025-05-13 13:09:47.000000000 +0200 @@ -15,8 +15,8 @@ logger = get_logger() -NEXT_BREAKING_CHANGE_RELEASE = '2.73.0' -NEXT_BREAKING_CHANGE_DATE = 'May 2025' +NEXT_BREAKING_CHANGE_RELEASE = '2.79.0' +NEXT_BREAKING_CHANGE_DATE = 'Nov 2025' DEFAULT_BREAKING_CHANGE_TAG = '[Breaking Change]' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/cloud.py new/azure_cli_core-2.73.0/azure/cli/core/cloud.py --- old/azure_cli_core-2.72.0/azure/cli/core/cloud.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/cloud.py 2025-05-13 13:09:47.000000000 +0200 @@ -583,6 +583,7 @@ except configparser.MissingSectionHeaderError: os.remove(CLOUD_CONFIG_FILE) logger.warning("'%s' is in bad format and has been removed.", CLOUD_CONFIG_FILE) + active_cloud_name = get_active_cloud_name(cli_ctx) for section in config.sections(): c = Cloud(section) for option in config.options(section): @@ -596,13 +597,26 @@ # If profile isn't set, use latest setattr(c, 'profile', 'latest') if c.profile not in API_PROFILES: - raise CLIError('Profile {} does not exist or is not supported.'.format(c.profile)) + if c.profile in ( + "2017-03-09-profile", + "2018-03-01-hybrid", + "2019-03-01-hybrid", + "2020-09-01-hybrid", + ): + if c.name == active_cloud_name: + # only apply to the active cloud + logger.error( + "The azure stack profile '%s' has been deprecated and removed, using the 'latest' profile instead.\n" + "To continue using Azure Stack, please install the Azure CLI `2.66.*` (LTS) version. For more details, refer to: https://learn.microsoft.com/en-us/cli/azure/whats-new-overview#important-notice-for-azure-stack-hub-customers", c.profile + ) + c.profile = 'latest' + else: + raise CLIError('Profile {} does not exist or is not supported.'.format(c.profile)) if not c.endpoints.has_endpoint_set('management') and \ c.endpoints.has_endpoint_set('resource_manager'): # If management endpoint not set, use resource manager endpoint c.endpoints.management = c.endpoints.resource_manager clouds.append(c) - active_cloud_name = get_active_cloud_name(cli_ctx) for c in clouds: if c.name == active_cloud_name: c.is_active = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/profiles/__init__.py new/azure_cli_core-2.73.0/azure/cli/core/profiles/__init__.py --- old/azure_cli_core-2.72.0/azure/cli/core/profiles/__init__.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/profiles/__init__.py 2025-05-13 13:09:47.000000000 +0200 @@ -94,10 +94,6 @@ # API Profiles currently supported in the CLI. API_PROFILES = { 'latest': AZURE_API_PROFILES['latest'], - '2017-03-09-profile': AZURE_API_PROFILES['2017-03-09-profile'], - '2018-03-01-hybrid': AZURE_API_PROFILES['2018-03-01-hybrid'], - '2019-03-01-hybrid': AZURE_API_PROFILES['2019-03-01-hybrid'], - '2020-09-01-hybrid': AZURE_API_PROFILES['2020-09-01-hybrid'] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure/cli/core/profiles/_shared.py new/azure_cli_core-2.73.0/azure/cli/core/profiles/_shared.py --- old/azure_cli_core-2.72.0/azure/cli/core/profiles/_shared.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure/cli/core/profiles/_shared.py 2025-05-13 13:09:47.000000000 +0200 @@ -191,15 +191,14 @@ 'managed_hsms': '2024-11-01' }), ResourceType.MGMT_AUTHORIZATION: SDKProfile('2022-04-01', { - 'classic_administrators': '2015-06-01', 'role_definitions': '2022-05-01-preview', 'provider_operations_metadata': '2018-01-01-preview' }), - ResourceType.MGMT_CONTAINERREGISTRY: SDKProfile('2024-11-01-preview', { - 'agent_pools': '2019-06-01-preview', - 'tasks': '2019-06-01-preview', - 'task_runs': '2019-06-01-preview', - 'runs': '2019-06-01-preview', + ResourceType.MGMT_CONTAINERREGISTRY: SDKProfile('2025-03-01-preview', { + 'agent_pools': '2025-03-01-preview', + 'tasks': '2025-03-01-preview', + 'task_runs': '2025-03-01-preview', + 'runs': '2025-03-01-preview', 'network_rule': '2021-08-01-preview', 'cache_rules': '2023-01-01-preview', 'credential_sets': '2023-01-01-preview' @@ -221,39 +220,7 @@ ResourceType.DATA_COSMOS_TABLE: '2017-04-17', ResourceType.MGMT_SERVICEBUS: '2022-10-01-preview', ResourceType.MGMT_EVENTHUB: '2022-01-01-preview', - ResourceType.MGMT_MONITOR: SDKProfile('2019-06-01', { - 'action_groups': '2022-06-01', - 'activity_log_alerts': '2017-04-01', - 'activity_logs': '2015-04-01', - 'alert_rule_incidents': '2016-03-01', - 'alert_rules': '2016-03-01', - 'autoscale_settings': '2022-10-01', - 'baseline': '2018-09-01', - 'baselines': '2019-03-01', - 'diagnostic_settings': '2021-05-01-preview', - 'diagnostic_settings_category': '2017-05-01-preview', - 'event_categories': '2015-04-01', - 'guest_diagnostics_settings': '2018-06-01-preview', - 'guest_diagnostics_settings_association': '2018-06-01-preview', - 'log_profiles': '2016-03-01', - 'metric_alerts': '2018-03-01', - 'metric_alerts_status': '2018-03-01', - 'metric_baseline': '2018-09-01', - 'metric_definitions': '2018-01-01', - 'metric_namespaces': '2017-12-01-preview', - 'metrics': '2018-01-01', - 'operations': '2015-04-01', - 'scheduled_query_rules': '2018-04-16', - 'service_diagnostic_settings': '2016-09-01', - 'tenant_activity_logs': '2015-04-01', - 'vm_insights': '2018-11-27-preview', - 'private_link_resources': '2019-10-17-preview', - 'private_link_scoped_resources': '2019-10-17-preview', - 'private_link_scope_operation_status': '2019-10-17-preview', - 'private_link_scopes': '2019-10-17-preview', - 'private_endpoint_connections': '2019-10-17-preview', - 'subscription_diagnostic_settings': '2017-05-01-preview' - }), + ResourceType.MGMT_MONITOR: None, ResourceType.MGMT_MSI: '2023-01-31', ResourceType.MGMT_APPSERVICE: '2023-01-01', ResourceType.MGMT_IOTHUB: '2023-06-30-preview', @@ -264,162 +231,6 @@ ResourceType.MGMT_CUSTOMLOCATION: '2021-03-15-preview', ResourceType.MGMT_CONTAINERSERVICE: SDKProfile('2025-02-01'), ResourceType.MGMT_APPCONTAINERS: '2022-10-01', - }, - '2020-09-01-hybrid': { - ResourceType.MGMT_STORAGE: '2019-06-01', - ResourceType.MGMT_NETWORK: '2018-11-01', - ResourceType.MGMT_COMPUTE: SDKProfile('2020-06-01', { - 'resource_skus': '2019-04-01', - 'disks': '2019-07-01', - 'disk_encryption_sets': '2019-07-01', - 'disk_accesses': '2020-05-01', - 'snapshots': '2019-07-01', - 'galleries': '2019-12-01', - 'gallery_images': '2019-12-01', - 'gallery_image_versions': '2019-12-01', - 'virtual_machine_scale_sets': '2020-06-01' - }), - ResourceType.MGMT_KEYVAULT: '2016-10-01', - ResourceType.MGMT_MSI: '2018-11-30', - ResourceType.MGMT_RESOURCE_FEATURES: '2021-07-01', - ResourceType.MGMT_RESOURCE_LINKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_LOCKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_POLICY: '2016-12-01', - ResourceType.MGMT_RESOURCE_RESOURCES: '2019-10-01', - ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2016-06-01', - ResourceType.MGMT_RESOURCE_TEMPLATESPECS: '2015-01-01', - ResourceType.MGMT_RESOURCE_PRIVATELINKS: '2020-05-01', - ResourceType.MGMT_RESOURCE_MANAGEDAPPLICATIONS: '2019-07-01', - ResourceType.MGMT_NETWORK_DNS: '2016-04-01', - ResourceType.MGMT_AUTHORIZATION: SDKProfile('2015-07-01', { - 'classic_administrators': '2015-06-01', - 'policy_assignments': '2016-12-01', - 'policy_definitions': '2016-12-01' - }), - # The order does make things different. - # Please keep ResourceType.DATA_KEYVAULT_KEYS before ResourceType.DATA_KEYVAULT - ResourceType.DATA_KEYVAULT_CERTIFICATES: None, - ResourceType.DATA_KEYVAULT_KEYS: None, - ResourceType.DATA_KEYVAULT_SECRETS: None, - ResourceType.DATA_STORAGE: '2018-11-09', - ResourceType.DATA_STORAGE_BLOB: '2019-07-07', - ResourceType.DATA_STORAGE_FILEDATALAKE: '2019-07-07', - ResourceType.DATA_STORAGE_FILESHARE: '2019-07-07', - ResourceType.DATA_STORAGE_QUEUE: '2019-07-07', - ResourceType.DATA_COSMOS_TABLE: '2017-04-17', - ResourceType.MGMT_APPSERVICE: '2018-02-01', - ResourceType.MGMT_EVENTHUB: '2022-01-01-preview', - ResourceType.MGMT_SERVICEBUS: '2022-10-01-preview', - ResourceType.MGMT_IOTHUB: '2019-07-01-preview', - ResourceType.MGMT_DATABOXEDGE: '2019-08-01', - ResourceType.MGMT_CONTAINERREGISTRY: '2019-05-01', - ResourceType.MGMT_CONTAINERSERVICE: SDKProfile('2020-11-01', { - 'container_services': '2017-07-01', - 'open_shift_managed_clusters': '2019-09-30-preview' - }) - }, - '2019-03-01-hybrid': { - ResourceType.MGMT_STORAGE: '2017-10-01', - ResourceType.MGMT_NETWORK: '2017-10-01', - ResourceType.MGMT_COMPUTE: SDKProfile('2017-12-01', { - 'resource_skus': '2017-09-01', - 'disks': '2017-03-30', - 'snapshots': '2017-03-30' - }), - ResourceType.MGMT_MSI: '2018-11-30', - ResourceType.MGMT_RESOURCE_LINKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_LOCKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_POLICY: '2016-12-01', - ResourceType.MGMT_RESOURCE_RESOURCES: '2018-05-01', - ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2016-06-01', - ResourceType.MGMT_RESOURCE_TEMPLATESPECS: '2015-01-01', - ResourceType.MGMT_RESOURCE_PRIVATELINKS: '2020-05-01', - ResourceType.MGMT_RESOURCE_MANAGEDAPPLICATIONS: '2019-07-01', - ResourceType.MGMT_NETWORK_DNS: '2016-04-01', - ResourceType.MGMT_KEYVAULT: '2016-10-01', - ResourceType.MGMT_AUTHORIZATION: SDKProfile('2015-07-01', { - 'classic_administrators': '2015-06-01', - 'policy_assignments': '2016-12-01', - 'policy_definitions': '2016-12-01' - }), - # The order does make things different. - # Please keep ResourceType.DATA_KEYVAULT_KEYS before ResourceType.DATA_KEYVAULT - ResourceType.DATA_KEYVAULT_CERTIFICATES: None, - ResourceType.DATA_KEYVAULT_KEYS: None, - ResourceType.DATA_KEYVAULT_SECRETS: None, - ResourceType.DATA_STORAGE: '2017-11-09', - ResourceType.DATA_STORAGE_BLOB: '2017-11-09', - ResourceType.DATA_STORAGE_FILEDATALAKE: '2017-11-09', - ResourceType.DATA_STORAGE_FILESHARE: '2017-11-09', - ResourceType.DATA_STORAGE_QUEUE: '2017-11-09', - ResourceType.DATA_COSMOS_TABLE: '2017-04-17', - # Full MultiAPI support is not done in AppService, the line below is merely - # to have commands show up in the hybrid profile which happens to have the latest - # API versions - ResourceType.MGMT_APPSERVICE: '2018-02-01', - ResourceType.MGMT_EVENTHUB: '2022-01-01-preview', - ResourceType.MGMT_SERVICEBUS: '2022-10-01-preview', - ResourceType.MGMT_IOTHUB: '2019-03-22', - ResourceType.MGMT_DATABOXEDGE: '2019-08-01' - }, - '2018-03-01-hybrid': { - ResourceType.MGMT_STORAGE: '2016-01-01', - ResourceType.MGMT_NETWORK: '2017-10-01', - ResourceType.MGMT_COMPUTE: SDKProfile('2017-03-30'), - ResourceType.MGMT_MSI: '2018-11-30', - ResourceType.MGMT_RESOURCE_LINKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_LOCKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_POLICY: '2016-12-01', - ResourceType.MGMT_RESOURCE_RESOURCES: '2018-02-01', - ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2016-06-01', - ResourceType.MGMT_RESOURCE_TEMPLATESPECS: '2015-01-01', - ResourceType.MGMT_RESOURCE_PRIVATELINKS: '2020-05-01', - ResourceType.MGMT_RESOURCE_MANAGEDAPPLICATIONS: '2019-07-01', - ResourceType.MGMT_NETWORK_DNS: '2016-04-01', - ResourceType.MGMT_KEYVAULT: '2016-10-01', - ResourceType.MGMT_AUTHORIZATION: SDKProfile('2015-07-01', { - 'classic_administrators': '2015-06-01' - }), - # The order does make things different. - # Please keep ResourceType.DATA_KEYVAULT_KEYS before ResourceType.DATA_KEYVAULT - ResourceType.DATA_KEYVAULT_CERTIFICATES: None, - ResourceType.DATA_KEYVAULT_KEYS: None, - ResourceType.DATA_KEYVAULT_SECRETS: None, - ResourceType.DATA_STORAGE: '2017-04-17', - ResourceType.DATA_STORAGE_BLOB: '2017-04-17', - ResourceType.DATA_STORAGE_FILEDATALAKE: '2017-04-17', - ResourceType.DATA_STORAGE_FILESHARE: '2017-04-17', - ResourceType.DATA_STORAGE_QUEUE: '2017-04-17', - ResourceType.DATA_COSMOS_TABLE: '2017-04-17' - }, - '2017-03-09-profile': { - ResourceType.MGMT_STORAGE: '2016-01-01', - ResourceType.MGMT_NETWORK: '2015-06-15', - ResourceType.MGMT_COMPUTE: SDKProfile('2016-03-30'), - ResourceType.MGMT_MSI: '2018-11-30', - ResourceType.MGMT_RESOURCE_LINKS: '2016-09-01', - ResourceType.MGMT_RESOURCE_LOCKS: '2015-01-01', - ResourceType.MGMT_RESOURCE_POLICY: '2015-10-01-preview', - ResourceType.MGMT_RESOURCE_RESOURCES: '2016-02-01', - ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2016-06-01', - ResourceType.MGMT_RESOURCE_PRIVATELINKS: '2020-05-01', - ResourceType.MGMT_RESOURCE_TEMPLATESPECS: '2015-01-01', - ResourceType.MGMT_RESOURCE_MANAGEDAPPLICATIONS: '2019-07-01', - ResourceType.MGMT_NETWORK_DNS: '2016-04-01', - ResourceType.MGMT_KEYVAULT: '2016-10-01', - ResourceType.MGMT_AUTHORIZATION: SDKProfile('2015-07-01', { - 'classic_administrators': '2015-06-01' - }), - # The order does make things different. - # Please keep ResourceType.DATA_KEYVAULT_KEYS before ResourceType.DATA_KEYVAULT - ResourceType.DATA_KEYVAULT_CERTIFICATES: None, - ResourceType.DATA_KEYVAULT_KEYS: None, - ResourceType.DATA_KEYVAULT_SECRETS: None, - ResourceType.DATA_STORAGE: '2015-04-05', - ResourceType.DATA_STORAGE_BLOB: '2015-04-05', - ResourceType.DATA_STORAGE_FILEDATALAKE: '2015-04-05', - ResourceType.DATA_STORAGE_FILESHARE: '2015-04-05', - ResourceType.DATA_STORAGE_QUEUE: '2015-04-05' } } @@ -427,6 +238,10 @@ # We should avoid using ad hoc API versions, # use the version in a profile as much as possible. AD_HOC_API_VERSIONS = { + ResourceType.MGMT_IOTHUB: { + # src/azure-cli/azure/cli/command_modules/iot/custom.py#iot_hub_devicestream_show + 'iot_hub_resource': '2019-07-01-preview', + }, ResourceType.MGMT_APPSERVICE: { # src/azure-cli/azure/cli/command_modules/appservice/_constants.py:68 'app_service_certificate_orders': '2022-09-01' @@ -440,6 +255,8 @@ 'VERSION_2022_02_01_PREVIEW': "2022-02-01-preview", 'VERSION_2023_11_01_PREVIEW': "2023-11-01-preview", 'VERSION_2024_11_01_PREVIEW': "2024-11-01-preview", + 'VERSION_2025_03_01_PREVIEW': "2025-03-01-preview", + 'VERSION_2025_04_01': "2025-04-01" }, ResourceType.MGMT_CONTAINERSERVICE: { # src/azure-cli/azure/cli/command_modules/acs/tests/latest/test_custom.py:50 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/azure_cli_core.egg-info/PKG-INFO new/azure_cli_core-2.73.0/azure_cli_core.egg-info/PKG-INFO --- old/azure_cli_core-2.72.0/azure_cli_core.egg-info/PKG-INFO 2025-04-28 11:28:40.000000000 +0200 +++ new/azure_cli_core-2.73.0/azure_cli_core.egg-info/PKG-INFO 2025-05-13 13:10:28.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: azure-cli-core -Version: 2.72.0 +Version: 2.73.0 Summary: Microsoft Azure Command-Line Tools Core Module Home-page: https://github.com/Azure/azure-cli Author: Microsoft Corporation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure_cli_core-2.72.0/setup.py new/azure_cli_core-2.73.0/setup.py --- old/azure_cli_core-2.72.0/setup.py 2025-04-28 11:28:01.000000000 +0200 +++ new/azure_cli_core-2.73.0/setup.py 2025-05-13 13:09:47.000000000 +0200 @@ -8,7 +8,7 @@ from codecs import open from setuptools import setup, find_packages -VERSION = "2.72.0" +VERSION = "2.73.0" # If we have source, validate that our version numbers match # This should prevent uploading releases with mismatched versions.