From bbdcd1d918a2f27fccb2e6a3fe4d854b901dffd8 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 06 Jul 2009 13:52:09 +0000
Subject: [PATCH] Fix for issue 4092 (dsreplication should allow to configure servers with no replication server and servers with only a replication server)
---
opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java | 129 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 125 insertions(+), 4 deletions(-)
diff --git a/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java b/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
index ce30d54..2b6257d 100644
--- a/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
+++ b/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
@@ -34,6 +34,7 @@
import java.io.File;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.LinkedList;
import org.opends.messages.Message;
@@ -45,6 +46,7 @@
import org.opends.server.admin.client.cli.SecureConnectionCliParser;
import org.opends.server.util.args.Argument;
import org.opends.server.util.args.ArgumentException;
+import org.opends.server.util.args.ArgumentGroup;
import org.opends.server.util.args.BooleanArgument;
import org.opends.server.util.args.FileBasedArgument;
import org.opends.server.util.args.IntegerArgument;
@@ -107,6 +109,16 @@
IntegerArgument replicationPort1Arg = null;
/**
+ * The 'noReplicationServer' argument for the first server.
+ */
+ BooleanArgument noReplicationServer1Arg = null;
+
+ /**
+ * The 'onlyReplicationServer' argument for the first server.
+ */
+ BooleanArgument onlyReplicationServer1Arg = null;
+
+ /**
* The 'secureReplication' argument for the first server.
*/
BooleanArgument secureReplication1Arg = null;
@@ -142,6 +154,16 @@
IntegerArgument replicationPort2Arg = null;
/**
+ * The 'noReplicationServer' argument for the second server.
+ */
+ BooleanArgument noReplicationServer2Arg = null;
+
+ /**
+ * The 'onlyReplicationServer' argument for the second server.
+ */
+ BooleanArgument onlyReplicationServer2Arg = null;
+
+ /**
* The 'secureReplication' argument for the second server.
*/
private BooleanArgument secureReplication2Arg = null;
@@ -162,6 +184,18 @@
private BooleanArgument useSecondServerAsSchemaSourceArg;
/**
+ * The 'disableAll' argument to disable all the replication configuration of
+ * server.
+ */
+ BooleanArgument disableAllArg;
+
+ /**
+ * The 'disableReplicationServer' argument to disable the replication
+ * server.
+ */
+ BooleanArgument disableReplicationServerArg;
+
+ /**
* The 'hostName' argument for the source server.
*/
private StringArgument hostNameSourceArg = null;
@@ -225,6 +259,12 @@
StringArgument equivalentCommandFileArgument;
/**
+ * The argument that the user must set to have advanced options in interactive
+ * mode.
+ */
+ BooleanArgument advancedArg;
+
+ /**
* The text of the enable replication subcommand.
*/
public static final String ENABLE_REPLICATION_SUBCMD_NAME = "enable";
@@ -365,10 +405,21 @@
}
}
+ if (noPromptArg.isPresent() && advancedArg.isPresent())
+ {
+ Message message = ERR_TOOL_CONFLICTING_ARGS.get(
+ noPromptArg.getLongIdentifier(),
+ advancedArg.getLongIdentifier());
+ errors.add(message);
+ }
+
if (!isInteractive())
{
// Check that we have the required data
- if (!baseDNsArg.isPresent() && !isStatusReplicationSubcommand())
+ if (!baseDNsArg.isPresent() &&
+ !isStatusReplicationSubcommand() &&
+ !disableAllArg.isPresent() &&
+ !disableReplicationServerArg.isPresent())
{
errors.add(ERR_REPLICATION_NO_BASE_DN_PROVIDED.get());
}
@@ -503,6 +554,12 @@
INFO_REPLICATION_DESCRIPTION_EQUIVALENT_COMMAND_FILE_PATH.get());
defaultArgs.add(index++, equivalentCommandFileArgument);
+ advancedArg = new BooleanArgument(OPTION_DSCFG_LONG_ADVANCED,
+ OPTION_DSCFG_SHORT_ADVANCED,
+ OPTION_DSCFG_LONG_ADVANCED,
+ INFO_REPLICATION_DESCRIPTION_ADVANCED.get());
+ defaultArgs.add(index++, advancedArg);
+
for (int i=0; i<index; i++)
{
Argument arg = defaultArgs.get(i);
@@ -522,7 +579,38 @@
defaultArgs.add(this.noPropertiesFileArgument);
setNoPropertiesFileArgument(this.noPropertiesFileArgument);
- initializeGlobalArguments(defaultArgs);
+ initializeGlobalArguments(defaultArgs, null);
+ }
+
+ /**
+ * Initialize the global options with the provided set of arguments.
+ * @param args the arguments to use to initialize the global options.
+ * @param argGroup to which args will be added
+ * @throws ArgumentException if there is a conflict with the provided
+ * arguments.
+ */
+ protected void initializeGlobalArguments(
+ Collection<Argument> args,
+ ArgumentGroup argGroup)
+ throws ArgumentException
+ {
+
+ for (Argument arg : args)
+ {
+ if (arg == advancedArg)
+ {
+ ArgumentGroup toolOptionsGroup = new ArgumentGroup(
+ INFO_DESCRIPTION_CONFIG_OPTIONS_ARGS.get(), 2);
+ addGlobalArgument(advancedArg, toolOptionsGroup);
+ }
+ else
+ {
+ addGlobalArgument(arg, argGroup);
+ }
+ }
+
+ // Set the propertiesFile argument
+ setFilePropertiesArgument(propertiesFileArg);
}
/**
@@ -567,6 +655,14 @@
"secureReplication1",
INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION1.get());
+ noReplicationServer1Arg = new BooleanArgument(
+ "noreplicationserver1", null, "noReplicationServer1",
+ INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER1.get());
+
+ onlyReplicationServer1Arg = new BooleanArgument(
+ "onlyreplicationserver1", null, "onlyReplicationServer1",
+ INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER1.get());
+
hostName2Arg = new StringArgument("host2", 'O',
"host2", false, false, true, INFO_HOST_PLACEHOLDER.get(),
getDefaultHostValue(),
@@ -600,6 +696,14 @@
"secureReplication2",
INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION2.get());
+ noReplicationServer2Arg = new BooleanArgument(
+ "noreplicationserver2", null, "noReplicationServer2",
+ INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER2.get());
+
+ onlyReplicationServer2Arg = new BooleanArgument(
+ "onlyreplicationserver2", null, "onlyReplicationServer2",
+ INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER2.get());
+
skipPortCheckArg = new BooleanArgument(
"skipportcheck", 'S', "skipPortCheck",
INFO_DESCRIPTION_ENABLE_REPLICATION_SKIPPORT.get());
@@ -620,8 +724,10 @@
Argument[] argsToAdd = {
hostName1Arg, port1Arg, bindDn1Arg, bindPassword1Arg,
bindPasswordFile1Arg, replicationPort1Arg, secureReplication1Arg,
+ noReplicationServer1Arg, onlyReplicationServer1Arg,
hostName2Arg, port2Arg, bindDn2Arg, bindPassword2Arg,
bindPasswordFile2Arg, replicationPort2Arg, secureReplication2Arg,
+ noReplicationServer2Arg, onlyReplicationServer2Arg,
skipPortCheckArg, noSchemaReplicationArg,
useSecondServerAsSchemaSourceArg
};
@@ -649,8 +755,17 @@
OPTION_LONG_BINDDN, false, false, true, INFO_BINDDN_PLACEHOLDER.get(),
"cn=Directory Manager", OPTION_LONG_BINDDN,
INFO_DESCRIPTION_DISABLE_REPLICATION_BINDDN.get());
+ disableReplicationServerArg = new BooleanArgument(
+ "disablereplicationserverarg", null, "disableReplicationServerArg",
+ INFO_DESCRIPTION_DISABLE_REPLICATION_SERVER.get());
+ disableAllArg = new BooleanArgument(
+ "disableall", null, "disableAll",
+ INFO_DESCRIPTION_DISABLE_ALL.get());
+
+
Argument[] argsToAdd = { secureArgsList.hostNameArg,
- secureArgsList.portArg, secureArgsList.bindDnArg };
+ secureArgsList.portArg, secureArgsList.bindDnArg,
+ disableReplicationServerArg, disableAllArg};
for (int i=0; i<argsToAdd.length; i++)
{
disableReplicationSubCmd.addArgument(argsToAdd[i]);
@@ -1775,6 +1890,10 @@
{
{bindPassword1Arg, bindPasswordFile1Arg},
{bindPassword2Arg, bindPasswordFile2Arg},
+ {replicationPort1Arg, noReplicationServer1Arg},
+ {noReplicationServer1Arg, onlyReplicationServer1Arg},
+ {replicationPort2Arg, noReplicationServer1Arg},
+ {noReplicationServer2Arg, onlyReplicationServer2Arg},
{noSchemaReplicationArg, useSecondServerAsSchemaSourceArg}
};
@@ -1816,7 +1935,9 @@
{
Argument[][] conflictingPairs =
{
- {secureArgsList.adminUidArg, secureArgsList.bindDnArg}
+ {secureArgsList.adminUidArg, secureArgsList.bindDnArg},
+ {disableAllArg, disableReplicationServerArg},
+ {disableAllArg, baseDNsArg}
};
for (int i=0; i< conflictingPairs.length; i++)
--
Gitblit v1.10.0