opends/src/messages/messages/admin_tool.properties
@@ -1627,6 +1627,9 @@ MILD_ERR_CANNOT_DELETE_ATTRIBUTE_WITH_DEPENDENCIES=Attribute '%s' is optional \ or required by the following objectClasses: %s. You must redefine these \ classes so that they do not depend on attribute '%s' before deleting it. MILD_ERR_CANNOT_MODIFY_PARENT_ATTRIBUTE=Attribute '%s' is superior of the \ following attributes: %s. You must redefine these attributes so that they do \ not inherit from attribute '%s' before modifying it. INFO_CTRL_PANEL_MANAGE_SCHEMA_TITLE=Manage Schema INFO_CTRL_PANEL_DELETE_OBJECTCLASSES_TITLE=Delete Objectclasses INFO_CTRL_PANEL_DELETE_ATTRIBUTES_TITLE=Delete Attributes @@ -1969,8 +1972,12 @@ INFO_CTRL_PANEL_UNSAVED_CHANGES_DIALOG_TITLE=Unsaved Changes INFO_CTRL_PANEL_UNSAVED_CHANGES_SUMMARY=Unsaved Changes INFO_CTRL_PANEL_UNSAVED_INDEX_CHANGES_DETAILS=Save Changes to: '%s'? INFO_CTRL_PANEL_UNSAVED_ENTRY_CHANGES_DETAILS=Save Changes to: '%s'? INFO_CTRL_PANEL_UNSAVED_INDEX_CHANGES_DETAILS=Save Changes to index: '%s'? INFO_CTRL_PANEL_UNSAVED_ENTRY_CHANGES_DETAILS=Save Changes to entry: '%s'? INFO_CTRL_PANEL_UNSAVED_ATTRIBUTE_CHANGES_DETAILS=Save Changes to attribute: \ '%s'? INFO_CTRL_PANEL_UNSAVED_OBJECTCLASS_CHANGES_DETAILS=Save Changes to object \ class: '%s'? INFO_CTRL_PANEL_DELETING_ENTRY_TITLE=Delete Entry INFO_CTRL_PANEL_DELETING_SUBTREE_TITLE=Delete Subtree INFO_CTRL_PANEL_DELETE_ENTRY_CONFIRMATION_DETAILS=Do you want to delete entry \ opends/src/server/org/opends/server/tools/status/StatusCli.java
@@ -62,7 +62,6 @@ import org.opends.server.admin.client.cli.DsFrameworkCliReturnCode; import org.opends.server.admin.client.cli.SecureConnectionCliArgs; import org.opends.server.config.ConfigException; import org.opends.server.core.DirectoryServer; import org.opends.messages.Message; import org.opends.messages.MessageBuilder; @@ -276,10 +275,6 @@ * @return the return code (SUCCESSFUL, USER_DATA_ERROR or BUG. */ public int execute(String[] args, boolean initializeServer) { if (initializeServer) { DirectoryServer.bootstrapClient(); } argParser = new StatusCliArgumentParser(StatusCli.class.getName()); try { argParser.initializeGlobalArguments(getOutputStream()); @@ -378,9 +373,7 @@ return ErrorReturnCode.USER_CANCELLED_OR_DATA_ERROR.getReturnCode(); } catch (ClientException e) { println(e.getMessageObject()); // Display the information in the config file ServerDescriptor desc = controlInfo.getServerDescriptor(); writeStatus(desc); writeStatus(controlInfo); return ErrorReturnCode.USER_CANCELLED_OR_DATA_ERROR.getReturnCode(); } finally { if (ctx != null) { @@ -410,10 +403,9 @@ ctx = Utilities.getAdminDirContext(controlInfo, bindDn, bindPwd); controlInfo.setDirContext(ctx); controlInfo.regenerateDescriptor(); ServerDescriptor desc = controlInfo.getServerDescriptor(); writeStatus(desc); writeStatus(controlInfo); if (!desc.getExceptions().isEmpty()) { if (!controlInfo.getServerDescriptor().getExceptions().isEmpty()) { return ErrorReturnCode.ERROR_READING_CONFIGURATION_WITH_LDAP. getReturnCode(); } @@ -443,18 +435,56 @@ } else { // The user did not provide authentication: just display the // information we can get reading the config file. ServerDescriptor desc = controlInfo.getServerDescriptor(); writeStatus(desc); writeStatus(controlInfo); } } else { ServerDescriptor desc = controlInfo.getServerDescriptor(); writeStatus(desc); writeStatus(controlInfo); } } return ErrorReturnCode.SUCCESSFUL.getReturnCode(); } private void writeStatus(ControlPanelInfo controlInfo) { if (controlInfo.getServerDescriptor() == null) { controlInfo.regenerateDescriptor(); } writeStatus(controlInfo.getServerDescriptor()); int period = argParser.getRefreshPeriod(); boolean first = true; while (period > 0) { long timeToSleep = period * 1000; if (!first) { long t1 = System.currentTimeMillis(); controlInfo.regenerateDescriptor(); long t2 = System.currentTimeMillis(); timeToSleep = timeToSleep - t2 + t1; } if (timeToSleep > 0) { try { Thread.sleep(timeToSleep); } catch (Throwable t) { } } getOutputStream().println(); getOutputStream().println( " ---------------------"); getOutputStream().println(); writeStatus(controlInfo.getServerDescriptor()); first = false; } } private void writeStatus(ServerDescriptor desc) { Message[] labels = @@ -1294,7 +1324,7 @@ /** * Wraps a message accoring to client tool console width. * Wraps a message according to client tool console width. * @param text to wrap * @return raw message representing wrapped string */ @@ -1303,4 +1333,9 @@ return Message.raw( StaticUtils.wrapText(text, getCommandLineMaxLineWidth())); } private static void printTimeSince(String msg, long initTime) { System.out.println(msg+" : "+(System.currentTimeMillis() - initTime)); } } opends/src/server/org/opends/server/tools/status/StatusCliArgumentParser.java
@@ -41,6 +41,7 @@ import org.opends.server.util.args.Argument; import org.opends.server.util.args.ArgumentException; import org.opends.server.util.args.BooleanArgument; import org.opends.server.util.args.IntegerArgument; import org.opends.server.util.args.StringArgument; /** @@ -55,6 +56,11 @@ // This CLI is always using the administration connector with SSL private final boolean alwaysSSL = true; /** * The 'refresh' argument. */ private IntegerArgument refreshArg; /** * The 'scriptFriendly' argument. */ @@ -120,6 +126,12 @@ setNoPropertiesFileArgument(noPropertiesFileArgument); initializeGlobalArguments(defaultArgs); refreshArg = new IntegerArgument("refresh", 'r', "refresh", false, true, INFO_PERIOD_PLACEHOLDER.get(), true, 1, false, Integer.MAX_VALUE, INFO_DESCRIPTION_REFRESH_PERIOD.get()); addGlobalArgument(refreshArg, ioArgGroup); } /** @@ -155,6 +167,33 @@ } /** * Returns the refresh period (in seconds) specified in the command-line. * If no refresh period was specified, returns -1. * The code assumes that the attributes have been successfully parsed. * @return the specified refresh period in the command-line. */ public int getRefreshPeriod() { if (refreshArg.isPresent()) { try { return refreshArg.getIntValue(); } catch (ArgumentException ae) { // Bug throw new IllegalStateException("Error getting value, this method "+ "should be called after parsing the attributes: "+ae, ae); } } else { return -1; } } /** * Returns the bind DN explicitly provided in the command-line. * @return the bind DN explicitly provided in the command-line. * Returns <CODE>null</CODE> if no bind DN was explicitly provided.