From 9e8aed8e53b91605685cd050cfdc27c41112ceb8 Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Thu, 4 Sep 2014 15:48:16 +0200 Subject: [PATCH] Fix dnsrecord-mod raise error if last record attr is removed Removing last record attribute causes output type validation error Reviewed-By: Jan Cholasta --- ipalib/plugins/dns.py | 7 +++++++ ipatests/test_xmlrpc/test_dns_plugin.py | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index fdcccb0b7..dae57e6c3 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -3374,6 +3374,13 @@ class dnsrecord_mod(LDAPUpdate): if del_all: result = self.obj.methods.delentry(*keys, version=options['version']) + + # we need to modify delete result to match mod output type + # only one value is expected, not a list + if client_has_capability(options['version'], 'primary_key_types'): + assert len(result['value']) == 1 + result['value'] = result['value'][0] + # indicate that entry was deleted context.dnsrecord_entry_mods[(keys[0], keys[1])] = None diff --git a/ipatests/test_xmlrpc/test_dns_plugin.py b/ipatests/test_xmlrpc/test_dns_plugin.py index 50b4d2ec7..1cfbbdb9e 100644 --- a/ipatests/test_xmlrpc/test_dns_plugin.py +++ b/ipatests/test_xmlrpc/test_dns_plugin.py @@ -1378,10 +1378,10 @@ class test_dns(Declarative): dict( - desc='Delete record %r in zone %r' % (tlsa, zone1), - command=('dnsrecord_del', [zone1, tlsa], {'del_all': True}), + desc='Remove record using dnsrecord-mod %r in zone %r' % (tlsa, zone1), + command=('dnsrecord_mod', [zone1, tlsa], {'tlsarecord': ''}), expected={ - 'value': [tlsa_dnsname], + 'value': tlsa_dnsname, 'summary': u'Deleted record "%s"' % tlsa, 'result': {'failed': []}, },