Repository: usergrid
Updated Branches:
  refs/heads/1.x 7a2e68f3b -> 6e1f5ec5b


Instead of renaming duplicate orgs, we delete them. Also: 1) additional 
info-level logging for all user and app, remove and add operations and 2) 
option to skip lengthy "augment" operation.


Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/8dd38910
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/8dd38910
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/8dd38910

Branch: refs/heads/1.x
Commit: 8dd3891019bbde7f8dcc312d21a3c6099ef33d2e
Parents: 7a2e68f
Author: Dave Johnson <[email protected]>
Authored: Mon Jan 4 17:49:48 2016 -0500
Committer: Dave Johnson <[email protected]>
Committed: Mon Jan 4 17:49:48 2016 -0500

----------------------------------------------------------------------
 .../usergrid/tools/DuplicateOrgRepair.java      | 48 +++++++++++++++-----
 1 file changed, 36 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/8dd38910/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
----------------------------------------------------------------------
diff --git 
a/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java 
b/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
index 806f873..9c0a592 100644
--- 
a/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
+++ 
b/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
@@ -25,10 +25,7 @@ import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.usergrid.management.OrganizationInfo;
 import org.apache.usergrid.management.UserInfo;
-import org.apache.usergrid.persistence.Entity;
-import org.apache.usergrid.persistence.EntityManager;
-import org.apache.usergrid.persistence.Query;
-import org.apache.usergrid.persistence.Results;
+import org.apache.usergrid.persistence.*;
 import org.apache.usergrid.persistence.cassandra.CassandraService;
 import org.apache.usergrid.persistence.entities.Group;
 import rx.Observable;
@@ -64,9 +61,13 @@ public class DuplicateOrgRepair extends ToolBase {
     int                     threadCount = 5;
 
     static final String     DRYRUN_ARG_NAME = "dryrun";
-    
+
     boolean                 dryRun = false;
 
+    static final String     NO_AUGMENT_ARG_NAME = "noaugment";
+    
+    boolean                 noAugment = false;
+
     static final String     ORG1_ID = "org1";
 
     static final String     ORG2_ID = "org2";
@@ -85,6 +86,13 @@ public class DuplicateOrgRepair extends ToolBase {
             .withDescription( "-" + DRYRUN_ARG_NAME + " true to print what 
tool would do and do not alter data.")
             .create( DRYRUN_ARG_NAME );
         options.addOption( dryRunOption );
+        
+        Option noAugmentRunOption = OptionBuilder.hasArg()
+            .withType(Boolean.TRUE)
+            .withDescription( "-" + NO_AUGMENT_ARG_NAME + " true to skip the 
augment step.")
+            .create( NO_AUGMENT_ARG_NAME );
+        options.addOption( noAugmentRunOption );
+
 
         Option writeThreadsOption = OptionBuilder.hasArg()
             .withType(0)
@@ -150,7 +158,11 @@ public class DuplicateOrgRepair extends ToolBase {
         if ( StringUtils.isNotEmpty( line.getOptionValue( DRYRUN_ARG_NAME ) )) 
{
             dryRun = Boolean.parseBoolean( line.getOptionValue( 
DRYRUN_ARG_NAME ));
         }
-       
+
+        if ( StringUtils.isNotEmpty( line.getOptionValue( NO_AUGMENT_ARG_NAME 
) )) {
+            noAugment = Boolean.parseBoolean( line.getOptionValue( 
NO_AUGMENT_ARG_NAME ));
+        }
+
         if ( manager == null ) { // we use a special manager when mockTesting
             if (dryRun) {
                 manager = new DryRunManager();
@@ -177,7 +189,9 @@ public class DuplicateOrgRepair extends ToolBase {
             buildOrgMaps();
         }
 
-        augmentUserOrgsMap();
+        if ( noAugment == false ) {
+            augmentUserOrgsMap();
+        }
         
         manager.logDuplicates( duplicatesByName );
         
@@ -531,14 +545,16 @@ public class DuplicateOrgRepair extends ToolBase {
         public void removeOrg(Org keeper, Org duplicate) throws Exception {
             
             // rename org so that it is no longer a duplicate
-            OrganizationInfo orgInfo = 
managementService.getOrganizationByUuid( duplicate.getId() );
-            orgInfo.setName( "dup_" + keeper.getId() + "_" + 
RandomStringUtils.randomAlphanumeric(10) );
-            managementService.updateOrganization( orgInfo );
+            EntityManager em = emf.getEntityManager( 
CassandraService.MANAGEMENT_APPLICATION_ID );
+            em.delete( new SimpleEntityRef( "group", duplicate.getId() ));
+            logger.info("Deleted org {}:{}", new Object[] { 
duplicate.getName(), duplicate.getId() });
 
             // fix the org name index
             OrganizationInfo orgInfoKeeper = 
managementService.getOrganizationByUuid( keeper.getId() );
             try {
                 managementService.updateOrganizationUniqueIndex( 
orgInfoKeeper, duplicate.getId() );
+                logger.info("Updated index for keeper {}:{} not dup {}", new 
Object[] {
+                        orgInfoKeeper.getName(), orgInfoKeeper.getUuid(), 
duplicate.getId() });
                 
             } catch ( Exception e ) {
                 // if there are multiple duplicates this will fail for all but 
one of them. That's OK
@@ -568,6 +584,8 @@ public class DuplicateOrgRepair extends ToolBase {
         public void removeUserFromOrg(OrgUser user, Org org) throws Exception {
             // forcefully remove admin user from org
             managementService.removeAdminUserFromOrganization( user.getId(), 
org.getId(), true );
+            logger.info("Removed user {}:{} from org {}:{}", new Object[] {
+                    user.getName(), user.getId(), org.getName(), org.getId() 
});
         }
 
         
@@ -576,6 +594,8 @@ public class DuplicateOrgRepair extends ToolBase {
             UserInfo userInfo = managementService.getAdminUserByUsername( 
user.getName() );
             OrganizationInfo orgInfo = 
managementService.getOrganizationByUuid( org.getId() );
             managementService.addAdminUserToOrganization( userInfo, orgInfo, 
false );
+            logger.info("Added user {}:{} to org {}:{}", new Object[] {
+                    user.getName(), user.getId(), org.getName(), org.getId() 
});
         }
 
         
@@ -588,13 +608,17 @@ public class DuplicateOrgRepair extends ToolBase {
         
         @Override
         public void removeAppFromOrg(UUID appId, Org org) throws Exception {
-            managementService.removeOrganizationApplication( org.getId(), 
appId ); 
+            managementService.removeOrganizationApplication( org.getId(), 
appId );
+            logger.info("Removed app {} from org {}:{}", new Object[] {
+                    appId, org.getName(), org.getId() });
         }
 
         
         @Override
         public void addAppToOrg(UUID appId, Org org) throws Exception {
             managementService.addApplicationToOrganization( org.getId(), appId 
);
+            logger.info("Added app {} to org {}:{}", new Object[] {
+                    appId, org.getName(), org.getId() });
         }
 
         
@@ -631,7 +655,7 @@ public class DuplicateOrgRepair extends ToolBase {
         
         @Override
         public Org getOrg(UUID uuid) throws Exception {
-            
+
             EntityManager em = emf.getEntityManager( 
CassandraService.MANAGEMENT_APPLICATION_ID );
             Entity entity = em.get( uuid );
 

Reply via email to