Skip to content

Commit 65df991

Browse files
committed
Merge pull request #1406 from dhermes/v1beta3-uri-template
Updating datastore URI template for v1beta3.
2 parents cf06ef8 + fd823d9 commit 65df991

3 files changed

Lines changed: 50 additions & 94 deletions

File tree

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ writes, strong consistency for reads and ancestor queries, and eventual
8686
consistency for all other queries.
8787

8888
.. _Cloud Datastore: https://cloud.google.com/datastore/docs
89-
.. _Datastore API docs: https://cloud.google.com/datastore/docs/apis/v1beta2/
89+
.. _Datastore API docs: https://cloud.google.com/datastore/docs/apis/v1beta3/
9090

9191
See the ``gcloud-python`` API `datastore documentation`_ to learn how to
9292
interact with the Cloud Datastore using this Client Library.

gcloud/datastore/connection.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,17 @@ class Connection(connection.Connection):
4141
:attr:`API_BASE_URL`.
4242
"""
4343

44-
API_BASE_URL = 'https://www.googleapis.com'
44+
API_BASE_URL = 'https://datastore.googleapis.com'
4545
"""The base of the API call URL."""
4646

47-
API_VERSION = 'v1beta2'
47+
API_VERSION = 'v1beta3'
4848
"""The version of the API, used in building the API call's URL."""
4949

50-
API_URL_TEMPLATE = ('{api_base}/datastore/{api_version}'
51-
'/datasets/{project}/{method}')
50+
API_URL_TEMPLATE = ('{api_base}/{api_version}/projects'
51+
'/{project}:{method}')
5252
"""A template for the URL of a particular API call."""
5353

54-
SCOPE = ('https://www.googleapis.com/auth/datastore',
55-
'https://www.googleapis.com/auth/userinfo.email')
54+
SCOPE = ('https://www.googleapis.com/auth/datastore',)
5655
"""The scopes required for authenticating as a Cloud Datastore consumer."""
5756

5857
def __init__(self, credentials=None, http=None, api_base_url=None):

gcloud/datastore/test_connection.py

Lines changed: 44 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,9 @@ def _verifyProtobufCall(self, called_with, URI, conn):
4747
conn.USER_AGENT)
4848

4949
def test_default_url(self):
50-
from gcloud.connection import API_BASE_URL
51-
50+
klass = self._getTargetClass()
5251
conn = self._makeOne()
53-
self.assertEqual(conn.api_base_url, API_BASE_URL)
52+
self.assertEqual(conn.api_base_url, klass.API_BASE_URL)
5453

5554
def test_custom_url_from_env(self):
5655
import os
@@ -143,11 +142,9 @@ def test__request_w_200(self):
143142
conn = self._makeOne()
144143
URI = '/'.join([
145144
conn.api_base_url,
146-
'datastore',
147145
conn.API_VERSION,
148-
'datasets',
149-
PROJECT,
150-
METHOD,
146+
'projects',
147+
PROJECT + ':' + METHOD,
151148
])
152149
http = conn._http = Http({'status': '200'}, 'CONTENT')
153150
self.assertEqual(conn._request(PROJECT, METHOD, DATA), 'CONTENT')
@@ -189,11 +186,9 @@ def FromString(cls, pb):
189186
conn = self._makeOne()
190187
URI = '/'.join([
191188
conn.api_base_url,
192-
'datastore',
193189
conn.API_VERSION,
194-
'datasets',
195-
PROJECT,
196-
METHOD,
190+
'projects',
191+
PROJECT + ':' + METHOD,
197192
])
198193
http = conn._http = Http({'status': '200'}, 'CONTENT')
199194
response = conn._rpc(PROJECT, METHOD, ReqPB(), RspPB)
@@ -208,11 +203,9 @@ def test_build_api_url_w_default_base_version(self):
208203
conn = self._makeOne()
209204
URI = '/'.join([
210205
conn.api_base_url,
211-
'datastore',
212206
conn.API_VERSION,
213-
'datasets',
214-
PROJECT,
215-
METHOD,
207+
'projects',
208+
PROJECT + ':' + METHOD,
216209
])
217210
self.assertEqual(conn.build_api_url(PROJECT, METHOD), URI)
218211

@@ -224,11 +217,9 @@ def test_build_api_url_w_explicit_base_version(self):
224217
conn = self._makeOne()
225218
URI = '/'.join([
226219
BASE,
227-
'datastore',
228220
VER,
229-
'datasets',
230-
PROJECT,
231-
METHOD,
221+
'projects',
222+
PROJECT + ':' + METHOD,
232223
])
233224
self.assertEqual(conn.build_api_url(PROJECT, METHOD, BASE, VER),
234225
URI)
@@ -242,11 +233,9 @@ def test_lookup_single_key_empty_response(self):
242233
conn = self._makeOne()
243234
URI = '/'.join([
244235
conn.api_base_url,
245-
'datastore',
246236
conn.API_VERSION,
247-
'datasets',
248-
PROJECT,
249-
'lookup',
237+
'projects',
238+
PROJECT + ':lookup',
250239
])
251240
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
252241
found, missing, deferred = conn.lookup(PROJECT, [key_pb])
@@ -271,11 +260,9 @@ def test_lookup_single_key_empty_response_w_eventual(self):
271260
conn = self._makeOne()
272261
URI = '/'.join([
273262
conn.api_base_url,
274-
'datastore',
275263
conn.API_VERSION,
276-
'datasets',
277-
PROJECT,
278-
'lookup',
264+
'projects',
265+
PROJECT + ':lookup',
279266
])
280267
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
281268
found, missing, deferred = conn.lookup(PROJECT, [key_pb],
@@ -313,11 +300,9 @@ def test_lookup_single_key_empty_response_w_transaction(self):
313300
conn = self._makeOne()
314301
URI = '/'.join([
315302
conn.api_base_url,
316-
'datastore',
317303
conn.API_VERSION,
318-
'datasets',
319-
PROJECT,
320-
'lookup',
304+
'projects',
305+
PROJECT + ':lookup',
321306
])
322307
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
323308
found, missing, deferred = conn.lookup(PROJECT, [key_pb],
@@ -348,11 +333,9 @@ def test_lookup_single_key_nonempty_response(self):
348333
conn = self._makeOne()
349334
URI = '/'.join([
350335
conn.api_base_url,
351-
'datastore',
352336
conn.API_VERSION,
353-
'datasets',
354-
PROJECT,
355-
'lookup',
337+
'projects',
338+
PROJECT + ':lookup',
356339
])
357340
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
358341
(found,), missing, deferred = conn.lookup(PROJECT, [key_pb])
@@ -379,11 +362,9 @@ def test_lookup_multiple_keys_empty_response(self):
379362
conn = self._makeOne()
380363
URI = '/'.join([
381364
conn.api_base_url,
382-
'datastore',
383365
conn.API_VERSION,
384-
'datasets',
385-
PROJECT,
386-
'lookup',
366+
'projects',
367+
PROJECT + ':lookup',
387368
])
388369
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
389370
found, missing, deferred = conn.lookup(PROJECT, [key_pb1, key_pb2])
@@ -414,11 +395,9 @@ def test_lookup_multiple_keys_w_missing(self):
414395
conn = self._makeOne()
415396
URI = '/'.join([
416397
conn.api_base_url,
417-
'datastore',
418398
conn.API_VERSION,
419-
'datasets',
420-
PROJECT,
421-
'lookup',
399+
'projects',
400+
PROJECT + ':lookup',
422401
])
423402
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
424403
result, missing, deferred = conn.lookup(PROJECT, [key_pb1, key_pb2])
@@ -448,11 +427,9 @@ def test_lookup_multiple_keys_w_deferred(self):
448427
conn = self._makeOne()
449428
URI = '/'.join([
450429
conn.api_base_url,
451-
'datastore',
452430
conn.API_VERSION,
453-
'datasets',
454-
PROJECT,
455-
'lookup',
431+
'projects',
432+
PROJECT + ':lookup',
456433
])
457434
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
458435
result, missing, deferred = conn.lookup(PROJECT, [key_pb1, key_pb2])
@@ -490,11 +467,9 @@ def test_run_query_w_eventual_no_transaction(self):
490467
conn = self._makeOne()
491468
URI = '/'.join([
492469
conn.api_base_url,
493-
'datastore',
494470
conn.API_VERSION,
495-
'datasets',
496-
PROJECT,
497-
'runQuery',
471+
'projects',
472+
PROJECT + ':runQuery',
498473
])
499474
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
500475
pbs, end, more, skipped = conn.run_query(PROJECT, q_pb,
@@ -531,11 +506,9 @@ def test_run_query_wo_eventual_w_transaction(self):
531506
conn = self._makeOne()
532507
URI = '/'.join([
533508
conn.api_base_url,
534-
'datastore',
535509
conn.API_VERSION,
536-
'datasets',
537-
PROJECT,
538-
'runQuery',
510+
'projects',
511+
PROJECT + ':runQuery',
539512
])
540513
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
541514
pbs, end, more, skipped = conn.run_query(
@@ -589,11 +562,9 @@ def test_run_query_wo_namespace_empty_result(self):
589562
conn = self._makeOne()
590563
URI = '/'.join([
591564
conn.api_base_url,
592-
'datastore',
593565
conn.API_VERSION,
594-
'datasets',
595-
PROJECT,
596-
'runQuery',
566+
'projects',
567+
PROJECT + ':runQuery',
597568
])
598569
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
599570
pbs, end, more, skipped = conn.run_query(PROJECT, q_pb)
@@ -624,11 +595,9 @@ def test_run_query_w_namespace_nonempty_result(self):
624595
conn = self._makeOne()
625596
URI = '/'.join([
626597
conn.api_base_url,
627-
'datastore',
628598
conn.API_VERSION,
629-
'datasets',
630-
PROJECT,
631-
'runQuery',
599+
'projects',
600+
PROJECT + ':runQuery',
632601
])
633602
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
634603
pbs = conn.run_query(PROJECT, q_pb, 'NS')[0]
@@ -651,11 +620,9 @@ def test_begin_transaction(self):
651620
conn = self._makeOne()
652621
URI = '/'.join([
653622
conn.api_base_url,
654-
'datastore',
655623
conn.API_VERSION,
656-
'datasets',
657-
PROJECT,
658-
'beginTransaction',
624+
'projects',
625+
PROJECT + ':beginTransaction',
659626
])
660627
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
661628
self.assertEqual(conn.begin_transaction(PROJECT), TRANSACTION)
@@ -683,11 +650,9 @@ def test_commit_wo_transaction(self):
683650
conn = self._makeOne()
684651
URI = '/'.join([
685652
conn.api_base_url,
686-
'datastore',
687653
conn.API_VERSION,
688-
'datasets',
689-
PROJECT,
690-
'commit',
654+
'projects',
655+
PROJECT + ':commit',
691656
])
692657
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
693658

@@ -731,11 +696,9 @@ def test_commit_w_transaction(self):
731696
conn = self._makeOne()
732697
URI = '/'.join([
733698
conn.api_base_url,
734-
'datastore',
735699
conn.API_VERSION,
736-
'datasets',
737-
PROJECT,
738-
'commit',
700+
'projects',
701+
PROJECT + ':commit',
739702
])
740703
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
741704

@@ -770,11 +733,9 @@ def test_rollback_ok(self):
770733
conn = self._makeOne()
771734
URI = '/'.join([
772735
conn.api_base_url,
773-
'datastore',
774736
conn.API_VERSION,
775-
'datasets',
776-
PROJECT,
777-
'rollback',
737+
'projects',
738+
PROJECT + ':rollback',
778739
])
779740
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
780741
self.assertEqual(conn.rollback(PROJECT, TRANSACTION), None)
@@ -793,11 +754,9 @@ def test_allocate_ids_empty(self):
793754
conn = self._makeOne()
794755
URI = '/'.join([
795756
conn.api_base_url,
796-
'datastore',
797757
conn.API_VERSION,
798-
'datasets',
799-
PROJECT,
800-
'allocateIds',
758+
'projects',
759+
PROJECT + ':allocateIds',
801760
])
802761
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
803762
self.assertEqual(conn.allocate_ids(PROJECT, []), [])
@@ -826,11 +785,9 @@ def test_allocate_ids_non_empty(self):
826785
conn = self._makeOne()
827786
URI = '/'.join([
828787
conn.api_base_url,
829-
'datastore',
830788
conn.API_VERSION,
831-
'datasets',
832-
PROJECT,
833-
'allocateIds',
789+
'projects',
790+
PROJECT + ':allocateIds',
834791
])
835792
http = conn._http = Http({'status': '200'}, rsp_pb.SerializeToString())
836793
self.assertEqual(conn.allocate_ids(PROJECT, before_key_pbs),

0 commit comments

Comments
 (0)