You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by rm...@apache.org on 2015/04/25 10:41:23 UTC

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

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 <rm...@hortonworks.com>
Authored: Sat Apr 25 01:41:16 2015 -0700
Committer: rmani <rm...@hortonworks.com>
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;
 	}