Merge branch '1.x' into dup-admin-repair
Conflicts:
stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/bb6198f9
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/bb6198f9
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/bb6198f9
Branch: refs/heads/1.x
Commit: bb6198f9f6d396799f922eb18aa22fbfca562296
Parents: 7324b5a a5045b8
Author: Dave Johnson <[email protected]>
Authored: Mon Jan 11 16:37:54 2016 -0500
Committer: Dave Johnson <[email protected]>
Committed: Mon Jan 11 16:37:54 2016 -0500
----------------------------------------------------------------------
.../usergrid/tools/DuplicateOrgRepair.java | 30 +------
.../org/apache/usergrid/tools/ExportAdmins.java | 82 ++++++++++----------
.../org/apache/usergrid/tools/ImportAdmins.java | 10 ++-
.../org/apache/usergrid/tools/ToolBase.java | 2 +-
4 files changed, 53 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/bb6198f9/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
----------------------------------------------------------------------
diff --cc
stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
index f4d76fd,4363dbd..f0f14c7
---
a/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
+++
b/stack/tools/src/main/java/org/apache/usergrid/tools/DuplicateOrgRepair.java
@@@ -168,9 -165,9 +168,9 @@@ public class DuplicateOrgRepair extend
if ( manager == null ) { // we use a special manager when mockTesting
if (dryRun) {
- manager = new DryRunManager( emf, managementService );
- manager = new DryRunManager();
++ manager = new DryRunUserOrgManager( emf, managementService );
} else {
- manager = new RepairManager();
+ manager = new UserOrgManager( emf, managementService );
}
}
@@@ -431,32 -428,289 +431,4 @@@
return oldest;
}
-
- class RepairManager implements DuplicateOrgInterface {
--
- static class DryRunManager extends UserOrgManager {
- @Override
- public Observable<Org> getOrgs() throws Exception {
--
- public DryRunManager(EntityManagerFactory emf, ManagementService
managementService ) {
- super(emf, managementService);
- return Observable.create( new Observable.OnSubscribe<Org>() {
-
- @Override
- public void call(Subscriber<? super Org> subscriber) {
- subscriber.onStart();
- try {
- int count = 0;
-
- EntityManager em = emf.getEntityManager(
CassandraService.MANAGEMENT_APPLICATION_ID );
- String queryString = "select *";
- Query query = Query.fromQL( queryString );
- query.withLimit( MAX_ENTITY_FETCH );
-
- Results results = em.searchCollection(
em.getApplicationRef(), "groups", query );
-
- while (results.size() > 0) {
- for (Entity orgEntity : results.getEntities()) {
-
- Org org = new Org(
- orgEntity.getUuid(),
- orgEntity.getProperty( "path" )+"",
- orgEntity.getCreated() );
- org.sourceValue = orgEntity;
-
- subscriber.onNext( org );
-
- if ( count++ % 1000 == 0 ) {
- logger.info("Emitted {} orgs", count );
- }
-
- // logger.info( "org: {}, \"{}\", {}", new
Object[]{
- // orgEntity.getProperty( "path" ),
- // orgEntity.getUuid(),
- // orgEntity.getCreated()} );
- }
- if (results.getCursor() == null) {
- break;
- }
- query.setCursor( results.getCursor() );
- results = em.searchCollection(
em.getApplicationRef(), "groups", query );
- }
-
- } catch (Exception e) {
- subscriber.onError( e );
- }
- subscriber.onCompleted();
- }
- } );
- }
-
- @Override
- public Observable<OrgUser> getUsers() throws Exception {
-
- return Observable.create( new Observable.OnSubscribe<OrgUser>() {
-
- @Override
- public void call(Subscriber<? super OrgUser> subscriber) {
- subscriber.onStart();
- try {
- int count = 0;
-
- Query query = new Query();
- query.setLimit( MAX_ENTITY_FETCH );
- query.setResultsLevel( Results.Level.ALL_PROPERTIES );
- EntityManager em = emf.getEntityManager(
CassandraService.MANAGEMENT_APPLICATION_ID );
- Results results = em.searchCollection(
em.getApplicationRef(), "users", query );
-
- while (results.size() > 0) {
- for (Entity entity : results.getList()) {
-
- OrgUser orgUser = new OrgUser(
- entity.getUuid(),
- entity.getProperty( "username" ) + "" );
- orgUser.sourceValue = entity;
-
- subscriber.onNext( orgUser );
-
- if ( count++ % 1000 == 0 ) {
- logger.info("Emitted {} users", count );
- }
-
- // logger.info( "org: {}, \"{}\", {}", new
Object[]{
- // entity.getProperty( "path" ),
- // entity.getUuid(),
- // entity.getCreated()} );
- }
- if (results.getCursor() == null) {
- break;
- }
- query.setCursor( results.getCursor() );
- results = em.searchCollection(
em.getApplicationRef(), "users", query );
- }
-
- } catch (Exception e) {
- subscriber.onError( e );
- }
- subscriber.onCompleted();
- }
- } );
- }
-
- @Override
- public Set<Org> getUsersOrgs(OrgUser user) throws Exception {
-
- Set<Org> ret = new HashSet<Org>();
-
- Map<String, Object> orgData =
managementService.getAdminUserOrganizationData( user.getId() );
-
- Map<String, Object> orgs = (Map<String,
Object>)orgData.get("organizations");
- for ( String orgName : orgs.keySet() ) {
-
- Map<String, Object> orgMap = (Map<String, Object>)orgs.get(
orgName );
- Group group = managementService.getOrganizationProps(
- UUID.fromString( orgMap.get( "uuid" ).toString() ) );
-
- Org org = new Org(
- group.getUuid(),
- group.getPath(),
- group.getCreated()
- );
- ret.add(org);
- }
-
- return ret;
- }
-
-
- @Override
- public void removeOrg(Org keeper, Org duplicate) throws Exception {
-
- // rename org so that it is no longer a duplicate
- 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
- logger.warn("Error repairing unique value keeper {} duplicate
{}",
- keeper.getId(), duplicate.getId());
- }
- }
-
-
- @Override
- public Set<OrgUser> getOrgUsers(Org org) throws Exception {
-
- Set<OrgUser> ret = new HashSet<OrgUser>();
-
- List<UserInfo> userInfos =
managementService.getAdminUsersForOrganization( org.getId() );
-
- for ( UserInfo userInfo : userInfos ) {
- OrgUser orgUser = new OrgUser( userInfo.getUuid(),
userInfo.getUsername() );
- ret.add(orgUser);
- }
-
- return ret;
- }
-
-
- @Override
- 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()
});
- }
-
-
- @Override
- public void addUserToOrg(OrgUser user, Org org) throws Exception {
- 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()
});
- }
-
-
- @Override
- public Set<UUID> getOrgApps(Org org) throws Exception {
- BiMap<UUID, String> apps =
managementService.getApplicationsForOrganization( org.getId() );
- return apps.keySet();
- }
-
-
- @Override
- public void removeAppFromOrg(UUID appId, Org org) throws Exception {
- 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() });
- }
-
-
- @Override
- public void logDuplicates(Map<String, Set<Org>> duplicatesByName) {
-
- for ( String orgName : duplicatesByName.keySet() ) {
- Set<Org> orgs = duplicatesByName.get(orgName);
- for ( Org org : orgs ) {
- Entity orgEntity = (Entity)org.sourceValue;
-
- StringBuilder sb = new StringBuilder();
- sb.append(orgEntity.toString()).append(", ");
-
- try {
- BiMap<UUID, String> apps =
- managementService.getApplicationsForOrganization(
orgEntity.getUuid() );
- String sep = "";
- for ( UUID uuid : apps.keySet() ) {
- String appName = apps.get(uuid);
-
sb.append(appName).append(":").append(uuid).append(sep);
- sep = ", ";
- }
-
- } catch (Exception e) {
- logger.error("Error getting applications for org
{}:{}", org.getName(), org.getId() );
- }
-
- logger.info(sb.toString());
- }
- }
- }
-
-
- @Override
- public Org getOrg(UUID uuid) throws Exception {
-
- EntityManager em = emf.getEntityManager(
CassandraService.MANAGEMENT_APPLICATION_ID );
- Entity entity = em.get( uuid );
-
- Org org = new Org(
- entity.getUuid(),
- entity.getProperty( "path" )+"",
- entity.getCreated() );
- org.sourceValue = entity;
-
- return org;
-- }
- }
-
-
- class DryRunManager extends RepairManager {
--
-- @Override
-- public void removeUserFromOrg(OrgUser user, Org org) throws Exception
{
-- }
--
-- @Override
-- public void addUserToOrg(OrgUser user, Org org) throws Exception {
-- }
--
-- @Override
-- public void addAppToOrg(UUID appId, Org org) throws Exception {
-- }
--
-- @Override
-- public void removeAppFromOrg(UUID appId, Org org) throws Exception {
-- }
--
-- @Override
-- public void removeOrg(Org keeper, Org duplicate) throws Exception {
-- }
-- }
--
}