From 6f07644ddf1bfa21ae41b8896dfb2709561ff066 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Mon, 23 Jul 2007 13:26:31 +0000
Subject: [PATCH] Fix for issue 2008 add-to-group checks if the server in registered in the ADS

---
 opends/src/server/org/opends/server/messages/AdminMessages.java                     |   11 +++++++++++
 opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliReturnCode.java  |    7 ++++++-
 opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java |   20 ++++++++++++++++++++
 3 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliReturnCode.java b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliReturnCode.java
index 393199a..7749b2f 100644
--- a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliReturnCode.java
+++ b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliReturnCode.java
@@ -142,7 +142,12 @@
     /**
      * Unexpected error (potential bug).
      */
-    CONFLICTING_ARGS(18, MSGID_ADMIN_NO_MESSAGE);
+    CONFLICTING_ARGS(18, MSGID_ADMIN_NO_MESSAGE),
+
+    /**
+     * The server entity is not yet registered.
+     */
+    SERVER_NOT_REGISTERED(19, MSGID_ADMIN_SERVER_NOT_REGISTERED);
 
     // The retunCodevalue of the value.
     private final int returnCode;
diff --git a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
index fa3873b..33bb021 100644
--- a/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
+++ b/opends/src/server/org/opends/server/admin/client/cli/DsFrameworkCliServerGroup.java
@@ -46,6 +46,7 @@
 import org.opends.admin.ads.ADSContext;
 import org.opends.admin.ads.ADSContextException;
 import org.opends.admin.ads.ADSContext.ServerGroupProperty;
+import org.opends.admin.ads.ADSContext.ServerProperty;
 import org.opends.server.admin.client.cli.DsFrameworkCliReturnCode.ReturnCode;
 import org.opends.server.util.args.ArgumentException;
 import org.opends.server.util.args.BooleanArgument;
@@ -725,6 +726,25 @@
         }
         adsCtx = new ADSContext(ctx) ;
 
+        // Check if the server is registered inside to ADS
+        Set<Map<ServerProperty, Object>> serverList = adsCtx
+            .readServerRegistry();
+        boolean found = false ;
+        for (Map<ServerProperty, Object> serverProperties : serverList)
+        {
+          String serverId = ADSContext
+              .getServerIdFromServerProperties(serverProperties);
+          if (addToGoupMemberNameArg.getValue().equals(serverId))
+          {
+            found = true;
+            break;
+          }
+        }
+        if ( !found )
+        {
+          return ReturnCode.SERVER_NOT_REGISTERED;
+        }
+
         // get the current member list
         Set<String> memberList = adsCtx.getServerGroupMemberList(groupId);
         if (memberList == null)
diff --git a/opends/src/server/org/opends/server/messages/AdminMessages.java b/opends/src/server/org/opends/server/messages/AdminMessages.java
index 7548dae..58d22e0 100644
--- a/opends/src/server/org/opends/server/messages/AdminMessages.java
+++ b/opends/src/server/org/opends/server/messages/AdminMessages.java
@@ -556,6 +556,15 @@
   public static final int MSGID_ADMIN_ARG_SERVERID_DESCRIPTION =
     CATEGORY_MASK_ADMIN | SEVERITY_MASK_INFORMATIONAL | 65;
 
+  /**
+   * The message ID for the message that will be used server that the user
+   * wants to add in a group is not yet register in the ADS.
+   * This does not take any arguments.
+   */
+  public static final int MSGID_ADMIN_SERVER_NOT_REGISTERED=
+    CATEGORY_MASK_ADMIN | SEVERITY_MASK_FATAL_ERROR | 66;
+
+
   // Prevent instantiation.
   private AdminMessages() {
     // Do nothing.
@@ -763,5 +772,7 @@
     registerMessage(MSGID_ADMIN_ARG_SERVERID_DESCRIPTION,
         "The registered server's unique identifier. " +
         "This is a required argument");
+    registerMessage(MSGID_ADMIN_SERVER_NOT_REGISTERED,
+        "The provided serverId is not registered");
   }
 }

--
Gitblit v1.10.0