Beispiel #1
0
def ReportMetrics(metrics_file_path, log_level):
  """Sends the specified anonymous usage event to the given analytics endpoint.

  Args:
      metrics_file_path: str, File with pickled metrics (list of tuples).
      log_level: int, The logging level of gsutil's root logger.
  """
  logger = logging.getLogger()
  handler = logging.FileHandler(LOG_FILE_PATH, mode='w')
  logger.addHandler(handler)
  logger.setLevel(log_level)

  with open(metrics_file_path, 'rb') as metrics_file:
    metrics = pickle.load(metrics_file)
  os.remove(metrics_file_path)

  http = GetNewHttp()

  for metric in metrics:
    try:
      headers = {'User-Agent': metric.user_agent}
      response = http.request(metric.endpoint,
                              method=metric.method,
                              body=metric.body,
                              headers=headers)
      logger.debug(metric)
      logger.debug('RESPONSE: %s', response[0]['status'])
    except Exception as e:  # pylint: disable=broad-except
      logger.debug(e)
def ReportMetrics(metrics_file_path, log_level):
    """Sends the specified anonymous usage event to the given analytics endpoint.

  Args:
      metrics_file_path: str, File with pickled metrics (list of tuples).
      log_level: int, The logging level of gsutil's root logger.
  """
    logger = logging.getLogger()
    handler = logging.FileHandler(LOG_FILE_PATH, mode='w')
    logger.addHandler(handler)
    logger.setLevel(log_level)

    with open(metrics_file_path, 'rb') as metrics_file:
        metrics = pickle.load(metrics_file)
    os.remove(metrics_file_path)

    http = GetNewHttp()

    for metric in metrics:
        try:
            headers = {'User-Agent': metric.user_agent}
            response = http.request(metric.endpoint,
                                    method=metric.method,
                                    body=metric.body,
                                    headers=headers)
            logger.debug(metric)
            logger.debug('RESPONSE: %s', response[0]['status'])
        except Exception as e:  # pylint: disable=broad-except
            logger.debug(e)
Beispiel #3
0
    def _CheckClientCanRead(self, key, client_id, gcs_path):
        """Performs a head request against a signed url to check for read access."""

        signed_url = _GenSignedUrl(key, client_id, 'HEAD', '', '',
                                   int(time.time()) + 10, gcs_path)
        h = GetNewHttp()
        try:
            response, _ = h.request(signed_url, 'HEAD')

            return response.status == 200
        except httplib2.HttpLib2Error as e:
            raise CommandException('Unexpected error while querying'
                                   'object readability ({0})'.format(
                                       e.message))
  def _CheckClientCanRead(self, key, client_id, gcs_path):
    """Performs a head request against a signed url to check for read access."""

    signed_url = _GenSignedUrl(key, client_id,
                               'HEAD', '', '',
                               int(time.time()) + 10,
                               gcs_path)
    h = GetNewHttp()
    try:
      response, _ = h.request(signed_url, 'HEAD')

      return response.status == 200
    except httplib2.HttpLib2Error as e:
      raise CommandException('Unexpected error while querying'
                             'object readability ({0})'
                             .format(e.message))
def ReportMetrics(metrics_file_path, log_level, log_file_path=None):
  """Sends the specified anonymous usage event to the given analytics endpoint.

  Args:
      metrics_file_path: str, File with pickled metrics (list of tuples).
      log_level: int, The logging level of gsutil's root logger.
      log_file_path: str, The file that this module should write its logs to.
        This parameter is intended for use by tests that need to evaluate the
        contents of the file at this path.

  """
  logger = logging.getLogger()
  if log_file_path is not None:
    # Use a separate logger so that we don't add another handler to the default
    # module-level logger. This is intended to prevent multiple calls from tests
    # running in parallel from writing output to the same file.
    new_name = '%s.%s' % (
        logger.name,
        ''.join(random.choice(string.ascii_lowercase) for _ in range(8)))
    logger = logging.getLogger(new_name)

  handler = logging.FileHandler(log_file_path or LOG_FILE_PATH, mode='w')
  logger.addHandler(handler)
  logger.setLevel(log_level)

  with open(metrics_file_path, 'rb') as metrics_file:
    metrics = pickle.load(metrics_file)
  os.remove(metrics_file_path)

  ConfigureCertsFile()
  http = GetNewHttp()

  for metric in metrics:
    try:
      headers = {'User-Agent': metric.user_agent}
      response = http.request(metric.endpoint,
                              method=metric.method,
                              body=metric.body,
                              headers=headers)
      logger.debug(metric)
      logger.debug('RESPONSE: %s', response[0]['status'])
    except Exception as e:  # pylint: disable=broad-except
      logger.debug(e)