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;
}