mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
python/remove_dc: handle dnsNode objects without dnsRecord attribute
If we have dnsNode objects without dnsRecord attribute values we trigger the following error triggered by 'samba-tool domain demote --remove-other-dead-server=server2' ERROR(<type 'exceptions.TypeError'>): uncaught exception - __ndr_unpack__() argument 1 must be string or read-only buffer, not dnsp.DnssrvRpcRecord File "/usr/lib64/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run return self.run(*args, **kwargs) File "/usr/lib64/python2.6/site-packages/samba/netcmd/domain.py", line 720, in run remove_dc.remove_dc(samdb, logger, remove_other_dead_server) File "/usr/lib64/python2.6/site-packages/samba/remove_dc.py", line 423, in remove_dc remove_dns_account=True) File "/usr/lib64/python2.6/site-packages/samba/remove_dc.py", line 351, in offline_remove_ntds_dc remove_dns_account=remove_dns_account) File "/usr/lib64/python2.6/site-packages/samba/remove_dc.py", line 266, in offline_remove_server remove_dns_references(samdb, logger, dnsHostName) File "/usr/lib64/python2.6/site-packages/samba/remove_dc.py", line 186, in remove_dns_references for v in values if not to_remove(v) ] File "/usr/lib64/python2.6/site-packages/samba/remove_dc.py", line 160, in to_remove dnsRecord = ndr_unpack(dnsp.DnssrvRpcRecord, value) File "/usr/lib64/python2.6/site-packages/samba/ndr.py", line 45, in ndr_unpack object.__ndr_unpack__(data, allow_remaining=allow_remaining) A transaction is still active in ldb context [0xe1f320] on tdb:///var/lib/samba/private/sam.ldb "next" is used in perl not in python! BUG: https://bugzilla.samba.org/show_bug.cgi?id=12018 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Wed Jul 13 10:10:30 CEST 2016 on sn-devel-144
This commit is contained in:
parent
be39b73ccd
commit
f8181360a8
@ -176,19 +176,18 @@ def remove_dns_references(samdb, logger, dnsHostName):
|
||||
attrs=["dnsRecord"])
|
||||
for record in records:
|
||||
try:
|
||||
values = record["dnsRecord"]
|
||||
orig_values = record["dnsRecord"]
|
||||
except KeyError:
|
||||
next
|
||||
orig_num_values = len(values)
|
||||
continue
|
||||
|
||||
# Remove references to dnsHostName in A, AAAA, NS, CNAME and SRV
|
||||
values = [ ndr_unpack(dnsp.DnssrvRpcRecord, v)
|
||||
for v in values if not to_remove(v) ]
|
||||
for v in orig_values if not to_remove(v) ]
|
||||
|
||||
if len(values) != orig_num_values:
|
||||
if len(values) != len(orig_values):
|
||||
logger.info("updating %s keeping %d values, removing %s values" \
|
||||
% (record.dn, len(values),
|
||||
orig_num_values - len(values)))
|
||||
len(orig_values) - len(values)))
|
||||
|
||||
# This requires the values to be unpacked, so this
|
||||
# has been done in the list comprehension above
|
||||
|
Loading…
Reference in New Issue
Block a user