From affd68754461e0102f9390e5b5ae4bf40c8662ef Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 21 Nov 2016 10:43:14 +0000
Subject: [PATCH] OPENDJ-3476 Update schema config and add update task for move of subordinate-base-dn attribute
---
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
index 25b8767..1fd0c29 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
@@ -49,6 +49,8 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.Attribute;
+import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.Filter;
@@ -1472,4 +1474,51 @@
}
};
}
+
+ /** Move subordinate-base-dn attribute from Root DSE config to Global config. */
+ static UpgradeTask moveSubordinateBaseDnToGlobalConfiguration()
+ {
+ return new AbstractUpgradeTask()
+ {
+ @Override
+ public void perform(UpgradeContext context) throws ClientException
+ {
+ final SearchRequest sr = Requests.newSearchRequest("cn=Root DSE,cn=config", SearchScope.BASE_OBJECT,
+ "(objectclass=ds-cfg-root-dse-backend)");
+ final Set<String> subordinateDns = new HashSet<>();
+ try (final EntryReader entryReader = searchConfigFile(sr))
+ {
+ if (!entryReader.hasNext())
+ {
+ return;
+ }
+ Entry entry = entryReader.readEntry();
+ Attribute attribute = entry.getAttribute("ds-cfg-subordinate-base-dn");
+ if (attribute == null || attribute.isEmpty())
+ {
+ return;
+ }
+ for (ByteString value : attribute)
+ {
+ subordinateDns.add(value.toString());
+ }
+ }
+ catch (IOException e)
+ {
+ throw new ClientException(ReturnCode.APPLICATION_ERROR, INFO_UPGRADE_TASK_MIGRATE_CONFIG_READ_FAIL.get(), e);
+ }
+ modifyConfigEntry(INFO_UPGRADE_TASK_DELETE_SUBORDINATE_BASE_DN_FROM_ROOT_DSE.get(),
+ "(objectClass=ds-cfg-root-dse-backend)",
+ "delete: ds-cfg-subordinate-base-dn");
+ List<String> ldif = new ArrayList<>();
+ ldif.add("add: ds-cfg-subordinate-base-dn");
+ for (String sub : subordinateDns)
+ {
+ ldif.add("ds-cfg-subordinate-base-dn: " + sub);
+ }
+ modifyConfigEntry(INFO_UPGRADE_TASK_ADD_SUBORDINATE_BASE_DN_TO_GLOBAL_CONFIG.get(),
+ "(objectClass=ds-cfg-root-config)", ldif.toArray(new String[0]));
+ }
+ };
+ }
}
--
Gitblit v1.10.0