> On March 22, 2023, 7:35 p.m., Madhan Neethiraj wrote:
> > security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
> > Line 832 (original), 833 (patched)
> > <https://reviews.apache.org/r/74349/diff/1/?file=2274970#file2274970line833>
> >
> >     Instead of introducing RangerUsersAndGroups, I suggest to use existing 
> > RangerRole. This class also enables:
> >     - adding roles to a role
> >     - adding both admin and non-admin role members
> >     
> >     
> >     Also, I would recommend not changing signature of existing public 
> > methods - to avoid breaking clients using these methods. Instead, consider 
> > adding new methods.

Hi Madhan,

   Do we need to keep both old and new behaviour like this 
   Or something different ?

   In PublicAPIsv2.java

    @PUT
        @Path("/api/roles/{id}/addUsersAndGroups")
        @Consumes({ "application/json" })
        @Produces({ "application/json" })
        public RangerRole addUsersAndGroupsByRoleId(@PathParam("id") Long 
roleId,  RangerRole rangerRole, @DefaultValue("false") @QueryParam("isAdmin") 
Boolean isAdmin, @Context HttpServletRequest request) {
                if (logger.isDebugEnabled()) {
                        logger.debug("==> PublicAPIsv2.addUsersAndGroups(id=" + 
roleId + ", rangerRole=" + rangerRole + ", isAdmin=" + isAdmin + ")");
                }

                RangerRole rangerRole = 
roleREST.addUsersAndGroupsByRoleId(roleId, rangerUsersAndGroups, isAdmin);

                if (logger.isDebugEnabled()) {
                        logger.debug("<== PublicAPIsv2.addUsersAndGroups(id=" + 
roleId + ", rangerUsersAndGroups=" + rangerUsersAndGroups + ", isAdmin=" + 
isAdmin + ")");
                }
                return rangerRole;
        }


        public RangerRole addUsersAndGroups(Long roleId, List<String> users, 
List<String> groups, Boolean isAdmin) {
                return roleREST.addUsersAndGroups(roleId, users, groups, 
isAdmin);
        }


In RoleREST.java 


 @PUT
    @Path("/roles/{id}/addUsersAndGroups")
    @Consumes({ "application/json" })
    @Produces({ "application/json" })
    public RangerRole addUsersAndGroupsByRoleId(@PathParam("id") Long roleId, 
RangerRole rangerRole, @DefaultValue("false") @QueryParam("isAdmin") Boolean 
isAdmin) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("==> addUsersAndGroups(id=" + roleId + ", rangerRole=" + 
rangerRole + ", isAdmin=" + isAdmin + ")");
        }

        //Fetch the groups and users from rangerRole and pass 

        List<String> users = new ArrayList<>();
        List<String> groups = new ArrayList<>();
        if (CollectionUtils.isEmpty(rangerRole.getUsers())) {
            users = rangerRole.getUsers().stream().map(roleMember -> 
roleMember.getName()).collect(Collectors.toList());
        }
        
        if (CollectionUtils.isEmpty(rangerRole.getGroups())) {
            groups = rangerRole.getGroups().stream().map(roleMember -> 
roleMember.getName()).collect(Collectors.toList());
        }

        RangerRole rangerRole = addUsersAndGroups(roleId, users, groups, 
isAdmin);

        if (LOG.isDebugEnabled()) {
            LOG.debug("<== addUsersAndGroups(id=" + roleId + ", rangerRole=" + 
rangerRole + ", isAdmin=" + isAdmin + ")");
        }

        return rangerRole;
    }

    public RangerRole addUsersAndGroups(Long roleId, List<String> users, 
List<String> groups, Boolean isAdmin) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("==> addUsersAndGroups(id=" + roleId + ", users=" + 
Arrays.toString(users.toArray()) + ", groups=" + 
Arrays.toString(groups.toArray()) + ", isAdmin=" + isAdmin + ")");
        }


- Ramachandran


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74349/#review225293
-----------------------------------------------------------


On March 15, 2023, 3:24 p.m., Ramachandran Krishnan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74349/
> -----------------------------------------------------------
> 
> (Updated March 15, 2023, 3:24 p.m.)
> 
> 
> Review request for ranger, Don Bosco Durai, Abhay Kulkarni, Madhan Neethiraj, 
> Mehul Parikh, Nikhil P, Pradeep Agrawal, Ramesh Mani, Selvamohan Neethiraj, 
> Sailaja Polavarapu, Subhrat Chaudhary, and Velmurugan Periasamy.
> 
> 
> Bugs: RANGER-4133
>     https://issues.apache.org/jira/browse/RANGER-4133
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Apis:
> 
> API :addUsersAndGroups
> 
> URI:/roles/roles/{id}/addUsersAndGroups
> 
> In the API we mentioned a couple of fields (List<String> users, List<String> 
> groups, Boolean isAdmin). 
> How the caller will pass the fields 
> Proposed Solution:
> Via query Parameter (Limitation: we can not pass more characters as part of 
> URI )
> Via Request payload of List<String> users, List<String> groups, Boolean 
> isAdmin –(RangerUsersAndGroups –Modal mentioned above to accommodate users, 
> groups, isAdmin)
> 
> 
> API :removeUsersAndGroups
> 
> URI:/roles/roles/{id}/removeUsersAndGroups
> 
> 
> In the API we mentioned a couple of fields (List<String> users, List<String> 
> groups)
> How the caller will pass the fields 
> Proposed Solution:
> Via query Parameter (Limitation: we can not pass more characters as part of 
> URI )
> Via Request payload of List<String> users, List<String> groups 
> (RangerUsersAndGroups –Modal mentioned above to accommodate users,groups)
> 
> API :removeAdminFromUsersAndGroups
> 
> URI:/roles/roles/{id}/removeUsersAndGroups
> 
> 
> In the API we mentioned a couple of fields (List<String> users, List<String> 
> groups)
> How the caller will pass the fields 
> Proposed Solution:
> Via query Parameter (Limitation: we can not pass more characters as part of 
> URI )
> Via Request payload of List<String> users, List<String> groups 
> (RangerUsersAndGroups –Modal mentioned above to accommodate users, groups)
> 
> 
> Diffs
> -----
> 
>   
> agents-common/src/main/java/org/apache/ranger/plugin/model/RangerUsersAndGroups.java
>  PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java 
> 85cd7dd67 
>   security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java 4f0edd2b0 
>   security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java 
> 73a593e9f 
>   security-admin/src/test/java/org/apache/ranger/rest/TestRoleREST.java 
> 217c1bba3 
> 
> 
> Diff: https://reviews.apache.org/r/74349/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Ramachandran Krishnan
> 
>

Reply via email to