| Index: infra/bots/recipe_modules/core/resources/upload_dm_results.py | 
| diff --git a/infra/bots/recipe_modules/core/resources/upload_dm_results.py b/infra/bots/recipe_modules/core/resources/upload_dm_results.py | 
| deleted file mode 100755 | 
| index 1bee64fb78e0c23d198c61031f0e1315227df3f2..0000000000000000000000000000000000000000 | 
| --- a/infra/bots/recipe_modules/core/resources/upload_dm_results.py | 
| +++ /dev/null | 
| @@ -1,98 +0,0 @@ | 
| -#!/usr/bin/env python | 
| -# Copyright 2014 The Chromium Authors. All rights reserved. | 
| -# Use of this source code is governed by a BSD-style license that can be | 
| -# found in the LICENSE file. | 
| - | 
| -"""Upload DM output PNG files and JSON summary to Google Storage.""" | 
| - | 
| -import datetime | 
| -import json | 
| -import os | 
| -import shutil | 
| -import sys | 
| -import tempfile | 
| - | 
| -def main(dm_dir, git_hash, builder_name, build_number, try_issue, import_path): | 
| -  """Upload DM output PNG files and JSON summary to Google Storage. | 
| - | 
| -    dm_dir:        path to PNG files and JSON summary    (str) | 
| -    git_hash:      this build's Git hash                 (str) | 
| -    builder_name:  name of this builder                  (str) | 
| -    build_number:  nth build on this builder             (str or int) | 
| -    try_issue:     Rietveld issue if this is a try job   (str, int, or None) | 
| -    import_path:   Path to import the gs_utils package   (str) | 
| -  """ | 
| -  # import gs_utils | 
| -  sys.path.insert(0, import_path) | 
| -  import gs_utils | 
| - | 
| -  # Private, but Google-readable. | 
| -  ACL = gs_utils.GSUtils.PredefinedACL.PRIVATE | 
| -  FINE_ACLS = [( | 
| -    gs_utils.GSUtils.IdType.GROUP_BY_DOMAIN, | 
| -    'google.com', | 
| -    gs_utils.GSUtils.Permission.READ | 
| -  )] | 
| - | 
| -  # Move dm.json and verbose.log to their own directory for easy upload. | 
| -  tmp = tempfile.mkdtemp() | 
| -  shutil.move(os.path.join(dm_dir, 'dm.json'), | 
| -              os.path.join(tmp,    'dm.json')) | 
| -  shutil.move(os.path.join(dm_dir, 'verbose.log'), | 
| -              os.path.join(tmp,    'verbose.log')) | 
| - | 
| -  # Make sure the JSON file parses correctly. | 
| -  json_file_name = os.path.join(tmp, 'dm.json') | 
| -  with open(json_file_name) as jsonFile: | 
| -    try: | 
| -      json.load(jsonFile) | 
| -    except ValueError: | 
| -      json_content = open(json_file_name).read() | 
| -      print >> sys.stderr, "Invalid JSON: \n\n%s\n" % json_content | 
| -      raise | 
| - | 
| -  # Only images are left in dm_dir.  Upload any new ones. | 
| -  gs = gs_utils.GSUtils() | 
| -  bucket, image_dest_dir = 'chromium-skia-gm', 'dm-images-v1' | 
| -  print 'Uploading images to gs://' + bucket + '/' + image_dest_dir | 
| -  gs.upload_dir_contents(dm_dir, | 
| -                         bucket, | 
| -                         image_dest_dir, | 
| -                         upload_if = gs.UploadIf.ALWAYS, | 
| -                         predefined_acl = ACL, | 
| -                         fine_grained_acl_list = FINE_ACLS) | 
| - | 
| - | 
| -  # /dm-json-v1/year/month/day/hour/git-hash/builder/build-number/dm.json | 
| -  now = datetime.datetime.utcnow() | 
| -  summary_dest_dir = '/'.join(['dm-json-v1', | 
| -                               str(now.year ).zfill(4), | 
| -                               str(now.month).zfill(2), | 
| -                               str(now.day  ).zfill(2), | 
| -                               str(now.hour ).zfill(2), | 
| -                               git_hash, | 
| -                               builder_name, | 
| -                               str(build_number)]) | 
| - | 
| -  # Trybot results are further siloed by CL. | 
| -  if try_issue: | 
| -    summary_dest_dir = '/'.join(['trybot', summary_dest_dir, str(try_issue)]) | 
| - | 
| -  # Upload the JSON summary and verbose.log. | 
| -  print 'Uploading logs to gs://' + bucket + '/' + summary_dest_dir | 
| -  gs.upload_dir_contents(tmp, | 
| -                         bucket, | 
| -                         summary_dest_dir, | 
| -                         predefined_acl = ACL, | 
| -                         fine_grained_acl_list = FINE_ACLS) | 
| - | 
| - | 
| -  # Just for hygiene, put dm.json and verbose.log back. | 
| -  shutil.move(os.path.join(tmp,    'dm.json'), | 
| -              os.path.join(dm_dir, 'dm.json')) | 
| -  shutil.move(os.path.join(tmp,    'verbose.log'), | 
| -              os.path.join(dm_dir, 'verbose.log')) | 
| -  os.rmdir(tmp) | 
| - | 
| -if '__main__' == __name__: | 
| -  main(*sys.argv[1:]) | 
|  |