def test_automatic_renewal_master_transfer_ondelete(self):
     # Test that after master uninstallation, replica overtakes the cert
     # renewal master role
     tasks.uninstall_master(self.replicas[0])
     result = self.master.run_command(['ipa', 'config-show']).stdout_text
     assert ("IPA CA renewal master: %s" % self.master.hostname
             in result), (
                 "Master hostname not found among CA renewal masters")
 def test_automatic_renewal_master_transfer_ondelete(self):
     # Test that after master uninstallation, replica overtakes the cert
     # renewal master role
     tasks.uninstall_master(self.replicas[0])
     result = self.master.run_command(['ipa', 'config-show']).stdout_text
     assert("IPA CA renewal master: %s" % self.master.hostname in result), (
         "Master hostname not found among CA renewal masters"
     )
Exemple #3
0
    def test_ignore_topology_disconnect_replica2(self):
        """
        tests that removal of replica2 with '--ignore-topology-disconnect'
        destroys master for good
        """
        check_master_removal(
            self.client,
            self.replica2.hostname,
            ignore_topology_disconnect=True
        )

        # reinstall the replica
        tasks.uninstall_master(self.replica2)
        tasks.install_replica(self.master, self.replica2, setup_ca=True)
Exemple #4
0
 def test_replica_uninstall_deletes_ruvs(self):
     """
     http://www.freeipa.org/page/V4/Manage_replication_topology_4_4/Test_Plan
     #Test_case:_.2A-ruv_subcommands_of_ipa-replica-manage_are_extended
     _to_handle_CA-specific_RUVs
     """
     master = self.master
     replica = self.replicas[1]
     res1 = master.run_command(['ipa-replica-manage', 'list-ruv', '-p',
                               master.config.dirman_password]).stdout_text
     assert(res1.count(replica.hostname) == 2), (
         "Did not find proper number of replica hostname (%s) occurrencies"
         " in the command output: %s" % (replica.hostname, res1))
     tasks.uninstall_master(replica)
     res2 = master.run_command(['ipa-replica-manage', 'list-ruv', '-p',
                               master.config.dirman_password]).stdout_text
     assert(replica.hostname not in res2), (
         "Replica RUVs were not clean during replica uninstallation")
Exemple #5
0
 def test_topology_updated_on_replica_install_remove(self):
     """
     Install and remove a replica and make sure topology information is
     updated on all other replicas
     Testcase: http://www.freeipa.org/page/V4/Manage_replication_topology/
     Test_plan#Test_case:
     _Replication_topology_should_be_saved_in_the_LDAP_tree
     """
     tasks.kinit_admin(self.master)
     result1 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME]).stdout_text
     first_segment_name = "%s-to-%s" % (self.master.hostname,
                                        self.replicas[0].hostname)
     expected_segment = {
         'connectivity': 'both',
         'leftnode': self.master.hostname,
         'name': first_segment_name,
         'rightnode': self.replicas[0].hostname}
     firstsegment = self.tokenize_topologies(result1)[0]
     assert_deepequal(expected_segment, firstsegment)
     tasks.install_replica(self.master, self.replicas[1], setup_ca=False,
                           setup_dns=False)
     # We need to make sure topology information is consistent across all
     # replicas
     result2 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME])
     result3 = self.replicas[0].run_command(['ipa', 'topologysegment-find',
                                             DOMAIN_SUFFIX_NAME])
     result4 = self.replicas[1].run_command(['ipa', 'topologysegment-find',
                                             DOMAIN_SUFFIX_NAME])
     segments = self.tokenize_topologies(result2.stdout_text)
     assert(len(segments) == 2), "Unexpected number of segments found"
     assert_deepequal(result2.stdout_text, result3.stdout_text)
     assert_deepequal(result3.stdout_text,  result4.stdout_text)
     # Now let's check that uninstalling the replica will update the topology
     # info on the rest of replicas.
     tasks.uninstall_master(self.replicas[1])
     tasks.clean_replication_agreement(self.master, self.replicas[1])
     result5 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME])
     num_entries = self.noentries_re.search(result5.stdout_text).group(1)
     assert(num_entries == "1"), "Incorrect number of entries displayed"
Exemple #6
0
 def test_topology_updated_on_replica_install_remove(self):
     """
     Install and remove a replica and make sure topology information is
     updated on all other replicas
     Testcase: http://www.freeipa.org/page/V4/Manage_replication_topology/
     Test_plan#Test_case:
     _Replication_topology_should_be_saved_in_the_LDAP_tree
     """
     tasks.kinit_admin(self.master)
     result1 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME])
     first_segment_name = "%s-to-%s" % (self.master.hostname,
                                        self.replicas[0].hostname)
     output1 = result1.stdout_text
     firstsegment = self.tokenize_topologies(output1)[0]
     assert(firstsegment['name'] == first_segment_name)
     assert(self.noentries_re.search(output1).group(1) == "1")
     assert(firstsegment['leftnode'] == self.master.hostname)
     assert(firstsegment['rightnode'] == self.replicas[0].hostname)
     tasks.install_replica(self.master, self.replicas[1], setup_ca=False,
                           setup_dns=False)
     # We need to make sure topology information is consistent across all
     # replicas
     result2 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME])
     result3 = self.replicas[0].run_command(['ipa', 'topologysegment-find',
                                             DOMAIN_SUFFIX_NAME])
     result4 = self.replicas[1].run_command(['ipa', 'topologysegment-find',
                                             DOMAIN_SUFFIX_NAME])
     segments = self.tokenize_topologies(result2.stdout_text)
     assert(len(segments) == 2)
     assert(result2.stdout_text == result3.stdout_text)
     assert(result3.stdout_text == result4.stdout_text)
     # Now let's check that uninstalling the replica will update the topology
     # info on the rest of replicas.
     tasks.uninstall_master(self.replicas[1])
     tasks.clean_replication_agreement(self.master, self.replicas[1])
     result5 = self.master.run_command(['ipa', 'topologysegment-find',
                                        DOMAIN_SUFFIX_NAME])
     assert(self.noentries_re.search(result5.stdout_text).group(1) == "1")
Exemple #7
0
 def test_topology_updated_on_replica_install_remove(self):
     """
     Install and remove a replica and make sure topology information is
     updated on all other replicas
     Testcase: http://www.freeipa.org/page/V4/Manage_replication_topology/
     Test_plan#Test_case:
     _Replication_topology_should_be_saved_in_the_LDAP_tree
     """
     tasks.kinit_admin(self.master)
     result1 = self.master.run_command(
         ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME]).stdout_text
     segment_name = self.segmentnames_re.findall(result1)[0]
     assert (self.master.hostname in segment_name), (
         "Segment %s does not contain master hostname" % segment_name)
     assert (self.replicas[0].hostname in segment_name), (
         "Segment %s does not contain replica hostname" % segment_name)
     tasks.install_replica(self.master,
                           self.replicas[1],
                           setup_ca=False,
                           setup_dns=False)
     # We need to make sure topology information is consistent across all
     # replicas
     result2 = self.master.run_command(
         ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME])
     result3 = self.replicas[0].run_command(
         ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME])
     result4 = self.replicas[1].run_command(
         ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME])
     segments = self.tokenize_topologies(result2.stdout_text)
     assert (len(segments) == 2), "Unexpected number of segments found"
     assert_deepequal(result2.stdout_text, result3.stdout_text)
     assert_deepequal(result3.stdout_text, result4.stdout_text)
     # Now let's check that uninstalling the replica will update the topology
     # info on the rest of replicas.
     tasks.uninstall_master(self.replicas[1])
     tasks.clean_replication_agreement(self.master, self.replicas[1])
     result5 = self.master.run_command(
         ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME])
     num_entries = self.noentries_re.search(result5.stdout_text).group(1)
     assert (num_entries == "1"), "Incorrect number of entries displayed"
Exemple #8
0
 def test_replica_uninstall_deletes_ruvs(self):
     """
     http://www.freeipa.org/page/V4/Manage_replication_topology_4_4/Test_Plan
     #Test_case:_.2A-ruv_subcommands_of_ipa-replica-manage_are_extended
     _to_handle_CA-specific_RUVs
     """
     master = self.master
     replica = self.replicas[1]
     res1 = master.run_command([
         'ipa-replica-manage', 'list-ruv', '-p',
         master.config.dirman_password
     ]).stdout_text
     assert (res1.count(replica.hostname) == 2), (
         "Did not find proper number of replica hostname (%s) occurrencies"
         " in the command output: %s" % (replica.hostname, res1))
     tasks.uninstall_master(replica)
     res2 = master.run_command([
         'ipa-replica-manage', 'list-ruv', '-p',
         master.config.dirman_password
     ]).stdout_text
     assert (replica.hostname not in res2), (
         "Replica RUVs were not clean during replica uninstallation")
Exemple #9
0
 def uninstall(cls, mh):
     tasks.uninstall_master(cls.master)
     for replica in cls.replicas:
         tasks.uninstall_master(replica)
     for client in cls.clients:
         tasks.uninstall_client(client)