gcloud 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/CHANGELOG.md +15 -0
- data/OVERVIEW.md +38 -5
- data/lib/gcloud.rb +55 -4
- data/lib/gcloud/bigquery/data.rb +2 -0
- data/lib/gcloud/bigquery/dataset.rb +1 -1
- data/lib/gcloud/bigquery/dataset/list.rb +2 -0
- data/lib/gcloud/bigquery/job/list.rb +2 -0
- data/lib/gcloud/bigquery/project.rb +2 -9
- data/lib/gcloud/bigquery/table/list.rb +2 -0
- data/lib/gcloud/datastore.rb +23 -28
- data/lib/gcloud/datastore/connection.rb +3 -1
- data/lib/gcloud/datastore/dataset.rb +167 -22
- data/lib/gcloud/datastore/dataset/lookup_results.rb +2 -0
- data/lib/gcloud/datastore/dataset/query_results.rb +2 -0
- data/lib/gcloud/datastore/entity.rb +11 -11
- data/lib/gcloud/datastore/key.rb +33 -16
- data/lib/gcloud/dns/change/list.rb +2 -0
- data/lib/gcloud/dns/project.rb +1 -1
- data/lib/gcloud/dns/record/list.rb +2 -0
- data/lib/gcloud/dns/zone.rb +2 -2
- data/lib/gcloud/dns/zone/list.rb +2 -0
- data/lib/gcloud/gce.rb +0 -5
- data/lib/gcloud/pubsub.rb +65 -62
- data/lib/gcloud/pubsub/connection.rb +20 -2
- data/lib/gcloud/pubsub/project.rb +233 -72
- data/lib/gcloud/pubsub/subscription.rb +45 -13
- data/lib/gcloud/pubsub/subscription/list.rb +2 -0
- data/lib/gcloud/pubsub/topic.rb +66 -85
- data/lib/gcloud/pubsub/topic/list.rb +2 -0
- data/lib/gcloud/resource_manager.rb +244 -0
- data/lib/gcloud/resource_manager/connection.rb +124 -0
- data/lib/gcloud/resource_manager/credentials.rb +30 -0
- data/lib/gcloud/resource_manager/errors.rb +64 -0
- data/lib/gcloud/resource_manager/manager.rb +319 -0
- data/lib/gcloud/resource_manager/project.rb +529 -0
- data/lib/gcloud/resource_manager/project/list.rb +91 -0
- data/lib/gcloud/resource_manager/project/updater.rb +137 -0
- data/lib/gcloud/storage/bucket.rb +1 -1
- data/lib/gcloud/storage/bucket/cors.rb +2 -0
- data/lib/gcloud/storage/bucket/list.rb +2 -0
- data/lib/gcloud/storage/file/list.rb +2 -0
- data/lib/gcloud/storage/project.rb +1 -1
- data/lib/gcloud/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NGQ2OGZmZTRjOGY4ZGRiNjZmZTE0OGExZTZmODJkYjE4MmJlN2E4YQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmYxMDQyOGNjNDBhZmMyNTgwMjBkYzhiM2Y4YTk0Y2JkYzQxN2QwNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MGEwZmE1NzFkZGQ1MzE1YTliMmM5MDhmNWQ0MDliMTkxMDk4ZjUyNWI2MmQy
|
10
|
+
NGZkNWNkZTJhODY2OGJmMDg1Zjg2MWMwMzVlMzAyNDJkMmFmZmJlNWM4Y2Zk
|
11
|
+
NjJjNWRiZmU5YzM2ZjRmMjQ3MWE1MWE5ZmZhMDU5ZGI2NjczMWM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDI4OGMxMmVkMGVjMDBiMTExM2E5MGNmMGJhMTc0ODFlYjIwMTRlNTc1MDli
|
14
|
+
OTg1NjJjMDdkYTJiNDZjMGU1YmYyNTFjZWU4MzgzNzdlZDYyZDYwNGM1MjYy
|
15
|
+
YmRmMjJkZDNjMTAyMjBlMmZjY2FhMGRiZDc3ODkxYTA0NDczODI=
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 0.5.0 / 2015-10-29
|
4
|
+
|
5
|
+
#### Changes
|
6
|
+
|
7
|
+
* Add support for Release Manager service
|
8
|
+
* Pub/Sub Additions
|
9
|
+
* Fix issue getting and setting policies (jeffmendoza)
|
10
|
+
* Modified `autocreate` default value and behavior
|
11
|
+
* Add `skip_lookup` option on resource lookup methods
|
12
|
+
* Add `Project#publish` method
|
13
|
+
* Add `Project#subscribe` method
|
14
|
+
* Datastore Additions
|
15
|
+
* Add `namespace` option on running queries (jondot)
|
16
|
+
* Add `query`, `entity`, and `key` helpers to Dataset
|
17
|
+
|
3
18
|
### 0.4.1 / 2015-10-20
|
4
19
|
|
5
20
|
#### Changes
|
data/OVERVIEW.md
CHANGED
@@ -53,16 +53,16 @@ gcloud = Gcloud.new
|
|
53
53
|
dataset = gcloud.datastore
|
54
54
|
|
55
55
|
# Create a new task to demo datastore
|
56
|
-
demo_task =
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
demo_task = dataset.entity "Task", "datastore-demo" do |t|
|
57
|
+
t["description"] = "Demonstrate Datastore functionality"
|
58
|
+
t["completed"] = false
|
59
|
+
end
|
60
60
|
|
61
61
|
# Save the new task
|
62
62
|
dataset.save demo_task
|
63
63
|
|
64
64
|
# Run a query for all completed tasks
|
65
|
-
query =
|
65
|
+
query = dataset.query("Task").
|
66
66
|
where("completed", "=", true)
|
67
67
|
completed_tasks = dataset.run query
|
68
68
|
```
|
@@ -120,6 +120,39 @@ sub = pubsub.subscription "my-topic-sub"
|
|
120
120
|
msgs = sub.pull
|
121
121
|
```
|
122
122
|
|
123
|
+
# Resource Manager
|
124
|
+
|
125
|
+
[Google Cloud Resource Manager](https://cloud.google.com/resource-manager/) ([docs](https://cloud.google.com/resource-manager/reference/rest/)) provides methods that you can use to programmatically manage your projects in the Google Cloud Platform. You may be familiar with managing projects in the [Developers Console](https://developers.google.com/console/help/new/). With this API you can do the following:
|
126
|
+
|
127
|
+
* Get a list of all projects associated with an account
|
128
|
+
* Create new projects
|
129
|
+
* Update existing projects
|
130
|
+
* Delete projects
|
131
|
+
* Undelete, or recover, projects that you don't want to delete
|
132
|
+
|
133
|
+
See the [gcloud-ruby Resource Manager API documentation](rdoc-ref:Gcloud::ResourceManager) to learn how to connect to Cloud Resource Manager using this library.
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
require "gcloud"
|
137
|
+
|
138
|
+
gcloud = Gcloud.new
|
139
|
+
resource_manager = gcloud.resource_manager
|
140
|
+
|
141
|
+
# List all projects
|
142
|
+
resource_manager.projects.each do |project|
|
143
|
+
puts projects.project_id
|
144
|
+
end
|
145
|
+
|
146
|
+
# Label a project as production
|
147
|
+
project = resource_manager.project "tokyo-rain-123"
|
148
|
+
project.update do |p|
|
149
|
+
p.labels["env"] = "production"
|
150
|
+
end
|
151
|
+
|
152
|
+
# List only projects with the "production" label
|
153
|
+
projects = resource_manager.projects filter: "labels.env:production"
|
154
|
+
```
|
155
|
+
|
123
156
|
# Storage
|
124
157
|
|
125
158
|
[Google Cloud Storage](https://cloud.google.com/storage/) ([docs](https://cloud.google.com/storage/docs/json_api/)) allows you to store data on Google infrastructure with very high reliability, performance and availability, and can be used to distribute large data objects to users via direct download.
|
data/lib/gcloud.rb
CHANGED
@@ -96,10 +96,10 @@ module Gcloud
|
|
96
96
|
# gcloud = Gcloud.new
|
97
97
|
# dataset = gcloud.datastore
|
98
98
|
#
|
99
|
-
# entity =
|
100
|
-
#
|
101
|
-
#
|
102
|
-
#
|
99
|
+
# entity = dataset.entity "Task" do |t|
|
100
|
+
# t["description"] = "Get started with Google Cloud"
|
101
|
+
# t["completed"] = false
|
102
|
+
# end
|
103
103
|
#
|
104
104
|
# dataset.save entity
|
105
105
|
#
|
@@ -299,4 +299,55 @@ module Gcloud
|
|
299
299
|
require "gcloud/dns"
|
300
300
|
Gcloud.dns @project, @keyfile, options
|
301
301
|
end
|
302
|
+
|
303
|
+
# rubocop:disable Metrics/LineLength
|
304
|
+
# Disabled because the readonly scope in the example code is long and we can't
|
305
|
+
# shorten it.
|
306
|
+
|
307
|
+
##
|
308
|
+
# Creates a new object for connecting to the Resource Manager service.
|
309
|
+
# Each call creates a new connection.
|
310
|
+
#
|
311
|
+
# === Parameters
|
312
|
+
#
|
313
|
+
# +options+::
|
314
|
+
# An optional Hash for controlling additional behavior. (+Hash+)
|
315
|
+
# <code>options[:scope]</code>::
|
316
|
+
# The OAuth 2.0 scopes controlling the set of resources and operations that
|
317
|
+
# the connection can access. See {Using OAuth 2.0 to Access Google
|
318
|
+
# APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
|
319
|
+
# or +Array+)
|
320
|
+
#
|
321
|
+
# The default scope is:
|
322
|
+
#
|
323
|
+
# * +https://www.googleapis.com/auth/cloud-platform+
|
324
|
+
#
|
325
|
+
# === Returns
|
326
|
+
#
|
327
|
+
# Gcloud::ResourceManager::Manager
|
328
|
+
#
|
329
|
+
# === Examples
|
330
|
+
#
|
331
|
+
# require "gcloud"
|
332
|
+
#
|
333
|
+
# gcloud = Gcloud.new
|
334
|
+
# resource_manager = gcloud.resource_manager
|
335
|
+
# resource_manager.projects.each do |project|
|
336
|
+
# puts projects.project_id
|
337
|
+
# end
|
338
|
+
#
|
339
|
+
# The default scope can be overridden with the +scope+ option:
|
340
|
+
#
|
341
|
+
# require "gcloud"
|
342
|
+
#
|
343
|
+
# gcloud = Gcloud.new
|
344
|
+
# readonly_scope = "https://www.googleapis.com/auth/cloudresourcemanager.readonly"
|
345
|
+
# resource_manager = gcloud.resource_manager scope: readonly_scope
|
346
|
+
#
|
347
|
+
def resource_manager options = {}
|
348
|
+
require "gcloud/resource_manager"
|
349
|
+
Gcloud.resource_manager @keyfile, options
|
350
|
+
end
|
351
|
+
|
352
|
+
# rubocop:enable Metrics/LineLength
|
302
353
|
end
|
data/lib/gcloud/bigquery/data.rb
CHANGED
@@ -266,10 +266,6 @@ module Gcloud
|
|
266
266
|
end
|
267
267
|
end
|
268
268
|
|
269
|
-
# rubocop:disable Metrics/AbcSize
|
270
|
-
# rubocop:disable Metrics/MethodLength
|
271
|
-
# Disabled rubocop because the level of abstraction is not violated here
|
272
|
-
|
273
269
|
##
|
274
270
|
# Creates a new dataset.
|
275
271
|
#
|
@@ -357,9 +353,6 @@ module Gcloud
|
|
357
353
|
end
|
358
354
|
end
|
359
355
|
|
360
|
-
# rubocop:enable Metrics/AbcSize
|
361
|
-
# rubocop:enable Metrics/MethodLength
|
362
|
-
|
363
356
|
##
|
364
357
|
# Retrieves the list of datasets belonging to the project.
|
365
358
|
#
|
@@ -378,7 +371,7 @@ module Gcloud
|
|
378
371
|
#
|
379
372
|
# === Returns
|
380
373
|
#
|
381
|
-
# Array of Gcloud::Bigquery::Dataset (Gcloud::Bigquery::Dataset::List)
|
374
|
+
# Array of Gcloud::Bigquery::Dataset (See Gcloud::Bigquery::Dataset::List)
|
382
375
|
#
|
383
376
|
# === Examples
|
384
377
|
#
|
@@ -489,7 +482,7 @@ module Gcloud
|
|
489
482
|
#
|
490
483
|
# === Returns
|
491
484
|
#
|
492
|
-
# Array of Gcloud::Bigquery::Job (Gcloud::Bigquery::Job::List)
|
485
|
+
# Array of Gcloud::Bigquery::Job (See Gcloud::Bigquery::Job::List)
|
493
486
|
#
|
494
487
|
# === Examples
|
495
488
|
#
|
data/lib/gcloud/datastore.rb
CHANGED
@@ -57,10 +57,10 @@ module Gcloud
|
|
57
57
|
# dataset = Gcloud.datastore "my-todo-project",
|
58
58
|
# "/path/to/keyfile.json"
|
59
59
|
#
|
60
|
-
# entity =
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
60
|
+
# entity = dataset.entity "Task" do |t|
|
61
|
+
# t["description"] = "Get started with Google Cloud"
|
62
|
+
# t["completed"] = false
|
63
|
+
# end
|
64
64
|
#
|
65
65
|
# dataset.save entity
|
66
66
|
#
|
@@ -125,7 +125,7 @@ module Gcloud
|
|
125
125
|
#
|
126
126
|
# gcloud = Gcloud.new
|
127
127
|
# dataset = gcloud.datastore
|
128
|
-
# key =
|
128
|
+
# key = dataset.key "Task", 12345
|
129
129
|
# entity = dataset.find key
|
130
130
|
#
|
131
131
|
# See Gcloud::Datastore::Dataset#find
|
@@ -139,8 +139,7 @@ module Gcloud
|
|
139
139
|
#
|
140
140
|
# gcloud = Gcloud.new
|
141
141
|
# dataset = gcloud.datastore
|
142
|
-
# query =
|
143
|
-
# query.kind("List").
|
142
|
+
# query = dataset.query("List").
|
144
143
|
# where("active", "=", true)
|
145
144
|
# active_lists = dataset.run query
|
146
145
|
#
|
@@ -150,8 +149,7 @@ module Gcloud
|
|
150
149
|
#
|
151
150
|
# gcloud = Gcloud.new
|
152
151
|
# dataset = gcloud.datastore
|
153
|
-
# query =
|
154
|
-
# query.kind("List").
|
152
|
+
# query = dataset.query("List").
|
155
153
|
# where("active", "=", true).
|
156
154
|
# order("name")
|
157
155
|
# active_lists = dataset.run query
|
@@ -163,8 +161,7 @@ module Gcloud
|
|
163
161
|
#
|
164
162
|
# gcloud = Gcloud.new
|
165
163
|
# dataset = gcloud.datastore
|
166
|
-
# query =
|
167
|
-
# query.kind("List").
|
164
|
+
# query = dataset.query("List").
|
168
165
|
# where("active", "=", true).
|
169
166
|
# order("name").
|
170
167
|
# limit(5)
|
@@ -179,8 +176,7 @@ module Gcloud
|
|
179
176
|
# dataset = gcloud.datastore
|
180
177
|
#
|
181
178
|
# list = dataset.find "List", "todos"
|
182
|
-
# query =
|
183
|
-
# query.kind("Task").
|
179
|
+
# query = dataset.query("Task").
|
184
180
|
# ancestor(list.key)
|
185
181
|
# items = dataset.run query
|
186
182
|
#
|
@@ -198,8 +194,7 @@ module Gcloud
|
|
198
194
|
# dataset = gcloud.datastore
|
199
195
|
#
|
200
196
|
# list = dataset.find "List", "todos"
|
201
|
-
# query =
|
202
|
-
# query.kind("Task").
|
197
|
+
# query = dataset.query("Task").
|
203
198
|
# ancestor(list.key)
|
204
199
|
# all_tasks = []
|
205
200
|
# tmp_tasks = dataset.run query
|
@@ -228,9 +223,9 @@ module Gcloud
|
|
228
223
|
#
|
229
224
|
# gcloud = Gcloud.new
|
230
225
|
# dataset = gcloud.datastore
|
231
|
-
# entity =
|
232
|
-
#
|
233
|
-
#
|
226
|
+
# entity = dataset.entity "User" do |e|
|
227
|
+
# e["name"] = "Heidi Henderson"
|
228
|
+
# end
|
234
229
|
# entity.key.id #=> nil
|
235
230
|
# dataset.save entity
|
236
231
|
# entity.key.id #=> 123456789
|
@@ -277,12 +272,12 @@ module Gcloud
|
|
277
272
|
# gcloud = Gcloud.new
|
278
273
|
# dataset = gcloud.datastore
|
279
274
|
#
|
280
|
-
# key =
|
275
|
+
# key = dataset.key "User", "heidi"
|
281
276
|
#
|
282
|
-
# user =
|
283
|
-
#
|
284
|
-
#
|
285
|
-
#
|
277
|
+
# user = dataset.entity key do |u|
|
278
|
+
# u["name"] = "Heidi Henderson"
|
279
|
+
# u["email"] = "heidi@example.net"
|
280
|
+
# end
|
286
281
|
#
|
287
282
|
# dataset.transaction do |tx|
|
288
283
|
# if tx.find(user.key).nil?
|
@@ -298,12 +293,12 @@ module Gcloud
|
|
298
293
|
# gcloud = Gcloud.new
|
299
294
|
# dataset = gcloud.datastore
|
300
295
|
#
|
301
|
-
# key =
|
296
|
+
# key = dataset.key "User", "heidi"
|
302
297
|
#
|
303
|
-
# user =
|
304
|
-
#
|
305
|
-
#
|
306
|
-
#
|
298
|
+
# user = dataset.entity key do |u|
|
299
|
+
# u["name"] = "Heidi Henderson"
|
300
|
+
# u["email"] = "heidi@example.net"
|
301
|
+
# end
|
307
302
|
#
|
308
303
|
# tx = dataset.transaction
|
309
304
|
# begin
|
@@ -67,9 +67,11 @@ module Gcloud
|
|
67
67
|
end
|
68
68
|
|
69
69
|
# Query for entities.
|
70
|
-
def run_query query
|
70
|
+
def run_query query, partition = nil
|
71
71
|
run_query = Proto::RunQueryRequest.new.tap do |rq|
|
72
72
|
rq.query = query
|
73
|
+
rq.partition_id = partition if partition
|
74
|
+
rq
|
73
75
|
end
|
74
76
|
|
75
77
|
Proto::RunQueryResponse.decode rpc("runQuery", run_query)
|
@@ -39,7 +39,7 @@ module Gcloud
|
|
39
39
|
# gcloud = Gcloud.new
|
40
40
|
# dataset = gcloud.datastore
|
41
41
|
#
|
42
|
-
# query =
|
42
|
+
# query = dataset.query("Task").
|
43
43
|
# where("completed", "=", true)
|
44
44
|
#
|
45
45
|
# tasks = dataset.run query
|
@@ -101,7 +101,7 @@ module Gcloud
|
|
101
101
|
#
|
102
102
|
# === Example
|
103
103
|
#
|
104
|
-
# empty_key =
|
104
|
+
# empty_key = dataset.key "Task"
|
105
105
|
# task_keys = dataset.allocate_ids empty_key, 5
|
106
106
|
#
|
107
107
|
def allocate_ids incomplete_key, count = 1
|
@@ -160,7 +160,7 @@ module Gcloud
|
|
160
160
|
#
|
161
161
|
# Finding an entity with a key:
|
162
162
|
#
|
163
|
-
# key =
|
163
|
+
# key = dataset.key "Task", 123456
|
164
164
|
# task = dataset.find key
|
165
165
|
#
|
166
166
|
# Finding an entity with a +kind+ and +id+/+name+:
|
@@ -169,7 +169,9 @@ module Gcloud
|
|
169
169
|
#
|
170
170
|
def find key_or_kind, id_or_name = nil
|
171
171
|
key = key_or_kind
|
172
|
-
|
172
|
+
unless key.is_a? Gcloud::Datastore::Key
|
173
|
+
key = Key.new key_or_kind, id_or_name
|
174
|
+
end
|
173
175
|
find_all(key).first
|
174
176
|
end
|
175
177
|
alias_method :get, :find
|
@@ -190,8 +192,8 @@ module Gcloud
|
|
190
192
|
#
|
191
193
|
# gcloud = Gcloud.new
|
192
194
|
# dataset = gcloud.datastore
|
193
|
-
# key1 =
|
194
|
-
# key2 =
|
195
|
+
# key1 = dataset.key "Task", 123456
|
196
|
+
# key2 = dataset.key "Task", 987654
|
195
197
|
# tasks = dataset.find_all key1, key2
|
196
198
|
#
|
197
199
|
def find_all *keys
|
@@ -239,19 +241,31 @@ module Gcloud
|
|
239
241
|
#
|
240
242
|
# +query+::
|
241
243
|
# The Query object with the search criteria. (+Query+)
|
244
|
+
# +options+::
|
245
|
+
# An optional Hash for controlling additional behavior. (+Hash+)
|
246
|
+
# <code>options[:namespace]</code>::
|
247
|
+
# The namespace the query is to run within. (+String+)
|
242
248
|
#
|
243
249
|
# === Returns
|
244
250
|
#
|
245
251
|
# Gcloud::Datastore::Dataset::QueryResults
|
246
252
|
#
|
247
|
-
# ===
|
253
|
+
# === Examples
|
248
254
|
#
|
249
|
-
# query =
|
255
|
+
# query = dataset.query("Task").
|
250
256
|
# where("completed", "=", true)
|
251
257
|
# tasks = dataset.run query
|
252
258
|
#
|
253
|
-
|
254
|
-
|
259
|
+
# The query can optionally run within namespace when the +namespace+
|
260
|
+
# option is provided:
|
261
|
+
#
|
262
|
+
# query = Gcloud::Datastore::Query.new.kind("Task").
|
263
|
+
# where("completed", "=", true)
|
264
|
+
# tasks = dataset.run query, namespace: "ns~todo-project"
|
265
|
+
#
|
266
|
+
def run query, options = {}
|
267
|
+
partition = optional_partition_id options[:namespace]
|
268
|
+
response = connection.run_query query.to_proto, partition
|
255
269
|
entities = to_gcloud_entities response.batch.entity_result
|
256
270
|
cursor = Proto.encode_cursor response.batch.end_cursor
|
257
271
|
more_results = Proto.to_more_results_string response.batch.more_results
|
@@ -271,12 +285,10 @@ module Gcloud
|
|
271
285
|
# gcloud = Gcloud.new
|
272
286
|
# dataset = gcloud.datastore
|
273
287
|
#
|
274
|
-
#
|
275
|
-
#
|
276
|
-
#
|
277
|
-
#
|
278
|
-
# user["name"] = "Heidi Henderson"
|
279
|
-
# user["email"] = "heidi@example.net"
|
288
|
+
# user = dataset.entity "User", "heidi" do |u|
|
289
|
+
# u["name"] = "Heidi Henderson"
|
290
|
+
# u["email"] = "heidi@example.net"
|
291
|
+
# end
|
280
292
|
#
|
281
293
|
# dataset.transaction do |tx|
|
282
294
|
# if tx.find(user.key).nil?
|
@@ -291,12 +303,10 @@ module Gcloud
|
|
291
303
|
# gcloud = Gcloud.new
|
292
304
|
# dataset = gcloud.datastore
|
293
305
|
#
|
294
|
-
#
|
295
|
-
#
|
296
|
-
#
|
297
|
-
#
|
298
|
-
# user["name"] = "Heidi Henderson"
|
299
|
-
# user["email"] = "heidi@example.net"
|
306
|
+
# user = dataset.entity "User", "heidi" do |u|
|
307
|
+
# u["name"] = "Heidi Henderson"
|
308
|
+
# u["email"] = "heidi@example.net"
|
309
|
+
# end
|
300
310
|
#
|
301
311
|
# tx = dataset.transaction
|
302
312
|
# begin
|
@@ -321,6 +331,133 @@ module Gcloud
|
|
321
331
|
end
|
322
332
|
end
|
323
333
|
|
334
|
+
##
|
335
|
+
# Create a new Query instance. This is a convenience method to make the
|
336
|
+
# creation of Query objects easier.
|
337
|
+
#
|
338
|
+
# === Parameters
|
339
|
+
#
|
340
|
+
# +kinds+::
|
341
|
+
# The kind of entities to query. This is optional. (+String+)
|
342
|
+
#
|
343
|
+
# === Returns
|
344
|
+
#
|
345
|
+
# Gcloud::Datastore::Query
|
346
|
+
#
|
347
|
+
# === Example
|
348
|
+
#
|
349
|
+
# query = dataset.query("Task").
|
350
|
+
# where("completed", "=", true)
|
351
|
+
# tasks = dataset.run query
|
352
|
+
#
|
353
|
+
# This code is equivalent to the following:
|
354
|
+
#
|
355
|
+
# query = Gcloud::Datastore::Query.new.
|
356
|
+
# kind("Task").
|
357
|
+
# where("completed", "=", true)
|
358
|
+
# tasks = dataset.run query
|
359
|
+
#
|
360
|
+
def query *kinds
|
361
|
+
query = Query.new
|
362
|
+
query.kind(*kinds) unless kinds.empty?
|
363
|
+
query
|
364
|
+
end
|
365
|
+
|
366
|
+
##
|
367
|
+
# Create a new Key instance. This is a convenience method to make the
|
368
|
+
# creation of Key objects easier.
|
369
|
+
#
|
370
|
+
# === Parameters
|
371
|
+
#
|
372
|
+
# +kind+::
|
373
|
+
# The kind of the Key. This is optional. (+String+)
|
374
|
+
# +id_or_name+::
|
375
|
+
# The id or name of the Key. This is optional. (+Integer+ or +String+)
|
376
|
+
#
|
377
|
+
# === Returns
|
378
|
+
#
|
379
|
+
# Gcloud::Datastore::Key
|
380
|
+
#
|
381
|
+
# === Example
|
382
|
+
#
|
383
|
+
# key = dataset.key "User", "heidi@example.com"
|
384
|
+
#
|
385
|
+
# This code is equivalent to the following:
|
386
|
+
#
|
387
|
+
# key = Gcloud::Datastore::Key.new "User", "heidi@example.com"
|
388
|
+
#
|
389
|
+
def key kind = nil, id_or_name = nil
|
390
|
+
Key.new kind, id_or_name
|
391
|
+
end
|
392
|
+
|
393
|
+
##
|
394
|
+
# Create a new empty Entity instance. This is a convenience method to make
|
395
|
+
# the creation of Entity objects easier.
|
396
|
+
#
|
397
|
+
# === Parameters
|
398
|
+
#
|
399
|
+
# +key_or_kind+::
|
400
|
+
# A Key object or +kind+ string value. This is optional. (+Key+ or
|
401
|
+
# +String+ or +nil+)
|
402
|
+
# +id_or_name+::
|
403
|
+
# The Key's +id+ or +name+ value if a +kind+ was provided in the first
|
404
|
+
# parameter. (+Integer+ or +String+ or +nil+)
|
405
|
+
#
|
406
|
+
# === Returns
|
407
|
+
#
|
408
|
+
# Gcloud::Datastore::Entity
|
409
|
+
#
|
410
|
+
# === Examples
|
411
|
+
#
|
412
|
+
# entity = dataset.entity
|
413
|
+
#
|
414
|
+
# This code is equivalent to the following:
|
415
|
+
#
|
416
|
+
# entity = Gcloud::Datastore::Entity.new
|
417
|
+
#
|
418
|
+
# The key can also be passed in as an object:
|
419
|
+
#
|
420
|
+
# key = dataset.key "User", "heidi@example.com"
|
421
|
+
# entity = dataset.entity key
|
422
|
+
#
|
423
|
+
# Or the key values can be passed in as parameters:
|
424
|
+
#
|
425
|
+
# entity = dataset.entity "User", "heidi@example.com"
|
426
|
+
#
|
427
|
+
# This code is equivalent to the following:
|
428
|
+
#
|
429
|
+
# key = Gcloud::Datastore::Key.new "User", "heidi@example.com"
|
430
|
+
# entity = Gcloud::Datastore::Entity.new
|
431
|
+
# entity.key = key
|
432
|
+
#
|
433
|
+
# The newly created entity object can also be configured using a block:
|
434
|
+
#
|
435
|
+
# user = dataset.entity "User", "heidi@example.com" do |u|
|
436
|
+
# u["name"] = "Heidi Henderson"
|
437
|
+
# end
|
438
|
+
#
|
439
|
+
# This code is equivalent to the following:
|
440
|
+
#
|
441
|
+
# key = Gcloud::Datastore::Key.new "User", "heidi@example.com"
|
442
|
+
# entity = Gcloud::Datastore::Entity.new
|
443
|
+
# entity.key = key
|
444
|
+
# entity["name"] = "Heidi Henderson"
|
445
|
+
#
|
446
|
+
def entity key_or_kind = nil, id_or_name = nil
|
447
|
+
entity = Entity.new
|
448
|
+
|
449
|
+
# Set the key
|
450
|
+
key = key_or_kind
|
451
|
+
unless key.is_a? Gcloud::Datastore::Key
|
452
|
+
key = Key.new key_or_kind, id_or_name
|
453
|
+
end
|
454
|
+
entity.key = key
|
455
|
+
|
456
|
+
yield entity if block_given?
|
457
|
+
|
458
|
+
entity
|
459
|
+
end
|
460
|
+
|
324
461
|
protected
|
325
462
|
|
326
463
|
##
|
@@ -372,6 +509,14 @@ module Gcloud
|
|
372
509
|
end
|
373
510
|
end
|
374
511
|
end
|
512
|
+
|
513
|
+
def optional_partition_id namespace = nil
|
514
|
+
return nil if namespace.nil?
|
515
|
+
Proto::PartitionId.new.tap do |p|
|
516
|
+
p.namespace = namespace
|
517
|
+
p.dataset_id = project
|
518
|
+
end
|
519
|
+
end
|
375
520
|
end
|
376
521
|
end
|
377
522
|
end
|