Hello community,

here is the log from the commit of package azure-cli-core for openSUSE:Factory 
checked in at 2020-11-17 21:25:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-core (Old)
 and      /work/SRC/openSUSE:Factory/.azure-cli-core.new.24930 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "azure-cli-core"

Tue Nov 17 21:25:44 2020 rev:20 rq:848899 version:2.14.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-core/azure-cli-core.changes    
2020-10-13 15:45:50.209454658 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-core.new.24930/azure-cli-core.changes 
2020-11-17 21:25:46.157406606 +0100
@@ -1,0 +2,8 @@
+Mon Nov 16 12:33:49 UTC 2020 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- New upstream release
+  + Version 2.14.2
+  + For detailed information about changes see the
+    HISTORY.rst file provided with this package
+
+-------------------------------------------------------------------

Old:
----
  azure-cli-core-2.13.0.tar.gz

New:
----
  azure-cli-core-2.14.2.tar.gz

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

Other differences:
------------------
++++++ azure-cli-core.spec ++++++
--- /var/tmp/diff_new_pack.a1LZML/_old  2020-11-17 21:25:46.737407181 +0100
+++ /var/tmp/diff_new_pack.a1LZML/_new  2020-11-17 21:25:46.737407181 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           azure-cli-core
-Version:        2.13.0
+Version:        2.14.2
 Release:        0
 Summary:        Microsoft Azure CLI Core Module
 License:        MIT

++++++ azure-cli-core-2.13.0.tar.gz -> azure-cli-core-2.14.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/HISTORY.rst 
new/azure-cli-core-2.14.2/HISTORY.rst
--- old/azure-cli-core-2.13.0/HISTORY.rst       2020-10-12 09:58:16.000000000 
+0200
+++ new/azure-cli-core-2.14.2/HISTORY.rst       2020-11-09 06:56:54.000000000 
+0100
@@ -3,6 +3,18 @@
 Release History
 ===============
 
+2.14.2
+++++++
+* No changes
+
+2.14.1
+++++++
+* Minor fixes
+
+2.14.0
+++++++
+* Minor fixes
+
 2.13.0
 ++++++
 * Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/PKG-INFO 
new/azure-cli-core-2.14.2/PKG-INFO
--- old/azure-cli-core-2.13.0/PKG-INFO  2020-10-12 09:58:34.000000000 +0200
+++ new/azure-cli-core-2.14.2/PKG-INFO  2020-11-09 06:57:09.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-cli-core
-Version: 2.13.0
+Version: 2.14.2
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -15,6 +15,18 @@
         Release History
         ===============
         
+        2.14.2
+        ++++++
+        * No changes
+        
+        2.14.1
+        ++++++
+        * Minor fixes
+        
+        2.14.0
+        ++++++
+        * Minor fixes
+        
         2.13.0
         ++++++
         * Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/__init__.py 
new/azure-cli-core-2.14.2/azure/cli/core/__init__.py
--- old/azure-cli-core-2.13.0/azure/cli/core/__init__.py        2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/__init__.py        2020-11-09 
06:56:54.000000000 +0100
@@ -6,7 +6,7 @@
 
 from __future__ import print_function
 
-__version__ = "2.13.0"
+__version__ = "2.14.2"
 
 import os
 import sys
@@ -35,7 +35,7 @@
 # Modules that will always be loaded. They don't expose commands but hook into 
CLI core.
 ALWAYS_LOADED_MODULES = []
 # Extensions that will always be loaded if installed. They don't expose 
commands but hook into CLI core.
-ALWAYS_LOADED_EXTENSIONS = ['azext_ai_examples', 'azext_ai_did_you_mean_this']
+ALWAYS_LOADED_EXTENSIONS = ['azext_ai_examples']
 
 
 class AzCli(CLI):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/_profile.py 
new/azure-cli-core-2.14.2/azure/cli/core/_profile.py
--- old/azure-cli-core-2.13.0/azure/cli/core/_profile.py        2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/_profile.py        2020-11-09 
06:56:54.000000000 +0100
@@ -306,7 +306,6 @@
         # pylint: disable=too-many-statements
 
         import jwt
-        from requests import HTTPError
         from msrestazure.tools import is_valid_resource_id
         from azure.cli.core.adal_authentication import MSIAuthenticationWrapper
         resource = self.cli_ctx.cloud.endpoints.active_directory_resource_id
@@ -317,12 +316,13 @@
                 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 HTTPError as ex:
-                    if ex.response.reason == 'Bad Request' and 
ex.response.status == 400:
+                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
@@ -332,8 +332,8 @@
                         identity_type = MsiAccountTypes.user_assigned_object_id
                         msi_creds = 
MSIAuthenticationWrapper(resource=resource, object_id=identity_id)
                         authenticated = True
-                    except HTTPError as ex:
-                        if ex.response.reason == 'Bad Request' and 
ex.response.status == 400:
+                    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
@@ -1140,7 +1140,7 @@
                            'authenticate through a service principal')
         if os.path.isfile(password_arg_value):
             certificate_file = password_arg_value
-            from OpenSSL.crypto import load_certificate, FILETYPE_PEM
+            from OpenSSL.crypto import load_certificate, FILETYPE_PEM, Error
             self.certificate_file = certificate_file
             self.public_certificate = None
             try:
@@ -1154,7 +1154,7 @@
                         match = re.search(r'\-+BEGIN 
CERTIFICATE.+\-+(?P<public>[^-]+)\-+END CERTIFICATE.+\-+',
                                           self.cert_file_string, re.I)
                         self.public_certificate = match.group('public').strip()
-            except UnicodeDecodeError:
+            except (UnicodeDecodeError, Error):
                 raise CLIError('Invalid certificate, please use a valid PEM 
file.')
         else:
             self.secret = password_arg_value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-core-2.13.0/azure/cli/core/adal_authentication.py 
new/azure-cli-core-2.14.2/azure/cli/core/adal_authentication.py
--- old/azure-cli-core-2.13.0/azure/cli/core/adal_authentication.py     
2020-10-12 09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/adal_authentication.py     
2020-11-09 06:56:54.000000000 +0100
@@ -93,3 +93,27 @@
     def get_token(self, *scopes, **kwargs):  # pylint:disable=unused-argument
         self.set_token()
         return AccessToken(self.token['access_token'], 
int(self.token['expires_on']))
+
+    def set_token(self):
+        import traceback
+        from knack.log import get_logger
+        logger = get_logger(__name__)
+        from azure.cli.core.azclierror import AzureConnectionError, 
AzureResponseError
+        try:
+            super(MSIAuthenticationWrapper, self).set_token()
+        except requests.exceptions.ConnectionError as err:
+            logger.debug('throw requests.exceptions.ConnectionError when doing 
MSIAuthentication: \n%s',
+                         traceback.format_exc())
+            raise AzureConnectionError('Failed to connect to MSI. Please make 
sure MSI is configured correctly '
+                                       'and check the network 
connection.\nError detail: {}'.format(str(err)))
+        except requests.exceptions.HTTPError as err:
+            logger.debug('throw requests.exceptions.HTTPError when doing 
MSIAuthentication: \n%s',
+                         traceback.format_exc())
+            raise AzureResponseError('Failed to connect to MSI. Please make 
sure MSI is configured correctly.\n'
+                                     'Get Token request returned http error: 
{}, reason: {}'
+                                     .format(err.response.status, 
err.response.reason))
+        except TimeoutError as err:
+            logger.debug('throw TimeoutError when doing MSIAuthentication: 
\n%s',
+                         traceback.format_exc())
+            raise AzureConnectionError('MSI endpoint is not responding. Please 
make sure MSI is configured correctly.\n'
+                                       'Error detail: {}'.format(str(err)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/cloud.py 
new/azure-cli-core-2.14.2/azure/cli/core/cloud.py
--- old/azure-cli-core-2.13.0/azure/cli/core/cloud.py   2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/cloud.py   2020-11-09 
06:56:54.000000000 +0100
@@ -163,42 +163,6 @@
         return val
 
 
-def _get_ossrdbms_resource_id(cloud_name):
-    ossrdbms_mapper = {
-        'AzureCloud': 'https://ossrdbms-aad.database.windows.net',
-        'AzureChinaCloud': 'https://ossrdbms-aad.database.chinacloudapi.cn',
-        'AzureUSGovernment': 'https://ossrdbms-aad.database.usgovcloudapi.net',
-        'AzureGermanCloud': 'https://ossrdbms-aad.database.cloudapi.de'
-    }
-    return ossrdbms_mapper.get(cloud_name, None)
-
-
-def _get_microsoft_graph_resource_id(cloud_name):
-    graph_endpoint_mapper = {
-        'AzureCloud': 'https://graph.microsoft.com/',
-        'AzureChinaCloud': 'https://microsoftgraph.chinacloudapi.cn/',
-        'AzureUSGovernment': 'https://graph.microsoft.us/',
-        'AzureGermanCloud': 'https://graph.microsoft.de/'
-    }
-    return graph_endpoint_mapper.get(cloud_name, None)
-
-
-def _get_storage_sync_endpoint(cloud_name):
-    storage_sync_endpoint_mapper = {
-        'AzureCloud': 'afs.azure.net',
-        'AzureUSGovernment': 'afs.azure.us',
-    }
-    return storage_sync_endpoint_mapper.get(cloud_name, None)
-
-
-def _get_synapse_analytics_endpoint(cloud_name):
-    synapse_analytics_endpoint_mapper = {
-        'AzureCloud': '.dev.azuresynapse.net',
-        'AzureChinaCloud': '.dev.azuresynapse.azure.cn'
-    }
-    return synapse_analytics_endpoint_mapper.get(cloud_name, None)
-
-
 def _get_database_server_endpoint(sql_server_hostname, cloud_name):
     def _concat_db_server_endpoint(db_prefix):
         if cloud_name == 'AzureCloud':
@@ -209,58 +173,18 @@
     return _concat_db_server_endpoint
 
 
-def _get_app_insights_telemetry_channel_resource_id(cloud_name):
-    app_insights_telemetry_channel_resource_id_mapper = {
-        'AzureCloud': 'https://dc.applicationinsights.azure.com/v2/track',
-        'AzureChinaCloud': 'https://dc.applicationinsights.azure.cn/v2/track',
-        'AzureUSGovernment': 'https://dc.applicationinsights.us/v2/track'
-    }
-    return app_insights_telemetry_channel_resource_id_mapper.get(cloud_name, 
None)
-
-
-def _get_log_analytics_resource_id(cloud_name):
-    log_analytics_resource_id_mapper = {
-        'AzureCloud': 'https://api.loganalytics.io',
-        'AzureChinaCloud': 'https://api.loganalytics.azure.cn',
-        'AzureUSGovernment': 'https://api.loganalytics.us'
-    }
-    return log_analytics_resource_id_mapper.get(cloud_name, None)
-
-
-def _get_app_insights_resource_id(cloud_name):
-    app_insights_resource_id_mapper = {
-        'AzureCloud': 'https://api.applicationinsights.io',
-        'AzureChinaCloud': 'https://api.applicationinsights.azure.cn',
-        'AzureUSGovernment': 'https://api.applicationinsights.us'
-    }
-    return app_insights_resource_id_mapper.get(cloud_name, None)
-
-
-def _get_synapse_analytics_resource_id(cloud_name):
-    synapse_analytics_resource_id_mapper = {
-        'AzureCloud': 'https://dev.azuresynapse.net',
-        'AzureChinaCloud': 'https://dev.azuresynapse.net'
-    }
-    return synapse_analytics_resource_id_mapper.get(cloud_name, None)
-
-
-def _get_attestation_resource_id(cloud_name):
-    attestation_resource_id_mapper = {
-        'AzureCloud': 'https://attest.azure.net'
-    }
-    return attestation_resource_id_mapper.get(cloud_name, None)
-
-
-def _get_attestation_endpoint(cloud_name):
-    attestation_endpoint_mapper = {
-        'AzureCloud': '.attest.azure.net'
-    }
-    return attestation_endpoint_mapper.get(cloud_name, None)
-
-
-def _get_mhsm_dns_suffix(cloud_name):
-    mhsm_dns_suffix_mapper = {c.name: c.suffixes.mhsm_dns for c in 
HARD_CODED_CLOUD_LIST}
-    return mhsm_dns_suffix_mapper.get(cloud_name, None)
+def _get_endpoint_fallback_value(cloud_name):
+    def _get_cloud_endpoint_fallback_value(endpoint_name):
+        endpoint_mapper = {c.name: c.endpoints.__dict__.get(endpoint_name, 
None) for c in HARD_CODED_CLOUD_LIST}
+        return endpoint_mapper.get(cloud_name, None)
+    return _get_cloud_endpoint_fallback_value
+
+
+def _get_suffix_fallback_value(cloud_name):
+    def _get_cloud_suffix_fallback_value(suffix_name):
+        suffix_mapper = {c.name: c.suffixes.__dict__.get(suffix_name, None) 
for c in HARD_CODED_CLOUD_LIST}
+        return suffix_mapper.get(cloud_name, None)
+    return _get_cloud_suffix_fallback_value
 
 
 def _convert_arm_to_cli(arm_cloud_metadata_dict):
@@ -291,42 +215,45 @@
     sql_server_hostname = get_suffix('sqlServerHostname', add_dot=True)
     get_db_server_endpoint = 
_get_database_server_endpoint(sql_server_hostname, arm_dict['name'])
 
+    get_suffix_fallback_value = _get_suffix_fallback_value(arm_dict['name'])
+    get_endpoint_fallback_value = 
_get_endpoint_fallback_value(arm_dict['name'])
+
     return Cloud(
         arm_dict['name'],
-        endpoints=CloudEndpoints(
+        endpoints=CloudEndpoints(  # please add fallback_value if the endpoint 
is not added to 
https://management.azure.com/metadata/endpoints?api-version=2019-05-01 yet
             management=arm_dict['authentication']['audiences'][0],
-            resource_manager=arm_dict['resourceManager'],
-            sql_management=arm_dict['sqlManagement'],
-            batch_resource_id=arm_dict['batch'],
-            gallery=arm_dict['gallery'],
+            resource_manager=get_endpoint('resourceManager'),
+            sql_management=get_endpoint('sqlManagement'),
+            batch_resource_id=get_endpoint('batch'),
+            gallery=get_endpoint('gallery'),
             active_directory=arm_dict['authentication']['loginEndpoint'],
             
active_directory_resource_id=arm_dict['authentication']['audiences'][0],
-            active_directory_graph_resource_id=arm_dict['graphAudience'],
-            
microsoft_graph_resource_id=_get_microsoft_graph_resource_id(arm_dict['name']), 
 # change once microsoft_graph_resource_id is fixed in ARM
-            vm_image_alias_doc=arm_dict['vmImageAliasDoc'],
-            media_resource_id=arm_dict['media'],
-            ossrdbms_resource_id=_get_ossrdbms_resource_id(arm_dict['name']),  
# change once ossrdbms_resource_id is available via ARM
-            
active_directory_data_lake_resource_id=arm_dict['activeDirectoryDataLake'] if 
'activeDirectoryDataLake' in arm_dict else None,
-            app_insights_resource_id=get_endpoint('appInsightsResourceId', 
fallback_value=_get_app_insights_resource_id(arm_dict['name'])),
-            log_analytics_resource_id=get_endpoint('logAnalyticsResourceId', 
fallback_value=_get_log_analytics_resource_id(arm_dict['name'])),
-            
synapse_analytics_resource_id=get_endpoint('synapseAnalyticsResourceId', 
fallback_value=_get_synapse_analytics_resource_id(arm_dict['name'])),
-            
app_insights_telemetry_channel_resource_id=get_endpoint('appInsightsTelemetryChannelResourceId',
 
fallback_value=_get_app_insights_telemetry_channel_resource_id(arm_dict['name'])),
-            attestation_resource_id=get_endpoint('attestationResourceId', 
fallback_value=_get_attestation_resource_id(arm_dict['name'])),
-            portal=arm_dict['portal'] if 'portal' in arm_dict else None),
+            active_directory_graph_resource_id=get_endpoint('graphAudience'),
+            
microsoft_graph_resource_id=get_endpoint('microsoftGraphResourceId', 
fallback_value=get_endpoint_fallback_value('microsoft_graph_resource_id')),  # 
change once microsoft_graph_resource_id is fixed in ARM
+            vm_image_alias_doc=get_endpoint('vmImageAliasDoc'),
+            media_resource_id=get_endpoint('media'),
+            ossrdbms_resource_id=get_endpoint('ossrdbmsResourceId', 
fallback_value=get_endpoint_fallback_value('ossrdbms_resource_id')),  # change 
once ossrdbms_resource_id is available via ARM
+            
active_directory_data_lake_resource_id=get_endpoint('activeDirectoryDataLake'),
+            app_insights_resource_id=get_endpoint('appInsightsResourceId', 
fallback_value=get_endpoint_fallback_value('app_insights_resource_id')),
+            log_analytics_resource_id=get_endpoint('logAnalyticsResourceId', 
fallback_value=get_endpoint_fallback_value('log_analytics_resource_id')),
+            
synapse_analytics_resource_id=get_endpoint('synapseAnalyticsResourceId', 
fallback_value=get_endpoint_fallback_value('synapse_analytics_resource_id')),
+            
app_insights_telemetry_channel_resource_id=get_endpoint('appInsightsTelemetryChannelResourceId',
 
fallback_value=get_endpoint_fallback_value('app_insights_telemetry_channel_resource_id')),
+            attestation_resource_id=get_endpoint('attestationResourceId', 
fallback_value=get_endpoint_fallback_value('attestation_resource_id')),
+            portal=get_endpoint('portal')),
         suffixes=CloudSuffixes(
             storage_endpoint=get_suffix('storage'),
-            storage_sync_endpoint=get_suffix('storageSyncEndpointSuffix', 
fallback_value=_get_storage_sync_endpoint(arm_dict['name'])),
+            storage_sync_endpoint=get_suffix('storageSyncEndpointSuffix', 
fallback_value=get_suffix_fallback_value('storage_sync_endpoint')),
             keyvault_dns=get_suffix('keyVaultDns', add_dot=True),
-            mhsm_dns=get_suffix('mhsmDns', add_dot=True, 
fallback_value=_get_mhsm_dns_suffix(arm_dict['name'])),
+            mhsm_dns=get_suffix('mhsmDns', add_dot=True, 
fallback_value=get_suffix_fallback_value('mhsm_dns')),
             sql_server_hostname=sql_server_hostname,
             mysql_server_endpoint=get_suffix('mysqlServerEndpoint', 
add_dot=True, fallback_value=get_db_server_endpoint('.mysql')),
             postgresql_server_endpoint=get_suffix('postgresqlServerEndpoint', 
add_dot=True, fallback_value=get_db_server_endpoint('.postgres')),
             mariadb_server_endpoint=get_suffix('mariadbServerEndpoint', 
add_dot=True, fallback_value=get_db_server_endpoint('.mariadb')),
             
azure_datalake_store_file_system_endpoint=get_suffix('azureDataLakeStoreFileSystem'),
             
azure_datalake_analytics_catalog_and_job_endpoint=get_suffix('azureDataLakeAnalyticsCatalogAndJob'),
-            synapse_analytics_endpoint=get_suffix('synapseAnalytics', 
add_dot=True, fallback_value=_get_synapse_analytics_endpoint(arm_dict['name'])),
+            synapse_analytics_endpoint=get_suffix('synapseAnalytics', 
add_dot=True, 
fallback_value=get_suffix_fallback_value('synapse_analytics_endpoint')),
             acr_login_server_endpoint=get_suffix('acrLoginServer', 
add_dot=True),
-            attestation_endpoint=get_suffix('attestationEndpoint', 
add_dot=True, fallback_value=_get_attestation_endpoint(arm_dict['name']))))
+            attestation_endpoint=get_suffix('attestationEndpoint', 
add_dot=True, 
fallback_value=get_suffix_fallback_value('attestation_endpoint'))))
 
 
 class Cloud:  # pylint: disable=too-few-public-methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-core-2.13.0/azure/cli/core/command_recommender.py 
new/azure-cli-core-2.14.2/azure/cli/core/command_recommender.py
--- old/azure-cli-core-2.13.0/azure/cli/core/command_recommender.py     
2020-10-12 09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/command_recommender.py     
2020-11-09 06:56:54.000000000 +0100
@@ -251,7 +251,10 @@
             if parameter_table:
                 for argument in parameter_table.values():
                     options = argument.type.settings['options_list']
-                    options = (option for option in options if not 
isinstance(option, Deprecated))
+                    options = [option for option in options if not 
isinstance(option, Deprecated)]
+                    # skip the positional arguments
+                    if not options:
+                        continue
                     try:
                         sorted_options = sorted(options, key=len, reverse=True)
                         standard_form = sorted_options[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/parser.py 
new/azure-cli-core-2.14.2/azure/cli/core/parser.py
--- old/azure-cli-core-2.13.0/azure/cli/core/parser.py  2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/parser.py  2020-11-09 
06:56:54.000000000 +0100
@@ -223,7 +223,7 @@
     def enable_autocomplete(self):
         argcomplete.autocomplete = AzCompletionFinder()
         argcomplete.autocomplete(self, validator=lambda c, p: 
c.lower().startswith(p.lower()),
-                                 default_completer=lambda _: ())
+                                 default_completer=lambda *args, **kwargs: ())
 
     def _get_failure_recovery_arguments(self, action=None):
         # Strip the leading "az " and any extraneous whitespace.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-core-2.13.0/azure/cli/core/profiles/_shared.py 
new/azure-cli-core-2.14.2/azure/cli/core/profiles/_shared.py
--- old/azure-cli-core-2.13.0/azure/cli/core/profiles/_shared.py        
2020-10-12 09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/profiles/_shared.py        
2020-11-09 06:56:54.000000000 +0100
@@ -143,7 +143,7 @@
             'disk_accesses': '2020-05-01',
             'snapshots': '2020-05-01',
             'galleries': '2019-12-01',
-            'gallery_images': '2019-12-01',
+            'gallery_images': '2020-09-30',
             'gallery_image_versions': '2019-12-01',
             'virtual_machine_scale_sets': '2020-06-01'
         }),
@@ -169,7 +169,7 @@
         ResourceType.DATA_KEYVAULT_ADMINISTRATION_ACCESS_CONTROL: 
'7.2-preview',
         ResourceType.DATA_STORAGE: '2018-11-09',
         ResourceType.DATA_STORAGE_BLOB: '2019-12-12',
-        ResourceType.DATA_STORAGE_FILEDATALAKE: '2018-11-09',
+        ResourceType.DATA_STORAGE_FILEDATALAKE: '2020-02-10',
         ResourceType.DATA_STORAGE_FILESHARE: '2019-07-07',
         ResourceType.DATA_STORAGE_QUEUE: '2018-03-28',
         ResourceType.DATA_COSMOS_TABLE: '2017-04-17',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/telemetry.py 
new/azure-cli-core-2.14.2/azure/cli/core/telemetry.py
--- old/azure-cli-core-2.13.0/azure/cli/core/telemetry.py       2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/telemetry.py       2020-11-09 
06:56:54.000000000 +0100
@@ -22,6 +22,10 @@
 AZURE_CLI_PREFIX = 'Context.Default.AzureCLI.'
 DEFAULT_INSTRUMENTATION_KEY = 'c4395b75-49cc-422c-bc95-c7d51aef5d46'
 CORRELATION_ID_PROP_NAME = 'Reserved.DataModel.CorrelationId'
+# Put a config section or key (section.name) in the allowed set to allow 
recording the config
+# values in the section or for the key with 'az config set'
+ALLOWED_CONFIG_SECTIONS_OR_KEYS = {'auto-upgrade', 'extension', 'core', 
'logging.enable_log_file',
+                                   'output.show_survey_link'}
 
 
 class TelemetrySession:  # pylint: disable=too-many-instance-attributes
@@ -136,6 +140,7 @@
             'Context.Default.VS.Core.Machine.Id': _get_hash_machine_id(),
             'Context.Default.VS.Core.OS.Type': platform.system().lower(),  # 
eg. darwin, windows
             'Context.Default.VS.Core.OS.Version': platform.version().lower(),  
# eg. 10.0.14942
+            'Context.Default.VS.Core.OS.Platform': 
platform.platform().lower(),  # eg. windows-10-10.0.19041-sp0
             'Context.Default.VS.Core.User.Id': _get_installation_id(),
             'Context.Default.VS.Core.User.IsMicrosoftInternal': 'False',
             'Context.Default.VS.Core.User.IsOptedIn': 'True',
@@ -343,11 +348,26 @@
 
 @decorators.suppress_all_exceptions()
 def set_debug_info(key, info):
+    if key == 'ConfigSet':
+        info = _process_config_set_debug_info(info)
+
     debug_info = '{}: {}'.format(key, info)
     _session.debug_info.append(debug_info)
 
 
 @decorators.suppress_all_exceptions()
+def _process_config_set_debug_info(info):
+    processed_info = []
+    # info is a list of tuples
+    for key, section, value in info:
+        if section in ALLOWED_CONFIG_SECTIONS_OR_KEYS or key in 
ALLOWED_CONFIG_SECTIONS_OR_KEYS:
+            processed_info.append('{}={}'.format(key, value))
+        else:
+            processed_info.append('{}={}'.format(key, '***' if value else 
value))
+    return ' '.join(processed_info)
+
+
[email protected]_all_exceptions()
 def set_application(application, arg_complete_env_name):
     _session.application, _session.arg_complete_env_name = application, 
arg_complete_env_name
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/azure/cli/core/util.py 
new/azure-cli-core-2.14.2/azure/cli/core/util.py
--- old/azure-cli-core-2.13.0/azure/cli/core/util.py    2020-10-12 
09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure/cli/core/util.py    2020-11-09 
06:56:54.000000000 +0100
@@ -61,7 +61,7 @@
     from azure.cli.core.azlogging import CommandLoggerContext
     from azure.common import AzureException
     from azure.core.exceptions import AzureError
-    from requests.exceptions import SSLError
+    from requests.exceptions import SSLError, HTTPError
     import azure.cli.core.azclierror as azclierror
     import traceback
 
@@ -125,6 +125,11 @@
             AzCLIErrorType = get_error_type_by_status_code(status_code)
             az_error = AzCLIErrorType(error_msg)
 
+        elif isinstance(ex, HTTPError):
+            status_code = str(getattr(ex.response, 'status_code', 'Unknown 
Code'))
+            AzCLIErrorType = get_error_type_by_status_code(status_code)
+            az_error = AzCLIErrorType(error_msg)
+
         elif isinstance(ex, KeyboardInterrupt):
             error_msg = 'Keyboard interrupt is captured.'
             az_error = azclierror.ManualInterrupt(error_msg)
@@ -211,7 +216,7 @@
     if status_code.startswith('5'):
         return azclierror.AzureInternalError
 
-    return azclierror.AzureResponseError
+    return azclierror.UnknownError
 
 
 def is_azure_connection_error(error_msg):
@@ -791,7 +796,7 @@
         skip_authorization_header = True
 
     # Handle User-Agent
-    agents = [get_az_user_agent()]
+    agents = [get_az_rest_user_agent()]
 
     # Borrow AZURE_HTTP_USER_AGENT from msrest
     # 
https://github.com/Azure/msrest-for-python/blob/4cc8bc84e96036f03b34716466230fb257e27b36/msrest/pipeline/universal.py#L70
@@ -1076,6 +1081,17 @@
 
     return ' '.join(agents)
 
+
+def get_az_rest_user_agent():
+    """Get User-Agent for az rest calls"""
+
+    agents = ['python/{}'.format(platform.python_version()),
+              '({})'.format(platform.platform()),
+              get_az_user_agent()
+              ]
+
+    return ' '.join(agents)
+
 
 def user_confirmation(message, yes=False):
     if yes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-core-2.13.0/azure_cli_core.egg-info/PKG-INFO 
new/azure-cli-core-2.14.2/azure_cli_core.egg-info/PKG-INFO
--- old/azure-cli-core-2.13.0/azure_cli_core.egg-info/PKG-INFO  2020-10-12 
09:58:34.000000000 +0200
+++ new/azure-cli-core-2.14.2/azure_cli_core.egg-info/PKG-INFO  2020-11-09 
06:57:09.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-cli-core
-Version: 2.13.0
+Version: 2.14.2
 Summary: Microsoft Azure Command-Line Tools Core Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -15,6 +15,18 @@
         Release History
         ===============
         
+        2.14.2
+        ++++++
+        * No changes
+        
+        2.14.1
+        ++++++
+        * Minor fixes
+        
+        2.14.0
+        ++++++
+        * Minor fixes
+        
         2.13.0
         ++++++
         * Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-core-2.13.0/setup.py 
new/azure-cli-core-2.14.2/setup.py
--- old/azure-cli-core-2.13.0/setup.py  2020-10-12 09:58:16.000000000 +0200
+++ new/azure-cli-core-2.14.2/setup.py  2020-11-09 06:56:54.000000000 +0100
@@ -9,7 +9,7 @@
 from codecs import open
 from setuptools import setup
 
-VERSION = "2.13.0"
+VERSION = "2.14.2"
 
 # If we have source, validate that our version numbers match
 # This should prevent uploading releases with mismatched versions.
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to