@@ -129,14 +129,9 @@ def get_zone(self, zone_id):
129129
130130 def get_record (self , zone_id , record_id ):
131131 zone = self .get_zone (zone_id = zone_id )
132- record_type , name = record_id .split (":" , 1 )
133-
134- if name :
135- full_name = "." .join ((name , zone .domain ))
136- else :
137- full_name = zone .domain
132+ rparts = self .from_default_id (zone , record_id )
138133 self .connection .set_context ({"zone_id" : zone_id })
139- params = urlencode ({"name" : full_name , "type" : record_type , "maxitems" : "1" })
134+ params = urlencode ({"name" : zone . hostname ( rparts . name ) , "type" : rparts . type , "maxitems" : "1" })
140135 uri = API_ROOT + "hostedzone/" + zone_id + "/rrset?" + params
141136 data = self .connection .request (uri ).object
142137
@@ -145,9 +140,9 @@ def get_record(self, zone_id, record_id):
145140 # A cute aspect of the /rrset filters is that they are more pagination
146141 # hints than filters!!
147142 # So will return a result even if its not what you asked for.
148- record_type_num = self ._string_to_record_type (record_type )
143+ record_type_num = self ._string_to_record_type (rparts . type )
149144
150- if record .name != name or record .type != record_type_num :
145+ if record .name != rparts . name or record .type != record_type_num :
151146 raise RecordDoesNotExistError (value = "" , driver = self , record_id = record_id )
152147
153148 return record
@@ -186,10 +181,9 @@ def create_record(self, name, zone, type, data, extra=None):
186181 extra = extra or {}
187182 batch = [("CREATE" , name , type , data , extra )]
188183 self ._post_changeset (zone , batch )
189- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
190184
191185 return Record (
192- id = id ,
186+ id = self . to_default_id ( zone , name , type ) ,
193187 name = name ,
194188 type = type ,
195189 data = data ,
@@ -221,10 +215,8 @@ def update_record(self, record, name=None, type=None, data=None, extra=None):
221215 record = record , name = name , type = type , data = data , extra = extra
222216 )
223217
224- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
225-
226218 return Record (
227- id = id ,
219+ id = self . to_default_id ( record . zone , name , type ) ,
228220 name = name ,
229221 type = type ,
230222 data = data ,
@@ -262,7 +254,7 @@ def ex_create_multi_value_record(self, name, zone, type, data, extra=None):
262254 ET .SubElement (change , "Action" ).text = "CREATE"
263255
264256 rrs = ET .SubElement (change , "ResourceRecordSet" )
265- ET .SubElement (rrs , "Name" ).text = name + "." + zone .domain
257+ ET .SubElement (rrs , "Name" ).text = zone .hostname ( name )
266258 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type ]
267259 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
268260
@@ -280,13 +272,11 @@ def ex_create_multi_value_record(self, name, zone, type, data, extra=None):
280272 self .connection .set_context ({"zone_id" : zone .id })
281273 self .connection .request (uri , method = "POST" , data = data )
282274
283- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
284-
285275 records = []
286276
287277 for value in values :
288278 record = Record (
289- id = id ,
279+ id = self . to_default_id ( zone , name , type ) ,
290280 name = name ,
291281 type = type ,
292282 data = value ,
@@ -338,12 +328,7 @@ def _update_multi_value_record(self, record, name=None, type=None, data=None, ex
338328
339329 rrs = ET .SubElement (change , "ResourceRecordSet" )
340330
341- if record .name :
342- record_name = record .name + "." + record .zone .domain
343- else :
344- record_name = record .zone .domain
345-
346- ET .SubElement (rrs , "Name" ).text = record_name
331+ ET .SubElement (rrs , "Name" ).text = record .hostname
347332 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [record .type ]
348333 ET .SubElement (rrs , "TTL" ).text = str (record .extra .get ("ttl" , "0" ))
349334
@@ -363,12 +348,7 @@ def _update_multi_value_record(self, record, name=None, type=None, data=None, ex
363348
364349 rrs = ET .SubElement (change , "ResourceRecordSet" )
365350
366- if name :
367- record_name = name + "." + record .zone .domain
368- else :
369- record_name = record .zone .domain
370-
371- ET .SubElement (rrs , "Name" ).text = record_name
351+ ET .SubElement (rrs , "Name" ).text = record .zone .hostname (name )
372352 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type ]
373353 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
374354
@@ -399,12 +379,7 @@ def _post_changeset(self, zone, changes_list):
399379
400380 rrs = ET .SubElement (change , "ResourceRecordSet" )
401381
402- if name :
403- record_name = name + "." + zone .domain
404- else :
405- record_name = zone .domain
406-
407- ET .SubElement (rrs , "Name" ).text = record_name
382+ ET .SubElement (rrs , "Name" ).text = zone .hostname (name )
408383 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type_ ]
409384 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
410385
@@ -528,9 +503,8 @@ def _to_record(self, elem, zone, index=0):
528503 extra ["weight" ] = int (weight )
529504 extra ["port" ] = int (port )
530505
531- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
532506 record = Record (
533- id = id ,
507+ id = self . to_default_id ( zone , name , type ) ,
534508 name = name ,
535509 type = type ,
536510 data = data ,
0 commit comments