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 'Replication: External Changelog: %s - Setup. \ Set up environment for External Changelog tests' % ecl_mode '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, 'backEnd' : DIRECTORY_INSTANCE_BE, 'ldifFile' : '%s/replication/Example.ldif' \ % masterDataDir } { 'location' : masterHost, 'dsPath' : masterPath, 'dsDebugPort' : master.getDebugPort() } { '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'targetEntryUUID' : myTargetEntryUUID } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) '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] { '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] { '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 LDAP and/or changelog entry)' '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' : 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] { '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 LDAP and/or changelog entry)' '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 LDAP and/or changelog entry)' '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 LDAP and/or changelog entry)' '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 LDAP and/or changelog entry)' '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) { '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 } '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 } { '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' : 53 } 'This is the ECL search result on server %s:%s \ (expect ERROR 53 to be returned): \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'expectedString' : 'is missing the replicated domain', 'returnString' : searchResult } 'This is the new changelogcookie to use: %s' % newCookie { '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()) 'DEBUG: Get content of cn=changelog' { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstancePort' : replServer.getPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'dsBaseDN' : 'cn=changelog', 'dsFilter' : 'objectclass=*' } STAXResult[0][1] 'DEBUG: Get value of purge delay' { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'get-replication-server-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : '--advanced' } STAXResult[0][1] '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 } '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 LDAP and/or changelog entry)' '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 } '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 LDAP and/or changelog entry)' '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 } '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Disable ECL - add entry to \ disabled suffix. \ Verify external changelog can be disabled for a replicated suffix' \ % ecl_mode { '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) 'Index to use for the next ECL search: %s' % nextIndex 'Could not read root DSE entry from server %s:%s' % \ (server.getHostname(), server.getPort()) 'Disable ECL for suffix %s on server %s:%s' % \ (synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { '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 ] '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' : myExpectedRC } 'This is the ECL search result on server %s:%s \ (expect ERROR 53 to be returned): \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'expectedString' : 'contains unknown replicated domain', 'returnString' : searchResult } 'This is the new changelogcookie to use: %s' % newCookie 'This is the ECL entry as read from server %s:%s \ (expect NO ECL entry to be returned): \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) 'Expected NO ECL entry to be returned' '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(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } [ 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 \ (expect NO ECL entry to be returned): \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) 'Expected NO ECL entry to be returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Disable ECL - add entry to \ non-disabled suffix. \ Verify external changelog can be disabled for a replicated suffix, \ and still record changes in other 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, newReplSuffix ] { '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Re-enable ECL. \ Verify external changelog can be re-enabled for a replicated \ suffix' % ecl_mode 'Re-enable ECL for suffix %s on server %s:%s' % \ (synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } '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' : 53 } 'This is the ECL search result on server %s:%s \ (expect ERROR 53 to be returned): \n%s' \ % (replServer.getHostname(), replServer.getPort(), searchResult) { 'expectedString' : 'is missing the replicated domain', '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' \ % nextIndex 'Could not read root DSE entry from server %s:%s' \ % (masterHost, master.getPort()) 'Did not get the expected error 53 when reading 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(), '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 { '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Disable + Re-enable ECL. \ Verify external changelog can be disabled, then re-enabled for a \ replicated suffix and still return the changes performed in \ between' % ecl_mode 'Disable ECL for suffix %s on server %s:%s' % \ (synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'DNToAdd' : myEntry.getDn(), 'listAttributes' : myEntry.getAttrList() } 'Re-enable ECL for suffix %s on server %s:%s' % \ (synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { '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=Disabled Re-enabled', '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 LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: Add, \ single-value include-attr. \ Verify add operation is recorded properly in the external \ changelog on each replication server and include-attributes are \ published' % ecl_mode { '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) 'Index to use for the next ECL search: %s' % nextIndex 'Could not read root DSE entry from server %s:%s' % \ (server.getHostname(), server.getPort()) 'Set include-attribute %s for suffix %s on server %s:%s' \ % (incAttr, synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include Attributes: Add (on \ peer server), single-value include-attr. \ Verify add operation (on a server other than where the include-attr\ has been configured) is recorded properly and include-attributes \ are still published' % ecl_mode { 'location' : consumer.getHostname(), 'dsPath' : consumerPath, 'dsInstanceHost' : consumer.getHostname(), 'dsInstancePort' : consumer.getPort(), 'dsInstanceDn' : consumer.getRootDn(), 'dsInstancePswd' : consumer.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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: Add, \ multiple-value include-attr. \ Verify add operation is recorded properly in the external \ changelog on each replication server and newly set \ include-attributes are published, unlike the old include-attributes\ , that should no longer be published' % ecl_mode 'Set include-attribute %s for suffix %s on server %s:%s' \ % (incAttr, synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: Add, \ several include-attrs. \ Verify add operation is recorded properly in the external \ changelog on each replication server and include-attributes are \ published' % ecl_mode 'Add include-attribute %s for suffix %s on server %s:%s' \ % (incAttrs[0], synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-attributes: Add to \ unconfigured suffix. \ Verify add operation is recorded properly in the external \ changelog obut include-attributes are NOT published' % 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, newReplSuffix ] { '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs, } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: Add, \ different include-attr per server. \ Verify add operation is recorded properly in the external \ changelog and ALL configured include-attributes are published' \ % ecl_mode 'Set include-attribute %s for suffix %s on server %s:%s' \ % (incAttr, synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } '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=Multi-server Include-Attrs', '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, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Expected some ECL entry but NO ENTRY returned' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_add, attribute NOT in include-attrs. \ Verify modify-add operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode 'Set include-attribute %s for suffix %s on server %s:%s' \ % (incAttr, synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : incAttr } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : addAttr, 'newAttributeValue' : addValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_add, multiple-value attribute in include-attrs. \ Verify modify-add operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : incAttr } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : addAttr, 'newAttributeValue' : addValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_add, single-value attribute in include-attrs. \ Verify modify-add operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode 'Add include-attribute %s for suffix %s on server %s:%s' \ % (incAttrs[0], synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : addAttr, 'newAttributeValue' : addValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_delete, attribute NOT in include-attrs. \ Verify modify-delete operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs + [delAttr]) } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : delAttr, 'newAttributeValue' : delValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_delete, attribute in include-attrs. \ Verify modify-delete operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs + [delAttr]) } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : delAttr, 'newAttributeValue' : delValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_replace, attribute NOT in include-attrs. \ Verify modify-replace operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : replAttr, 'newAttributeValue' : replValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modify_replace, attribute in include-attrs. \ Verify modify-replace operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), 'DNToModify' : myEntry.getDn(), 'attributeName' : replAttr, 'newAttributeValue' : replValue, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'changes' : myChanges, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modrdn_deleteoldrdn_true, rdn NOT in include-attrs. \ Verify modrdn operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'newRDN' : myNewRDN, 'deleteOldRDN' : myDeleteOldRDN, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Modrdn_deleteoldrdn_true, rdn in include-attrs. \ Verify modrdn operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode 'Add include-attribute %s for suffix %s on server %s:%s' \ % (incAttrs[0], synchroSuffix, replServer.getHostname(), replServer.getPort()) { 'location' : replServer.getHostname(), 'dsPath' : replServerPath, 'dsInstanceHost' : replServer.getHostname(), 'dsInstanceAdminPort' : replServer.getAdminPort(), 'dsInstanceDn' : replServer.getRootDn(), 'dsInstancePswd' : replServer.getRootPwd(), 'subcommand' : 'set-external-changelog-domain-prop', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', 'optionsString' : myOptionString } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'newRDN' : myNewRDN, 'deleteOldRDN' : myDeleteOldRDN, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: \ Moddn_deleteoldrdn_false, rdn in include-attrs. \ Verify moddn operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.getDn(), 'dsFilter' : 'objectclass=*', 'dsAttributes' : ' '.join(incAttrs) } '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(), 'DNToModify' : oldEntry.getDn(), 'newRDN' : newRdn, 'newSuperior' : newSuperior, '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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'changeTime' : myChangeTime, 'targetEntryUUID' : myTargetEntryUUID, 'newRDN' : myNewRDN, 'newSuperior' : myNewSuperior, 'deleteOldRDN' : myDeleteOldRDN, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Include-Attributes: Delete. \ Verify delete operation is recorded properly in the \ external changelog and include-attributes are published' % ecl_mode { '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 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' : myEntry.getDn() } { 'location' : masterHost, 'dsPath' : masterPath, 'dsInstanceHost' : masterHost, 'dsInstancePort' : master.getPort(), 'dsInstanceDn' : master.getRootDn(), 'dsInstancePswd' : master.getRootPwd(), 'dsBaseDN' : myEntry.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 { 'location' : masterHost, 'dsPath' : masterPath, 'changelogEntry' : eclEntry, 'targetDN' : myTargetDN, 'changeNumber' : myChangeNumber, 'changeType' : myChangeType, 'targetEntryUUID' : myTargetEntryUUID, 'includeAttrs' : myIncAttrs, 'expectMissingIncAttrs' : myMissingIncAttrs } 'Unable to check external changelog entry \ (failed to read LDAP and/or changelog entry)' 'Could not read changelog on replication server %s:%s' \ % (replServer.getHostname(), replServer.getPort()) 'Replication: External Changelog: %s - Clean up. \ Clean up environment for External Changelog tests' % ecl_mode { '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] } '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 }