You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ranger.apache.org by Anand Nadar <na...@gmail.com> on 2024/03/18 14:23:20 UTC

Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

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

Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (POST - service/tags/resource/service/{serviceName}/resource)
Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs
-----

  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java f9f80c9ac 
  agents-common/src/main/java/org/apache/ranger/plugin/util/JsonUtilsV2.java ca61131dd 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/1/


Testing
-------

Validated POST - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Validated response of service/tags/resources/paginated api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710771145888,
    "list": [
        {
            "id": 4,
            "guid": "8f18d7b3-f885-4687-9438-ededdf340b18",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710429722000,
            "updateTime": 1710431917000,
            "version": 8,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "hrDb1"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "employee"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "resourceSignature": "483ce23070c3243ffd6e9ebc4a2bc2c90553cbab0ed810bcae22ff6d76e9ca33",
            "associatedTags": [
                "PII_NAME",
                "SSN"
            ]
        }
        
    ],
    "listSize": 1
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.

> On March 18, 2024, 9:08 p.m., Madhan Neethiraj wrote:
> > agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java
> > Lines 39 (patched)
> > <https://reviews.apache.org/r/74941/diff/1/?file=2285968#file2285968line39>
> >
> >     - I suggest changing datatype for associatedTags from List<String> to List<RangerTag>
> >     - I suggest removing resourceSignature as this is not necessary in the model class. This field is necessary only in entity class
> >     - any specific usecase for additionalInfo field?

Done


- Anand


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


On March 19, 2024, 6:35 p.m., Anand Nadar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74941/
> -----------------------------------------------------------
> 
> (Updated March 19, 2024, 6:35 p.m.)
> 
> 
> Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.
> 
> 
> Bugs: RANGER-4749
>     https://issues.apache.org/jira/browse/RANGER-4749
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
> Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
> Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
> 1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
> 2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
> 
> 
> Diffs
> -----
> 
>   agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
>   agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
>   agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java f9f80c9ac 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
>   security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
>   security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
>   security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
>   security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
>   security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 
> 
> 
> Diff: https://reviews.apache.org/r/74941/diff/2/
> 
> 
> Testing
> -------
> 
> Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
> Sample URL - /service/tags/resource/service/hive8/resource?resource:column.values=NAME&resource:column.isExcludes=false&resource:column.isRecursive=aa&resource:database.values=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table.values=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true
> 
> Validated response of service/tags/resources/paginated api 
> Sample response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710869881240,
>     "resourceList": [
>         {
>             "id": 2,
>             "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1707986829922,
>             "updateTime": 1708247930089,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "column": {
>                     "values": [
>                         "*"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "tbl1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 2,
>                     "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1707986831329,
>                     "updateTime": 1707986831556,
>                     "type": "PII_NAME",
>                     "owner": 0,
>                     "attributes": {
>                         "lastname": "stark"
>                     }
>                 }
>             ]
>         }
>     ]
> }
> 
> Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.
> 
> 
> Thanks,
> 
> Anand Nadar
> 
>


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Madhan Neethiraj <ma...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/#review226331
-----------------------------------------------------------




agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java
Lines 39 (patched)
<https://reviews.apache.org/r/74941/#comment314572>

    - I suggest changing datatype for associatedTags from List<String> to List<RangerTag>
    - I suggest removing resourceSignature as this is not necessary in the model class. This field is necessary only in entity class
    - any specific usecase for additionalInfo field?



agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
Line 105 (original), 105 (patched)
<https://reviews.apache.org/r/74941/#comment314573>

    Instead of updating the existing method, consider introducing a new method: getPaginatedServiceResourcesWithTags()



security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
Lines 375 (patched)
<https://reviews.apache.org/r/74941/#comment314574>

    isMultiValue will be true here, given the if at #372. Please review and remove the else clause at #379.



security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
Lines 528 (patched)
<https://reviews.apache.org/r/74941/#comment314575>

    isMultiValue will be true here, given the if at #525. Please review and remove the else clause at #532.



security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
Lines 1022 (patched)
<https://reviews.apache.org/r/74941/#comment314576>

    POST for getServiceResource() doesn't seem right. I suggest changing this to GET and get the resourceElements via query params - like: service/hive/resource?resource:database=db1&resource:table=tbl1&resource:column=col1
    
    Note that isExcludes is always false in RangerServiceResource, and isRecursive is always true for resources that support recusion.


- Madhan Neethiraj


On March 18, 2024, 2:23 p.m., Anand Nadar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74941/
> -----------------------------------------------------------
> 
> (Updated March 18, 2024, 2:23 p.m.)
> 
> 
> Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.
> 
> 
> Bugs: RANGER-4749
>     https://issues.apache.org/jira/browse/RANGER-4749
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (POST - service/tags/resource/service/{serviceName}/resource)
> Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
> Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
> 1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
> 2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
> 
> 
> Diffs
> -----
> 
>   agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
>   agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java f9f80c9ac 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/JsonUtilsV2.java ca61131dd 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
>   security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
>   security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
>   security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
>   security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
>   security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 
> 
> 
> Diff: https://reviews.apache.org/r/74941/diff/1/
> 
> 
> Testing
> -------
> 
> Validated POST - service/tags/resource/service/{serviceName}/resource with postive and negative case.
> Validated response of service/tags/resources/paginated api 
> Sample response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710771145888,
>     "list": [
>         {
>             "id": 4,
>             "guid": "8f18d7b3-f885-4687-9438-ededdf340b18",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710429722000,
>             "updateTime": 1710431917000,
>             "version": 8,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "hrDb1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "employee"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "resourceSignature": "483ce23070c3243ffd6e9ebc4a2bc2c90553cbab0ed810bcae22ff6d76e9ca33",
>             "associatedTags": [
>                 "PII_NAME",
>                 "SSN"
>             ]
>         }
>         
>     ],
>     "listSize": 1
> }
> 
> Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.
> 
> 
> Thanks,
> 
> Anand Nadar
> 
>


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.

> On March 20, 2024, 3:50 p.m., Madhan Neethiraj wrote:
> > agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
> > Lines 79 (patched)
> > <https://reviews.apache.org/r/74941/diff/5/?file=2286028#file2286028line79>
> >
> >     - please update 'Testing Done' section in this review with an example of search by tagNames, especially with multiple names.
> >     - REST endpoints in 'Description' and 'Testing Done' are different. Please review and update.

Done


> On March 20, 2024, 3:50 p.m., Madhan Neethiraj wrote:
> > agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
> > Lines 92 (patched)
> > <https://reviews.apache.org/r/74941/diff/5/?file=2286028#file2286028line92>
> >
> >     Is query-param 'resourceElements' used after the recent update to this patch, given resources are specified in query-params using prefix "resource:"?

resourceElements query param is used for freetext search on resources in GET service/tags/resources/paginated api. This is not done using "resource:" prefix.

"resource:" prefix is used in GET service/tags/resource/service/{serviceName}/resource api


> On March 20, 2024, 3:50 p.m., Madhan Neethiraj wrote:
> > security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java
> > Lines 34 (patched)
> > <https://reviews.apache.org/r/74941/diff/5/?file=2286034#file2286034line34>
> >
> >     Is it necessary to initialize with "new ArrayList<>"? How about setting to null here?

Initialised it to null


- Anand


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


On March 21, 2024, 5:36 a.m., Anand Nadar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74941/
> -----------------------------------------------------------
> 
> (Updated March 21, 2024, 5:36 a.m.)
> 
> 
> Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.
> 
> 
> Bugs: RANGER-4749
>     https://issues.apache.org/jira/browse/RANGER-4749
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)
> 
> Added list of tags to the service/tags/resource/paginated api which will return all the tags which are associated with the resource.
> 
> Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
> 1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
> 2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
> 
> 
> Diffs
> -----
> 
>   agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
>   agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
>   security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
>   security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
>   security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
>   security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
>   security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 
> 
> 
> Diff: https://reviews.apache.org/r/74941/diff/7/
> 
> 
> Testing
> -------
> 
> Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
> Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2
> 
> Response:
> {
>     "id": 21,
>     "guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
>     "isEnabled": true,
>     "createdBy": "Admin",
>     "updatedBy": "Admin",
>     "createTime": 1710999025297,
>     "updateTime": 1710999025362,
>     "version": 4,
>     "serviceName": "hive8",
>     "resourceElements": {
>         "column": {
>             "values": [
>                 "NAME"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         },
>         "database": {
>             "values": [
>                 "HR-DB-2",
>                 "HR-DB-1"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         },
>         "table": {
>             "values": [
>                 "EMPLOYEE"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         }
>     },
>     "resourceSignature": "24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
> }
> 
> The values of resource can be multiple - resource:database=db1&resource:database=db2
> For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true
> 
> Validated response of service/tags/resources/paginated?tagServiceName=hive api 
> Sample response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710869881240,
>     "resourceList": [
>         {
>             "id": 2,
>             "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1707986829922,
>             "updateTime": 1708247930089,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "column": {
>                     "values": [
>                         "*"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "tbl1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 2,
>                     "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1707986831329,
>                     "updateTime": 1707986831556,
>                     "type": "PII_NAME",
>                     "owner": 0,
>                     "attributes": {
>                         "lastname": "stark"
>                     }
>                 }
>             ]
>         }
>     ]
> }
> 
> Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.
> 
> Case 1: Freetext search on resource in service/tags/resources/paginated api
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_
> 
> Response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710997850035,
>     "resourceList": [
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN
> 
> Response:
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 2,
>     "resultSize": 2,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710997939080,
>     "resourceList": [
>         {
>             "id": 19,
>             "guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997450099,
>             "updateTime": 1710997450146,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "employee"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 28,
>                     "guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997450106,
>                     "updateTime": 1710997450109,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 },
>                 {
>                     "id": 29,
>                     "guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997450138,
>                     "updateTime": 1710997450140,
>                     "type": "SSN",
>                     "owner": 0
>                 }
>             ]
>         },
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> Case 3: With Freetext search and mutiple search on tagNames
> 
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN
> 
> Response:
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710998019080,
>     "resourceList": [
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> 
> Thanks,
> 
> Anand Nadar
> 
>


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Madhan Neethiraj <ma...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/#review226340
-----------------------------------------------------------




agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
Lines 79 (patched)
<https://reviews.apache.org/r/74941/#comment314582>

    - please update 'Testing Done' section in this review with an example of search by tagNames, especially with multiple names.
    - REST endpoints in 'Description' and 'Testing Done' are different. Please review and update.



agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
Lines 92 (patched)
<https://reviews.apache.org/r/74941/#comment314581>

    Is query-param 'resourceElements' used after the recent update to this patch, given resources are specified in query-params using prefix "resource:"?



security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java
Lines 34 (patched)
<https://reviews.apache.org/r/74941/#comment314583>

    Is it necessary to initialize with "new ArrayList<>"? How about setting to null here?



security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java
Lines 62 (patched)
<https://reviews.apache.org/r/74941/#comment314584>

    List<?> => List<RangerServiceResourceWithTags>


- Madhan Neethiraj


On March 20, 2024, 8:34 a.m., Anand Nadar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74941/
> -----------------------------------------------------------
> 
> (Updated March 20, 2024, 8:34 a.m.)
> 
> 
> Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.
> 
> 
> Bugs: RANGER-4749
>     https://issues.apache.org/jira/browse/RANGER-4749
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
> Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
> Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
> 1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
> 2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
> 
> 
> Diffs
> -----
> 
>   agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
>   agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
>   security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
>   security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
>   security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
>   security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
>   security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 
> 
> 
> Diff: https://reviews.apache.org/r/74941/diff/5/
> 
> 
> Testing
> -------
> 
> Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
> Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB2
> 
> The values of resource can be multiple - resource:database=db1&resource:database=db2
> For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true
> 
> Validated response of service/tags/resources/paginated api 
> Sample response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710869881240,
>     "resourceList": [
>         {
>             "id": 2,
>             "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1707986829922,
>             "updateTime": 1708247930089,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "column": {
>                     "values": [
>                         "*"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "tbl1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 2,
>                     "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1707986831329,
>                     "updateTime": 1707986831556,
>                     "type": "PII_NAME",
>                     "owner": 0,
>                     "attributes": {
>                         "lastname": "stark"
>                     }
>                 }
>             ]
>         }
>     ]
> }
> 
> Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.
> 
> 
> Thanks,
> 
> Anand Nadar
> 
>


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Madhan Neethiraj <ma...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/#review226346
-----------------------------------------------------------


Ship it!




Ship It!

- Madhan Neethiraj


On March 23, 2024, 5:07 a.m., Anand Nadar wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/74941/
> -----------------------------------------------------------
> 
> (Updated March 23, 2024, 5:07 a.m.)
> 
> 
> Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.
> 
> 
> Bugs: RANGER-4749
>     https://issues.apache.org/jira/browse/RANGER-4749
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)
> 
> Added list of tags to the service/tags/resource/paginated api which will return all the tags which are associated with the resource.
> 
> Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
> 1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
> 2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
> 
> 
> Diffs
> -----
> 
>   agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
>   agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
>   agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
>   security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
>   security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
>   security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
>   security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
>   security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
>   security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 
> 
> 
> Diff: https://reviews.apache.org/r/74941/diff/8/
> 
> 
> Testing
> -------
> 
> Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
> Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2
> 
> Response:
> {
>     "id": 21,
>     "guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
>     "isEnabled": true,
>     "createdBy": "Admin",
>     "updatedBy": "Admin",
>     "createTime": 1710999025297,
>     "updateTime": 1710999025362,
>     "version": 4,
>     "serviceName": "hive8",
>     "resourceElements": {
>         "column": {
>             "values": [
>                 "NAME"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         },
>         "database": {
>             "values": [
>                 "HR-DB-2",
>                 "HR-DB-1"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         },
>         "table": {
>             "values": [
>                 "EMPLOYEE"
>             ],
>             "isExcludes": false,
>             "isRecursive": true
>         }
>     },
>     "resourceSignature": "24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
> }
> 
> The values of resource can be multiple - resource:database=db1&resource:database=db2
> For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true
> 
> Validated response of service/tags/resources/paginated?tagServiceName=hive api 
> Sample response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710869881240,
>     "resourceList": [
>         {
>             "id": 2,
>             "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1707986829922,
>             "updateTime": 1708247930089,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "column": {
>                     "values": [
>                         "*"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "tbl1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 2,
>                     "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1707986831329,
>                     "updateTime": 1707986831556,
>                     "type": "PII_NAME",
>                     "owner": 0,
>                     "attributes": {
>                         "lastname": "stark"
>                     }
>                 }
>             ]
>         }
>     ]
> }
> 
> Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.
> 
> Case 1: Freetext search on resource in service/tags/resources/paginated api
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_
> 
> Response
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710997850035,
>     "resourceList": [
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN
> 
> Response:
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 2,
>     "resultSize": 2,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710997939080,
>     "resourceList": [
>         {
>             "id": 19,
>             "guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997450099,
>             "updateTime": 1710997450146,
>             "version": 3,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "db1"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "employee"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 28,
>                     "guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997450106,
>                     "updateTime": 1710997450109,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 },
>                 {
>                     "id": 29,
>                     "guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997450138,
>                     "updateTime": 1710997450140,
>                     "type": "SSN",
>                     "owner": 0
>                 }
>             ]
>         },
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> Case 3: With Freetext search and mutiple search on tagNames
> 
> URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN
> 
> Response:
> {
>     "startIndex": 0,
>     "pageSize": 5,
>     "totalCount": 1,
>     "resultSize": 1,
>     "sortType": "asc",
>     "sortBy": "resourceId",
>     "queryTimeMS": 1710998019080,
>     "resourceList": [
>         {
>             "id": 20,
>             "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
>             "isEnabled": true,
>             "createdBy": "Admin",
>             "updatedBy": "Admin",
>             "createTime": 1710997840878,
>             "updateTime": 1710997840890,
>             "version": 2,
>             "serviceName": "hive",
>             "resourceElements": {
>                 "column": {
>                     "values": [
>                         "name"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "database": {
>                     "values": [
>                         "Customer"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 },
>                 "table": {
>                     "values": [
>                         "Cust_Personal_Details"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": true
>                 }
>             },
>             "associatedTags": [
>                 {
>                     "id": 30,
>                     "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
>                     "isEnabled": true,
>                     "createdBy": "Admin",
>                     "updatedBy": "Admin",
>                     "createTime": 1710997840881,
>                     "updateTime": 1710997840883,
>                     "type": "PII_NAME",
>                     "owner": 0
>                 }
>             ]
>         }
>     ]
> }
> 
> 
> Thanks,
> 
> Anand Nadar
> 
>


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 23, 2024, 5:07 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)

Added list of tags to the service/tags/resource/paginated api which will return all the tags which are associated with the resource.

Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/8/

Changes: https://reviews.apache.org/r/74941/diff/7-8/


Testing
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2

Response:
{
    "id": 21,
    "guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
    "isEnabled": true,
    "createdBy": "Admin",
    "updatedBy": "Admin",
    "createTime": 1710999025297,
    "updateTime": 1710999025362,
    "version": 4,
    "serviceName": "hive8",
    "resourceElements": {
        "column": {
            "values": [
                "NAME"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "database": {
            "values": [
                "HR-DB-2",
                "HR-DB-1"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "table": {
            "values": [
                "EMPLOYEE"
            ],
            "isExcludes": false,
            "isRecursive": true
        }
    },
    "resourceSignature": "24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
}

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated?tagServiceName=hive api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.

Case 1: Freetext search on resource in service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_

Response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997850035,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 2,
    "resultSize": 2,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997939080,
    "resourceList": [
        {
            "id": 19,
            "guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997450099,
            "updateTime": 1710997450146,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "employee"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 28,
                    "guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450106,
                    "updateTime": 1710997450109,
                    "type": "PII_NAME",
                    "owner": 0
                },
                {
                    "id": 29,
                    "guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450138,
                    "updateTime": 1710997450140,
                    "type": "SSN",
                    "owner": 0
                }
            ]
        },
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 3: With Freetext search and mutiple search on tagNames

URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710998019080,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 21, 2024, 5:36 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)

Added list of tags to the service/tags/resource/paginated api which will return all the tags which are associated with the resource.

Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/7/

Changes: https://reviews.apache.org/r/74941/diff/6-7/


Testing
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2

Response:
{
    "id": 21,
    "guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
    "isEnabled": true,
    "createdBy": "Admin",
    "updatedBy": "Admin",
    "createTime": 1710999025297,
    "updateTime": 1710999025362,
    "version": 4,
    "serviceName": "hive8",
    "resourceElements": {
        "column": {
            "values": [
                "NAME"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "database": {
            "values": [
                "HR-DB-2",
                "HR-DB-1"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "table": {
            "values": [
                "EMPLOYEE"
            ],
            "isExcludes": false,
            "isRecursive": true
        }
    },
    "resourceSignature": "24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
}

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated?tagServiceName=hive api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.

Case 1: Freetext search on resource in service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_

Response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997850035,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 2,
    "resultSize": 2,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997939080,
    "resourceList": [
        {
            "id": 19,
            "guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997450099,
            "updateTime": 1710997450146,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "employee"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 28,
                    "guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450106,
                    "updateTime": 1710997450109,
                    "type": "PII_NAME",
                    "owner": 0
                },
                {
                    "id": 29,
                    "guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450138,
                    "updateTime": 1710997450140,
                    "type": "SSN",
                    "owner": 0
                }
            ]
        },
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 3: With Freetext search and mutiple search on tagNames

URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710998019080,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 21, 2024, 5:36 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description (updated)
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)

Added list of tags to the service/tags/resource/paginated api which will return all the tags which are associated with the resource.

Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/6/

Changes: https://reviews.apache.org/r/74941/diff/5-6/


Testing (updated)
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2

Response:
{
    "id": 21,
    "guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
    "isEnabled": true,
    "createdBy": "Admin",
    "updatedBy": "Admin",
    "createTime": 1710999025297,
    "updateTime": 1710999025362,
    "version": 4,
    "serviceName": "hive8",
    "resourceElements": {
        "column": {
            "values": [
                "NAME"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "database": {
            "values": [
                "HR-DB-2",
                "HR-DB-1"
            ],
            "isExcludes": false,
            "isRecursive": true
        },
        "table": {
            "values": [
                "EMPLOYEE"
            ],
            "isExcludes": false,
            "isRecursive": true
        }
    },
    "resourceSignature": "24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
}

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated?tagServiceName=hive api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.

Case 1: Freetext search on resource in service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_

Response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997850035,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 2,
    "resultSize": 2,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710997939080,
    "resourceList": [
        {
            "id": 19,
            "guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997450099,
            "updateTime": 1710997450146,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "employee"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 28,
                    "guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450106,
                    "updateTime": 1710997450109,
                    "type": "PII_NAME",
                    "owner": 0
                },
                {
                    "id": 29,
                    "guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997450138,
                    "updateTime": 1710997450140,
                    "type": "SSN",
                    "owner": 0
                }
            ]
        },
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}

Case 3: With Freetext search and mutiple search on tagNames

URL - /service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN

Response:
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710998019080,
    "resourceList": [
        {
            "id": 20,
            "guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1710997840878,
            "updateTime": 1710997840890,
            "version": 2,
            "serviceName": "hive",
            "resourceElements": {
                "column": {
                    "values": [
                        "name"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "database": {
                    "values": [
                        "Customer"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                },
                "table": {
                    "values": [
                        "Cust_Personal_Details"
                    ],
                    "isExcludes": false,
                    "isRecursive": true
                }
            },
            "associatedTags": [
                {
                    "id": 30,
                    "guid": "7c2a3070-5046-4352-b427-b38e3973a305",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1710997840881,
                    "updateTime": 1710997840883,
                    "type": "PII_NAME",
                    "owner": 0
                }
            ]
        }
    ]
}


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 20, 2024, 8:34 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/5/

Changes: https://reviews.apache.org/r/74941/diff/4-5/


Testing
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB2

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 20, 2024, 8:31 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/4/

Changes: https://reviews.apache.org/r/74941/diff/3-4/


Testing
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB2

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 20, 2024, 8:14 a.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java f9f80c9ac 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/3/

Changes: https://reviews.apache.org/r/74941/diff/2-3/


Testing (updated)
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB2

The values of resource can be multiple - resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey - resource:database.isExcludes=false&resource:databasase.isRecursive=true

Validated response of service/tags/resources/paginated api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.


Thanks,

Anand Nadar


Re: Review Request 74941: RANGER-4749: Tag api to get serviceResource by resource. Getting list of associated tags in resources/paginated api's response.

Posted by Anand Nadar <na...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------

(Updated March 19, 2024, 6:35 p.m.)


Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya, Siddhesh Phatak, and Subhrat Chaudhary.


Bugs: RANGER-4749
    https://issues.apache.org/jira/browse/RANGER-4749


Repository: ranger


Description (updated)
-------

Created new tag api which will get the service resource by comparing the resouse signature of the resource from request. (GET - service/tags/resource/service/{serviceName}/resource)
Added list of tagNames to the resource/paginated api which will return all the tagNames which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in service/tags/resources/paginated api - 
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 - service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME


Diffs (updated)
-----

  agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java 716a1a9ea 
  agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java PRE-CREATION 
  agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java f9f80c9ac 
  agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b0fad0aea 
  security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131 
  security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java c816ad229 
  security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java PRE-CREATION 
  security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java PRE-CREATION 
  security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java d6ebbc54d 
  security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java 98d87bc0a 


Diff: https://reviews.apache.org/r/74941/diff/2/

Changes: https://reviews.apache.org/r/74941/diff/1-2/


Testing (updated)
-------

Validated GET - service/tags/resource/service/{serviceName}/resource with postive and negative case.
Sample URL - /service/tags/resource/service/hive8/resource?resource:column.values=NAME&resource:column.isExcludes=false&resource:column.isRecursive=aa&resource:database.values=HR-DB&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table.values=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true

Validated response of service/tags/resources/paginated api 
Sample response
{
    "startIndex": 0,
    "pageSize": 5,
    "totalCount": 1,
    "resultSize": 1,
    "sortType": "asc",
    "sortBy": "resourceId",
    "queryTimeMS": 1710869881240,
    "resourceList": [
        {
            "id": 2,
            "guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
            "isEnabled": true,
            "createdBy": "Admin",
            "updatedBy": "Admin",
            "createTime": 1707986829922,
            "updateTime": 1708247930089,
            "version": 3,
            "serviceName": "hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "db1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "column": {
                    "values": [
                        "*"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "tbl1"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "associatedTags": [
                {
                    "id": 2,
                    "guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
                    "isEnabled": true,
                    "createdBy": "Admin",
                    "updatedBy": "Admin",
                    "createTime": 1707986831329,
                    "updateTime": 1707986831556,
                    "type": "PII_NAME",
                    "owner": 0,
                    "attributes": {
                        "lastname": "stark"
                    }
                }
            ]
        }
    ]
}

Validated service/tags/resources/paginated api with resourceElements and tagNames for freestext resource search and multiple tagNames search respectively.


Thanks,

Anand Nadar