Repository: incubator-ranger
Updated Branches:
  refs/heads/master 02a0c32a3 -> 0e4ced2f8


Ranger-427:UserSync Process didn't sync the group when groups are added to the 
user at later time-fixes after review


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/0e4ced2f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/0e4ced2f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/0e4ced2f

Branch: refs/heads/master
Commit: 0e4ced2f848965cab1355f1ca3a4f96f4c611c35
Parents: 02a0c32
Author: rmani <[email protected]>
Authored: Sat Apr 25 01:41:16 2015 -0700
Committer: rmani <[email protected]>
Committed: Sat Apr 25 01:41:16 2015 -0700

----------------------------------------------------------------------
 .../process/PolicyMgrUserGroupBuilder.java      | 78 ++++++++++++++------
 1 file changed, 56 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0e4ced2f/ugsync/src/main/java/org/apache/ranger/unixusersync/process/PolicyMgrUserGroupBuilder.java
----------------------------------------------------------------------
diff --git 
a/ugsync/src/main/java/org/apache/ranger/unixusersync/process/PolicyMgrUserGroupBuilder.java
 
b/ugsync/src/main/java/org/apache/ranger/unixusersync/process/PolicyMgrUserGroupBuilder.java
index 77e3a7e..5768f55 100644
--- 
a/ugsync/src/main/java/org/apache/ranger/unixusersync/process/PolicyMgrUserGroupBuilder.java
+++ 
b/ugsync/src/main/java/org/apache/ranger/unixusersync/process/PolicyMgrUserGroupBuilder.java
@@ -52,6 +52,7 @@ import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
 import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
 import com.sun.jersey.client.urlconnection.HTTPSProperties;
+
 import org.apache.ranger.unixusersync.config.UserGroupSyncConfig;
 import org.apache.ranger.unixusersync.model.GetXGroupListResponse;
 import org.apache.ranger.unixusersync.model.GetXUserGroupListResponse;
@@ -62,6 +63,7 @@ import org.apache.ranger.unixusersync.model.XUserGroupInfo;
 import org.apache.ranger.unixusersync.model.XUserInfo;
 import org.apache.ranger.unixusersync.model.UserGroupInfo;
 import org.apache.ranger.usergroupsync.UserGroupSink;
+import org.mortbay.log.Log;
 
 public class PolicyMgrUserGroupBuilder implements UserGroupSink {
        
@@ -266,6 +268,8 @@ public class PolicyMgrUserGroupBuilder implements 
UserGroupSink {
 
        @Override
        public void addOrUpdateUser(String userName, List<String> groups) {
+               
+               UserGroupInfo ugInfo              = new UserGroupInfo();
                XUserInfo user = userName2XUserInfoMap.get(userName) ;
                
                if (groups == null) {
@@ -301,12 +305,17 @@ public class PolicyMgrUserGroupBuilder implements 
UserGroupSink {
                                        delGroups.add(group) ;
                                }
                        }
-                       
+
                        for(String g : addGroups) {
                                LOG.debug("INFO: addPMXAGroupToUser(" + 
userName + "," + g + ")" ) ;
                        }
                        if (! isMockRun) {
-                           addXUserGroupInfo(user, addGroups) ;
+                               if (!addGroups.isEmpty()){
+                                       
ugInfo.setXuserInfo(addXUserInfo(userName));
+                                   
ugInfo.setXgroupInfo(getXGroupInfoList(addGroups));
+                                   addUserGroupInfo(ugInfo);
+                               }
+                               addXUserGroupInfo(user, addGroups) ;
                        }
                        
                        for(String g : delGroups) {
@@ -477,6 +486,38 @@ public class PolicyMgrUserGroupBuilder implements 
UserGroupSink {
                return ret;     
        }
 
+       private void addUserGroupInfo(UserGroupInfo usergroupInfo){
+
+               UserGroupInfo ret = null;
+
+               Client c = getClient();
+
+               WebResource r = c.resource(getURL(PM_ADD_USER_GROUP_INFO_URI));
+
+               Gson gson = new GsonBuilder().create();
+
+               String jsonString = gson.toJson(usergroupInfo);
+               if ( LOG.isDebugEnabled() ) {
+                  LOG.debug("USER GROUP MAPPING" + jsonString);
+               }
+
+               String response = 
r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class,
 jsonString) ;
+               if ( LOG.isDebugEnabled() ) {
+                       LOG.debug("RESPONSE: [" + response + "]") ;
+               }
+               ret = gson.fromJson(response, UserGroupInfo.class);
+
+               if ( ret != null) {
+
+                       XUserInfo xUserInfo = ret.getXuserInfo();
+                       addUserToList(xUserInfo);
+
+                       for(XGroupInfo xGroupInfo : ret.getXgroupInfo()) {
+                               addGroupToList(xGroupInfo);
+                               addUserGroupInfoToList(xUserInfo,xGroupInfo);
+                       }
+               }
+       }
 
        private XUserInfo addXUserInfo(String aUserName) {
                
@@ -522,12 +563,23 @@ public class PolicyMgrUserGroupBuilder implements 
UserGroupSink {
                usergroupInfo.setXgroupInfo(xGroupInfoList);
        }
        
+       private List<XGroupInfo> getXGroupInfoList(List<String> aGroupList) {
+
+               List<XGroupInfo> xGroupInfoList = new ArrayList<XGroupInfo>();
+               for(String groupName : aGroupList) {
+                       XGroupInfo group = 
groupName2XGroupInfoMap.get(groupName) ;
+                       if (group == null) {
+                               group = addXGroupInfo(groupName) ;
+                       }
+                       xGroupInfoList.add(group);
+               }
+               return xGroupInfoList;
+       }
        
 
        
    private XUserGroupInfo addXUserGroupInfo(XUserInfo aUserInfo, XGroupInfo 
aGroupInfo) {
                
-           XUserGroupInfo ret = null ;
           
            XUserGroupInfo ugInfo = new XUserGroupInfo() ;
                
@@ -537,25 +589,7 @@ public class PolicyMgrUserGroupBuilder implements 
UserGroupSink {
                
                // ugInfo.setParentGroupId("1");
                
-        Client c = getClient() ;
-           
-           WebResource r = c.resource(getURL(PM_ADD_USER_GROUP_LINK_URI)) ;
-           
-           Gson gson = new GsonBuilder().create() ;
-
-           String jsonString = gson.toJson(ugInfo) ;
-           
-           String response = 
r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON_TYPE).post(String.class,
 jsonString) ;
-           
-           LOG.debug("RESPONSE: [" + response + "]") ;
-
-           ret = gson.fromJson(response, XUserGroupInfo.class) ;
-           
-           if (ret != null) {
-               addUserGroupToList(ret);
-           }
-               
-               return ret ;
+        return ugInfo;
        }
 
        

Reply via email to