(data_to_save, service_endpoint_uri)
| 129 | |
| 130 | @decorators.suppress_all_exceptions(raise_in_diagnostics=True) |
| 131 | def upload(data_to_save, service_endpoint_uri): |
| 132 | |
| 133 | client = build_vortex_telemetry_client(service_endpoint_uri) |
| 134 | |
| 135 | if in_diagnostic_mode(): |
| 136 | sys.stdout.write('Telemetry upload begins\n') |
| 137 | sys.stdout.write('Got data {}\n'.format(json.dumps(json.loads(data_to_save), indent=2))) |
| 138 | |
| 139 | try: |
| 140 | data_to_save = json.loads(data_to_save.replace("'", '"')) |
| 141 | except Exception as err: # pylint: disable=broad-except |
| 142 | if in_diagnostic_mode(): |
| 143 | sys.stdout.write('{}/n'.format(str(err))) |
| 144 | sys.stdout.write('Raw [{}]/n'.format(data_to_save)) |
| 145 | |
| 146 | for record in data_to_save: |
| 147 | name = record['name'] |
| 148 | raw_properties = record['properties'] |
| 149 | properties = {} |
| 150 | measurements = {} |
| 151 | for k in raw_properties: |
| 152 | v = raw_properties[k] |
| 153 | |
| 154 | # pylint: disable=undefined-variable |
| 155 | # suppress warning for undefined variable, since `basestring` was dropped in python 3 |
| 156 | if isinstance(v, str if sys.version_info[0] >= 3 else basestring): |
| 157 | properties[k] = v |
| 158 | else: |
| 159 | measurements[k] = v |
| 160 | client.track_event(name, properties, measurements) |
| 161 | |
| 162 | try: |
| 163 | client.flush() |
| 164 | if in_diagnostic_mode(): |
| 165 | sys.stdout.write('\nTelemetry upload completes\n') |
| 166 | |
| 167 | except HTTPError as e: |
| 168 | if in_diagnostic_mode(): |
| 169 | raise e |
| 170 | |
| 171 | |
| 172 | if __name__ == '__main__': |
no test coverage detected