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 2024-05-22 21:33:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-core (Old)
 and      /work/SRC/openSUSE:Factory/.azure-cli-core.new.1880 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "azure-cli-core"

Wed May 22 21:33:09 2024 rev:68 rq:1175821 version:2.61.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-core/azure-cli-core.changes    
2024-05-07 18:04:16.892422007 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-core.new.1880/azure-cli-core.changes  
2024-05-22 21:33:33.092337226 +0200
@@ -1,0 +2,11 @@
+Wed May 22 10:11:07 UTC 2024 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- New upstream release
+  + Version 2.61.0
+  + For detailed information about changes see the
+    HISTORY.rst file provided with this package
+- Add azure-cli namespace directory in %files section
+- Remove deletion of azure-cli namespace files
+- Update Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  azure_cli_core-2.60.0.tar.gz

New:
----
  azure_cli_core-2.61.0.tar.gz

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

Other differences:
------------------
++++++ azure-cli-core.spec ++++++
--- /var/tmp/diff_new_pack.ovP9yX/_old  2024-05-22 21:33:33.888366341 +0200
+++ /var/tmp/diff_new_pack.ovP9yX/_new  2024-05-22 21:33:33.888366341 +0200
@@ -24,7 +24,7 @@
 %global _sitelibdir %{%{pythons}_sitelib}
 
 Name:           azure-cli-core
-Version:        2.60.0
+Version:        2.61.0
 Release:        0
 Summary:        Microsoft Azure CLI Core Module
 License:        MIT
@@ -37,12 +37,11 @@
 BuildRequires:  %{pythons}-pip
 BuildRequires:  %{pythons}-setuptools
 BuildRequires:  %{pythons}-wheel
-BuildRequires:  azure-cli-nspkg
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       %{pythons}-PyJWT >= 2.1.0
 Requires:       %{pythons}-argcomplete < 4.0
-Requires:       %{pythons}-argcomplete >= 3.1.1
+Requires:       %{pythons}-argcomplete >= 3.3.0
 Requires:       %{pythons}-azure-mgmt-core < 2.0.0
 Requires:       %{pythons}-azure-mgmt-core >= 1.2.0
 Requires:       %{pythons}-azure-nspkg >= 3.0.0
@@ -69,7 +68,6 @@
 Requires:       %{pythons}-requests < 3.0.0
 Requires:       %{pythons}-requests >= 2.25.1
 Requires:       %{pythons}-wheel >= 0.30.0
-Requires:       azure-cli-nspkg
 Requires:       azure-cli-telemetry >= 1.1.0
 Conflicts:      azure-cli < 2.0.0
 
@@ -88,15 +86,12 @@
 %install
 %pyproject_install
 %fdupes %{buildroot}%{_sitelibdir}
-rm -rf %{buildroot}%{_sitelibdir}/azure/cli/__init__.*
-rm -rf %{buildroot}%{_sitelibdir}/azure/cli/__pycache__
-rm -rf %{buildroot}%{_sitelibdir}/azure/__init__.*
-rm -rf %{buildroot}%{_sitelibdir}/azure/__pycache__
 
 %files
 %defattr(-,root,root,-)
 %doc HISTORY.rst README.rst
 %license LICENSE.txt
+%dir %{_sitelibdir}/azure/cli
 %{_sitelibdir}/azure/cli/core
 %{_sitelibdir}/azure_cli_core-*.dist-info
 

++++++ azure_cli_core-2.60.0.tar.gz -> azure_cli_core-2.61.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/HISTORY.rst 
new/azure_cli_core-2.61.0/HISTORY.rst
--- old/azure_cli_core-2.60.0/HISTORY.rst       2024-04-24 06:14:31.000000000 
+0200
+++ new/azure_cli_core-2.61.0/HISTORY.rst       2024-05-16 05:48:31.000000000 
+0200
@@ -3,6 +3,14 @@
 Release History
 ===============
 
+2.61.0
+++++++
+* Resolve CVE-2024-34064 (#28895)
+* [BREAKING CHANGE] `az login`: Use WAM as the default authentication method 
on Windows. For more details, see 
https://go.microsoft.com/fwlink/?linkid=2271136 (#28841)
+* `aaz`: Support extended values in `AAZArgEnum` (#28850)
+* Add `tenantDefaultDomain` and `tenantDisplayName` properties to login 
contexts (shown by `az account list`) (#28910)
+* Prompt for interactive authentication for all silent authentication failures 
(#28966)
+
 2.60.0
 ++++++
 * Fix #28737: Fix token cache for service principal authentication (#28747)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/PKG-INFO 
new/azure_cli_core-2.61.0/PKG-INFO
--- old/azure_cli_core-2.60.0/PKG-INFO  2024-04-24 06:15:06.462829600 +0200
+++ new/azure_cli_core-2.61.0/PKG-INFO  2024-05-16 05:49:07.551462000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-cli-core
-Version: 2.60.0
+Version: 2.61.0
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -18,7 +18,7 @@
 Classifier: License :: OSI Approved :: MIT License
 Requires-Python: >=3.8.0
 License-File: LICENSE.txt
-Requires-Dist: argcomplete~=3.1.1
+Requires-Dist: argcomplete~=3.3.0
 Requires-Dist: azure-cli-telemetry==1.1.0.*
 Requires-Dist: azure-mgmt-core<2,>=1.2.0
 Requires-Dist: cryptography
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/__init__.py 
new/azure_cli_core-2.61.0/azure/cli/core/__init__.py
--- old/azure_cli_core-2.60.0/azure/cli/core/__init__.py        2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/__init__.py        2024-05-16 
05:48:31.000000000 +0200
@@ -4,7 +4,7 @@
 # 
--------------------------------------------------------------------------------------------
 # pylint: disable=line-too-long
 
-__version__ = "2.60.0"
+__version__ = "2.61.0"
 
 import os
 import sys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/_profile.py 
new/azure_cli_core-2.61.0/azure/cli/core/_profile.py
--- old/azure_cli_core-2.60.0/azure/cli/core/_profile.py        2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/_profile.py        2024-05-16 
05:48:31.000000000 +0200
@@ -24,10 +24,17 @@
 _IS_DEFAULT_SUBSCRIPTION = 'isDefault'
 _SUBSCRIPTION_ID = 'id'
 _SUBSCRIPTION_NAME = 'name'
+
 # Tenant of the token which is used to list the subscription
 _TENANT_ID = 'tenantId'
-# Home tenant of the subscription, which maps to tenantId in 'Subscriptions - 
List REST API'
-# https://docs.microsoft.com/en-us/rest/api/resources/subscriptions/list
+
+# More information on the token tenant. Maps to properties in 'Tenants - List' 
REST API
+# https://learn.microsoft.com/en-us/rest/api/resources/tenants/list
+_TENANT_DEFAULT_DOMAIN = 'tenantDefaultDomain'  # defaultDomain
+_TENANT_DISPLAY_NAME = 'tenantDisplayName'  # displayName
+
+# Home tenant of the subscription. Maps to tenantId in 'Subscriptions - List' 
REST API
+# https://learn.microsoft.com/en-us/rest/api/resources/subscriptions/list
 _HOME_TENANT_ID = 'homeTenantId'
 _MANAGED_BY_TENANTS = 'managedByTenants'
 _USER_ENTITY = 'user'
@@ -91,18 +98,28 @@
     return os.environ.get('MSI_ENDPOINT')
 
 
-def _attach_token_tenant(subscription, tenant):
-    """Attach the token tenant ID to the subscription as tenant_id, so that 
CLI knows which token should be used
+def _attach_token_tenant(subscription, tenant, tenant_id_description=None):
+    """Attach the token tenant information to the subscription. CLI uses 
tenant_id to know which token should be used
     to access the subscription.
 
     This function supports multiple APIs:
-      - v2016_06_01's Subscription doesn't have tenant_id
-      - v2019_11_01's Subscription has tenant_id representing the home tenant 
ID. It will mapped to home_tenant_id
+      - v2016_06_01: Subscription doesn't have tenant_id
+      - v2022_12_01:
+        - Subscription has tenant_id representing the home tenant ID, mapped 
to home_tenant_id
+        - TenantIdDescription has default_domain, mapped to 
tenant_default_domain
+        - TenantIdDescription has display_name, mapped to tenant_display_name
     """
     if hasattr(subscription, "tenant_id"):
         setattr(subscription, 'home_tenant_id', subscription.tenant_id)
     setattr(subscription, 'tenant_id', tenant)
 
+    # Attach tenant_default_domain, if available
+    if tenant_id_description and hasattr(tenant_id_description, 
"default_domain"):
+        setattr(subscription, 'tenant_default_domain', 
tenant_id_description.default_domain)
+    # Attach display_name, if available
+    if tenant_id_description and hasattr(tenant_id_description, 
"display_name"):
+        setattr(subscription, 'tenant_display_name', 
tenant_id_description.display_name)
+
 
 # pylint: disable=too-many-lines,too-many-instance-attributes,unused-argument
 class Profile:
@@ -133,6 +150,7 @@
               use_device_code=False,
               allow_no_subscriptions=False,
               use_cert_sn_issuer=None,
+              show_progress=False,
               **kwargs):
         """
         For service principal, `password` is a dict returned by 
ServicePrincipalAuth.build_credential
@@ -159,6 +177,11 @@
                 identity.login_with_service_principal(username, password, 
scopes=scopes)
 
         # We have finished login. Let's find all subscriptions.
+        if show_progress:
+            message = ('Retrieving subscriptions for the selection...' if 
tenant else
+                       'Retrieving tenants and subscriptions for the 
selection...')
+            print(f"\n{message}")
+
         if user_identity:
             username = user_identity['username']
 
@@ -732,9 +755,10 @@
         # pylint: disable=too-many-statements
         all_subscriptions = []
         empty_tenants = []
-        mfa_tenants = []
+        interaction_required_tenants = []
 
         client = self._create_subscription_client(credential)
+        # https://learn.microsoft.com/en-us/rest/api/resources/tenants/list
         tenants = client.tenants.list()
 
         for t in tenants:
@@ -756,17 +780,16 @@
             specific_tenant_credential = identity.get_user_credential(username)
 
             try:
-                subscriptions = self.find_using_specific_tenant(tenant_id, 
specific_tenant_credential)
+
+                subscriptions = self.find_using_specific_tenant(tenant_id, 
specific_tenant_credential,
+                                                                
tenant_id_description=t)
             except AuthenticationError as ex:
-                # because user creds went through the 'common' tenant, the 
error here must be
-                # tenant specific, like the account was disabled. For such 
errors, we will continue
-                # with other tenants.
-                msg = ex.error_msg
-                if 'AADSTS50076' in msg:
-                    # The tenant requires MFA and can't be accessed with home 
tenant's refresh token
-                    mfa_tenants.append(t)
-                else:
-                    logger.warning("Failed to authenticate %s due to error 
'%s'", t.tenant_id_name, ex)
+                # because user creds went through the 'organizations' tenant, 
the error here must be
+                # tenant specific, like the account was disabled, being 
blocked by MFA. For such errors,
+                # we continue with other tenants.
+                # As we don't check AADSTS error code, show the original error 
message for user's reference.
+                logger.warning("Authentication failed against tenant %s: %s", 
t.tenant_id_name, ex)
+                interaction_required_tenants.append(t)
                 continue
 
             if not subscriptions:
@@ -790,24 +813,29 @@
         # Show warning for empty tenants
         if empty_tenants:
             logger.warning("The following tenants don't contain accessible 
subscriptions. "
-                           "Use 'az login --allow-no-subscriptions' to have 
tenant level access.")
+                           "Use `az login --allow-no-subscriptions` to have 
tenant level access.")
             for t in empty_tenants:
                 logger.warning("%s", t.tenant_id_name)
 
-        # Show warning for MFA tenants
-        if mfa_tenants:
-            logger.warning("The following tenants require Multi-Factor 
Authentication (MFA). "
-                           "Use 'az login --tenant TENANT_ID' to explicitly 
login to a tenant.")
-            for t in mfa_tenants:
+        # Show warning for InteractionRequired tenants
+        if interaction_required_tenants:
+            logger.warning("If you need to access subscriptions in the 
following tenants, please use "
+                           "`az login --tenant TENANT_ID`.")
+            for t in interaction_required_tenants:
                 logger.warning("%s", t.tenant_id_name)
         return all_subscriptions
 
-    def find_using_specific_tenant(self, tenant, credential):
+    def find_using_specific_tenant(self, tenant, credential, 
tenant_id_description=None):
+        """List subscriptions that can be accessed from a specific tenant.
+        If called from find_using_common_tenant, tenant_id_description is 
TenantIdDescription retrieved from
+        'Tenants - List' REST API. If directly called, tenant_id_description 
is None.
+        """
         client = self._create_subscription_client(credential)
+        # 
https://learn.microsoft.com/en-us/rest/api/resources/subscriptions/list
         subscriptions = client.subscriptions.list()
         all_subscriptions = []
         for s in subscriptions:
-            _attach_token_tenant(s, tenant)
+            _attach_token_tenant(s, tenant, 
tenant_id_description=tenant_id_description)
             all_subscriptions.append(s)
         self.tenants.append(tenant)
         return all_subscriptions
@@ -840,6 +868,11 @@
     """
     if hasattr(s, 'home_tenant_id'):
         s_dict[_HOME_TENANT_ID] = s.home_tenant_id
+    if hasattr(s, 'tenant_default_domain'):
+        s_dict[_TENANT_DEFAULT_DOMAIN] = s.tenant_default_domain
+    if hasattr(s, 'tenant_display_name'):
+        s_dict[_TENANT_DISPLAY_NAME] = s.tenant_display_name
+
     if hasattr(s, 'managed_by_tenants'):
         if s.managed_by_tenants is None:
             s_dict[_MANAGED_BY_TENANTS] = None
@@ -856,8 +889,8 @@
     # EXPERIMENTAL: Use core.use_msal_http_cache=False to turn off MSAL HTTP 
cache.
     use_msal_http_cache = cli_ctx.config.getboolean('core', 
'use_msal_http_cache', fallback=True)
 
-    # PREVIEW: On Windows, use core.enable_broker_on_windows=true to use 
broker (WAM) for authentication.
-    enable_broker_on_windows = cli_ctx.config.getboolean('core', 
'enable_broker_on_windows', fallback=False)
+    # On Windows, use core.enable_broker_on_windows=false to disable broker 
(WAM) for authentication.
+    enable_broker_on_windows = cli_ctx.config.getboolean('core', 
'enable_broker_on_windows', fallback=True)
     from .telemetry import set_broker_info
     set_broker_info(enable_broker_on_windows)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/aaz/_arg.py 
new/azure_cli_core-2.61.0/azure/cli/core/aaz/_arg.py
--- old/azure_cli_core-2.60.0/azure/cli/core/aaz/_arg.py        2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/aaz/_arg.py        2024-05-16 
05:48:31.000000000 +0200
@@ -10,6 +10,7 @@
 from knack.preview import PreviewItem
 from knack.experimental import ExperimentalItem
 from knack.util import status_tag_messages
+from knack.log import get_logger
 
 from ._arg_action import AAZSimpleTypeArgAction, AAZObjectArgAction, 
AAZDictArgAction, AAZFreeFormDictArgAction, \
     AAZListArgAction, AAZGenericUpdateAction, AAZGenericUpdateForceStringAction
@@ -26,6 +27,8 @@
 
 # pylint: disable=redefined-builtin, protected-access, too-few-public-methods, 
too-many-instance-attributes
 
+logger = get_logger(__name__)
+
 
 class AAZArgumentsSchema(AAZObjectType):
     """ Arguments' schema should be defined as fields of it """
@@ -44,8 +47,9 @@
 class AAZArgEnum:
     """Argument enum properties"""
 
-    def __init__(self, items, case_sensitive=False):
+    def __init__(self, items, case_sensitive=False, support_extension=False):
         self._case_sensitive = case_sensitive
+        self.support_extension = support_extension
         self.items = items
 
     def to_choices(self):
@@ -70,6 +74,19 @@
             if isinstance(self.items, dict):
                 return self.items[key]
             raise NotImplementedError()
+        if self.support_extension:
+            # support extension value which is not in choices
+            if isinstance(self.items, dict):
+                values = list(self.items.values())
+            elif isinstance(self.items, (list, tuple, set)):
+                values = list(self.items)
+            try:
+                data_type = type(values[0])
+                value = data_type(data)
+                logger.warning("Use extended value `%s` outside choices 
{self.to_choices()}.", str(value))
+                return value
+            except (ValueError, IndexError):
+                pass
         raise azclierror.InvalidArgumentValueError(
             f"unrecognized value '{data}' from choices '{self.to_choices()}' ")
 
@@ -205,14 +222,26 @@
 class AAZSimpleTypeArg(AAZBaseArg, AAZSimpleType):
     """Argument accept simple value"""
 
-    def __init__(self, enum=None, enum_case_sensitive=False, **kwargs):
+    def __init__(self, enum=None, enum_case_sensitive=False, 
enum_support_extension=False, **kwargs):
         super().__init__(**kwargs)
-        self.enum = AAZArgEnum(enum, case_sensitive=enum_case_sensitive) if 
enum else None
+        self.enum = AAZArgEnum(
+            enum, case_sensitive=enum_case_sensitive, 
support_extension=enum_support_extension
+        ) if enum else None
 
     def to_cmd_arg(self, name, **kwargs):
         arg = super().to_cmd_arg(name, **kwargs)
         if self.enum:
-            arg.choices = self.enum.to_choices()    # convert it's enum value 
into choices in arg
+            choices = self.enum.to_choices()
+            if self.enum.support_extension:
+                # Display the allowed values in help only without verifying 
the user input in argparse
+                short_summary = arg.type.settings.get('help', None) or ''
+                if short_summary:
+                    short_summary += '  '
+                short_summary += 'Allowed values: {}.'.format(', 
'.join(sorted([str(x) for x in choices])))
+                arg.help = short_summary
+            else:
+                # this will verify the user input in argparse
+                arg.choices = choices   # convert it's enum value into choices 
in arg
         return arg
 
     def _build_cmd_action(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.60.0/azure/cli/core/auth/landing_pages/success.html 
new/azure_cli_core-2.61.0/azure/cli/core/auth/landing_pages/success.html
--- old/azure_cli_core-2.60.0/azure/cli/core/auth/landing_pages/success.html    
2024-04-24 06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/auth/landing_pages/success.html    
2024-05-16 05:48:31.000000000 +0200
@@ -21,13 +21,5 @@
 <body>
     <h3>You have logged into Microsoft Azure!</h3>
     <p>You can close this window, or we will redirect you to the <a 
href="https://docs.microsoft.com/cli/azure/";>Azure CLI documentation</a> in 1 
minute.</p>
-    <h3>Announcements</h3>
-    <p>[Windows only] Azure CLI is collecting feedback on using the <a 
href="https://learn.microsoft.com/windows/uwp/security/web-account-manager";>Web 
Account Manager</a> (WAM) broker for the login experience.</p>
-    <p>You may opt-in to use WAM by running the following commands:</p>
-    <code>
-        az config set core.enable_broker_on_windows=true<br>
-        az account clear<br>
-        az login
-    </code>
 </body>
 </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.60.0/azure/cli/core/extension/operations.py 
new/azure_cli_core-2.61.0/azure/cli/core/extension/operations.py
--- old/azure_cli_core-2.60.0/azure/cli/core/extension/operations.py    
2024-04-24 06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/extension/operations.py    
2024-05-16 05:48:31.000000000 +0200
@@ -308,7 +308,7 @@
                   version=None, cli_ctx=None, upgrade=None, 
allow_preview=None):
     if allow_preview is None:
         logger.warning("Default enabled including preview versions for 
extension installation now. "
-                       "Disabled in May 2024. "
+                       "Disabled in future release. "
                        "Use '--allow-preview true' to enable it specifically 
if needed. "
                        "Use '--allow-preview false' to install stable version 
only. ")
         allow_preview = True
@@ -407,7 +407,7 @@
 def update_extension(cmd=None, extension_name=None, index_url=None, 
pip_extra_index_urls=None, pip_proxy=None, allow_preview=None, cli_ctx=None, 
version=None, download_url=None, ext_sha256=None):
     if allow_preview is None:
         logger.warning("Default enabled including preview versions for 
extension installation now. "
-                       "Disabled in May 2024. "
+                       "Disabled in future release. "
                        "Use '--allow-preview true' to enable it specifically 
if needed. "
                        "Use '--allow-preview false' to install stable version 
only. ")
         allow_preview = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/mock.py 
new/azure_cli_core-2.61.0/azure/cli/core/mock.py
--- old/azure_cli_core-2.60.0/azure/cli/core/mock.py    2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/mock.py    2024-05-16 
05:48:31.000000000 +0200
@@ -32,17 +32,23 @@
             self.env_patch = patch.dict(os.environ, {'AZURE_CONFIG_DIR': 
config_dir})
             self.env_patch.start()
 
+            # Always copy command index to avoid initializing it again
+            files_to_copy = ['commandIndex.json']
             # In recording mode, copy login credentials from global config dir 
to the dummy config dir
             if os.getenv(ENV_VAR_TEST_LIVE, '').lower() == 'true':
-                if os.path.exists(GLOBAL_CONFIG_DIR):
-                    ensure_dir(config_dir)
-                    import shutil
-                    for file in ['azureProfile.json', 'msal_token_cache.bin', 
'clouds.config', 'msal_token_cache.json',
-                                 'service_principal_entries.json']:
-                        try:
-                            shutil.copy(os.path.join(GLOBAL_CONFIG_DIR, file), 
config_dir)
-                        except FileNotFoundError:
-                            pass
+                files_to_copy.extend([
+                    'azureProfile.json', 'clouds.config',
+                    'msal_token_cache.bin', 'msal_token_cache.json',
+                    'service_principal_entries.bin', 
'service_principal_entries.json'
+                ])
+
+            ensure_dir(config_dir)
+            import shutil
+            for file in files_to_copy:
+                try:
+                    shutil.copy(os.path.join(GLOBAL_CONFIG_DIR, file), 
config_dir)
+                except FileNotFoundError:
+                    pass
 
         super(DummyCli, self).__init__(
             cli_name='az',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.60.0/azure/cli/core/profiles/_shared.py 
new/azure_cli_core-2.61.0/azure/cli/core/profiles/_shared.py
--- old/azure_cli_core-2.60.0/azure/cli/core/profiles/_shared.py        
2024-04-24 06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/profiles/_shared.py        
2024-05-16 05:48:31.000000000 +0200
@@ -156,7 +156,7 @@
     'latest': {
         ResourceType.MGMT_STORAGE: '2023-01-01',
         ResourceType.MGMT_NETWORK: '2022-01-01',
-        ResourceType.MGMT_COMPUTE: SDKProfile('2023-09-01', {
+        ResourceType.MGMT_COMPUTE: SDKProfile('2024-03-01', {
             'resource_skus': '2019-04-01',
             'disks': '2023-04-02',
             'disk_encryption_sets': '2022-03-02',
@@ -168,7 +168,7 @@
             'gallery_applications': '2021-07-01',
             'gallery_application_versions': '2022-01-03',
             'shared_galleries': '2022-01-03',
-            'virtual_machine_scale_sets': '2023-09-01',
+            'virtual_machine_scale_sets': '2024-03-01',
         }),
         ResourceType.MGMT_RESOURCE_FEATURES: '2021-07-01',
         ResourceType.MGMT_RESOURCE_LINKS: '2016-09-01',
@@ -177,10 +177,10 @@
             'policy_exemptions': '2020-07-01-preview'
         }),
         ResourceType.MGMT_RESOURCE_RESOURCES: '2022-09-01',
-        ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2019-11-01',
+        ResourceType.MGMT_RESOURCE_SUBSCRIPTIONS: '2022-12-01',
         ResourceType.MGMT_RESOURCE_DEPLOYMENTSCRIPTS: '2020-10-01',
         ResourceType.MGMT_RESOURCE_TEMPLATESPECS: '2021-05-01',
-        ResourceType.MGMT_RESOURCE_DEPLOYMENTSTACKS: '2022-08-01-preview',
+        ResourceType.MGMT_RESOURCE_DEPLOYMENTSTACKS: '2024-03-01',
         ResourceType.MGMT_RESOURCE_PRIVATELINKS: '2020-05-01',
         ResourceType.MGMT_RESOURCE_MANAGEDAPPLICATIONS: '2019-07-01',
         ResourceType.MGMT_NETWORK_DNS: '2018-05-01',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/style.py 
new/azure_cli_core-2.61.0/azure/cli/core/style.py
--- old/azure_cli_core-2.60.0/azure/cli/core/style.py   2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/style.py   2024-05-16 
05:48:31.000000000 +0200
@@ -30,6 +30,7 @@
 class Style(str, Enum):
     PRIMARY = "primary"
     SECONDARY = "secondary"
+    HIGHLIGHT = "highlight"
     IMPORTANT = "important"
     ACTION = "action"  # name TBD
     HYPERLINK = "hyperlink"
@@ -65,6 +66,7 @@
 THEME_DARK = {
     Style.PRIMARY: DEFAULT,
     Style.SECONDARY: '\x1b[90m',  # Bright Foreground Black
+    Style.HIGHLIGHT: '\x1b[96m',  # Bright Foreground Cyan
     Style.IMPORTANT: '\x1b[95m',  # Bright Foreground Magenta
     Style.ACTION: '\x1b[94m',  # Bright Foreground Blue
     Style.HYPERLINK: '\x1b[96m',  # Bright Foreground Cyan
@@ -77,6 +79,7 @@
 THEME_LIGHT = {
     Style.PRIMARY: DEFAULT,
     Style.SECONDARY: '\x1b[90m',  # Bright Foreground Black
+    Style.HIGHLIGHT: '\x1b[36m',  # Foreground Cyan
     Style.IMPORTANT: '\x1b[35m',  # Foreground Magenta
     Style.ACTION: '\x1b[34m',  # Foreground Blue
     Style.HYPERLINK: '\x1b[36m',  # Foreground Cyan
@@ -90,6 +93,7 @@
 THEME_CLOUD_SHELL = {
     Style.PRIMARY: _rgb_hex('#ffffff'),
     Style.SECONDARY: _rgb_hex('#bcbcbc'),
+    Style.HIGHLIGHT: _rgb_hex('#72d7d8'),  # Same as Style.HYPERLINK, for now
     Style.IMPORTANT: _rgb_hex('#f887ff'),
     Style.ACTION: _rgb_hex('#6cb0ff'),
     Style.HYPERLINK: _rgb_hex('#72d7d8'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/azure/cli/core/telemetry.py 
new/azure_cli_core-2.61.0/azure/cli/core/telemetry.py
--- old/azure_cli_core-2.60.0/azure/cli/core/telemetry.py       2024-04-24 
06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure/cli/core/telemetry.py       2024-05-16 
05:48:31.000000000 +0200
@@ -70,11 +70,13 @@
         self.suppress_new_event = False
         self.poll_start_time = None
         self.poll_end_time = None
-        self.enable_broker_on_windows = None
-        self.msal_telemetry = None
         self.secrets_detected = None
         self.secret_keys = None
         self.user_agent = None
+        # authentication-related
+        self.enable_broker_on_windows = None
+        self.msal_telemetry = None
+        self.login_experience_v2 = None
 
     def add_event(self, name, properties):
         for key in self.instrumentation_key:
@@ -222,11 +224,13 @@
         set_custom_properties(result, 'ShowSurveyMessage', 
str(self.show_survey_message))
         set_custom_properties(result, 'RegionInput', self.region_input)
         set_custom_properties(result, 'RegionIdentified', 
self.region_identified)
-        set_custom_properties(result, 'EnableBrokerOnWindows', 
str(self.enable_broker_on_windows))
-        set_custom_properties(result, 'MsalTelemetry', self.msal_telemetry)
         set_custom_properties(result, 'SecretsWarning', 
_get_secrets_warning_config())
         set_custom_properties(result, 'SecretsDetected', 
str(self.secrets_detected))
         set_custom_properties(result, 'SecretKeys', ','.join(self.secret_keys 
or []))
+        # authentication-related
+        set_custom_properties(result, 'EnableBrokerOnWindows', 
str(self.enable_broker_on_windows))
+        set_custom_properties(result, 'MsalTelemetry', self.msal_telemetry)
+        set_custom_properties(result, 'LoginExperienceV2', 
str(self.login_experience_v2))
 
         return result
 
@@ -476,6 +480,11 @@
 
 
 @decorators.suppress_all_exceptions()
+def set_login_experience_v2(login_experience_v2):
+    _session.login_experience_v2 = login_experience_v2
+
+
+@decorators.suppress_all_exceptions()
 def set_user_agent(user_agent):
     if user_agent:
         _session.user_agent = user_agent
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.60.0/azure_cli_core.egg-info/PKG-INFO 
new/azure_cli_core-2.61.0/azure_cli_core.egg-info/PKG-INFO
--- old/azure_cli_core-2.60.0/azure_cli_core.egg-info/PKG-INFO  2024-04-24 
06:15:06.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure_cli_core.egg-info/PKG-INFO  2024-05-16 
05:49:07.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-cli-core
-Version: 2.60.0
+Version: 2.61.0
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -18,7 +18,7 @@
 Classifier: License :: OSI Approved :: MIT License
 Requires-Python: >=3.8.0
 License-File: LICENSE.txt
-Requires-Dist: argcomplete~=3.1.1
+Requires-Dist: argcomplete~=3.3.0
 Requires-Dist: azure-cli-telemetry==1.1.0.*
 Requires-Dist: azure-mgmt-core<2,>=1.2.0
 Requires-Dist: cryptography
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_cli_core-2.60.0/azure_cli_core.egg-info/requires.txt 
new/azure_cli_core-2.61.0/azure_cli_core.egg-info/requires.txt
--- old/azure_cli_core-2.60.0/azure_cli_core.egg-info/requires.txt      
2024-04-24 06:15:06.000000000 +0200
+++ new/azure_cli_core-2.61.0/azure_cli_core.egg-info/requires.txt      
2024-05-16 05:49:07.000000000 +0200
@@ -1,4 +1,4 @@
-argcomplete~=3.1.1
+argcomplete~=3.3.0
 azure-cli-telemetry==1.1.0.*
 azure-mgmt-core<2,>=1.2.0
 cryptography
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_cli_core-2.60.0/setup.py 
new/azure_cli_core-2.61.0/setup.py
--- old/azure_cli_core-2.60.0/setup.py  2024-04-24 06:14:31.000000000 +0200
+++ new/azure_cli_core-2.61.0/setup.py  2024-05-16 05:48:31.000000000 +0200
@@ -8,7 +8,7 @@
 from codecs import open
 from setuptools import setup, find_packages
 
-VERSION = "2.60.0"
+VERSION = "2.61.0"
 
 # If we have source, validate that our version numbers match
 # This should prevent uploading releases with mismatched versions.
@@ -43,7 +43,7 @@
 ]
 
 DEPENDENCIES = [
-    'argcomplete~=3.1.1',
+    'argcomplete~=3.3.0',
     'azure-cli-telemetry==1.1.0.*',
     'azure-mgmt-core>=1.2.0,<2',
     'cryptography',

Reply via email to