gcloud 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +15 -0
  3. data/OVERVIEW.md +38 -5
  4. data/lib/gcloud.rb +55 -4
  5. data/lib/gcloud/bigquery/data.rb +2 -0
  6. data/lib/gcloud/bigquery/dataset.rb +1 -1
  7. data/lib/gcloud/bigquery/dataset/list.rb +2 -0
  8. data/lib/gcloud/bigquery/job/list.rb +2 -0
  9. data/lib/gcloud/bigquery/project.rb +2 -9
  10. data/lib/gcloud/bigquery/table/list.rb +2 -0
  11. data/lib/gcloud/datastore.rb +23 -28
  12. data/lib/gcloud/datastore/connection.rb +3 -1
  13. data/lib/gcloud/datastore/dataset.rb +167 -22
  14. data/lib/gcloud/datastore/dataset/lookup_results.rb +2 -0
  15. data/lib/gcloud/datastore/dataset/query_results.rb +2 -0
  16. data/lib/gcloud/datastore/entity.rb +11 -11
  17. data/lib/gcloud/datastore/key.rb +33 -16
  18. data/lib/gcloud/dns/change/list.rb +2 -0
  19. data/lib/gcloud/dns/project.rb +1 -1
  20. data/lib/gcloud/dns/record/list.rb +2 -0
  21. data/lib/gcloud/dns/zone.rb +2 -2
  22. data/lib/gcloud/dns/zone/list.rb +2 -0
  23. data/lib/gcloud/gce.rb +0 -5
  24. data/lib/gcloud/pubsub.rb +65 -62
  25. data/lib/gcloud/pubsub/connection.rb +20 -2
  26. data/lib/gcloud/pubsub/project.rb +233 -72
  27. data/lib/gcloud/pubsub/subscription.rb +45 -13
  28. data/lib/gcloud/pubsub/subscription/list.rb +2 -0
  29. data/lib/gcloud/pubsub/topic.rb +66 -85
  30. data/lib/gcloud/pubsub/topic/list.rb +2 -0
  31. data/lib/gcloud/resource_manager.rb +244 -0
  32. data/lib/gcloud/resource_manager/connection.rb +124 -0
  33. data/lib/gcloud/resource_manager/credentials.rb +30 -0
  34. data/lib/gcloud/resource_manager/errors.rb +64 -0
  35. data/lib/gcloud/resource_manager/manager.rb +319 -0
  36. data/lib/gcloud/resource_manager/project.rb +529 -0
  37. data/lib/gcloud/resource_manager/project/list.rb +91 -0
  38. data/lib/gcloud/resource_manager/project/updater.rb +137 -0
  39. data/lib/gcloud/storage/bucket.rb +1 -1
  40. data/lib/gcloud/storage/bucket/cors.rb +2 -0
  41. data/lib/gcloud/storage/bucket/list.rb +2 -0
  42. data/lib/gcloud/storage/file/list.rb +2 -0
  43. data/lib/gcloud/storage/project.rb +1 -1
  44. data/lib/gcloud/version.rb +1 -1
  45. metadata +10 -2
@@ -0,0 +1,91 @@
1
+ #--
2
+ # Copyright 2015 Google Inc. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Gcloud
17
+ module ResourceManager
18
+ class Project
19
+ ##
20
+ # Project::List is a special case Array with additional values.
21
+ class List < DelegateClass(::Array)
22
+ ##
23
+ # If not empty, indicates that there are more projects that match
24
+ # the request and this value should be passed to continue.
25
+ attr_accessor :token
26
+
27
+ ##
28
+ # Create a new Project::List with an array of Project instances.
29
+ def initialize arr = []
30
+ super arr
31
+ end
32
+
33
+ ##
34
+ # Whether there a next page of projects.
35
+ def next?
36
+ !token.nil?
37
+ end
38
+
39
+ ##
40
+ # Retrieve the next page of projects.
41
+ def next
42
+ return nil unless next?
43
+ ensure_manager!
44
+ @manager.projects token: token
45
+ end
46
+
47
+ ##
48
+ # Retrieves all projects by repeatedly loading pages until #next?
49
+ # returns false. Returns the list instance for method chaining.
50
+ #
51
+ # === Example
52
+ #
53
+ # require "gcloud"
54
+ #
55
+ # gcloud = Gcloud.new
56
+ # resource_manager = gcloud.resource_manager
57
+ # projects = resource_manager.projects.all # Load all projects
58
+ #
59
+ def all
60
+ while next?
61
+ next_projects = self.next
62
+ push(*next_projects)
63
+ self.token = next_projects.token
64
+ end
65
+ self
66
+ end
67
+
68
+ ##
69
+ # New Projects::List from a response object.
70
+ def self.from_response resp, manager #:nodoc:
71
+ projects = new(Array(resp.data["projects"]).map do |gapi_object|
72
+ Project.from_gapi gapi_object, manager.connection
73
+ end)
74
+ projects.instance_eval do
75
+ @token = resp.data["nextPageToken"]
76
+ @manager = manager
77
+ end
78
+ projects
79
+ end
80
+
81
+ protected
82
+
83
+ ##
84
+ # Raise an error unless an active connection is available.
85
+ def ensure_manager!
86
+ fail "Must have active connection" unless @manager
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,137 @@
1
+ #--
2
+ # Copyright 2015 Google Inc. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require "time"
17
+ require "gcloud/resource_manager/errors"
18
+
19
+ module Gcloud
20
+ module ResourceManager
21
+ class Project
22
+ ##
23
+ # = Project Updater
24
+ #
25
+ # This object is used by Project#update when passed a block. These methods
26
+ # are used to update the project data in a single API call.
27
+ #
28
+ # require "gcloud"
29
+ #
30
+ # gcloud = Gcloud.new
31
+ # resource_manager = gcloud.resource_manager
32
+ # project = resource_manager.project "tokyo-rain-123"
33
+ # project.update do |p|
34
+ # p.name = "My Project"
35
+ # p.labels["env"] = "production"
36
+ # end
37
+ #
38
+ class Updater < DelegateClass(Project)
39
+ ##
40
+ # Create an Updater object.
41
+ def initialize project #:nodoc:
42
+ super project
43
+ end
44
+
45
+ ##
46
+ # Updates the user-assigned name of the project. This field is optional
47
+ # and can remain unset.
48
+ #
49
+ # Allowed characters are: lowercase and uppercase letters, numbers,
50
+ # hyphen, single-quote, double-quote, space, and exclamation point.
51
+ #
52
+ # === Example
53
+ #
54
+ # require "gcloud"
55
+ #
56
+ # gcloud = Gcloud.new
57
+ # resource_manager = gcloud.resource_manager
58
+ # project = resource_manager.project "tokyo-rain-123"
59
+ # project.update do |p|
60
+ # p.name = "My Project"
61
+ # end
62
+ #
63
+ def name= new_name
64
+ gapi["name"] = new_name
65
+ end
66
+
67
+ ##
68
+ # The labels associated with this project.
69
+ #
70
+ # Label keys must be between 1 and 63 characters long and must conform
71
+ # to the following regular expression:
72
+ # <code>[a-z]([-a-z0-9]*[a-z0-9])?</code>.
73
+ #
74
+ # Label values must be between 0 and 63 characters long and must conform
75
+ # to the regular expression <code>([a-z]([-a-z0-9]*[a-z0-9])?)?</code>.
76
+ #
77
+ # No more than 256 labels can be associated with a given resource.
78
+ # (+Hash+)
79
+ #
80
+ # === Example
81
+ #
82
+ # require "gcloud"
83
+ #
84
+ # gcloud = Gcloud.new
85
+ # resource_manager = gcloud.resource_manager
86
+ # project = resource_manager.project "tokyo-rain-123"
87
+ # project.update do |p|
88
+ # p.labels["env"] = "production"
89
+ # end
90
+ #
91
+ def labels
92
+ gapi["labels"]
93
+ end
94
+
95
+ ##
96
+ # Updates the labels associated with this project.
97
+ #
98
+ # Label keys must be between 1 and 63 characters long and must conform
99
+ # to the following regular expression:
100
+ # <code>[a-z]([-a-z0-9]*[a-z0-9])?</code>.
101
+ #
102
+ # Label values must be between 0 and 63 characters long and must conform
103
+ # to the regular expression <code>([a-z]([-a-z0-9]*[a-z0-9])?)?</code>.
104
+ #
105
+ # No more than 256 labels can be associated with a given resource.
106
+ # (+Hash+)
107
+ #
108
+ # === Example
109
+ #
110
+ # require "gcloud"
111
+ #
112
+ # gcloud = Gcloud.new
113
+ # resource_manager = gcloud.resource_manager
114
+ # project = resource_manager.project "tokyo-rain-123"
115
+ # project.update do |p|
116
+ # p.labels = { "env" => "production" }
117
+ # end
118
+ #
119
+ def labels= new_labels
120
+ gapi["labels"] = new_labels
121
+ end
122
+
123
+ ##
124
+ # Create an Updater object.
125
+ def self.from_project project #:nodoc:
126
+ dupe_gapi = project.gapi.dup
127
+ dupe_gapi = dupe_gapi.to_hash if dupe_gapi.respond_to? :to_hash
128
+ if dupe_gapi["labels"].respond_to? :to_hash
129
+ dupe_gapi["labels"] = dupe_gapi["labels"].to_hash
130
+ end
131
+ dupe_project = Project.from_gapi dupe_gapi, nil # no way to update
132
+ Updater.new dupe_project
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -374,7 +374,7 @@ module Gcloud
374
374
  #
375
375
  # === Returns
376
376
  #
377
- # Array of Gcloud::Storage::File (Gcloud::Storage::File::List)
377
+ # Array of Gcloud::Storage::File (See Gcloud::Storage::File::List)
378
378
  #
379
379
  # === Examples
380
380
  #
@@ -13,6 +13,8 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
+ require "delegate"
17
+
16
18
  module Gcloud
17
19
  module Storage
18
20
  class Bucket
@@ -13,6 +13,8 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
+ require "delegate"
17
+
16
18
  module Gcloud
17
19
  module Storage
18
20
  class Bucket
@@ -13,6 +13,8 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
+ require "delegate"
17
+
16
18
  module Gcloud
17
19
  module Storage
18
20
  class File
@@ -103,7 +103,7 @@ module Gcloud
103
103
  #
104
104
  # === Returns
105
105
  #
106
- # Array of Gcloud::Storage::Bucket (Gcloud::Storage::Bucket::List)
106
+ # Array of Gcloud::Storage::Bucket (See Gcloud::Storage::Bucket::List)
107
107
  #
108
108
  # === Examples
109
109
  #
@@ -16,5 +16,5 @@
16
16
  #--
17
17
  # Google Cloud Version
18
18
  module Gcloud
19
- VERSION = "0.4.1"
19
+ VERSION = "0.5.0"
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Silvano Luciani
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-20 00:00:00.000000000 Z
12
+ date: 2015-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beefcake
@@ -299,6 +299,14 @@ files:
299
299
  - lib/gcloud/pubsub/subscription/list.rb
300
300
  - lib/gcloud/pubsub/topic.rb
301
301
  - lib/gcloud/pubsub/topic/list.rb
302
+ - lib/gcloud/resource_manager.rb
303
+ - lib/gcloud/resource_manager/connection.rb
304
+ - lib/gcloud/resource_manager/credentials.rb
305
+ - lib/gcloud/resource_manager/errors.rb
306
+ - lib/gcloud/resource_manager/manager.rb
307
+ - lib/gcloud/resource_manager/project.rb
308
+ - lib/gcloud/resource_manager/project/list.rb
309
+ - lib/gcloud/resource_manager/project/updater.rb
302
310
  - lib/gcloud/storage.rb
303
311
  - lib/gcloud/storage/bucket.rb
304
312
  - lib/gcloud/storage/bucket/acl.rb