6from recipe_engine
import recipe_api
12 """Run gsutil with the given args.
14 This assumes there exists an executable called gsutil on the PATH.
15 This probably only works for Linux/Mac, but those are the only
16 hosts that we
try to upload to GCS
from anyway.
18 return self.m.
step(step_name, cmd=[
'gsutil'] + list(args))
20 def cp(self, name, src, dst, extra_gsutil_args=None, extra_args=None,
22 """Attempt to upload or download files to/from Google Cloud Storage (GCS).
25 name: string. Will be used to fill out the step name.
26 src: string. Absolute path for a local file
or gcs file (e.g. gs://...)
27 dst: string. Same
as src.
28 extra_gsutil_args: optional list of args to be passed to gsutil before the
30 extra_args: optional list of args to be passed to gsutil cp. e.g. [-Z]
31 asks all files be compressed
with gzip after upload
and before download.
32 multi_thread:
if the -m argument should be used to copy multiple items
33 at once (e.g. gsutil -m cp foo* gs://bar/dir)
35 If the operation fails, it will be retried multiple times.
39 cmd.extend(extra_gsutil_args)
44 cmd.extend(extra_args)
45 cmd.extend([src, dst])
47 name =
'upload %s' % name
48 for i
in range(UPLOAD_ATTEMPTS):
51 step_name +=
' (attempt %d)' % (i+1)
55 except self.m.step.StepFailure:
56 if i == UPLOAD_ATTEMPTS - 1:
static int step(int x, SkScalar min, SkScalar max)
def cp(self, name, src, dst, extra_gsutil_args=None, extra_args=None, multithread=False)
def __call__(self, step_name, *args)