Class: Gcloud::Storage::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/gcloud/storage/project.rb

Overview

Project

Represents the project that storage buckets and files belong to. All data in Google Cloud Storage belongs inside a project. A project consists of a set of users, a set of APIs, billing, authentication, and monitoring settings for those APIs.

Gcloud::Storage::Project is the main object for interacting with Google Storage. Gcloud::Storage::Bucket objects are created, read, updated, and deleted by Gcloud::Storage::Project.

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"
file = bucket.file "path/to/my-file.ext"

See Gcloud#storage

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project, credentials) ⇒ Project

Creates a new Project instance.

See Gcloud#storage



54
55
56
57
58
# File 'lib/gcloud/storage/project.rb', line 54

def initialize project, credentials #:nodoc:
  project = project.to_s # Always cast to a string
  fail ArgumentError, "project is missing" if project.empty?
  @connection = Connection.new project, credentials
end

Instance Attribute Details

#connectionObject

The Connection object.



48
49
50
# File 'lib/gcloud/storage/project.rb', line 48

def connection
  @connection
end

Class Method Details

.default_projectObject

Default project.



79
80
81
82
83
# File 'lib/gcloud/storage/project.rb', line 79

def self.default_project #:nodoc:
  ENV["STORAGE_PROJECT"] ||
    ENV["GCLOUD_PROJECT"] ||
    ENV["GOOGLE_CLOUD_PROJECT"]
end

Instance Method Details

#bucket(bucket_name) ⇒ Object Also known as: find_bucket

Retrieves bucket by name.

Parameters

bucket_name

Name of a bucket. (String)

Returns

Gcloud::Storage::Bucket or nil if bucket does not exist

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"
puts bucket.name


179
180
181
182
183
184
185
186
187
# File 'lib/gcloud/storage/project.rb', line 179

def bucket bucket_name
  resp = connection.get_bucket bucket_name
  if resp.success?
    Bucket.from_gapi resp.data, connection
  else
    return nil if resp.data["error"]["code"] == 404
    fail ApiError.from_response(resp)
  end
end

#buckets(options = {}) ⇒ Object Also known as: find_buckets

Retrieves a list of buckets for the given project.

Parameters

options

An optional Hash for controlling additional behavior. (Hash)

options[:prefix]

Filter results to buckets whose names begin with this prefix. (String)

options[:token]

A previously-returned page token representing part of the larger set of results to view. (String)

options[:max]

Maximum number of buckets to return. (Integer)

Returns

Array of Gcloud::Storage::Bucket (Gcloud::Storage::Bucket::List)

Examples

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

buckets = storage.buckets
buckets.each do |bucket|
  puts bucket.name
end

You can also retrieve all buckets whose names begin with a prefix using the :prefix option:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

user_buckets = storage.buckets prefix: "user-"

If you have a significant number of buckets, you may need to paginate through them: (See Bucket::List#token)

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

all_buckets = []
tmp_buckets = storage.buckets
while tmp_buckets.any? do
  tmp_buckets.each do |bucket|
    all_buckets << bucket
  end
  # break loop if no more buckets available
  break if tmp_buckets.token.nil?
  # get the next group of buckets
  tmp_buckets = storage.buckets token: tmp_buckets.token
end


147
148
149
150
151
152
153
154
# File 'lib/gcloud/storage/project.rb', line 147

def buckets options = {}
  resp = connection.list_buckets options
  if resp.success?
    Bucket::List.from_resp resp, connection
  else
    fail ApiError.from_response(resp)
  end
end

#create_bucket(bucket_name, options = {}) ⇒ Object

Creates a new bucket.

Parameters

bucket_name

Name of a bucket. (String)

options

An optional Hash for controlling additional behavior. (Hash)

options[:retries]

The number of times the API call should be retried. Default is Gcloud::Backoff.retries. (Integer)

Returns

Gcloud::Storage::Bucket

Examples

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.create_bucket "my-bucket"

The API call to create the bucket may be retried under certain conditions. See Gcloud::Backoff to control this behavior, or specify the wanted behavior in the call with the :retries: option:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.create_bucket "my-bucket", retries: 5


227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/gcloud/storage/project.rb', line 227

def create_bucket bucket_name, options = {}
  options[:acl] = Bucket::Acl.predefined_rule_for options[:acl]
  default_acl = options[:default_acl]
  default_acl = Bucket::DefaultAcl.predefined_rule_for default_acl
  options[:default_acl] = default_acl

  resp = connection.insert_bucket bucket_name, options
  if resp.success?
    Bucket.from_gapi resp.data, connection
  else
    fail ApiError.from_response(resp)
  end
end

#projectObject

The Storage project connected to.

Example

require "gcloud"

gcloud = Gcloud.new "my-todo-project",
                    "/path/to/keyfile.json"
storage = gcloud.storage

storage.project #=> "my-todo-project"


73
74
75
# File 'lib/gcloud/storage/project.rb', line 73

def project
  connection.project
end