Author: tomaz
Date: Sun Sep 25 22:27:43 2011
New Revision: 1175604
URL: http://svn.apache.org/viewvc?rev=1175604&view=rev
Log:
Modify update_record method to only send arguments which are specified in the
request (on update, most of the arguments are optional). Also modify it to use
get_new_ob. Update affected tests.
Modified:
libcloud/trunk/libcloud/dns/drivers/linode.py
libcloud/trunk/test/dns/test_linode.py
Modified: libcloud/trunk/libcloud/dns/drivers/linode.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/dns/drivers/linode.py?rev=1175604&r1=1175603&r2=1175604&view=diff
==============================================================================
--- libcloud/trunk/libcloud/dns/drivers/linode.py (original)
+++ libcloud/trunk/libcloud/dns/drivers/linode.py Sun Sep 25 22:27:43 2011
@@ -179,23 +179,35 @@ class LinodeDNSDriver(DNSDriver):
data=data, extra=merged, zone=zone, driver=self)
return record
- def update_record(self, record, name, type, data, extra=None):
+ def update_record(self, record, name=None, type=None, data=None,
+ extra=None):
"""
Update an existing record.
API docs: http://www.linode.com/api/dns/domain.resource.update
"""
params = {'api_action': 'domain.resource.update',
- 'ResourceID': record.id, 'DomainID': record.zone.id,
- 'Name': name, 'Target': data, 'Type': RECORD_TYPE_MAP[type]}
+ 'ResourceID': record.id, 'DomainID': record.zone.id}
+
+ if name:
+ params['Name'] = name
+
+ if data:
+ params['Target'] = data
+
+ if type:
+ params['Type'] = RECORD_TYPE_MAP[type]
+
merged = merge_valid_keys(params=params,
valid_keys=VALID_RECORD_EXTRA_PARAMS,
extra=extra)
result = self.connection.request(API_ROOT, params=params).objects[0]
- record = Record(id=result['ResourceID'], name=name, type=type,
- data=data, extra=merged, zone=record.zone, driver=self)
- return record
+ updated_record = get_new_obj(obj=record, klass=Record,
+ attributes={'name': name, 'data': data,
+ 'type': type,
+ 'extra': merged})
+ return updated_record
def delete_zone(self, zone):
params = {'api_action': 'domain.delete', 'DomainID': zone.id}
Modified: libcloud/trunk/test/dns/test_linode.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/test/dns/test_linode.py?rev=1175604&r1=1175603&r2=1175604&view=diff
==============================================================================
--- libcloud/trunk/test/dns/test_linode.py (original)
+++ libcloud/trunk/test/dns/test_linode.py Sun Sep 25 22:27:43 2011
@@ -174,14 +174,17 @@ class LinodeTests(unittest.TestCase):
def test_update_record_success(self):
zone = self.driver.list_zones()[0]
record = self.driver.list_records(zone=zone)[0]
- record2 = self.driver.update_record(record=record, name='www',
- type=RecordType.AAAA, data='::1')
-
- self.assertEqual(record2.id, '28537')
- self.assertEqual(record2.name, 'www')
- self.assertEqual(record2.zone, record.zone)
- self.assertEqual(record2.type, RecordType.AAAA)
- self.assertEqual(record2.data, '::1')
+ updated_record = self.driver.update_record(record=record, name='www',
+ type=RecordType.AAAA,
+ data='::1')
+
+ self.assertEqual(record.data, '75.127.96.245')
+
+ self.assertEqual(updated_record.id, record.id)
+ self.assertEqual(updated_record.name, 'www')
+ self.assertEqual(updated_record.zone, record.zone)
+ self.assertEqual(updated_record.type, RecordType.AAAA)
+ self.assertEqual(updated_record.data, '::1')
def test_delete_zone_success(self):
zone = self.driver.list_zones()[0]