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 2026-02-09 13:43:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-core (Old)
 and      /work/SRC/openSUSE:Factory/.azure-cli-core.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "azure-cli-core"

Mon Feb  9 13:43:17 2026 rev:91 rq:1332001 version:2.83.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-core/azure-cli-core.changes    
2026-01-14 16:22:52.704418447 +0100
+++ /work/SRC/openSUSE:Factory/.azure-cli-core.new.1670/azure-cli-core.changes  
2026-02-09 13:43:26.540120536 +0100
@@ -1,0 +2,9 @@
+Fri Feb  6 09:29:44 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- New upstream release
+  + Version 2.83.0
+  + For detailed information about changes see the
+    HISTORY.rst file provided with this package
+- Update Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  azure_cli_core-2.82.0.tar.gz

New:
----
  azure_cli_core-2.83.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ azure-cli-core.spec ++++++
--- /var/tmp/diff_new_pack.3nwzPy/_old  2026-02-09 13:43:27.360154657 +0100
+++ /var/tmp/diff_new_pack.3nwzPy/_new  2026-02-09 13:43:27.364154823 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package azure-cli-core
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
 %global _sitelibdir %{%{pythons}_sitelib}
 
 Name:           azure-cli-core
-Version:        2.82.0
+Version:        2.83.0
 Release:        0
 Summary:        Microsoft Azure CLI Core Module
 License:        MIT
@@ -41,8 +41,8 @@
 Requires:       %{pythons}-PyJWT >= 2.1.0
 Requires:       %{pythons}-argcomplete < 4.0
 Requires:       %{pythons}-argcomplete >= 3.5.2
-Requires:       %{pythons}-azure-core >= 1.37.0
 Requires:       %{pythons}-azure-core < 2.0.0
+Requires:       %{pythons}-azure-core >= 1.38.0
 Requires:       %{pythons}-azure-mgmt-core < 2.0.0
 Requires:       %{pythons}-azure-mgmt-core >= 1.2.0
 Requires:       %{pythons}-azure-nspkg >= 3.0.0
@@ -54,7 +54,7 @@
 Requires:       %{pythons}-knack >= 0.11.0
 Requires:       %{pythons}-microsoft-security-utilities-secret-masker >= 
1.0.0~b4
 Requires:       %{pythons}-msal < 2.0.0
-Requires:       %{pythons}-msal >= 1.34.0~b1
+Requires:       %{pythons}-msal >= 1.35.0~b1
 Requires:       %{pythons}-msal-extensions < 2.0.0
 Requires:       %{pythons}-msal-extensions >= 1.2.0
 Requires:       %{pythons}-packaging >= 20.9

++++++ azure_cli_core-2.82.0.tar.gz -> azure_cli_core-2.83.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/HISTORY.rst 
new/azure_cli_core-2.83.0/HISTORY.rst
--- old/azure_cli_core-2.82.0/HISTORY.rst       2026-01-06 08:38:42.000000000 
+0100
+++ new/azure_cli_core-2.83.0/HISTORY.rst       2026-01-27 08:23:53.000000000 
+0100
@@ -3,6 +3,14 @@
 Release History
 ===============
 
+2.83.0
+++++++
+* Resolve CVE-2025-69277 (#32610)
+* Resolve CVE-2026-21441 (#32617)
+* Resolve CVE-2025-12084 (#32662)
+* Resolve CVE-2026-21226 (#32635)
+* Replace GitHub URLs with AME Storage for network isolated requirements 
(#32677)
+
 2.82.0
 ++++++
 * Resolve CVE-2025-66418 (#32506)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/PKG-INFO 
new/azure_cli_core-2.83.0/PKG-INFO
--- old/azure_cli_core-2.82.0/PKG-INFO  2026-01-06 08:39:30.013359000 +0100
+++ new/azure_cli_core-2.83.0/PKG-INFO  2026-01-27 08:24:42.918434900 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: azure-cli-core
-Version: 2.82.0
+Version: 2.83.0
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -20,7 +20,7 @@
 License-File: LICENSE.txt
 Requires-Dist: argcomplete~=3.5.2
 Requires-Dist: azure-cli-telemetry==1.1.0.*
-Requires-Dist: azure-core~=1.37.0
+Requires-Dist: azure-core~=1.38.0
 Requires-Dist: azure-mgmt-core<2,>=1.2.0
 Requires-Dist: cryptography
 Requires-Dist: distro; sys_platform == "linux"
@@ -29,8 +29,8 @@
 Requires-Dist: knack~=0.11.0
 Requires-Dist: microsoft-security-utilities-secret-masker~=1.0.0b4
 Requires-Dist: msal-extensions==1.2.0
-Requires-Dist: msal[broker]==1.34.0b1; sys_platform == "win32"
-Requires-Dist: msal==1.34.0b1; sys_platform != "win32"
+Requires-Dist: msal[broker]==1.35.0b1; sys_platform == "win32"
+Requires-Dist: msal==1.35.0b1; sys_platform != "win32"
 Requires-Dist: packaging>=20.9
 Requires-Dist: pkginfo>=1.5.0.1
 Requires-Dist: psutil>=5.9; sys_platform != "cygwin"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/azure/cli/core/__init__.py 
new/azure_cli_core-2.83.0/azure/cli/core/__init__.py
--- old/azure_cli_core-2.82.0/azure/cli/core/__init__.py        2026-01-06 
08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/__init__.py        2026-01-27 
08:23:53.000000000 +0100
@@ -4,7 +4,7 @@
 # 
--------------------------------------------------------------------------------------------
 # pylint: disable=line-too-long
 
-__version__ = "2.82.0"
+__version__ = "2.83.0"
 
 import os
 import sys
@@ -26,6 +26,8 @@
 EXCLUDED_PARAMS = ['self', 'raw', 'polling', 'custom_headers', 
'operation_config',
                    'content_version', 'kwargs', 'client', 'no_wait']
 EVENT_FAILED_EXTENSION_LOAD = 'MainLoader.OnFailedExtensionLoad'
+# Marker used by CommandIndex.get() to signal top-level tab completion 
optimization
+TOP_LEVEL_COMPLETION_MARKER = '__top_level_completion__'
 
 # [Reserved, in case of future usage]
 # Modules that will always be loaded. They don't expose commands but hook into 
CLI core.
@@ -208,6 +210,24 @@
         self.cmd_to_loader_map = {}
         self.loaders = []
 
+    def _create_stub_commands_for_completion(self, command_names):
+        """Create stub commands for top-level tab completion optimization.
+
+        Stub commands allow argcomplete to parse command names without loading 
modules.
+
+        :param command_names: List of command names to create stubs for
+        """
+        from azure.cli.core.commands import AzCliCommand
+
+        def _stub_handler(*_args, **_kwargs):
+            """Stub command handler used only for argument completion."""
+            return None
+
+        for cmd_name in command_names:
+            if cmd_name not in self.command_table:
+                # Stub commands only need names for argcomplete parser 
construction.
+                self.command_table[cmd_name] = AzCliCommand(self, cmd_name, 
_stub_handler)
+
     def _update_command_definitions(self):
         for cmd_name in self.command_table:
             loaders = self.cmd_to_loader_map[cmd_name]
@@ -434,9 +454,16 @@
             index_result = command_index.get(args)
             if index_result:
                 index_modules, index_extensions = index_result
+
+                if index_modules == TOP_LEVEL_COMPLETION_MARKER:
+                    self._create_stub_commands_for_completion(index_extensions)
+                    _update_command_table_from_extensions([], 
ALWAYS_LOADED_EXTENSIONS)
+                    return self.command_table
+
                 # Always load modules and extensions, because some of them 
(like those in
                 # ALWAYS_LOADED_EXTENSIONS) don't expose a command, but hooks 
into handlers in CLI core
                 _update_command_table_from_modules(args, index_modules)
+
                 # The index won't contain suppressed extensions
                 _update_command_table_from_extensions([], index_extensions)
 
@@ -484,7 +511,6 @@
             else:
                 logger.debug("No module found from index for '%s'", args)
 
-        # No module found from the index. Load all command modules and 
extensions
         logger.debug("Loading all modules and extensions")
         _update_command_table_from_modules(args)
 
@@ -580,6 +606,23 @@
             self.cloud_profile = cli_ctx.cloud.profile
         self.cli_ctx = cli_ctx
 
+    def _get_top_level_completion_commands(self):
+        """Get top-level command names for tab completion optimization.
+
+        Returns marker and list of top-level commands (e.g., 'network', 'vm') 
for creating
+        stub commands without module loading. Returns None if index is empty, 
triggering
+        fallback to full module loading.
+
+        :return: tuple of (TOP_LEVEL_COMPLETION_MARKER, list of top-level 
command names) or None
+        """
+        index = self.INDEX.get(self._COMMAND_INDEX) or {}
+        if not index:
+            logger.debug("Command index is empty, will fall back to loading 
all modules")
+            return None
+        top_level_commands = list(index.keys())
+        logger.debug("Top-level completion: %d commands available", 
len(top_level_commands))
+        return TOP_LEVEL_COMPLETION_MARKER, top_level_commands
+
     def get(self, args):
         """Get the corresponding module and extension list of a command.
 
@@ -599,6 +642,9 @@
         # Make sure the top-level command is provided, like `az version`.
         # Skip command index for `az` or `az --help`.
         if not args or args[0].startswith('-'):
+            # For top-level completion (az [tab])
+            if not args and self.cli_ctx.data.get('completer_active'):
+                return self._get_top_level_completion_commands()
             return None
 
         # Get the top-level command, like `network` in `network vnet create -h`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/azure/cli/core/cloud.py 
new/azure_cli_core-2.83.0/azure/cli/core/cloud.py
--- old/azure_cli_core-2.82.0/azure/cli/core/cloud.py   2026-01-06 
08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/cloud.py   2026-01-27 
08:23:53.000000000 +0100
@@ -373,7 +373,7 @@
         active_directory_graph_resource_id='https://graph.windows.net/',
         microsoft_graph_resource_id='https://graph.microsoft.com/',
         active_directory_data_lake_resource_id='https://datalake.azure.net/',
-        
vm_image_alias_doc='https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json',
+        
vm_image_alias_doc='https://azcliprod.blob.core.windows.net/cli/vm/aliases.json',
         media_resource_id='https://rest.media.azure.net',
         ossrdbms_resource_id='https://ossrdbms-aad.database.windows.net',
         app_insights_resource_id='https://api.applicationinsights.io',
@@ -410,7 +410,7 @@
         
active_directory_resource_id='https://management.core.chinacloudapi.cn/',
         active_directory_graph_resource_id='https://graph.chinacloudapi.cn/',
         microsoft_graph_resource_id='https://microsoftgraph.chinacloudapi.cn',
-        
vm_image_alias_doc='https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json',
+        
vm_image_alias_doc='https://azcliprod.blob.core.windows.net/cli/vm/aliases.json',
         media_resource_id='https://rest.media.chinacloudapi.cn',
         ossrdbms_resource_id='https://ossrdbms-aad.database.chinacloudapi.cn',
         app_insights_resource_id='https://api.applicationinsights.azure.cn',
@@ -444,7 +444,7 @@
         
active_directory_resource_id='https://management.core.usgovcloudapi.net/',
         active_directory_graph_resource_id='https://graph.microsoftazure.us/',
         microsoft_graph_resource_id='https://graph.microsoft.us/',
-        
vm_image_alias_doc='https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json',
+        
vm_image_alias_doc='https://azcliprod.blob.core.windows.net/cli/vm/aliases.json',
         media_resource_id='https://rest.media.usgovcloudapi.net',
         ossrdbms_resource_id='https://ossrdbms-aad.database.usgovcloudapi.net',
         app_insights_resource_id='https://api.applicationinsights.us',
@@ -479,7 +479,7 @@
         active_directory_resource_id='https://management.core.cloudapi.de/',
         active_directory_graph_resource_id='https://graph.cloudapi.de/',
         microsoft_graph_resource_id='https://graph.microsoft.de',
-        
vm_image_alias_doc='https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/arm-compute/quickstart-templates/aliases.json',
+        
vm_image_alias_doc='https://azcliprod.blob.core.windows.net/cli/vm/aliases.json',
         media_resource_id='https://rest.media.cloudapi.de',
         ossrdbms_resource_id='https://ossrdbms-aad.database.cloudapi.de',
         portal='https://portal.microsoftazure.de'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/azure/cli/core/commands/arm.py 
new/azure_cli_core-2.83.0/azure/cli/core/commands/arm.py
--- old/azure_cli_core-2.82.0/azure/cli/core/commands/arm.py    2026-01-06 
08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/commands/arm.py    2026-01-27 
08:23:53.000000000 +0100
@@ -21,7 +21,7 @@
 from knack.arguments import CLICommandArgument, ignore_type
 from knack.introspection import extract_args_from_signature
 from knack.log import get_logger
-from knack.util import todict, CLIError
+from knack.util import CLIError
 
 logger = get_logger(__name__)
 EXCLUDED_NON_CLIENT_PARAMS = list(set(EXCLUDED_PARAMS) - set(['self', 
'client']))
@@ -479,6 +479,7 @@
 
 
 def verify_property(instance, condition):
+    from azure.cli.core.util import todict
     from jmespath import compile as compile_jmespath
     result = todict(instance)
     jmes_query = compile_jmespath(condition)
@@ -759,9 +760,6 @@
 
 
 def assign_identity(cli_ctx, getter, setter, identity_role=None, 
identity_scope=None):
-    import time
-    from azure.core.exceptions import HttpResponseError
-
     # get
     resource = getter()
     resource = setter(resource)
@@ -769,36 +767,43 @@
     # create role assignment:
     if identity_scope:
         principal_id = resource.identity.principal_id
+        create_role_assignment(cli_ctx, principal_id, identity_role, 
identity_scope)
 
-        identity_role_id = resolve_role_id(cli_ctx, identity_role, 
identity_scope)
-        assignments_client = get_mgmt_service_client(cli_ctx, 
ResourceType.MGMT_AUTHORIZATION).role_assignments
-        RoleAssignmentCreateParameters = get_sdk(cli_ctx, 
ResourceType.MGMT_AUTHORIZATION,
-                                                 
'RoleAssignmentCreateParameters', mod='models',
-                                                 
operation_group='role_assignments')
-        parameters = 
RoleAssignmentCreateParameters(role_definition_id=identity_role_id, 
principal_id=principal_id,
-                                                    principal_type=None)
-
-        logger.info("Creating an assignment with a role '%s' on the scope of 
'%s'", identity_role_id, identity_scope)
-        retry_times = 36
-        assignment_name = _gen_guid()
-        for retry_time in range(0, retry_times):
-            try:
-                assignments_client.create(scope=identity_scope, 
role_assignment_name=assignment_name,
-                                          parameters=parameters)
-                break
-            except HttpResponseError as ex:
-                if ex.error.code == 'RoleAssignmentExists':
-                    logger.info('Role assignment already exists')
-                    break
-                if retry_time < retry_times and ' does not exist in the 
directory ' in ex.message:
-                    time.sleep(5)
-                    logger.warning('Retrying role assignment creation: %s/%s', 
retry_time + 1,
-                                   retry_times)
-                    continue
-                raise
     return resource
 
 
+def create_role_assignment(cli_ctx, principal_id, identity_role=None, 
identity_scope=None):
+    import time
+    from azure.core.exceptions import HttpResponseError
+
+    identity_role_id = resolve_role_id(cli_ctx, identity_role, identity_scope)
+    assignments_client = get_mgmt_service_client(cli_ctx, 
ResourceType.MGMT_AUTHORIZATION).role_assignments
+    RoleAssignmentCreateParameters = get_sdk(cli_ctx, 
ResourceType.MGMT_AUTHORIZATION,
+                                             'RoleAssignmentCreateParameters', 
mod='models',
+                                             
operation_group='role_assignments')
+    parameters = 
RoleAssignmentCreateParameters(role_definition_id=identity_role_id, 
principal_id=principal_id,
+                                                principal_type=None)
+
+    logger.info("Creating an assignment with a role '%s' on the scope of 
'%s'", identity_role_id, identity_scope)
+    retry_times = 36
+    assignment_name = _gen_guid()
+    for retry_time in range(0, retry_times):
+        try:
+            assignments_client.create(scope=identity_scope, 
role_assignment_name=assignment_name,
+                                      parameters=parameters)
+            break
+        except HttpResponseError as ex:
+            if ex.error.code == 'RoleAssignmentExists':
+                logger.info('Role assignment already exists')
+                break
+            if retry_time < retry_times and ' does not exist in the directory 
' in ex.message:
+                time.sleep(5)
+                logger.warning('Retrying role assignment creation: %s/%s', 
retry_time + 1,
+                               retry_times)
+                continue
+            raise
+
+
 def resolve_role_id(cli_ctx, role, scope):
     import uuid
     client = get_mgmt_service_client(cli_ctx, 
ResourceType.MGMT_AUTHORIZATION).role_definitions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.82.0/azure/cli/core/commands/command_operation.py 
new/azure_cli_core-2.83.0/azure/cli/core/commands/command_operation.py
--- old/azure_cli_core-2.82.0/azure/cli/core/commands/command_operation.py      
2026-01-06 08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/commands/command_operation.py      
2026-01-27 08:23:53.000000000 +0100
@@ -462,7 +462,7 @@
 
     @staticmethod
     def _get_provisioning_state(instance):
-        from knack.util import todict
+        from azure.cli.core.util import todict
         result = todict(instance)
         provisioning_state = result.get('provisioning_state', 
result.get('provisioningState', None))
         if not provisioning_state:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.82.0/azure/cli/core/profiles/_shared.py 
new/azure_cli_core-2.83.0/azure/cli/core/profiles/_shared.py
--- old/azure_cli_core-2.82.0/azure/cli/core/profiles/_shared.py        
2026-01-06 08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/profiles/_shared.py        
2026-01-27 08:23:53.000000000 +0100
@@ -107,6 +107,7 @@
     MGMT_MAPS = ('azure.mgmt.maps', None)
     MGMT_POLICYINSIGHTS = ('azure.mgmt.policyinsights', None)
     MGMT_RDBMS = ('azure.mgmt.rdbms', None)
+    MGMT_POSTGRESQL = ('azure.mgmt.postgresql', None)
     MGMT_REDIS = ('azure.mgmt.redis', None)
     MGMT_SEARCH = ('azure.mgmt.search', None)
     MGMT_SERVICEFABRIC = ('azure.mgmt.servicefabric', None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/azure/cli/core/util.py 
new/azure_cli_core-2.83.0/azure/cli/core/util.py
--- old/azure_cli_core-2.82.0/azure/cli/core/util.py    2026-01-06 
08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure/cli/core/util.py    2026-01-27 
08:23:53.000000000 +0100
@@ -52,6 +52,12 @@
     "sys", "test2", "test3", "user4", "user5"
 ]
 
+# AME Storage Account URL for version checking and VM image aliases (Network 
Isolation)
+# Files are stored as:
+#   - https://azcliprod.blob.core.windows.net/cli/{package}/setup.py (CLI 
versions)
+#   - https://azcliprod.blob.core.windows.net/cli/vm/aliases.json (VM image 
aliases)
+AME_STORAGE_BASE_URL = "https://azcliprod.blob.core.windows.net/cli";
+
 
 def handle_exception(ex):  # pylint: disable=too-many-locals, 
too-many-statements, too-many-branches
     # For error code, follow guidelines at 
https://docs.python.org/2/library/sys.html#sys.exit,
@@ -291,14 +297,23 @@
     ]
 
 
-def get_latest_from_github(package_path='azure-cli'):
+def get_latest_version_from_ame_storage(package_path='azure-cli'):
+    """Get the latest version from AME Storage Account.
+
+    This replaces get_latest_from_github() due to network isolation 
requirements.
+    The setup.py files are uploaded to AME Storage Account during release 
pipeline.
+
+    Args:
+        package_path: Package name, e.g., 'azure-cli', 'azure-cli-core', 
'azure-cli-telemetry', 'azure-cli-testsdk'
+    """
     try:
         import requests
-        git_url = 
"https://raw.githubusercontent.com/Azure/azure-cli/main/src/{}/setup.py".format(package_path)
-        response = requests.get(git_url, timeout=10)
+        storage_url = "{}/{}/setup.py".format(AME_STORAGE_BASE_URL, 
package_path)
+
+        response = requests.get(storage_url, timeout=10)
         if response.status_code != 200:
             logger.info("Failed to fetch the latest version from '%s' with 
status code '%s' and reason '%s'",
-                        git_url, response.status_code, response.reason)
+                        storage_url, response.status_code, response.reason)
             return None
         for line in response.iter_lines():
             txt = line.decode('utf-8', errors='ignore')
@@ -307,16 +322,28 @@
                 if match:
                     return match.group(1)
     except Exception as ex:  # pylint: disable=broad-except
-        logger.info("Failed to get the latest version from '%s'. %s", git_url, 
str(ex))
+        logger.info("Failed to get the latest version from '%s'. %s", 
storage_url, str(ex))
         return None
 
 
-def _update_latest_from_github(versions):
-    if not check_connectivity(url='https://raw.githubusercontent.com', 
max_retries=0):
+def get_latest_from_github(package_path='azure-cli'):
+    """Deprecated: Use get_latest_version_from_ame_storage() instead.
+
+    This function is kept for backward compatibility but now reads from AME 
Storage Account.
+    """
+    return get_latest_version_from_ame_storage(package_path)
+
+
+def _update_latest_from_ame_storage(versions):
+    """Update versions from AME Storage Account.
+
+    This replaces _update_latest_from_github() due to network isolation 
requirements.
+    """
+    if not check_connectivity(url=AME_STORAGE_BASE_URL, max_retries=0):
         return versions, False
     success = True
     for pkg in ['azure-cli-core', 'azure-cli-telemetry']:
-        version = get_latest_from_github(pkg)
+        version = get_latest_version_from_ame_storage(pkg)
         if not version:
             success = False
         else:
@@ -328,6 +355,14 @@
     return versions, success
 
 
+def _update_latest_from_github(versions):
+    """Deprecated: Use _update_latest_from_ame_storage() instead.
+
+    This function is kept for backward compatibility but now reads from AME 
Storage Account.
+    """
+    return _update_latest_from_ame_storage(versions)
+
+
 def get_cached_latest_versions(versions=None):
     """ Get the latest versions from a cached file"""
     import datetime
@@ -343,7 +378,7 @@
             if cache_versions and cache_versions['azure-cli']['local'] == 
versions['azure-cli']['local']:
                 return cache_versions.copy(), True
 
-    versions, success = _update_latest_from_github(versions)
+    versions, success = _update_latest_from_ame_storage(versions)
     VERSIONS['versions'] = versions
     VERSIONS[_VERSION_UPDATE_TIME] = str(datetime.datetime.now())
     return versions.copy(), success
@@ -369,7 +404,7 @@
     versions = _get_local_versions()
 
     # get the versions from pypi
-    versions, success = get_cached_latest_versions(versions) if use_cache else 
_update_latest_from_github(versions)
+    versions, success = get_cached_latest_versions(versions) if use_cache else 
_update_latest_from_ame_storage(versions)
     updates_available_components = []
 
     def _print(val=''):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.82.0/azure_cli_core.egg-info/PKG-INFO 
new/azure_cli_core-2.83.0/azure_cli_core.egg-info/PKG-INFO
--- old/azure_cli_core-2.82.0/azure_cli_core.egg-info/PKG-INFO  2026-01-06 
08:39:29.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure_cli_core.egg-info/PKG-INFO  2026-01-27 
08:24:42.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: azure-cli-core
-Version: 2.82.0
+Version: 2.83.0
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -20,7 +20,7 @@
 License-File: LICENSE.txt
 Requires-Dist: argcomplete~=3.5.2
 Requires-Dist: azure-cli-telemetry==1.1.0.*
-Requires-Dist: azure-core~=1.37.0
+Requires-Dist: azure-core~=1.38.0
 Requires-Dist: azure-mgmt-core<2,>=1.2.0
 Requires-Dist: cryptography
 Requires-Dist: distro; sys_platform == "linux"
@@ -29,8 +29,8 @@
 Requires-Dist: knack~=0.11.0
 Requires-Dist: microsoft-security-utilities-secret-masker~=1.0.0b4
 Requires-Dist: msal-extensions==1.2.0
-Requires-Dist: msal[broker]==1.34.0b1; sys_platform == "win32"
-Requires-Dist: msal==1.34.0b1; sys_platform != "win32"
+Requires-Dist: msal[broker]==1.35.0b1; sys_platform == "win32"
+Requires-Dist: msal==1.35.0b1; sys_platform != "win32"
 Requires-Dist: packaging>=20.9
 Requires-Dist: pkginfo>=1.5.0.1
 Requires-Dist: psutil>=5.9; sys_platform != "cygwin"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.82.0/azure_cli_core.egg-info/requires.txt 
new/azure_cli_core-2.83.0/azure_cli_core.egg-info/requires.txt
--- old/azure_cli_core-2.82.0/azure_cli_core.egg-info/requires.txt      
2026-01-06 08:39:29.000000000 +0100
+++ new/azure_cli_core-2.83.0/azure_cli_core.egg-info/requires.txt      
2026-01-27 08:24:42.000000000 +0100
@@ -1,6 +1,6 @@
 argcomplete~=3.5.2
 azure-cli-telemetry==1.1.0.*
-azure-core~=1.37.0
+azure-core~=1.38.0
 azure-mgmt-core<2,>=1.2.0
 cryptography
 humanfriendly~=10.0
@@ -19,10 +19,10 @@
 psutil>=5.9
 
 [:sys_platform != "win32"]
-msal==1.34.0b1
+msal==1.35.0b1
 
 [:sys_platform == "linux"]
 distro
 
 [:sys_platform == "win32"]
-msal[broker]==1.34.0b1
+msal[broker]==1.35.0b1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.82.0/setup.py 
new/azure_cli_core-2.83.0/setup.py
--- old/azure_cli_core-2.82.0/setup.py  2026-01-06 08:38:42.000000000 +0100
+++ new/azure_cli_core-2.83.0/setup.py  2026-01-27 08:23:53.000000000 +0100
@@ -8,7 +8,7 @@
 from codecs import open
 from setuptools import setup, find_packages
 
-VERSION = "2.82.0"
+VERSION = "2.83.0"
 
 # If we have source, validate that our version numbers match
 # This should prevent uploading releases with mismatched versions.
@@ -45,7 +45,7 @@
 DEPENDENCIES = [
     'argcomplete~=3.5.2',
     'azure-cli-telemetry==1.1.0.*',
-    'azure-core~=1.37.0',
+    'azure-core~=1.38.0',
     'azure-mgmt-core>=1.2.0,<2',
     'cryptography',
     # On Linux, the distribution (Ubuntu, Debian, etc) and version are logged 
in telemetry
@@ -55,8 +55,8 @@
     'knack~=0.11.0',
     'microsoft-security-utilities-secret-masker~=1.0.0b4',
     'msal-extensions==1.2.0',
-    'msal[broker]==1.34.0b1; sys_platform == "win32"',
-    'msal==1.34.0b1; sys_platform != "win32"',
+    'msal[broker]==1.35.0b1; sys_platform == "win32"',
+    'msal==1.35.0b1; sys_platform != "win32"',
     'packaging>=20.9',
     'pkginfo>=1.5.0.1',
     # psutil can't install on cygwin: 
https://github.com/Azure/azure-cli/issues/9399

Reply via email to