@ -6,6 +6,7 @@
from __future__ import print_function
import re
import os
import scm
import subprocess2
import sys
@ -19,10 +20,13 @@ except ImportError: # For Py3 compatibility
# Current version of metrics recording.
# When we add new metrics, the version number will be increased, we display the
# user what has changed, and ask the user to agree again.
CURRENT_VERSION = 1
CURRENT_VERSION = 2
APP_URL = ' https://cit-cli-metrics.appspot.com '
DEPOT_TOOLS_REPORT_BUILD = ' DEPOT_TOOLS_REPORT_BUILD '
def get_notice_countdown_header ( countdown ) :
if countdown == 0 :
yield ' METRICS COLLECTION IS TAKING PLACE '
@ -43,15 +47,28 @@ def get_notice_footer():
def get_change_notice ( version ) :
if version == 0 :
pass # No changes for version 0
return [ ] # No changes for version 0
elif version == 1 :
yield ' We want to collect the Git version. '
yield ' We want to collect information about the HTTP '
yield ' requests that depot_tools makes, and the git and '
yield ' cipd commands it executes. '
yield ' '
yield ' We only collect known strings to make sure we '
yield ' don \' t record PII. '
return [
' We want to collect the Git version. ' ,
' We want to collect information about the HTTP ' ,
' requests that depot_tools makes, and the git and ' ,
' cipd commands it executes. ' ,
' ' ,
' We only collect known strings to make sure we ' ,
' don \' t record PII. ' ,
]
elif version == 2 :
return [
' We will start collecting metrics from bots. ' ,
' There are no changes for developers. ' ,
' If the DEPOT_TOOLS_REPORT_BUILD environment variable is set, ' ,
' we will report information about the current build ' ,
' (e.g. buildbucket project, bucket, builder and build id), ' ,
' and authenticate to the metrics collection server. ' ,
' This information will only be recorded for requests ' ,
' authenticated as bot service accounts. ' ,
]
KNOWN_PROJECT_URLS = {
@ -174,6 +191,22 @@ def get_git_version():
return ' %s . %s . %s ' % match . groups ( )
def get_bot_metrics ( ) :
build = os . getenv ( DEPOT_TOOLS_REPORT_BUILD )
if not build or build . count ( ' / ' ) != 3 :
return None
project , bucket , builder , build = build . split ( ' / ' )
return {
' build_id ' : int ( build ) ,
' builder ' : {
' project ' : project ,
' bucket ' : bucket ,
' builder ' : builder ,
} ,
}
def return_code_from_exception ( exception ) :
""" Returns the exit code that would result of raising the exception. """
if exception is None :
@ -289,5 +322,5 @@ def print_version_change(config_version):
lines = list ( get_notice_version_change_header ( ) )
for version in range ( config_version + 1 , CURRENT_VERSION + 1 ) :
lines . append ( ' ' )
lines + = list ( get_change_notice ( version ) )
lines + = get_change_notice ( version )
print_boxed_text ( sys . stderr . write , 49 , lines )