зеркало из https://github.com/microsoft/azure-cli.git
Initial telemetry hookup (works on wire, not working server-side)
This commit is contained in:
Родитель
2a60c963a1
Коммит
79b9830f86
|
@ -12,8 +12,10 @@
|
|||
<OutputPath>.</OutputPath>
|
||||
<ProjectTypeGuids>{888888a0-9f3d-457c-b088-3a5042f75d52}</ProjectTypeGuids>
|
||||
<LaunchProvider>Standard Python launcher</LaunchProvider>
|
||||
<InterpreterId>{4ae3497d-f45c-4ec2-9e26-57476ef276a0}</InterpreterId>
|
||||
<InterpreterVersion>3.5</InterpreterVersion>
|
||||
<InterpreterId>{153669af-0334-46c7-a6f1-029c48dc84d1}</InterpreterId>
|
||||
<InterpreterVersion>2.7</InterpreterVersion>
|
||||
<CommandLineArguments>storage account list</CommandLineArguments>
|
||||
<EnableNativeCodeDebugging>False</EnableNativeCodeDebugging>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Debug'" />
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'" />
|
||||
|
@ -25,7 +27,12 @@
|
|||
<Compile Include="azure\cli\commands\account.py" />
|
||||
<Compile Include="azure\cli\commands\login.py" />
|
||||
<Compile Include="azure\cli\commands\logout.py" />
|
||||
<Compile Include="azure\cli\commands\network.py" />
|
||||
<Compile Include="azure\cli\commands\resourcegroup.py" />
|
||||
<Compile Include="azure\cli\commands\storage.py" />
|
||||
<Compile Include="azure\cli\commands\vm.py" />
|
||||
<Compile Include="azure\cli\commands\_auto_command.py" />
|
||||
<Compile Include="azure\cli\commands\_command_creation.py" />
|
||||
<Compile Include="azure\cli\commands\__init__.py" />
|
||||
<Compile Include="azure\cli\main.py" />
|
||||
<Compile Include="azure\cli\tests\test_argparse.py">
|
||||
|
@ -45,6 +52,9 @@
|
|||
<Compile Include="azure\cli\_util.py" />
|
||||
<Compile Include="azure\cli\__init__.py" />
|
||||
<Compile Include="azure\cli\__main__.py" />
|
||||
<Compile Include="azure\cli\_telemetry.py">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="azure\__init__.py" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -54,6 +64,17 @@
|
|||
<Folder Include="azure\cli\tests\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Interpreter Include="..\..\Temp\burt\env27AppInsights\">
|
||||
<Id>{153669af-0334-46c7-a6f1-029c48dc84d1}</Id>
|
||||
<BaseInterpreter>{2af0f10d-7135-4994-9156-5d01c9c11b7e}</BaseInterpreter>
|
||||
<Version>2.7</Version>
|
||||
<Description>env27AppInsights (Python 2.7)</Description>
|
||||
<InterpreterPath>Scripts\python.exe</InterpreterPath>
|
||||
<WindowsInterpreterPath>Scripts\pythonw.exe</WindowsInterpreterPath>
|
||||
<LibraryPath>Lib\</LibraryPath>
|
||||
<PathEnvironmentVariable>PYTHONPATH</PathEnvironmentVariable>
|
||||
<Architecture>X86</Architecture>
|
||||
</Interpreter>
|
||||
<Interpreter Include="..\..\Temp\burt\env27b\">
|
||||
<Id>{83c20e12-84e3-4c10-a1ba-466d2b57483d}</Id>
|
||||
<BaseInterpreter>{2af0f10d-7135-4994-9156-5d01c9c11b7e}</BaseInterpreter>
|
||||
|
@ -65,6 +86,17 @@
|
|||
<PathEnvironmentVariable>PYTHONPATH</PathEnvironmentVariable>
|
||||
<Architecture>X86</Architecture>
|
||||
</Interpreter>
|
||||
<Interpreter Include="..\..\Temp\burt\env35AppInsights\">
|
||||
<Id>{12627503-1b89-4332-94a5-8ddd298e66ac}</Id>
|
||||
<BaseInterpreter>{2af0f10d-7135-4994-9156-5d01c9c11b7e}</BaseInterpreter>
|
||||
<Version>3.5</Version>
|
||||
<Description>env35AppInsights (Python 3.5)</Description>
|
||||
<InterpreterPath>Scripts\python.exe</InterpreterPath>
|
||||
<WindowsInterpreterPath>Scripts\pythonw.exe</WindowsInterpreterPath>
|
||||
<LibraryPath>Lib\</LibraryPath>
|
||||
<PathEnvironmentVariable>PYTHONPATH</PathEnvironmentVariable>
|
||||
<Architecture>X86</Architecture>
|
||||
</Interpreter>
|
||||
<Interpreter Include="..\..\Temp\burt\env35d\">
|
||||
<Id>{4ae3497d-f45c-4ec2-9e26-57476ef276a0}</Id>
|
||||
<BaseInterpreter>{2af0f10d-7135-4994-9156-5d01c9c11b7e}</BaseInterpreter>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
azure==2.0.0a1
|
||||
mock==1.3.0
|
||||
pylint==1.5.4
|
||||
applicationinsights=0.10.0
|
|
@ -3,6 +3,7 @@ import sys
|
|||
|
||||
from ._locale import L, get_file as locale_get_file
|
||||
from ._logging import logger
|
||||
from ._telemetry import telemetry_log_event
|
||||
|
||||
# Named arguments are prefixed with one of these strings
|
||||
ARG_PREFIXES = sorted(('-', '--', '/'), key=len, reverse=True)
|
||||
|
@ -222,6 +223,11 @@ class ArgumentParser(object):
|
|||
old_stdout = sys.stdout
|
||||
try:
|
||||
sys.stdout = out
|
||||
try:
|
||||
telemetry_log_event("Command Executing", {"CommandName": handler.__name__})
|
||||
except Exception(e):
|
||||
#pass
|
||||
raise e
|
||||
return handler(parsed, others)
|
||||
except IncorrectUsageError as ex:
|
||||
print(str(ex), file=out)
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
from applicationinsights import TelemetryClient
|
||||
from applicationinsights.exceptions import enable
|
||||
import azure.cli as cli
|
||||
|
||||
# event, exception, Trace, metric, message
|
||||
|
||||
class Telemetry(object): # pylint:disable=too-few-public-methods
|
||||
client = None
|
||||
|
||||
@staticmethod
|
||||
def init_telemetry():
|
||||
instrumentation_key = 'eb6e9d3a-b6ee-41a6-804f-70e152fdfc36'
|
||||
|
||||
Telemetry.client = TelemetryClient(instrumentation_key)
|
||||
|
||||
Telemetry.client.context.application.id = 'Azure CLI'
|
||||
Telemetry.client.context.application.ver = cli.__version__
|
||||
#Telemetry.client.context.user.id = TODO: get user ID somehow or does AI do it server-side?
|
||||
|
||||
enable(instrumentation_key)
|
||||
|
||||
def user_agrees_to_telemetry():
|
||||
# TODO: agreement
|
||||
return True
|
||||
|
||||
def telemetry_log_event(name, properties=None, measurements=None):
|
||||
Telemetry.client.track_event(name, properties, measurements)
|
||||
Telemetry.client.flush()
|
||||
|
|
@ -4,6 +4,7 @@ from ._argparse import ArgumentParser
|
|||
from ._logging import configure_logging, logger
|
||||
from ._session import Session
|
||||
from ._output import OutputProducer
|
||||
from ._telemetry import Telemetry, user_agrees_to_telemetry
|
||||
|
||||
# CONFIG provides external configuration options
|
||||
CONFIG = Session()
|
||||
|
@ -17,6 +18,9 @@ def main(args):
|
|||
|
||||
configure_logging(args, CONFIG)
|
||||
|
||||
if user_agrees_to_telemetry():
|
||||
Telemetry.init_telemetry()
|
||||
|
||||
from ._locale import install as locale_install
|
||||
locale_install(os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||
'locale',
|
||||
|
|
Загрузка…
Ссылка в новой задаче