2015-03-05 17:13:58 +00:00
|
|
|
#!/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 os
|
|
|
|
import shutil
|
|
|
|
import sys
|
|
|
|
import tempfile
|
|
|
|
|
|
|
|
def main(dm_dir, build_number, builder_name):
|
|
|
|
"""Upload DM output PNG files and JSON summary to Google Storage.
|
|
|
|
|
|
|
|
dm_dir: path to PNG files and JSON summary (str)
|
|
|
|
build_number: nth build on this builder (str or int)
|
|
|
|
builder_name: name of this builder (str)
|
|
|
|
"""
|
|
|
|
# import gs_utils
|
|
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
sys.path.insert(0, os.path.join(current_dir, "../../../common/py/utils"))
|
|
|
|
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
|
|
|
|
)]
|
|
|
|
|
2015-04-08 19:20:25 +00:00
|
|
|
if not os.path.isfile(os.path.join(dm_dir, 'dm.json')):
|
|
|
|
sys.exit("no dm.json file found in output directory.")
|
|
|
|
|
2015-03-05 17:13:58 +00:00
|
|
|
# Move dm.json to its own directory to make uploading it easier.
|
|
|
|
tmp = tempfile.mkdtemp()
|
|
|
|
shutil.move(os.path.join(dm_dir, 'dm.json'),
|
|
|
|
os.path.join(tmp, 'dm.json'))
|
|
|
|
|
|
|
|
# Only images are left in dm_dir. Upload any new ones.
|
|
|
|
gs = gs_utils.GSUtils()
|
|
|
|
gs.upload_dir_contents(dm_dir,
|
|
|
|
'skia-android-dm',
|
|
|
|
'dm-images-v1',
|
|
|
|
upload_if = gs.UploadIf.IF_NEW,
|
|
|
|
predefined_acl = ACL,
|
|
|
|
fine_grained_acl_list = FINE_ACLS)
|
|
|
|
|
|
|
|
|
|
|
|
# /dm-json-v1/year/month/day/hour/build-number/builder/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),
|
|
|
|
str(build_number),
|
|
|
|
builder_name])
|
|
|
|
|
|
|
|
# Upload the JSON summary.
|
|
|
|
gs.upload_dir_contents(tmp,
|
|
|
|
'skia-android-dm',
|
|
|
|
summary_dest_dir,
|
|
|
|
predefined_acl = ACL,
|
|
|
|
fine_grained_acl_list = FINE_ACLS)
|
|
|
|
|
|
|
|
|
|
|
|
# Just for hygiene, put dm.json back.
|
|
|
|
shutil.move(os.path.join(tmp, 'dm.json'),
|
|
|
|
os.path.join(dm_dir, 'dm.json'))
|
|
|
|
os.rmdir(tmp)
|
|
|
|
|
|
|
|
if '__main__' == __name__:
|
|
|
|
main(*sys.argv[1:])
|