Skip to content

Commit 8b97707

Browse files
committed
Merge pull request #274 from GoogleCloudPlatform/revert-259-121-drop_dataset_prefixes_in_keys
Revert "Fix #121: Drop munging of 's~' prefix onto keys."
2 parents fab0237 + 374cdf8 commit 8b97707

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

gcloud/datastore/key.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,13 @@ def to_protobuf(self):
9595
# but we shouldn't throw a cryptic error if one isn't provided
9696
# in the initializer.
9797
if self.dataset():
98+
# Apparently 's~' is a prefix for High-Replication and is necessary
99+
# here. Another valid preflix is 'e~' indicating EU datacenters.
98100
dataset_id = self.dataset().id()
99101
if dataset_id:
102+
if dataset_id[:2] not in ['s~', 'e~']:
103+
dataset_id = 's~' + dataset_id
104+
100105
key.partition_id.dataset_id = dataset_id
101106

102107
if self._namespace:

gcloud/datastore/test_connection.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ def test_lookup_single_key_empty_response(self):
425425
self.assertEqual(cw['method'], 'POST')
426426
expected_headers = {
427427
'Content-Type': 'application/x-protobuf',
428-
'Content-Length': '24',
428+
'Content-Length': '26',
429429
'User-Agent': conn.USER_AGENT,
430430
}
431431
self.assertEqual(cw['headers'], expected_headers)
@@ -466,7 +466,7 @@ def test_lookup_single_key_nonempty_response(self):
466466
self.assertEqual(cw['method'], 'POST')
467467
expected_headers = {
468468
'Content-Type': 'application/x-protobuf',
469-
'Content-Length': '24',
469+
'Content-Length': '26',
470470
'User-Agent': conn.USER_AGENT,
471471
}
472472
self.assertEqual(cw['headers'], expected_headers)
@@ -504,7 +504,7 @@ def test_lookup_multiple_keys_empty_response(self):
504504
self.assertEqual(cw['method'], 'POST')
505505
expected_headers = {
506506
'Content-Type': 'application/x-protobuf',
507-
'Content-Length': '48',
507+
'Content-Length': '52',
508508
'User-Agent': conn.USER_AGENT,
509509
}
510510
self.assertEqual(cw['headers'], expected_headers)
@@ -549,7 +549,7 @@ def test_commit_wo_transaction(self):
549549
self.assertEqual(cw['method'], 'POST')
550550
expected_headers = {
551551
'Content-Type': 'application/x-protobuf',
552-
'Content-Length': '45',
552+
'Content-Length': '47',
553553
'User-Agent': conn.USER_AGENT,
554554
}
555555
self.assertEqual(cw['headers'], expected_headers)
@@ -597,7 +597,7 @@ def id(self):
597597
self.assertEqual(cw['method'], 'POST')
598598
expected_headers = {
599599
'Content-Type': 'application/x-protobuf',
600-
'Content-Length': '51',
600+
'Content-Length': '53',
601601
'User-Agent': conn.USER_AGENT,
602602
}
603603
self.assertEqual(cw['headers'], expected_headers)
@@ -634,7 +634,7 @@ def test_save_entity_wo_transaction_w_upsert(self):
634634
self.assertEqual(cw['method'], 'POST')
635635
expected_headers = {
636636
'Content-Type': 'application/x-protobuf',
637-
'Content-Length': '45',
637+
'Content-Length': '47',
638638
'User-Agent': conn.USER_AGENT,
639639
}
640640
self.assertEqual(cw['headers'], expected_headers)
@@ -687,7 +687,7 @@ def test_save_entity_wo_transaction_w_auto_id(self):
687687
self.assertEqual(cw['method'], 'POST')
688688
expected_headers = {
689689
'Content-Type': 'application/x-protobuf',
690-
'Content-Length': '42',
690+
'Content-Length': '44',
691691
'User-Agent': conn.USER_AGENT,
692692
}
693693
self.assertEqual(cw['headers'], expected_headers)
@@ -784,7 +784,7 @@ def test_delete_entities_wo_transaction(self):
784784
self.assertEqual(cw['method'], 'POST')
785785
expected_headers = {
786786
'Content-Type': 'application/x-protobuf',
787-
'Content-Length': '28',
787+
'Content-Length': '30',
788788
'User-Agent': conn.USER_AGENT,
789789
}
790790
self.assertEqual(cw['headers'], expected_headers)

gcloud/datastore/test_key.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,28 @@ def test_to_protobuf_w_explicit_dataset_empty_id(self):
133133
pb = key.to_protobuf()
134134
self.assertEqual(pb.partition_id.dataset_id, '')
135135

136-
def test_to_protobuf_w_explicit_dataset(self):
136+
def test_to_protobuf_w_explicit_dataset_no_prefix(self):
137137
from gcloud.datastore.dataset import Dataset
138138
_DATASET = 'DATASET'
139139
dataset = Dataset(_DATASET)
140140
key = self._makeOne(dataset)
141141
pb = key.to_protobuf()
142+
self.assertEqual(pb.partition_id.dataset_id, 's~%s' % _DATASET)
143+
144+
def test_to_protobuf_w_explicit_dataset_w_s_prefix(self):
145+
from gcloud.datastore.dataset import Dataset
146+
_DATASET = 's~DATASET'
147+
dataset = Dataset(_DATASET)
148+
key = self._makeOne(dataset)
149+
pb = key.to_protobuf()
150+
self.assertEqual(pb.partition_id.dataset_id, _DATASET)
151+
152+
def test_to_protobuf_w_explicit_dataset_w_e_prefix(self):
153+
from gcloud.datastore.dataset import Dataset
154+
_DATASET = 'e~DATASET'
155+
dataset = Dataset(_DATASET)
156+
key = self._makeOne(dataset)
157+
pb = key.to_protobuf()
142158
self.assertEqual(pb.partition_id.dataset_id, _DATASET)
143159

144160
def test_to_protobuf_w_explicit_namespace(self):

0 commit comments

Comments
 (0)