From f4eb1c336ec220e6605e7b90204cbb91a68b60eb Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Tue, 24 Jul 2007 14:13:28 +0000
Subject: [PATCH] Fix for issue #2013 (dsframework unregister-server doesn't update groups which contain this server)
---
opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServer.java | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServer.java b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServer.java
index 72e203d..acf725a 100644
--- a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServer.java
+++ b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServer.java
@@ -47,6 +47,7 @@
import org.opends.admin.ads.ADSContext;
import org.opends.admin.ads.ADSContextException;
import org.opends.admin.ads.ADSContext.ServerProperty;
+import org.opends.admin.ads.ADSContextException.ErrorType;
import org.opends.server.admin.PropertyOption;
import org.opends.server.admin.client.cli.DsFrameworkCliReturnCode.ReturnCode;
import org.opends.server.tools.dsconfig.ArgumentExceptionFactory;
@@ -611,16 +612,19 @@
// -----------------------
if (subCmd.getName().equals(unregisterServerSubCmd.getName()))
{
+ returnCode = ReturnCode.SUCCESSFUL;
+
Map<ServerProperty, Object> map = new HashMap<ServerProperty, Object>();
+ String serverId = null;
if (unregisterServerServerIDArg.isPresent())
{
- map.put(ServerProperty.ID, unregisterServerServerIDArg.getValue());
+ serverId = unregisterServerServerIDArg.getValue();
}
else
{
- map.put(ServerProperty.ID, ADSContext
- .getServerIdFromServerProperties(map));
+ serverId = ADSContext.getServerIdFromServerProperties(map);
}
+ map.put(ServerProperty.ID,serverId);
ctx = argParser.getContext(outStream, errStream);
if (ctx == null)
@@ -628,8 +632,34 @@
return ReturnCode.CANNOT_CONNECT_TO_ADS;
}
adsCtx = new ADSContext(ctx);
+
+ // update groups in which server was registered
+ Set<Map<ServerProperty, Object>> serverList =
+ adsCtx.readServerRegistry();
+ boolean found = false;
+ Map<ServerProperty,Object> serverProperties = null ;
+ for (Map<ServerProperty,Object> elm : serverList)
+ {
+ if (serverId.equals(elm.get(ServerProperty.ID)))
+ {
+ found = true ;
+ serverProperties = elm ;
+ break ;
+ }
+ }
+ if ( ! found )
+ {
+ throw new ADSContextException (ErrorType.NOT_YET_REGISTERED) ;
+ }
+ Set groupList = (Set) serverProperties.get(ServerProperty.GROUPS);
+ for (Object groupId : groupList.toArray())
+ {
+ DsFrameworkCliServerGroup.removeServerFromGroup(adsCtx,
+ (String) groupId, serverId);
+ }
+
+ // unregister the server
adsCtx.unregisterServer(map);
- returnCode = ReturnCode.SUCCESSFUL;
}
else
// -----------------------
--
Gitblit v1.10.0