| Index: py/utils/gs_utils.py
|
| diff --git a/py/utils/gs_utils.py b/py/utils/gs_utils.py
|
| index 6f08c1af8f7687c960813649a53d00fda3ec79a1..d49b3fe4f615da04ff9c05a05a7fa55d3e03ebda 100644
|
| --- a/py/utils/gs_utils.py
|
| +++ b/py/utils/gs_utils.py
|
| @@ -197,7 +197,7 @@ class GSUtils(object):
|
| contents of
|
| dest_bucket: GCS bucket to copy the files into
|
| dest_dir: full path (Posix-style) within that bucket; write the files into
|
| - this directory
|
| + this directory. If None, write into the root directory of the bucket.
|
| predefined_acl: which predefined ACL to apply to the files on Google
|
| Storage; must be one of the PredefinedACL values defined above.
|
| If None, inherits dest_bucket's default object ACL.
|
| @@ -225,30 +225,34 @@ class GSUtils(object):
|
| b = self._connect_to_bucket(bucket_name=dest_bucket)
|
| for filename in sorted(os.listdir(source_dir)):
|
| local_path = os.path.join(source_dir, filename)
|
| + if dest_dir:
|
| + remote_path = posixpath.join(dest_dir, filename)
|
| + else:
|
| + remote_path = filename
|
| +
|
| if os.path.isdir(local_path):
|
| self.upload_dir_contents( # recurse
|
| source_dir=local_path, dest_bucket=dest_bucket,
|
| - dest_dir=posixpath.join(dest_dir, filename),
|
| + dest_dir=remote_path,
|
| predefined_acl=predefined_acl,
|
| fine_grained_acl_list=fine_grained_acl_list)
|
| else:
|
| item = Key(b)
|
| - dest_path = posixpath.join(dest_dir, filename)
|
| - item.key = dest_path
|
| + item.key = remote_path
|
| try:
|
| item.set_contents_from_filename(
|
| filename=local_path, policy=predefined_acl)
|
| except BotoServerError, e:
|
| e.body = (repr(e.body) +
|
| ' while uploading local_path=%s to bucket=%s, path=%s' % (
|
| - local_path, dest_bucket, dest_path))
|
| + local_path, dest_bucket, remote_path))
|
| raise
|
| # TODO(epoger): This may be inefficient, because it calls
|
| # _connect_to_bucket() for every file. Depending on how expensive that
|
| # call is, we may want to optimize this.
|
| for (id_type, id_value, permission) in fine_grained_acl_list or []:
|
| self.set_acl(
|
| - bucket=dest_bucket, path=dest_path,
|
| + bucket=dest_bucket, path=remote_path,
|
| id_type=id_type, id_value=id_value, permission=permission)
|
|
|
| def download_file(self, source_bucket, source_path, dest_path,
|
|
|