From 06ec8c88556b02782c7b91a233de91eaf4a1439d Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 09 Jun 2009 12:28:05 +0000
Subject: [PATCH] Fix for issue 3550 (Consider making the control panel able to manage remote servers)
---
opends/src/server/org/opends/server/tools/RebuildIndex.java | 90 ++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 80 insertions(+), 10 deletions(-)
diff --git a/opends/src/server/org/opends/server/tools/RebuildIndex.java b/opends/src/server/org/opends/server/tools/RebuildIndex.java
index 7390896..a408db0 100644
--- a/opends/src/server/org/opends/server/tools/RebuildIndex.java
+++ b/opends/src/server/org/opends/server/tools/RebuildIndex.java
@@ -22,31 +22,38 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2008 Sun Microsystems, Inc.
+ * Copyright 2006-2009 Sun Microsystems, Inc.
*/
package org.opends.server.tools;
import org.opends.messages.Message;
import static org.opends.server.util.StaticUtils.wrapText;
import org.opends.server.util.args.ArgumentException;
-import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
+import org.opends.server.util.args.LDAPConnectionArgumentParser;
import org.opends.server.util.args.StringArgument;
import org.opends.server.extensions.ConfigFileHandler;
+
import static org.opends.messages.ToolMessages.*;
import org.opends.server.config.ConfigException;
+
+import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.loggers.ErrorLogger.logError;
import org.opends.server.loggers.TextWriter;
import org.opends.server.loggers.ErrorLogger;
import org.opends.server.loggers.TextErrorLogPublisher;
import org.opends.server.loggers.debug.TextDebugLogPublisher;
import org.opends.server.loggers.debug.DebugLogger;
+import org.opends.server.protocols.ldap.LDAPAttribute;
+
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.LockFileManager;
+import org.opends.server.tasks.RebuildTask;
+import org.opends.server.tools.tasks.TaskTool;
import org.opends.server.types.*;
import org.opends.server.api.Backend;
import org.opends.server.api.ErrorLogPublisher;
@@ -67,8 +74,12 @@
* intended to run separate from Directory Server and not internally within the
* server process (e.g., via the tasks interface).
*/
-public class RebuildIndex
+public class RebuildIndex extends TaskTool
{
+ private StringArgument configClass = null;
+ private StringArgument configFile = null;
+ private StringArgument baseDNString = null;
+ private StringArgument indexList = null;
/**
* Processes the command-line arguments and invokes the rebuild process.
@@ -102,6 +113,12 @@
OutputStream outStream,
OutputStream errStream)
{
+ RebuildIndex tool = new RebuildIndex();
+ return tool.process(args, initializeServer, outStream, errStream);
+ }
+
+ private int process(String[] args, boolean initializeServer,
+ OutputStream outStream, OutputStream errStream) {
PrintStream out;
if (outStream == null)
{
@@ -123,18 +140,14 @@
}
// Define the command-line arguments that may be used with this program.
- StringArgument configClass = null;
- StringArgument configFile = null;
- StringArgument baseDNString = null;
- StringArgument indexList = null;
BooleanArgument displayUsage = null;
// Create the command-line argument parser for use with this program.
Message toolDescription = INFO_REBUILDINDEX_TOOL_DESCRIPTION.get();
- ArgumentParser argParser =
- new ArgumentParser("org.opends.server.tools.RebuildIndex",
- toolDescription, false);
+ LDAPConnectionArgumentParser argParser =
+ createArgParser("org.opends.server.tools.RebuildIndex",
+ toolDescription);
// Initialize all the command-line argument types and register them with the
@@ -232,6 +245,17 @@
return 1;
}
+ return process(argParser, initializeServer, out, err);
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected int processLocal(boolean initializeServer,
+ PrintStream out,
+ PrintStream err) {
// Perform the initial bootstrap of the Directory Server and process the
// configuration.
DirectoryServer directoryServer = DirectoryServer.getInstance();
@@ -512,4 +536,50 @@
return returnCode;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getTaskId() {
+ // NYI.
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addTaskAttributes(List<RawAttribute> attributes)
+ {
+ //
+ // Required attributes
+ //
+ ArrayList<ByteString> values;
+
+ String baseDN = baseDNString.getValue();
+ values = new ArrayList<ByteString>(1);
+ values.add(ByteString.valueOf(baseDN));
+ attributes.add(new LDAPAttribute(ATTR_REBUILD_BASE_DN, values));
+
+ List<String> indexes = indexList.getValues();
+ values = new ArrayList<ByteString>(indexes.size());
+ for (String s : indexes)
+ {
+ values.add(ByteString.valueOf(s));
+ }
+ attributes.add(new LDAPAttribute(ATTR_REBUILD_INDEX, values));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getTaskObjectclass() {
+ return "ds-task-rebuild";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Class getTaskClass() {
+ return RebuildTask.class;
+ }
}
--
Gitblit v1.10.0