#!/usr/share/ucs-test/runner python
## desc: Check basic ip_change functionality
## roles-not: [basesystem]
## exposure: dangerous

from __future__ import print_function
import univention.testing.utils as utils
import univention.testing.udm as udm_test
import univention.testing.strings as uts
from univention.testing.umc import Client
from univention.config_registry import ConfigRegistry

if __name__ == '__main__':
	ucr = ConfigRegistry()
	ucr.load()

	with udm_test.UCSTestUDM() as udm:
		role = ucr.get('server/role')
		if role == 'domaincontroller_master':
			role = 'domaincontroller_backup'
		computerName = uts.random_string()
		computer = udm.create_object('computers/%s' % role, name=computerName, password='univention', network='cn=default,cn=networks,%s' % ucr.get('ldap/base'))

		lo = utils.get_ldap_connection()
		computer_object = lo.get(computer)
		print(computer_object)
		ip = computer_object['aRecord']
		utils.verify_ldap_object(computer, {'aRecord': ip})

		new_ip = '1.2.3.4'

		iface = ucr.get('interfaces/primary', 'eth0')
		client = Client(ucr.get('ldap/master'), '%s$' % computerName, 'univention')
		client.umc_command('ip/change', {'ip': new_ip, 'oldip': ip[0], 'netmask': ucr.get('interfaces/%s/netmask' % iface), 'role': role})

		utils.wait_for_replication()
		utils.verify_ldap_object(computer, {'aRecord': [new_ip]}, strict=True)
