| Index: tools/pyutils/gs_utils.py
|
| diff --git a/tools/pyutils/gs_utils.py b/tools/pyutils/gs_utils.py
|
| deleted file mode 100755
|
| index fdf16adb82bca0d4f1061d19d93438cc65d00549..0000000000000000000000000000000000000000
|
| --- a/tools/pyutils/gs_utils.py
|
| +++ /dev/null
|
| @@ -1,97 +0,0 @@
|
| -#!/usr/bin/python
|
| -
|
| -"""
|
| -Copyright 2014 Google Inc.
|
| -
|
| -Use of this source code is governed by a BSD-style license that can be
|
| -found in the LICENSE file.
|
| -
|
| -Utilities for accessing Google Cloud Storage.
|
| -"""
|
| -
|
| -# System-level imports
|
| -import os
|
| -import posixpath
|
| -import sys
|
| -
|
| -# Imports from third-party code
|
| -TRUNK_DIRECTORY = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
| -for import_subdir in ['google-api-python-client', 'httplib2', 'oauth2client',
|
| - 'uritemplate-py']:
|
| - import_dirpath = os.path.join(
|
| - TRUNK_DIRECTORY, 'third_party', 'externals', import_subdir)
|
| - if import_dirpath not in sys.path:
|
| - # We need to insert at the beginning of the path, to make sure that our
|
| - # imported versions are favored over others that might be in the path.
|
| - # Also, the google-api-python-client checkout contains an empty
|
| - # oauth2client directory, which will confuse things unless we insert
|
| - # our checked-out oauth2client in front of it in the path.
|
| - sys.path.insert(0, import_dirpath)
|
| -try:
|
| - from googleapiclient.discovery import build as build_service
|
| -except ImportError:
|
| - # TODO(epoger): We are moving toward not needing any dependencies to be
|
| - # installed at a system level, but in the meanwhile, if developers run into
|
| - # trouble they can install those system-level dependencies to get unblocked.
|
| - print ('Missing dependencies of google-api-python-client. Please install '
|
| - 'google-api-python-client to get those dependencies; directions '
|
| - 'can be found at https://developers.google.com/api-client-library/'
|
| - 'python/start/installation . More details in http://skbug.com/2641 ')
|
| - raise
|
| -
|
| -# Local imports
|
| -import url_utils
|
| -
|
| -
|
| -def download_file(source_bucket, source_path, dest_path,
|
| - create_subdirs_if_needed=False):
|
| - """ Downloads a single file from Google Cloud Storage to local disk.
|
| -
|
| - Args:
|
| - source_bucket: GCS bucket to download the file from
|
| - source_path: full path (Posix-style) within that bucket
|
| - dest_path: full path (local-OS-style) on local disk to copy the file to
|
| - create_subdirs_if_needed: boolean; whether to create subdirectories as
|
| - needed to create dest_path
|
| - """
|
| - source_http_url = posixpath.join(
|
| - 'http://storage.googleapis.com', source_bucket, source_path)
|
| - url_utils.copy_contents(source_url=source_http_url, dest_path=dest_path,
|
| - create_subdirs_if_needed=create_subdirs_if_needed)
|
| -
|
| -
|
| -def list_bucket_contents(bucket, subdir=None):
|
| - """ Returns files in the Google Cloud Storage bucket as a (dirs, files) tuple.
|
| -
|
| - Uses the API documented at
|
| - https://developers.google.com/storage/docs/json_api/v1/objects/list
|
| -
|
| - Args:
|
| - bucket: name of the Google Storage bucket
|
| - subdir: directory within the bucket to list, or None for root directory
|
| - """
|
| - # The GCS command relies on the subdir name (if any) ending with a slash.
|
| - if subdir and not subdir.endswith('/'):
|
| - subdir += '/'
|
| - subdir_length = len(subdir) if subdir else 0
|
| -
|
| - storage = build_service('storage', 'v1')
|
| - command = storage.objects().list(
|
| - bucket=bucket, delimiter='/', fields='items(name),prefixes',
|
| - prefix=subdir)
|
| - results = command.execute()
|
| -
|
| - # The GCS command returned two subdicts:
|
| - # prefixes: the full path of every directory within subdir, with trailing '/'
|
| - # items: property dict for each file object within subdir
|
| - # (including 'name', which is full path of the object)
|
| - dirs = []
|
| - for dir_fullpath in results.get('prefixes', []):
|
| - dir_basename = dir_fullpath[subdir_length:]
|
| - dirs.append(dir_basename[:-1]) # strip trailing slash
|
| - files = []
|
| - for file_properties in results.get('items', []):
|
| - file_fullpath = file_properties['name']
|
| - file_basename = file_fullpath[subdir_length:]
|
| - files.append(file_basename)
|
| - return (dirs, files)
|
|
|