#!/usr/share/ucs-test/runner python3
## desc: Check if nameservers in forward/reverse DNS zones are updated when deleting the nameserver
## tags: [udm-computers]
## roles: [domaincontroller_master]
## exposure: careful
## packages:
##   - univention-config
##   - univention-directory-manager-tools

import univention.testing.udm
import univention.testing.utils as utils


def do_test(computer_module):

	with univention.testing.udm.UCSTestUDM() as udm:

		# create zones and computer
		server_name = 'qwertzu'
		domain = 'asdfgh'
		fqdn_dot = server_name + '.' + domain + '.'
		forward = udm.create_object('dns/forward_zone', zone=domain, nameserver='aaa.aa.')
		reverse = udm.create_object('dns/reverse_zone', subnet='10.20.30', nameserver='aaa.aa.')
		computer = udm.create_object(computer_module, set={
			'ip': '10.20.30.3',
			'name': server_name,
			'dnsEntryZoneForward': forward,
			'dnsEntryZoneReverse': reverse,
			'domain': domain,
		})
		udm.modify_object('dns/forward_zone', dn=forward, nameserver=[fqdn_dot], wait_for_replication=False)
		udm.modify_object('dns/reverse_zone', dn=reverse, nameserver=[fqdn_dot], wait_for=True)
		utils.wait_for_connector_replication()
		utils.verify_ldap_object(forward, {'nSRecord': ['aaa.aa.', fqdn_dot]})
		utils.verify_ldap_object(reverse, {'nSRecord': ['aaa.aa.', fqdn_dot]})

		# delete computer and check new name in zones
		udm.remove_object(computer_module, dn=computer, wait_for=True)
		utils.wait_for_connector_replication()
		utils.verify_ldap_object(forward, {'nSRecord': ['aaa.aa.', ]})
		utils.verify_ldap_object(reverse, {'nSRecord': ['aaa.aa.', ]})


def main():
	for i in univention.testing.udm.UCSTestUDM.COMPUTER_MODULES:
		do_test(i)


if __name__ == '__main__':
	main()
