@@ -129,14 +129,11 @@ 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 (
135+ {"name" : zone .hostname (rparts .name ), "type" : rparts .type , "maxitems" : "1" }
136+ )
140137 uri = API_ROOT + "hostedzone/" + zone_id + "/rrset?" + params
141138 data = self .connection .request (uri ).object
142139
@@ -145,9 +142,9 @@ def get_record(self, zone_id, record_id):
145142 # A cute aspect of the /rrset filters is that they are more pagination
146143 # hints than filters!!
147144 # So will return a result even if its not what you asked for.
148- record_type_num = self ._string_to_record_type (record_type )
145+ record_type_num = self ._string_to_record_type (rparts . type )
149146
150- if record .name != name or record .type != record_type_num :
147+ if record .name != rparts . name or record .type != record_type_num :
151148 raise RecordDoesNotExistError (value = "" , driver = self , record_id = record_id )
152149
153150 return record
@@ -186,10 +183,9 @@ def create_record(self, name, zone, type, data, extra=None):
186183 extra = extra or {}
187184 batch = [("CREATE" , name , type , data , extra )]
188185 self ._post_changeset (zone , batch )
189- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
190186
191187 return Record (
192- id = id ,
188+ id = self . to_default_id ( zone , name , type ) ,
193189 name = name ,
194190 type = type ,
195191 data = data ,
@@ -221,10 +217,8 @@ def update_record(self, record, name=None, type=None, data=None, extra=None):
221217 record = record , name = name , type = type , data = data , extra = extra
222218 )
223219
224- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
225-
226220 return Record (
227- id = id ,
221+ id = self . to_default_id ( record . zone , name , type ) ,
228222 name = name ,
229223 type = type ,
230224 data = data ,
@@ -262,7 +256,7 @@ def ex_create_multi_value_record(self, name, zone, type, data, extra=None):
262256 ET .SubElement (change , "Action" ).text = "CREATE"
263257
264258 rrs = ET .SubElement (change , "ResourceRecordSet" )
265- ET .SubElement (rrs , "Name" ).text = name + "." + zone .domain
259+ ET .SubElement (rrs , "Name" ).text = zone .hostname ( name )
266260 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type ]
267261 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
268262
@@ -280,13 +274,11 @@ def ex_create_multi_value_record(self, name, zone, type, data, extra=None):
280274 self .connection .set_context ({"zone_id" : zone .id })
281275 self .connection .request (uri , method = "POST" , data = data )
282276
283- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
284-
285277 records = []
286278
287279 for value in values :
288280 record = Record (
289- id = id ,
281+ id = self . to_default_id ( zone , name , type ) ,
290282 name = name ,
291283 type = type ,
292284 data = value ,
@@ -338,12 +330,7 @@ def _update_multi_value_record(self, record, name=None, type=None, data=None, ex
338330
339331 rrs = ET .SubElement (change , "ResourceRecordSet" )
340332
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
333+ ET .SubElement (rrs , "Name" ).text = record .hostname
347334 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [record .type ]
348335 ET .SubElement (rrs , "TTL" ).text = str (record .extra .get ("ttl" , "0" ))
349336
@@ -363,12 +350,7 @@ def _update_multi_value_record(self, record, name=None, type=None, data=None, ex
363350
364351 rrs = ET .SubElement (change , "ResourceRecordSet" )
365352
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
353+ ET .SubElement (rrs , "Name" ).text = record .zone .hostname (name )
372354 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type ]
373355 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
374356
@@ -399,12 +381,7 @@ def _post_changeset(self, zone, changes_list):
399381
400382 rrs = ET .SubElement (change , "ResourceRecordSet" )
401383
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
384+ ET .SubElement (rrs , "Name" ).text = zone .hostname (name )
408385 ET .SubElement (rrs , "Type" ).text = self .RECORD_TYPE_MAP [type_ ]
409386 ET .SubElement (rrs , "TTL" ).text = str (extra .get ("ttl" , "0" ))
410387
@@ -528,9 +505,8 @@ def _to_record(self, elem, zone, index=0):
528505 extra ["weight" ] = int (weight )
529506 extra ["port" ] = int (port )
530507
531- id = ":" .join ((self .RECORD_TYPE_MAP [type ], name ))
532508 record = Record (
533- id = id ,
509+ id = self . to_default_id ( zone , name , type ) ,
534510 name = name ,
535511 type = type ,
536512 data = data ,
0 commit comments