Hello, the attached patches fix the following tickets:
https://fedorahosted.org/freeipa/ticket/4131 https://fedorahosted.org/freeipa/ticket/4130 https://fedorahosted.org/freeipa/ticket/4133 Details in the commit messages. Tomas
>From 64542c3c9e8f56d28e39775d8351262514322873 Mon Sep 17 00:00:00 2001 From: Tomas Babej <tba...@redhat.com> Date: Wed, 22 Jan 2014 11:44:34 +0100 Subject: [PATCH] ipatests: test_legacy_clients: Change "test group" to "testgroup" The integration test for legacy clients used incorrectly "test group" instead of "testgroup" as group used on AD for test purposes. This is inconsistent with the usage of "testuser". https://fedorahosted.org/freeipa/ticket/4131 --- ipatests/test_integration/test_legacy_clients.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipatests/test_integration/test_legacy_clients.py b/ipatests/test_integration/test_legacy_clients.py index 6bbe54b32778b9185d523b00c9c87fd76bd15d53..3edceb2dcb110557fe7566534fb10a466d8f78a8 100644 --- a/ipatests/test_integration/test_legacy_clients.py +++ b/ipatests/test_integration/test_legacy_clients.py @@ -118,7 +118,7 @@ class BaseTestLegacyClient(trust_tests.TestEnforcedPosixADTrust): def test_getent_ad_group(self): self.clear_sssd_caches() - testgroup = 'test group@%s' % self.ad.domain.name + testgroup = 'testgroup@%s' % self.ad.domain.name result = self.legacy_client.run_command(['getent', 'group', testgroup]) testgroup_stdout = "%s:\*:10047:" % testgroup @@ -127,7 +127,7 @@ class BaseTestLegacyClient(trust_tests.TestEnforcedPosixADTrust): def test_id_ad_user(self): self.clear_sssd_caches() testuser = 'testuser@%s' % self.ad.domain.name - testgroup = 'test group@%s' % self.ad.domain.name + testgroup = 'testgroup@%s' % self.ad.domain.name result = self.legacy_client.run_command(['id', testuser]) -- 1.8.4.2
>From 8ae83923b07560d4f2b5019cc0961be28ee18acc Mon Sep 17 00:00:00 2001 From: Tomas Babej <tba...@redhat.com> Date: Wed, 22 Jan 2014 13:33:41 +0100 Subject: [PATCH] ipatests: Add records for all hosts in master's domain All the hosts in the domain have IPA master set as their only nameserver. However, the IPA master does not create records for these machines by default. This is not an big issue for clients or replicas, since those records do get created in other ways, but external hosts using their internal hostnames will not resolve. Adds an A record for each host in master's domain. https://fedorahosted.org/freeipa/ticket/4130 --- ipatests/ipa-test-task | 27 +++++++++++++++++++++++++++ ipatests/man/ipa-test-task.1 | 7 +++++++ ipatests/test_integration/tasks.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/ipatests/ipa-test-task b/ipatests/ipa-test-task index 48be36c97887b4f6aa258ff11e0075cc03defeb3..e5bc395349136aca8b98aedc7b8f34dec4569468 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 which 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 e73584bd3663fec72dafb68bcffbb166578d547f..0858a517826517ccca0e5c324127649f12d12972 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 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 72196914f6d27cd46dd84eef15b3d1dd60aacdf3..f41ca883d8a332df9b8060d22fd116f175aa4787 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]) -- 1.8.4.2
>From 343488ec285af1de6b1752e3032c81aa57cc1d40 Mon Sep 17 00:00:00 2001 From: Tomas Babej <tba...@redhat.com> Date: Wed, 22 Jan 2014 15:11:04 +0100 Subject: [PATCH] ipatests: Run restoring backup files and restoring their context in one session Restoring backup files and restoring their context were two separate commands, what means that in case we use SSHTrasport, which creates a separate SSH session for each command, we try to restore the SELinux context of the changed files in a new session. This causes problems, if the access to files themselves are necessary for the creation of the new SSH session. https://fedorahosted.org/freeipa/ticket/4133 --- ipatests/test_integration/tasks.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ipatests/test_integration/tasks.py b/ipatests/test_integration/tasks.py index 72196914f6d27cd46dd84eef15b3d1dd60aacdf3..07dad263390da546a78d7929f4660dc849c5f6bb 100644 --- a/ipatests/test_integration/tasks.py +++ b/ipatests/test_integration/tasks.py @@ -119,17 +119,21 @@ def restore_files(host): backupname = os.path.join(host.config.test_dir, 'file_backup') rmname = os.path.join(host.config.test_dir, 'file_remove') - # Restore the backed up files - host.run_command('cp -arvf %s/* /' % ipautil.shell_quote(backupname), - raiseonerr=False) - - # Restore context of the backed-up files + # Prepare command for restoring context of the backed-up files sed_remove_backupdir = 's/%s//g' % backupname.replace('/', '\/') - host.run_command("find %s | " - "sed '%s' | " - "sed '/^$/d' | " - "xargs -d '\n' " - "/sbin/restorecon -v" % (backupname, sed_remove_backupdir)) + restorecon_command = ( + "find %s | " + "sed '%s' | " + "sed '/^$/d' | " + "xargs -d '\n' " + "/sbin/restorecon -v" % (backupname, sed_remove_backupdir)) + + # Prepare command for actual restoring of the backed up files + copyfiles_command = 'cp -arvf %s/* /' % ipautil.shell_quote(backupname) + + # Run both commands in one session. For more information, see: + # https://fedorahosted.org/freeipa/ticket/4133 + host.run_command('%s ; %s' % (restorecon_command, copyfiles_command)) # Remove all the files that did not exist and were 'backed up' host.run_command(['xargs', '-d', r'\n', '-a', rmname, 'rm', '-vf'], -- 1.8.4.2
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel