This function contains the common testcases that can be run on any of the ECL modes: opends proprietary mode, changelog draft-compatible mode, or dsee-compatible mode. External Changelog mode: opends, draft, dsee 'Common ECL tests: reset data' { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstanceAdminPort' : master.getAdminPort(), 'localOnly' : False, 'replicationDnList' : [synchroSuffix], 'adminUID' : adminUID, 'adminPswd' : adminPswd } { 'location' : masterHost, 'dsPath' : masterPath, 'dsHost' : masterHost, 'dsAdminPort' : master.getAdminPort(), 'dsBindDN' : master.getRootDn(), 'dsBindPwd' : master.getRootPwd() } { 'location' : masterHost, 'dsPath' : masterPath, 'dsBackEnd' : DIRECTORY_INSTANCE_BE, 'dsLdifFile' : '%s/replication/Example.ldif' \ % masterDataDir } { 'location' : masterHost, 'dsPath' : masterPath } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort() , 'dsInstanceDn' : master.getRootDn() , 'dsInstancePswd' : master.getRootPwd() , 'noOfLoops' : 10 , 'noOfMilliSeconds' : 2000 } { 'location' : clientHost, 'dsPath' : clientPath, 'sourceInstanceHost' : masterHost, 'sourceInstanceAdminPort' : master.getAdminPort(), 'replicationDnList' : ['o=example'] } 'Common ECL tests: start test execution in mode: %s' % ecl_mode 'Replication: External Changelog: %s - Add_1. \ Verify add operation is recorded properly in the external \ changelog on each replication server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : addOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s' %\ (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % \ nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modify_add. \ Verify modify-add operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntry.getDn(), 'attributeName' : 'description', 'newAttributeValue' : '3', 'changetype' : 'add' } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modify_delete. \ Verify modify-del operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntry.getDn(), 'listAttributes' : valuesToDelete, 'changetype' : 'delete' } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modify_replace. \ Verify modify-replace operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntry.getDn(), 'attributeName' : 'description', 'newAttributeValue' : 'new', 'changetype' : 'replace' } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modrdn_deleteoldrdn_true. \ Verify modrdn operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : oldEntry.getDn(), 'newRDN' : newRdn } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (newEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'newRDN' : myNewRDN, 'deleteOldRDN' : myDeleteOldRDN } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (newEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modrdn_deleteoldrdn_false. \ Verify modrdn operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : oldEntry.getDn(), 'newRDN' : newRdn, 'deleteOldRDN' : 0 } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (newEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'newRDN' : myNewRDN, 'deleteOldRDN' : myDeleteOldRDN } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (newEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Delete_1. \ Verify delete operation is recorded properly in the \ external changelog on each repl server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (newEntry.getDn(), masterHost, master.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newEntry.getDn() } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newEntry.getDn(), 'dsFilter' : 'objectclass=*', 'expectedRC' : 32 } [ clientHost, clientPath, master, consumerList, synchroSuffix ] 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'targetEntryUUID' : myTargetEntryUUID } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (newEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Add_2. \ Verify add operation (of and entry with userpassword) is \ recorded properly in the external changelog on each \ replication server' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : '%s pwdChangedTime' % addOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s' %\ (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Modify_replace_2. \ Verify modify-replace operation as non directory manager is \ recorded properly in the external changelog on each repl server' \ % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : myEntry.getDn(), 'dsInstancePswd' : 'password', 'DNToModify' : myEntry.getDn(), 'attributeName' : 'userpassword', 'newAttributeValue' : 'newpass', 'changetype' : 'replace' } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : '%s pwdChangedTime' % modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) 'Replication: External Changelog: %s - Last index. \ Verify the last index (lastExternalChangelogCookie or \ lastChangenumber) value matches that of the last external \ changelog entry' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'l', 'newAttributeValue' : newLoc, 'changetype' : 'add' } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'base', 'dsBaseDN' : ' ', 'dsFilter' : 'objectclass=*', 'dsAttributes' : lastIndexAttr } 'Last index read from root DSE entry %s attribute: %s' % \ (lastIndexAttr, lastIndexValue) 'Could not read root DSE entry from server %s:%s' % \ (server.getHostname(), server.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s'\ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Index to use for the next ECL search: %s' % nextIndex 'Last index %s:%s does not match value found in ECL \ entry %s : %s' % (lastIndexAttr, lastIndexValue, eclEntry['dn'][0], eclIndexValue) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Failover (stop). \ Verify the external changelog can cope with a server failover \ (server stopped)' % ecl_mode [consumerList] [_topologyReplServerList[1:]] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'description', 'newAttributeValue' : newDesc0, 'changetype' : 'replace' } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntryDn, 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) [consumerList] [_topologyReplServerList[1:]] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'description', 'newAttributeValue' : newDesc1, 'changetype' : 'replace' } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntryDn, 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) [ clientHost, clientPath, master, consumerList, synchroSuffix ] 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Number of added entries %s does not match number of ECL \ entries %s' % (len(modEntries), len(eclEntries)) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Failover (kill). \ Verify the external changelog can cope with a server failover \ (server killed)' % ecl_mode { 'location' : server.getHostname(), 'dsPath' : serverPath } { 'location' : replServer.getHostname(), 'dsPath' : replServerPath } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'description', 'newAttributeValue' : newDesc0, 'changetype' : 'replace' } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntryDn, 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) [consumerList] [_topologyReplServerList[1:]] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'description', 'newAttributeValue' : newDesc1, 'changetype' : 'replace' } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntryDn, 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) [ clientHost, clientPath, master, consumerList, synchroSuffix ] 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Number of added entries %s does not match number of ECL \ entries %s' % (len(modEntries), len(eclEntries)) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Multiple add (single server). \ Verify multiple add operations on a single server are recorded \ properly in the external changelog on each replication server' \ % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : synchroSuffix, 'dsFilter' : 'sn=Multiple add', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Number of added entries %s does not match number of ECL \ entries %s' % (len(addedEntries), len(eclEntries)) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Multiple add (multiple servers). \ Verify multiple add operations on multiple servers are recorded \ properly in the external changelog on each replication server' \ % ecl_mode 'Adding entry %s to server %s:%s)' % \ (myEntry.getDn(), server.getHostname(), server.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : server.getHostname(), 'dsInstancePort' : server.getPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : synchroSuffix, 'dsFilter' : 'sn=NEW Multiple add', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Number of added entries %s does not match number of ECL \ entries %s' % (len(addedEntries), len(eclEntries)) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Multiple modify (multiple \ servers). \ Verify multiple mod operations on multiple servers are recorded \ properly in the external changelog on each replication server' \ % ecl_mode 'Adding telephonenumber %s to entry %s on server %s:%s' % \ (myTelephonenumber, myEntryDn, server.getHostname(), server.getPort()) { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstancePort' : server.getPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'DNToModify' : myEntryDn, 'attributeName' : 'telephonenumber', 'newAttributeValue' : myTelephonenumber, 'changetype' : 'add' } { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstancePort' : server.getPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'dsBaseDN' : myEntryDn, 'dsFilter' : 'objectclass=*', 'dsAttributes' : modOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (server.getHostname(), server.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read modified entries from server %s:%s' % \ (server.getHostname(), server.getPort()) [ clientHost, clientPath, master, consumerList, synchroSuffix ] 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Number of added entries %s does not match number of ECL \ entries %s' % (len(modEntries), len(eclEntries)) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Two suffixes (one \ replicated, one non-replicated). \ Verify external changelog only cares about replicated suffix' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : addOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s' %\ (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry (failed to \ read entries %s and/or %s)' % \ (myEntry.getDn(), eclEntry['dn'][0]) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstanceAdminPort' : master.getAdminPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'objectName' : 'backend', 'propertyType' : 'backend', 'propertyName' : 'userRoot', 'modifyType' : 'add', 'attributeName' : 'base-dn', 'attributeValue' : newSuffix } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : newSuffix, 'listAttributes' : newRootEntryAttrs } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : 'ou=People,%s' % newSuffix, 'listAttributes' : newPeopleEntryAttrs } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myNewEntry.getDn(), 'listAttributes' : myNewEntry.getAttrList() } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newSuffix, 'dsFilter' : 'objectclass=*', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie, 'knownIssue' : myKnownIssue } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Server %s:%s : ECL entries = %s ; Expected = %s' % \ (replServer.getHostname(), replServer.getPort(), eclEntriesNb, expectedNb) 'Number of ECL entries %s does not match number of \ expected entries %s' % (eclEntriesNb, expectedNb) 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Two suffixes (both \ replicated). \ Verify external changelog can manage several suffixes' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : addOperationalAttrs } 'This is the entry as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Could not read added entry %s from server %s:%s' % \ (myEntry.getDn(), masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie } 'This is the ECL entry as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntry' : searchResult } 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'objectName' : 'backend', 'propertyType' : 'backend', 'propertyName' : 'userRoot', 'modifyType' : 'add', 'attributeName' : 'base-dn', 'attributeValue' : newReplSuffix } 'Enable replication for server:\nHost: %s\nLdap port: %s\n\ Replication port: %s\nReplicated DN list: %s' \ % (server.getHostname(), server.getPort(), serverReplPort, replicatedDnList) { 'location' : clientHost, 'dsPath' : clientPath, 'refInstanceHost' : masterHost, 'refInstanceAdminPort' : master.getAdminPort(), 'refInstanceDn' : master.getRootDn(), 'refInstancePswd' : master.getRootPwd(), 'refReplicationPort' : masterReplPort, 'refSecureReplication' : secureReplication, 'refOnlyLdapServer' : master.isOnlyLdapServer(), 'refOnlyReplServer' : master.isOnlyReplServer(), 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'dsReplicationPort' : serverReplPort, 'dsSecureReplication' : secureReplication, 'dsOnlyLdapServer' : server.isOnlyLdapServer(), 'dsOnlyReplServer' : server.isOnlyReplServer(), 'replicationDnList' : replicatedDnList } 'Enable replication for server:\nHost: %s\nLdap port: %s\n\ Replication port: %s\nReplicated DN list: %s' \ % (replServer.getHostname(), replServer.getPort(), replServerReplPort, replicatedDnList) { 'location' : clientHost, 'dsPath' : clientPath, 'refInstanceHost' : masterHost, 'refInstanceAdminPort' : master.getAdminPort(), 'refInstanceDn' : master.getRootDn(), 'refInstancePswd' : master.getRootPwd(), 'refReplicationPort' : masterReplPort, 'refSecureReplication' : secureReplication, 'refOnlyLdapServer' : master.isOnlyLdapServer(), 'refOnlyReplServer' : master.isOnlyReplServer(), 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsReplicationPort' : replServerReplPort, 'dsSecureReplication' : secureReplication, 'dsOnlyLdapServer' : replServer.isOnlyLdapServer(), 'dsOnlyReplServer' : replServer.isOnlyReplServer(), 'replicationDnList' : replicatedDnList } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : newReplSuffix, 'listAttributes' : newRootEntryAttrs } 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie, 'expectedRC' : 1 } 'This is the ECL search result on server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'expectedString' : 'resync', 'returnString' : searchResult } { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'base', 'dsBaseDN' : ' ', 'dsFilter' : 'objectclass=*', 'dsAttributes' : 'lastExternalChangelogCookie' } 'New index read from root DSE entry lastExternalChangelogCookie \ attribute: %s' % searchIndex 'Could not read root DSE entry from server %s:%s' % \ (masterHost, master.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : 'ou=People,%s' % newReplSuffix, 'listAttributes' : newPeopleEntryAttrs } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myNewEntry.getDn(), 'listAttributes' : myNewEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, newReplSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newReplSuffix, 'dsFilter' : 'objectclass=*', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } 'These are the ECL entries as read from server %s:%s: \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Server %s:%s : ECL entries = %s ; Expected = %s' % \ (replServer.getHostname(), replServer.getPort(), eclEntriesNb, expectedNb) 'Number of ECL entries %s does not match number of \ expected entries %s' % (eclEntriesNb, expectedNb) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Two suffixes, alternate \ adds. \ Verify external changelog can manage several suffixes' % ecl_mode 'Adding entry %s to server %s:%s)' % \ (myEntry.getDn(), server.getHostname(), server.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : server.getHostname(), 'dsInstancePort' : server.getPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ clientHost, clientPath, master, consumerList, synchroSuffix ] [ clientHost, clientPath, master, consumerList, newReplSuffix ] { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : synchroSuffix, 'dsFilter' : 'sn=Alternate', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : eclSearchBaseDn, 'dsFilter' : eclSearchFilter, 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } 'These are the ECL entries for suffix %s as read from \ server %s:%s: \n%s' \ % (synchroSuffix, replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Server %s:%s - Suffix: %s : ECL entries = %s ; Expected \ = %s' % \ (replServer.getHostname(), replServer.getPort(), synchroSuffix, eclEntriesNb, expectedNb) 'Number of ECL entries %s does not match number of \ expected entries %s' % (eclEntriesNb, expectedNb) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : newReplSuffix, 'dsFilter' : 'sn=Alternate', 'dsAttributes' : addOperationalAttrs } 'These are the entries as read from server %s:%s: \n%s' % \ (masterHost, master.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Could not read added entries from server %s:%s' % \ (masterHost, master.getPort()) 'Reading changelog in replication server %s:%s from index: \ %s' % \ (replServer.getHostname(), replServer.getPort(), searchIndex) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsScope' : 'subordinate', 'dsBaseDN' : eclSearchBaseDn, 'dsFilter' : eclSearchFilter, 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } 'These are the ECL entries for suffix %s as read from \ server %s:%s: \n%s' \ % (synchroSuffix, replServer.getHostname(), replServer.getPort(), searchResult) { 'ldifEntries' : searchResult } 'Server %s:%s - Suffix: %s : ECL entries = %s ; Expected \ = %s' % \ (replServer.getHostname(), replServer.getPort(), newReplSuffix, eclEntriesNb, expectedNb) 'Number of ECL entries %s does not match number of \ expected entries %s' % (eclEntriesNb, expectedNb) 'Parsed changelog entry: \n%s' % eclEntry 'Index to use for the next ECL search: %s' % nextIndex { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges } 'Unable to check external changelog entry \ (failed to read entries %s and/or %s)' % \ (myTargetDN, eclEntry['dn'][0]) 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstanceAdminPort' : master.getAdminPort(), 'localOnly' : False, 'replicationDnList' : [newReplSuffix], 'adminUID' : adminUID, 'adminPswd' : adminPswd } 'Disable replication for suffix %s on server %s:%s' % \ (newReplSuffix, server.getHostname(), server.getPort()) { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'replicationDnList' : [newReplSuffix] } { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'replicationDnList' : [newReplSuffix] } 'Remove suffix %s on server %s:%s' % \ (newReplSuffix, server.getHostname(), server.getPort()) { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'objectName' : 'backend', 'propertyType' : 'backend', 'propertyName' : 'userRoot', 'modifyType' : 'remove', 'attributeName' : 'base-dn', 'attributeValue' : newReplSuffix } 'Remove suffix %s on server %s:%s' % \ (newSuffix, server.getHostname(), server.getPort()) { 'location' : server.getHostname(), 'dsPath' : serverPath, 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'objectName' : 'backend', 'propertyType' : 'backend', 'propertyName' : 'userRoot', 'modifyType' : 'remove', 'attributeName' : 'base-dn', 'attributeValue' : newSuffix }