def install(cls, mh): tasks.install_master(cls.master, setup_dns=True) tasks.install_replica(cls.master, cls.replicas[0], setup_dns=True, setup_ca=False) tasks.install_replica(cls.master, cls.replicas[1], setup_dns=True, setup_ca=False) for host in (cls.master, cls.replicas[0], cls.replicas[1]): ldap = host.ldap_connect() tasks.wait_for_replication(ldap) # give time to named to retrieve new records time.sleep(20)
def test_replica_after_domain_upgrade(self): tasks.kinit_admin(self.master) tasks.kinit_admin(self.replicas[0]) self.master.run_command(["ipa", "user-add", self.username, "--first", "test", "--last", "user"]) tasks.wait_for_replication(self.replicas[0].ldap_connect()) self.master.run_command(["ipa", "domainlevel-set", str(DOMAIN_LEVEL_1)]) result = self.replicas[0].run_command(["ipa", "user-show", self.username]) assert ( "User login: %s" % self.username in result.stdout_text ), "A testuser was not found on replica after domain upgrade" self.replicas[0].run_command(["ipa", "user-del", self.username]) tasks.wait_for_replication(self.master.ldap_connect()) result1 = self.master.run_command(["ipa", "user-show", self.username], raiseonerr=False) assert_error(result1, "%s: user not found" % self.username, 2)
def test_add_remove_segment(self): """ Make sure a topology segment can be manually created and deleted with the influence on the real topology Testcase http://www.freeipa.org/page/V4/Manage_replication_topology/ Test_plan#Test_case:_Basic_CRUD_test """ tasks.kinit_admin(self.master) # Install the second replica tasks.install_replica(self.master, self.replicas[1], setup_ca=False, setup_dns=False) # turn a star into a ring segment, err = tasks.create_segment(self.master, self.replicas[0], self.replicas[1]) assert err == "", err # Make sure the new segment is shown by `ipa topologysegment-find` result1 = self.master.run_command( ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME]).stdout_text assert (segment['name'] in result1), ("%s: segment not found" % segment['name']) # Remove master <-> replica2 segment and make sure that the changes get # there through replica1 # Since segment name can be one of master-to-replica2 or # replica2-to-master, we need to determine the segment name dynamically deleteme = find_segment(self.master, self.replicas[1]) returncode, error = tasks.destroy_segment(self.master, deleteme) assert returncode == 0, error # Wait till replication ends and make sure replica1 does not have # segment that was deleted on master replica1_ldap = self.replicas[0].ldap_connect() tasks.wait_for_replication(replica1_ldap) result3 = self.replicas[0].run_command( ['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME]).stdout_text assert (deleteme not in result3), "%s: segment still exists" % deleteme # Create test data on master and make sure it gets all the way down to # replica2 through replica1 self.master.run_command([ 'ipa', 'user-add', 'someuser', '--first', 'test', '--last', 'user' ]) dest_ldap = self.replicas[1].ldap_connect() tasks.wait_for_replication(dest_ldap) result4 = self.replicas[1].run_command(['ipa', 'user-find']) assert ('someuser' in result4.stdout_text), 'User not found: someuser'
def test_add_remove_segment(self): """ Make sure a topology segment can be manually created and deleted with the influence on the real topology Testcase http://www.freeipa.org/page/V4/Manage_replication_topology/ Test_plan#Test_case:_Basic_CRUD_test """ tasks.kinit_admin(self.master) # Install the second replica tasks.install_replica(self.master, self.replicas[1], setup_ca=False, setup_dns=False) # turn a star into a ring segment, err = tasks.create_segment(self.master, self.replicas[0], self.replicas[1]) assert err == "", err # Make sure the new segment is shown by `ipa topologysegment-find` result1 = self.master.run_command(['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME]).stdout_text assert(segment['name'] in result1), ( "%s: segment not found" % segment['name']) # Remove master <-> replica2 segment and make sure that the changes get # there through replica1 # Since segment name can be one of master-to-replica2 or # replica2-to-master, we need to determine the segment name dynamically deleteme = find_segment(self.master, self.replicas[1]) returncode, error = tasks.destroy_segment(self.master, deleteme) assert returncode == 0, error # Wait till replication ends and make sure replica1 does not have # segment that was deleted on master replica1_ldap = self.replicas[0].ldap_connect() tasks.wait_for_replication(replica1_ldap) result3 = self.replicas[0].run_command(['ipa', 'topologysegment-find', DOMAIN_SUFFIX_NAME]).stdout_text assert(deleteme not in result3), "%s: segment still exists" % deleteme # Create test data on master and make sure it gets all the way down to # replica2 through replica1 self.master.run_command(['ipa', 'user-add', 'someuser', '--first', 'test', '--last', 'user']) dest_ldap = self.replicas[1].ldap_connect() tasks.wait_for_replication(dest_ldap) result4 = self.replicas[1].run_command(['ipa', 'user-find']) assert('someuser' in result4.stdout_text), 'User not found: someuser'
def test_replica_after_domain_upgrade(self): tasks.kinit_admin(self.master) tasks.kinit_admin(self.replicas[0]) self.master.run_command([ 'ipa', 'user-add', self.username, '--first', 'test', '--last', 'user' ]) tasks.wait_for_replication(self.replicas[0].ldap_connect()) self.master.run_command( ['ipa', 'domainlevel-set', str(DOMAIN_LEVEL_1)]) result = self.replicas[0].run_command( ['ipa', 'user-show', self.username]) assert ("User login: %s" % self.username in result.stdout_text), ( "A testuser was not found on replica after domain upgrade") self.replicas[0].run_command(['ipa', 'user-del', self.username]) tasks.wait_for_replication(self.master.ldap_connect()) result1 = self.master.run_command(['ipa', 'user-show', self.username], raiseonerr=False) assert_error(result1, "%s: user not found" % self.username, 2)
def check_replication(self, source_host, dest_host, login): source_host.run_command(["ipa", "user-add", login, "--first", "test", "--last", "user"]) source_ldap = source_host.ldap_connect() tasks.wait_for_replication(source_ldap) ldap = dest_host.ldap_connect() tasks.wait_for_replication(ldap) # Check using LDAP basedn = dest_host.domain.basedn user_dn = DN(("uid", login), ("cn", "users"), ("cn", "accounts"), basedn) entry = ldap.get_entry(user_dn) print(entry) assert entry.dn == user_dn assert entry["uid"] == [login] # Check using CLI result = dest_host.run_command(["ipa", "user-show", login]) assert "User login: %s" % login in result.stdout_text
def check_replication(self, source_host, dest_host, login): source_host.run_command( ['ipa', 'user-add', login, '--first', 'test', '--last', 'user']) source_ldap = source_host.ldap_connect() tasks.wait_for_replication(source_ldap) ldap = dest_host.ldap_connect() tasks.wait_for_replication(ldap) # Check using LDAP basedn = dest_host.domain.basedn user_dn = DN(('uid', login), ('cn', 'users'), ('cn', 'accounts'), basedn) entry = ldap.get_entry(user_dn) print(entry) assert entry.dn == user_dn assert entry['uid'] == [login] # Check using CLI result = dest_host.run_command(['ipa', 'user-show', login]) assert 'User login: %s' % login in result.stdout_text
def check_replication(self, source_host, dest_host, login): source_host.run_command(['ipa', 'user-add', login, '--first', 'test', '--last', 'user']) source_ldap = source_host.ldap_connect() tasks.wait_for_replication(source_ldap) ldap = dest_host.ldap_connect() tasks.wait_for_replication(ldap) # Check using LDAP basedn = dest_host.domain.basedn user_dn = DN(('uid', login), ('cn', 'users'), ('cn', 'accounts'), basedn) entry = ldap.get_entry(user_dn) print entry assert entry.dn == user_dn assert entry['uid'] == [login] # Check using CLI result = dest_host.run_command(['ipa', 'user-show', login]) assert 'User login: %s' % login in result.stdout_text