diff options
Diffstat (limited to 'source4/scripting/bin')
-rwxr-xr-x | source4/scripting/bin/upgradeprovision | 58 |
1 files changed, 12 insertions, 46 deletions
diff --git a/source4/scripting/bin/upgradeprovision b/source4/scripting/bin/upgradeprovision index ac6fbdec7d..f63605b2af 100755 --- a/source4/scripting/bin/upgradeprovision +++ b/source4/scripting/bin/upgradeprovision @@ -560,52 +560,18 @@ def check_diff_name(newpaths,paths,creds,session,basedn,names,ischema): sam_ldb.transaction_start() - err_num = 0 - err_msg = "" - while len(listMissing) > 0: - listMissing2 = [] - - empty = ldb.Message() - message(SIMPLE,"There are still %d objects missing"%(len(listMissing))) - - for dn in listMissing: - reference = newsam_ldb.search(expression="dn=%s" % (str(dn)), - base=basedn, scope=SCOPE_SUBTREE, - controls=["search_options:1:2"]) - delta = sam_ldb.msg_diff(empty,reference[0]) - for att in hashAttrNotCopied.keys(): - delta.remove(att) - for att in backlinked: - delta.remove(att) - delta.dn = dn - - try: - sam_ldb.add(delta,["relax:0"]) - # This is needed here since otherwise the - # "replmd_meta_data" module doesn't see the - # updated data - sam_ldb.transaction_commit() - sam_ldb.transaction_start() - except LdbError, (num, msg): - # An exception can happen if a linked object - # doesn't exist which can happen if it is also - # to be added - err_num = num - err_msg = msg - listMissing2.append(dn) - - if len(listMissing2) == len(listMissing): - # We couldn't add any object in this iteration -> - # we have to resign and hope that the user manually - # fixes the damage - - message(ERROR, "The script isn't capable to do the upgrade fully automatically!") - message(ERROR, "Often this happens when important system objects moved their location. Please look for them (for example doable using the displayed 'sAMAccountName' attribute), backup if personally changed and remove them.") - message(ERROR, "Reinvoke this script and reapply eventual modifications done before. It is possible to get this error more than once (for each problematic object).") - - raise LdbError(err_num, err_msg) - - listMissing = listMissing2 + empty = ldb.Message() + message(SIMPLE,"There are %d missing objects"%(len(listMissing))) + for dn in listMissing: + reference = newsam_ldb.search(expression="dn=%s"%(str(dn)),base=basedn, scope=SCOPE_SUBTREE,controls=["search_options:1:2"]) + delta = sam_ldb.msg_diff(empty,reference[0]) + for att in hashAttrNotCopied.keys(): + delta.remove(att) + for att in backlinked: + delta.remove(att) + delta.dn = dn + + sam_ldb.add(delta,["relax:0"]) changed = 0 for dn in listPresent: |