Ejemplo n.º 1
0
def _storage_delete(args, _):
  """ Delete one or more buckets or objects. """
  items = _expand_list(args['bucket'])
  items.extend(_expand_list(args['object']))
  errs = []
  for item in items:
    try:
      bucket, key = gcp.storage._bucket.parse_name(item)
      if bucket and key:
        gcs_item = gcp.storage.Item(bucket, key)
        if gcs_item.exists():
          gcp.storage.Item(bucket, key).delete()
        else:
          errs.append("%s does not exist" % item)
      elif bucket:
        gcs_bucket = gcp.storage.Bucket(bucket)
        if gcs_bucket.exists():
          gcs_bucket.delete()
        else:
          errs.append("%s does not exist" % item)
      else:
        raise Exception("Can't delete item with invalid name %s" % item)
    except Exception as e:
      errs.append("Couldn't delete %s: %s" %
                  (item, _utils.extract_storage_api_response_error(e.message)))
  if errs:
    raise Exception('\n'.join(errs))
Ejemplo n.º 2
0
def _storage_copy(args, _):
  target = args['destination']
  target_bucket, target_key = gcp.storage._bucket.parse_name(target)
  if target_bucket is None and target_key is None:
    raise Exception('Invalid copy target name %s' % target)

  sources = _expand_list(args['source'])

  if len(sources) > 1:
    # Multiple sources; target must be a bucket
    if target_bucket is None or target_key is not None:
      raise Exception('More than one source but target %s is not a bucket' % target)

  errs = []
  for source in sources:
    source_bucket, source_key = gcp.storage._bucket.parse_name(source)
    if source_bucket is None or source_key is None:
      raise Exception('Invalid source object name %s' % source)
    destination_bucket = target_bucket if target_bucket else source_bucket
    destination_key = target_key if target_key else source_key
    try:
      gcp.storage.Item(source_bucket, source_key).copy_to(destination_key,
                                                          bucket=destination_bucket)
    except Exception as e:
      errs.append("Couldn't copy %s to %s: %s" %
                  (source, target, _utils.extract_storage_api_response_error(e.message)))
  if errs:
    raise Exception('\n'.join(errs))
Ejemplo n.º 3
0
def _storage_create(args, _):
  """ Create one or more buckets. """
  buckets = gcp.storage.Buckets(project_id=args['project'])
  errs = []
  for name in args['bucket']:
    try:
      bucket, key = gcp.storage._bucket.parse_name(name)
      if bucket and not key:
        buckets.create(bucket)
      else:
        raise Exception("Invalid bucket name %s" % name)
    except Exception as e:
      errs.append("Couldn't create %s: %s" %
                  (name, _utils.extract_storage_api_response_error(e.message)))
  if errs:
    raise Exception('\n'.join(errs))