diff --git a/ipatests/ipa-test-task b/ipatests/ipa-test-task index 48be36c97..91bc8689c 100755 --- a/ipatests/ipa-test-task +++ b/ipatests/ipa-test-task @@ -213,6 +213,24 @@ class TaskRunner(object): help='Server that serves as a time source') subparser.set_defaults(func=self.sync_time) + subparser = subparsers.add_parser( + 'add-a-records-in-master-domain', + help='Adds A records to the IPA master for all the hosts in the ' + 'master domain.') + subparser.add_argument('master', type=str, + help='IPA master to add records on') + subparser.set_defaults( + func=self.add_a_records_for_hosts_in_master_domain) + + subparser = subparsers.add_parser( + 'add-a-record', + help='Adds A record for the host to the IPA master') + subparser.add_argument('master', type=str, + help='IPA master to add record on') + subparser.add_argument('host', type=str, + help='Host whose record should be added') + subparser.set_defaults(func=self.add_a_record) + return parser def main(self, argv): @@ -397,5 +415,14 @@ class TaskRunner(object): server = self.get_host(args.server) tasks.sync_time(host, server) + def add_a_records_for_hosts_in_master_domain(self, args): + master = self.get_host(args.master, default=args.domain.master) + tasks.add_a_records_for_hosts_in_master_domain(master) + + def add_a_record(self, args): + master = self.get_host(args.master, default=args.domain.master) + host = self.get_host(args.host) + tasks.add_a_record(master, host) + if __name__ == '__main__': exit(TaskRunner().main(sys.argv[1:])) diff --git a/ipatests/man/ipa-test-task.1 b/ipatests/man/ipa-test-task.1 index e73584bd3..3f5235699 100644 --- a/ipatests/man/ipa-test-task.1 +++ b/ipatests/man/ipa-test-task.1 @@ -147,6 +147,13 @@ Clears SSSD cache by removing the cache files. Restarts SSSD. Syncs the time with the remote server. Please note that this function leaves ntpd stopped. +.TP +\fBipa\-test\-task add\-a\-records\-in\-master\-domain MASTER\fR +Adds A records to the IPA master for all the hosts in the master domain. + +.TP +\fBipa\-test\-task add\-a\-record MASTER HOST\fR +Adds an A record for the host to the IPA master. .SH "EXIT STATUS" 0 if the command was successful diff --git a/ipatests/test_integration/tasks.py b/ipatests/test_integration/tasks.py index 72196914f..ab027e028 100644 --- a/ipatests/test_integration/tasks.py +++ b/ipatests/test_integration/tasks.py @@ -572,6 +572,9 @@ def install_topo(topo, master, replicas, clients, installed = {master} if not skip_master: install_master(master) + + add_a_records_for_hosts_in_master_domain(master) + for parent, child in get_topo(topo)(master, replicas): if child in installed: log.info('Connecting replica %s to %s' % (parent, child)) @@ -632,3 +635,28 @@ def wait_for_replication(ldap, timeout=30): break else: log.error('Giving up wait for replication to finish') + + +def add_a_records_for_hosts_in_master_domain(master): + for host in master.domain.hosts: + # We don't need to take care of the zone creation since it is master + # domain + add_a_record(master, host) + + +def add_a_record(master, host): + # Find out if the record is already there + cmd = master.run_command(['ipa', + 'dnsrecord-find', + master.domain.name, + host.hostname, + '--a-rec', host.ip], + raiseonerr=False) + + # If not, add it + if cmd.returncode != 0: + master.run_command(['ipa', + 'dnsrecord-add', + master.domain.name, + host.hostname, + '--a-rec', host.ip])