Fixes to allow ImportAdmin to run in distributed env, also remove org-merge from ImportAdmins.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/b22ac656 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/b22ac656 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/b22ac656 Branch: refs/heads/master Commit: b22ac656cda8429ac4ae47ffbdfe78c9c4fb599b Parents: e38ee3e Author: Dave Johnson <[email protected]> Authored: Fri Jan 15 15:12:09 2016 -0500 Committer: Dave Johnson <[email protected]> Committed: Fri Jan 15 15:12:09 2016 -0500 ---------------------------------------------------------------------- .../org/apache/usergrid/tools/ImportAdmins.java | 81 ++------------------ .../org/apache/usergrid/tools/ToolBase.java | 6 +- 2 files changed, 11 insertions(+), 76 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/b22ac656/stack/tools/src/main/java/org/apache/usergrid/tools/ImportAdmins.java ---------------------------------------------------------------------- diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/ImportAdmins.java b/stack/tools/src/main/java/org/apache/usergrid/tools/ImportAdmins.java index 7a925b0..c1a60b8 100644 --- a/stack/tools/src/main/java/org/apache/usergrid/tools/ImportAdmins.java +++ b/stack/tools/src/main/java/org/apache/usergrid/tools/ImportAdmins.java @@ -30,7 +30,6 @@ import org.apache.usergrid.persistence.EntityRef; import org.apache.usergrid.persistence.SimpleEntityRef; import org.apache.usergrid.persistence.entities.User; import org.apache.usergrid.persistence.exceptions.DuplicateUniquePropertyExistsException; -import org.apache.usergrid.persistence.index.query.Identifier; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonToken; @@ -118,9 +117,8 @@ public class ImportAdmins extends ToolBase { @SuppressWarnings("static-access") public Options createOptions() { - Option hostOption = OptionBuilder.withArgName("host") - .hasArg() - .withDescription("Cassandra host").create("host"); + // inherit parent options + Options options = super.createOptions(); Option inputDir = OptionBuilder .hasArg() @@ -138,10 +136,8 @@ public class ImportAdmins extends ToolBase { .withDescription("Print on the console an echo of the content written to the file") .create(VERBOSE); - Options options = new Options(); - options.addOption(hostOption); - options.addOption(writeThreads); - options.addOption(auditThreads); + options.addOption( writeThreads ); + options.addOption( auditThreads ); options.addOption( inputDir ); options.addOption( verbose ); @@ -503,73 +499,8 @@ public class ImportAdmins extends ToolBase { logger.warn("User {} has no dictionaries", entityRef.getUuid() ); } - } else { // this is a duplicate user, so merge orgs - - logger.info("Processing duplicate username={} email={}", dup.email, dup.username ); - - Identifier identifier = dup.email != null ? - Identifier.fromEmail( dup.email ) : Identifier.from( dup.username ); - User originalUser = em.get( em.getUserByIdentifier(identifier), User.class ); - - // get map of original user's orgs - - UserInfo originalUserInfo = managementService.getAdminUserByEmail( originalUser.getEmail() ); - Map<String, Object> originalUserOrgData = - managementService.getAdminUserOrganizationData( originalUser.getUuid() ); - Map<String, Map<String, Object>> originalUserOrgs = - (Map<String, Map<String, Object>>) originalUserOrgData.get( "organizations" ); - - // loop through duplicate user's orgs and give orgs to original user - - List<Object> organizationsList = (List<Object>) metadata.get("organizations"); - for (Object orgObject : organizationsList) { - - Map<String, Object> orgMap = (Map<String, Object>) orgObject; - UUID orgUuid = UUID.fromString( (String) orgMap.get( "uuid" ) ); - String orgName = (String) orgMap.get( "name" ); - - if (originalUserOrgs.get( orgName ) == null) { // original user does not have this org - - OrganizationInfo orgInfo = managementService.getOrganizationByUuid( orgUuid ); - - if (orgInfo == null) { // org does not exist yet, create it and add original user to it - try { - managementService.createOrganization( orgUuid, orgName, originalUserInfo, false ); - orgInfo = managementService.getOrganizationByUuid( orgUuid ); - - logger.debug( "Created new org {} for user {}:{}:{} from duplicate user {}:{}", - new Object[]{ - orgInfo.getName(), - originalUser.getUsername(), - originalUser.getEmail(), - originalUser.getUuid(), - dup.username, dup.email - }); - - } catch (DuplicateUniquePropertyExistsException dpee) { - logger.debug( "Org {} already exists", orgName ); - } - } else { // org exists so add original user to it - try { - managementService.addAdminUserToOrganization( originalUserInfo, orgInfo, false ); - logger.debug( "Added to org user {}:{}:{} from duplicate user {}:{}", - new Object[]{ - orgInfo.getName(), - originalUser.getUsername(), - originalUser.getEmail(), - originalUser.getUuid(), - dup.username, dup.email - }); - - } catch (Exception e) { - logger.error( "Error Adding user {} to org {}", - new Object[]{originalUserInfo.getEmail(), orgName} ); - } - } - - } // else original user already has this org - - } + } else { // let the DuplicateAdminRepair tool handle merging of admins + logger.info("Not processing duplicate username={} email={}", dup.email, dup.username ); } } http://git-wip-us.apache.org/repos/asf/usergrid/blob/b22ac656/stack/tools/src/main/java/org/apache/usergrid/tools/ToolBase.java ---------------------------------------------------------------------- diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/ToolBase.java b/stack/tools/src/main/java/org/apache/usergrid/tools/ToolBase.java index 7fb7015..9725dda 100644 --- a/stack/tools/src/main/java/org/apache/usergrid/tools/ToolBase.java +++ b/stack/tools/src/main/java/org/apache/usergrid/tools/ToolBase.java @@ -101,7 +101,7 @@ public abstract class ToolBase { System.setProperty( "cassandra.url", line.getOptionValue( "host" ) ); System.setProperty( "elasticsearch.hosts", line.getOptionValue( "eshost" ) ); System.setProperty( "elasticsearch.cluster_name", line.getOptionValue( "escluster" ) ); - System.setProperty( "usergrid.cluster_name", "usergrid" ); + System.setProperty( "usergrid.cluster_name", line.getOptionValue( "ugcluster" ) ); } try { @@ -141,6 +141,9 @@ public abstract class ToolBase { Option esClusterOption = OptionBuilder.withArgName( "escluster" ).hasArg() .withDescription( "ElasticSearch cluster name" ).create( "escluster" ); + Option ugClusterOption = OptionBuilder.withArgName( "ugcluster" ).hasArg() + .withDescription( "Usergrid cluster name" ).create( "ugcluster" ); + Option remoteOption = OptionBuilder .withDescription( "Use remote Cassandra instance" ).create( "remote" ); @@ -152,6 +155,7 @@ public abstract class ToolBase { options.addOption( hostOption ); options.addOption( esHostOption ); options.addOption( esClusterOption ); + options.addOption( ugClusterOption ); options.addOption( remoteOption ); options.addOption( verbose );
