Skip to content

Commit 02d2833

Browse files
author
Aaron Sierra
committed
zonomi: Switch to default local ID format
Previously, the Zonomi DNS driver could only return the first record for a given host, because it used the name of the host as Record.id. Now, use the new default, <type>[:<name>], format to allow various records to be differentiated for a given host.
1 parent 0740bff commit 02d2833

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

libcloud/dns/drivers/zonomi.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,10 @@ def get_record(self, zone_id, record_id):
118118
record = None
119119
zone = self.get_zone(zone_id=zone_id)
120120
records = self.list_records(zone=zone)
121+
parts = self.from_default_id(zone, record_id)
121122

122123
for r in records:
123-
if r.id == record_id:
124+
if r.name == parts.name and r.type == parts.type:
124125
record = r
125126

126127
if record is None:
@@ -320,11 +321,12 @@ def _to_record(self, item, zone):
320321
record_name = full_domain[:index]
321322
else:
322323
record_name = zone.domain
324+
rtype = item["type"]
323325
record = Record(
324-
id=record_name,
326+
id=self.to_default_id(zone, item["name"], rtype),
325327
name=record_name,
326328
data=item["content"],
327-
type=item["type"],
329+
type=rtype,
328330
zone=zone,
329331
driver=self,
330332
ttl=ttl,

libcloud/test/dns/test_zonomi.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def setUp(self):
4545
extra={},
4646
)
4747
self.test_record = Record(
48-
id="record.zone.com",
48+
id="A:record",
4949
name="record.zone.com",
5050
data="127.0.0.1",
5151
type="A",
@@ -184,28 +184,28 @@ def test_list_records_success(self):
184184
self.assertEqual(len(records), 4)
185185

186186
record = records[0]
187-
self.assertEqual(record.id, "zone.com")
187+
self.assertEqual(record.id, "SOA")
188188
self.assertEqual(record.type, "SOA")
189189
self.assertEqual(record.data, "ns1.zonomi.com. soacontact.zonomi.com. 13")
190190
self.assertEqual(record.name, "zone.com")
191191
self.assertEqual(record.zone, self.test_zone)
192192

193193
second_record = records[1]
194-
self.assertEqual(second_record.id, "zone.com")
194+
self.assertEqual(second_record.id, "NS")
195195
self.assertEqual(second_record.name, "zone.com")
196196
self.assertEqual(second_record.type, "NS")
197197
self.assertEqual(second_record.data, "ns1.zonomi.com")
198198
self.assertEqual(second_record.zone, self.test_zone)
199199

200200
third_record = records[2]
201-
self.assertEqual(third_record.id, "oltjano")
201+
self.assertEqual(third_record.id, "A:oltjano")
202202
self.assertEqual(third_record.name, "oltjano")
203203
self.assertEqual(third_record.type, "A")
204204
self.assertEqual(third_record.data, "127.0.0.1")
205205
self.assertEqual(third_record.zone, self.test_zone)
206206

207207
fourth_record = records[3]
208-
self.assertEqual(fourth_record.id, "zone.com")
208+
self.assertEqual(fourth_record.id, "NS")
209209
self.assertEqual(fourth_record.name, "zone.com")
210210
self.assertEqual(fourth_record.type, "NS")
211211
self.assertEqual(fourth_record.data, "ns5.zonomi.com")
@@ -239,15 +239,15 @@ def test_get_record_success(self):
239239
driver=self.driver,
240240
)
241241
self.driver.get_zone = MagicMock(return_value=zone)
242-
record = self.driver.get_record(record_id="oltjano", zone_id="zone.com")
242+
record = self.driver.get_record(record_id="A:oltjano", zone_id="zone.com")
243243

244244
sent = ZonomiMockHttp.history.pop()
245245
self.assertEqual(sent.method, "GET")
246246
self.assertEqual(sent.url, "/app/dns/dyndns.jsp")
247247
self.assertIn("QUERY", sent.query["action"])
248248
self.assertIn("**.zone.com", sent.query["name"])
249249

250-
self.assertEqual(record.id, "oltjano")
250+
self.assertEqual(record.id, "A:oltjano")
251251
self.assertEqual(record.name, "oltjano")
252252
self.assertEqual(record.type, "A")
253253
self.assertEqual(record.data, "127.0.0.1")
@@ -303,7 +303,7 @@ def test_create_record_success(self):
303303
self.assertIn("A", sent.query["type"])
304304
self.assertIn("127.0.0.1", sent.query["value"])
305305

306-
self.assertEqual(record.id, "createrecord")
306+
self.assertEqual(record.id, "A:createrecord")
307307
self.assertEqual(record.name, "createrecord")
308308
self.assertEqual(record.type, "A")
309309
self.assertEqual(record.data, "127.0.0.1")

0 commit comments

Comments
 (0)