parameters: (dm_dir, build_number, builder_name)
docstring: 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)
docstring_summary: Upload DM output PNG files and JSON summary to Google Storage.
docstring_tokens: Upload DM output PNG files and JSON summary to Google Storage .
function: 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
    )]
  
    if not os.path.isfile(os.path.join(dm_dir, 'dm.json')):
      sys.exit("no dm.json file found in output directory.")
  
    # 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)
function_tokens: def main ( dm_dir , build_number , builder_name ) : # 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 ) ] if not os . path . isfile ( os . path . join ( dm_dir , 'dm.json' ) ) : sys . exit ( "no dm.json file found in output directory." ) # 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 )