From a897493ef7497a4d5f7fd70c60a3eb062bb588ed Mon Sep 17 00:00:00 2001 From: Troy Dai Date: Wed, 8 Mar 2017 08:50:45 -0800 Subject: [PATCH] Mitigate AI SDK's problem with numeric in properties (#2397) --- .gitignore | 1 + .../azure/cli/core/telemetry_upload.py | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4de5dbee5c7..1d799ec1c04 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ __pycache__/ # Virtual environment env/ env27/ +.python-version # PTVS analysis .ptvs/ diff --git a/src/azure-cli-core/azure/cli/core/telemetry_upload.py b/src/azure-cli-core/azure/cli/core/telemetry_upload.py index 57e8f068f3b..c7725261018 100644 --- a/src/azure-cli-core/azure/cli/core/telemetry_upload.py +++ b/src/azure-cli-core/azure/cli/core/telemetry_upload.py @@ -6,6 +6,7 @@ import os import sys import json +import six import azure.cli.core.decorators as decorators DIAGNOSTICS_TELEMETRY_ENV_NAME = 'AZURE_CLI_DIAGNOSTICS_TELEMETRY' @@ -39,12 +40,25 @@ def upload(data_to_save): sys.stdout.write('Raw [{}]/n'.format(data_to_save)) for record in data_to_save: - client.track_event(record['name'], record['properties']) + name = record['name'] + raw_properties = record['properties'] + properties = {} + measurements = {} + for k in raw_properties: + v = raw_properties[k] + if isinstance(v, six.string_types): + properties[k] = v + else: + measurements[k] = v + client.track_event(record['name'], properties, measurements) + + if in_diagnostic_mode(): + sys.stdout.write('\nTrack Event: {}\nProperties: {}\nMeasurements: {}'.format( + name, json.dumps(properties), json.dumps(measurements))) client.flush() if in_diagnostic_mode(): - json.dump(data_to_save, sys.stdout, indent=2, sort_keys=True) sys.stdout.write('\nTelemetry upload completes\n')