From 73fe1b1f4f6c50c2e8d4de7b3b0e09f9c5f1365b Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 12 Sep 2007 23:21:22 +0000
Subject: [PATCH] Fix for issues: 1335: define, document, review CLI to register a server in a synch 1336: CLI implementation to register a server in a synchronization 1878: provide a CLI to initialize a replication topology from a gi 2201: ads-trustore missing when not configuring replication with t 2250: Setup and dsreplication utilities should configure schema sy

---
 opendj-sdk/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java |   92 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 75 insertions(+), 17 deletions(-)

diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
index 4e80d6e..2bd1daa 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
@@ -913,6 +913,9 @@
       {
       }
     }
+
+    uData.setReplicateSchema(!argParser.noSchemaReplication());
+
     return !cancelled;
   }
 
@@ -1078,12 +1081,16 @@
     {
       // Ask for confirmation to disable.
       boolean disableADS = false;
+      boolean disableSchema = false;
       for (String dn : uData.getBaseDNs())
       {
         if (Utils.areDnsEqual(ADSContext.getAdministrationSuffixDN(), dn))
         {
           disableADS = true;
-          break;
+        }
+        else if (Utils.areDnsEqual(Constants.SCHEMA_DN, dn))
+        {
+          disableSchema = true;
         }
       }
       if (disableADS)
@@ -1092,7 +1099,12 @@
         cancelled = !confirm(INFO_REPLICATION_CONFIRM_DISABLE_ADS.get(
             ADSContext.getAdministrationSuffixDN()));
       }
-      else
+      if (disableSchema)
+      {
+        printLineBreak();
+        cancelled = !confirm(INFO_REPLICATION_CONFIRM_DISABLE_SCHEMA.get());
+      }
+      if (!disableSchema && !disableADS)
       {
         printLineBreak();
         cancelled = !confirm(INFO_REPLICATION_CONFIRM_DISABLE_GENERIC.get());
@@ -1541,7 +1553,10 @@
       uData.setBindDn2(bindDn);
       uData.setPwd2(pwd2);
     }
-    uData.setReplicationPort1(replicationPort1);
+    int replicationPort2 = getValue(argParser.getReplicationPort2(),
+        argParser.getDefaultReplicationPort2());
+    uData.setReplicationPort2(replicationPort2);
+    uData.setReplicateSchema(!argParser.noSchemaReplication());
   }
 
   /**
@@ -1717,17 +1732,23 @@
             }
           }
           /* Check the exceptions and see if we throw them or not. */
+          boolean notGlobalAdministratorError = false;
           for (TopologyCacheException e : exceptions)
           {
+            if (notGlobalAdministratorError)
+            {
+              break;
+            }
             switch (e.getType())
             {
               case NOT_GLOBAL_ADMINISTRATOR:
-                printLineBreak();
-                printErrorMessage(INFO_NOT_GLOBAL_ADMINISTRATOR_PROVIDED.get());
+                notGlobalAdministratorError = true;
                 boolean connected = false;
 
                 String adminUid = uData.getAdminUid();
                 String adminPwd = uData.getAdminPwd();
+                
+                boolean errorDisplayed = false;
                 while (!connected)
                 {
                   if ((!triedWithUserProvidedAdmin) && (adminPwd == null))
@@ -1739,6 +1760,13 @@
                   }
                   if (adminPwd == null)
                   {
+                    if (!errorDisplayed)
+                    {
+                      printLineBreak();
+                      printErrorMessage(
+                          INFO_NOT_GLOBAL_ADMINISTRATOR_PROVIDED.get());
+                      errorDisplayed = true;
+                    }
                     adminUid = askForAdministratorUID(
                         argParser.getDefaultAdministratorUID());
                     adminPwd = askForAdministratorPwd();
@@ -2496,9 +2524,17 @@
 
         while (suffixes.isEmpty())
         {
-          if ((availableSuffixes.size() == 1) &&
-              Utils.areDnsEqual(availableSuffixes.first(),
-                  ADSContext.getAdministrationSuffixDN()))
+          boolean noSchemaOrAds = false;
+          for (String s: availableSuffixes)
+          {
+            if (!Utils.areDnsEqual(s, ADSContext.getAdministrationSuffixDN()) &&
+                !Utils.areDnsEqual(s, Constants.SCHEMA_DN) &&
+                !Utils.areDnsEqual(s, Constants.REPLICATION_CHANGES_DN))
+            {
+              noSchemaOrAds = true;
+            }
+          }
+          if (!noSchemaOrAds)
           {
             // In interactive mode we do not propose to manage the
             // administration suffix.
@@ -2514,7 +2550,7 @@
             for (String dn : availableSuffixes)
             {
               if (!Utils.areDnsEqual(ADSContext.getAdministrationSuffixDN(),
-                  dn))
+                  dn) && !Utils.areDnsEqual(Constants.SCHEMA_DN, dn))
               {
                 if (confirm(INFO_REPLICATION_ENABLE_SUFFIX_PROMPT.get(dn)))
                 {
@@ -2643,9 +2679,17 @@
       {
         while (suffixes.isEmpty())
         {
-          if ((availableSuffixes.size() == 1) &&
-              Utils.areDnsEqual(availableSuffixes.first(),
-                  ADSContext.getAdministrationSuffixDN()))
+          boolean noSchemaOrAds = false;
+          for (String s: availableSuffixes)
+          {
+            if (!Utils.areDnsEqual(s, ADSContext.getAdministrationSuffixDN()) &&
+                !Utils.areDnsEqual(s, Constants.SCHEMA_DN) &&
+                !Utils.areDnsEqual(s, Constants.REPLICATION_CHANGES_DN))
+            {
+              noSchemaOrAds = true;
+            }
+          }
+          if (!noSchemaOrAds)
           {
             // In interactive mode we do not propose to manage the
             // administration suffix.
@@ -2661,7 +2705,7 @@
             for (String dn : availableSuffixes)
             {
               if (!Utils.areDnsEqual(ADSContext.getAdministrationSuffixDN(),
-                  dn))
+                  dn) && !Utils.areDnsEqual(Constants.SCHEMA_DN, dn))
               {
                 if (confirm(INFO_REPLICATION_DISABLE_SUFFIX_PROMPT.get(dn)))
                 {
@@ -2731,9 +2775,17 @@
       {
         while (suffixes.isEmpty())
         {
-          if ((availableSuffixes.size() == 1) &&
-              Utils.areDnsEqual(availableSuffixes.first(),
-                  ADSContext.getAdministrationSuffixDN()))
+          boolean noSchemaOrAds = false;
+          for (String s: availableSuffixes)
+          {
+            if (!Utils.areDnsEqual(s, ADSContext.getAdministrationSuffixDN()) &&
+                !Utils.areDnsEqual(s, Constants.SCHEMA_DN) &&
+                !Utils.areDnsEqual(s, Constants.REPLICATION_CHANGES_DN))
+            {
+              noSchemaOrAds = true;
+            }
+          }
+          if (!noSchemaOrAds)
           {
             // In interactive mode we do not propose to manage the
             // administration suffix.
@@ -2750,7 +2802,7 @@
             for (String dn : availableSuffixes)
             {
               if (!Utils.areDnsEqual(ADSContext.getAdministrationSuffixDN(),
-                  dn))
+                  dn) && !Utils.areDnsEqual(Constants.SCHEMA_DN, dn))
               {
                 if (confirm(INFO_REPLICATION_INITIALIZE_SUFFIX_PROMPT.get(dn)))
                 {
@@ -2959,6 +3011,12 @@
       }
     }
 
+    if (uData.replicateSchema())
+    {
+      baseDNs = uData.getBaseDNs();
+      baseDNs.add("cn=schema");
+      uData.setBaseDNs(baseDNs);
+    }
     TopologyCache cache1 = null;
     TopologyCache cache2 = null;
     try

--
Gitblit v1.10.0