Source code for otx.cli.utils.telemetry
"""Utilities for OpenVINO telemetry."""
# Copyright (C) 2021-2023 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#
# pylint: disable=broad-exception-caught
import json
import openvino_telemetry as tm
from otx import __version__
__TM_CATEGORY_OTX = "otx"
__TM_MEASUREMENT_ID = "UA-17808594-29"
# __TM_MEASUREMENT_ID_FOR_TESTING = "UA-254359572-1"
# __TM_MEASUREMENT_ID = __TM_MEASUREMENT_ID_FOR_TESTING
__TM_ACTION_VERSION = "version"
__TM_ACTION_CMD_SUCCESS = "success"
__TM_ACTION_CMD_FAILURE = "failure"
__TM_ACTION_CMD_EXCEPTION = "exception"
__TM_ACTION_ERROR = "error"
[docs]
def init_telemetry_session():
"""Init session."""
telemetry = tm.Telemetry(app_name=__TM_CATEGORY_OTX, app_version=str(__version__), tid=__TM_MEASUREMENT_ID)
telemetry.start_session(__TM_CATEGORY_OTX)
send_version(telemetry)
return telemetry
[docs]
def close_telemetry_session(telemetry):
"""Close session."""
if not isinstance(telemetry, tm.Telemetry):
raise RuntimeError(f"Invalid argument. required {type(tm.Telemetry)} but passed {type(telemetry)}")
telemetry.end_session(__TM_CATEGORY_OTX)
telemetry.force_shutdown(1.0)
[docs]
def send_version(telemetry):
"""Send application version."""
if not isinstance(telemetry, tm.Telemetry):
raise RuntimeError(f"Invalid argument. required {type(tm.Telemetry)} but passed {type(telemetry)}")
__send_event(telemetry, __TM_ACTION_VERSION, str(__version__))
[docs]
def send_cmd_results(telemetry, cmd, results):
"""Send cli telemetry data."""
if not isinstance(telemetry, tm.Telemetry):
raise RuntimeError(f"Invalid argument. required {type(tm.Telemetry)} but passed {type(telemetry)}")
action = __TM_ACTION_ERROR
if not isinstance(results, dict):
raise RuntimeError(f"Invalid argument. required {dict} but passed {type(results)}")
retcode = results.pop("retcode", None)
if retcode is not None:
label = dict(cmd=cmd, **results)
if retcode >= 0:
action = __TM_ACTION_CMD_FAILURE
if retcode == 0:
action = __TM_ACTION_CMD_SUCCESS
else:
action = __TM_ACTION_CMD_EXCEPTION
label = dict(cmd=cmd, **results)
if action == __TM_ACTION_ERROR:
__send_error(telemetry, f"Invalid results for sending cmd result: {results}")
else:
__send_event(telemetry, action, label)
def __send_event(telemetry, action, label, **kwargs):
"""Wrapper of the openvino-telemetry.send_event()."""
try:
telemetry.send_event(__TM_CATEGORY_OTX, action, json.dumps(label), **kwargs)
except Exception as error:
print(f"An error while calling otm.send_event(): \n{repr(error)}")
def __send_error(telemetry, err_msg, **kwargs):
"""Wrapper of the openvino-telemetry.send_error()."""
try:
telemetry.send_error(__TM_CATEGORY_OTX, err_msg, **kwargs)
except Exception as error:
print(f"An error while calling otm.send_error(): \n{repr(error)}")