summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cms/servlet/csadmin
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cms/servlet/csadmin')
-rw-r--r--base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java33
-rw-r--r--base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java1
-rw-r--r--base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java9
3 files changed, 39 insertions, 4 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
index c5804f2d4..2a2c3b3ab 100644
--- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
+++ b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
@@ -1254,11 +1254,18 @@ public class ConfigurationUtils {
try {
String select = cs.getString("preop.subsystem.select", "");
if (select.equals("clone")) {
- // if this is clone, add index before replication
- // don't put in the schema or bad things will happen
+ // in most cases, we want to replicate the schema and therefore
+ // NOT add it here. We provide this option though in case the
+ // clone already has schema and we want to replicate back to the
+ // master.
+ boolean replicateSchema = cs.getBoolean("preop.internaldb.replicateSchema", true);
+ if (! replicateSchema) {
+ importLDIFS("preop.internaldb.schema.ldif", conn);
+ }
importLDIFS("preop.internaldb.ldif", conn);
+
+ // add the index before replication, add VLV indexes afterwards
importLDIFS("preop.internaldb.index_ldif", conn);
- importLDIFS("preop.internaldb.manager_ldif", conn);
} else {
// data will be replicated from the master to the clone
// so clone does not need the data
@@ -1266,7 +1273,6 @@ public class ConfigurationUtils {
importLDIFS("preop.internaldb.ldif", conn);
importLDIFS("preop.internaldb.data_ldif", conn);
importLDIFS("preop.internaldb.index_ldif", conn);
- importLDIFS("preop.internaldb.manager_ldif", conn);
}
} catch (Exception e) {
e.printStackTrace();
@@ -1506,6 +1512,25 @@ public class ConfigurationUtils {
return dir.delete();
}
+ public static void populateDBManager() throws Exception {
+ CMS.debug("populateDBManager(): start");
+ IConfigStore cs = CMS.getConfigStore();
+
+ IConfigStore dbCfg = cs.getSubStore("internaldb");
+ ILdapConnFactory dbFactory = CMS.getLdapBoundConnFactory();
+ dbFactory.init(dbCfg);
+ LDAPConnection conn = dbFactory.getConn();
+
+ try {
+ importLDIFS("preop.internaldb.manager_ldif", conn);
+ } catch (Exception e) {
+ CMS.debug("populateDBManager(): Exception thrown: " + e);
+ throw e;
+ } finally {
+ releaseConnection(conn);
+ }
+ }
+
public static void populateVLVIndexes() throws Exception {
CMS.debug("populateVLVIndexes(): start");
IConfigStore cs = CMS.getConfigStore();
diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java b/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java
index 67f10bd8e..5beb81244 100644
--- a/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java
+++ b/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java
@@ -489,6 +489,7 @@ public class DatabasePanel extends WizardPanelBase {
}
ConfigurationUtils.reInitSubsystem(csType);
+ ConfigurationUtils.populateDBManager();
ConfigurationUtils.populateVLVIndexes();
cs.putBoolean("preop.Database.done", true);
diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java
index 800f12365..27ee8a506 100644
--- a/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java
+++ b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java
@@ -360,6 +360,8 @@ public class SystemConfigService extends PKIService implements SystemConfigResou
replicationSecurity = "None";
}
cs.putString("internaldb.ldapconn.replicationSecurity", replicationSecurity);
+
+ cs.putString("preop.internaldb.replicateSchema", data.getReplicateSchema());
}
try {
@@ -386,6 +388,7 @@ public class SystemConfigService extends PKIService implements SystemConfigResou
}
ConfigurationUtils.reInitSubsystem(csType);
+ ConfigurationUtils.populateDBManager();
ConfigurationUtils.populateVLVIndexes();
} catch (Exception e) {
@@ -860,6 +863,12 @@ public class SystemConfigService extends PKIService implements SystemConfigResou
}
}
+ if ((data.getReplicateSchema() != null) && (data.getReplicateSchema().equalsIgnoreCase("false"))) {
+ data.setReplicateSchema("false");
+ } else {
+ data.setReplicateSchema("true");
+ }
+
if ((data.getBackupKeys() != null) && data.getBackupKeys().equals("true")) {
if ((data.getBackupFile() == null) || (data.getBackupFile().length()<=0)) {
//TODO: also check for valid path, perhaps by touching file there