[ 
https://issues.apache.org/jira/browse/RANGER-4609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Abhay Kulkarni updated RANGER-4609:
-----------------------------------
    Description: 
As a part of test infrastructure, a file-based tag retriever class is created. 
When the TagEnricher is configured with this class, a plugin gets the tag from 
the configured file.

Please refer to the Service-definition for tag for tagRetrieverClassName in 
enricherOptions.

If the value of this option is set to 

org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever

then, the tags will be fetched for a file named by the value of the enricher 
option 

"serviceTagsFileName".
{code:java}
"contextEnrichers":[
{
"itemId": 1,
"name" : "TagEnricher",
"enricher" : "org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
"enricherOptions" : {
"tagRetrieverClassName": 
"org.apache.ranger.plugin.contextenricher.RangerAdminTagRetriever",
"tagRefresherPollingInterval": 60000
}
}]{code}
This enhancement supports specifying another enricher option "tagFileCount". 
When this is set to a value greater than 0, each successive call made to fetch 
tags will provide tags from the file name obtained by adding a suffix [0.. 
tagFileCount-1].json to the file named by the option "serviceTagsFileName". 
When tag-delta files are set up with appropriate suffixes, this simulates the 
fetching of successive tag-deltas for processing.

 

An example may as follows:
{code:java}
  "contextEnrichers": [
      {
          "itemId": 1,
          "name": "TagEnricher",
          "enricher": 
"org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
"enricherOptions" : 
{"tagRetrieverClassName":"org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever",
 "tagRefresherPollingInterval":1000, 
"serviceTagsFileName":"testdata/test_hive_tag.json", "deDupTags": "false", 
"tagFileCount": "2"}
      }
  ] {code}
where testdata directory contains the following files:

test_hive_tag.json : 
{code:java}
{
    "op": "add_or_update",
    "serviceName": "test_hive",
    "tagVersion": 5,
    "tagDefinitions": {
        "1": {
            "name": "PII",
            "source": "Atlas",
            "attributeDefs": [],
            "id": 1,
            "isEnabled": true,
            "version": 1
        }
    },
    "tags": {
        "1": {
            "type": "PII",
            "owner": 0,
            "attributes": {},
            "options": {},
            "validityPeriods": [],
            "id": 1,
            "isEnabled": true
        }
    },
    "serviceResources": [
        {
            "serviceName": "test_hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "default"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "sample_07"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            },
            "id": 1,
            "isEnabled": true,
            "version": 2
        }
    ],
    "resourceToTagIds": {
        "1": [
            1
        ]
    },
    "isDelta": false,
    "tagsChangeExtent": "ALL",
    "cachedTags": {}
} {code}
file test_hive_tag.json_0.json
{code:java}
{
    "op": "add_or_update",
    "serviceName": "test_hive",
    "tagVersion": 4,
    "tagDefinitions": {
        "2": {
            "id": 2,
            "isEnabled": true,
            "version": 1,
            "name": "TEST_TAG",
            "source": "Atlas",
            "attributeDefs": []
        }
    },
    "tags": {
        "1": {
            "id": 1,
            "isEnabled": true,
            "type": "PII",
            "owner": 0,
            "attributes": {},
            "options": {},
            "validityPeriods": []
        },
        "2": {
            "id": 2,
            "isEnabled": true,
            "type": "TEST_TAG",
            "owner": 0,
            "attributes": {},
            "options": {},
            "validityPeriods": []
        }
    },
    "serviceResources": [
        {
            "id": 1,
            "isEnabled": true,
            "version": 4,
            "serviceName": "test_hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "default"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "sample_07"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            }
        }
    ],
    "resourceToTagIds": {
        "1": [
            1,
            2
        ]
    },
    "isDelta": true,
    "tagsChangeExtent": "SERVICE_RESOURCE"
}
 {code}
file test_hive_tag.json_0.json
{code:java}
{
    "op": "add_or_update",
    "serviceName": "test_hive",
    "tagVersion": 5,
    "tagDefinitions": {},
    "tags": {
        "1": {
            "id": 1,
            "isEnabled": true,
            "type": "PII",
            "owner": 0,
            "attributes": {},
            "options": {},
            "validityPeriods": []
        },
        "2": {
            "id": 2,
            "isEnabled": true,
            "owner": 0,
            "attributes": {},
            "options": {},
            "validityPeriods": []
        }
    },
    "serviceResources": [
        {
            "id": 1,
            "isEnabled": true,
            "version": 6,
            "serviceName": "test_hive",
            "resourceElements": {
                "database": {
                    "values": [
                        "default"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                },
                "table": {
                    "values": [
                        "sample_07"
                    ],
                    "isExcludes": false,
                    "isRecursive": false
                }
            }
        }
    ],
    "resourceToTagIds": {
        "1": [
            1
        ]
    },
    "isDelta": true,
    "tagsChangeExtent": "SERVICE_RESOURCE"
}
 {code}

  was:
As a part of test infrastructure, a file-based tag retriever class is created. 
When the TagEnricher is configured with this class, a plugin gets the tag from 
the configured file.

Please refer to the Service-definition for tag for tagRetrieverClassName in 
enricherOptions.

If the value of this option is set to 

org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever

then, the tags will be fetched for a file named by the value of the enricher 
option 

"serviceTagsFileName".
{code:java}
"contextEnrichers":[
{
"itemId": 1,
"name" : "TagEnricher",
"enricher" : "org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
"enricherOptions" : {
"tagRetrieverClassName": 
"org.apache.ranger.plugin.contextenricher.RangerAdminTagRetriever",
"tagRefresherPollingInterval": 60000
}
}]{code}
This enhancement supports specifying another enricher option "tagFileCount". 
When this is set to a value greater than 0, each successive call made to fetch 
tags will provide tags from the file name obtained by adding a suffix [0.. 
tagFileCount-1].json to the file named by the option "serviceTagsFileName". 
When tag-delta files are set up with appropriate suffixes, this simulates the 
fetching of successive tag-deltas for processing.


> Support in File-based Tag Retriever to provide tag-deltas
> ---------------------------------------------------------
>
>                 Key: RANGER-4609
>                 URL: https://issues.apache.org/jira/browse/RANGER-4609
>             Project: Ranger
>          Issue Type: Improvement
>          Components: Ranger
>            Reporter: Abhay Kulkarni
>            Assignee: Abhay Kulkarni
>            Priority: Major
>
> As a part of test infrastructure, a file-based tag retriever class is 
> created. When the TagEnricher is configured with this class, a plugin gets 
> the tag from the configured file.
> Please refer to the Service-definition for tag for tagRetrieverClassName in 
> enricherOptions.
> If the value of this option is set to 
> org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever
> then, the tags will be fetched for a file named by the value of the enricher 
> option 
> "serviceTagsFileName".
> {code:java}
> "contextEnrichers":[
> {
> "itemId": 1,
> "name" : "TagEnricher",
> "enricher" : "org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
> "enricherOptions" : {
> "tagRetrieverClassName": 
> "org.apache.ranger.plugin.contextenricher.RangerAdminTagRetriever",
> "tagRefresherPollingInterval": 60000
> }
> }]{code}
> This enhancement supports specifying another enricher option "tagFileCount". 
> When this is set to a value greater than 0, each successive call made to 
> fetch tags will provide tags from the file name obtained by adding a suffix 
> [0.. tagFileCount-1].json to the file named by the option 
> "serviceTagsFileName". When tag-delta files are set up with appropriate 
> suffixes, this simulates the fetching of successive tag-deltas for processing.
>  
> An example may as follows:
> {code:java}
>   "contextEnrichers": [
>       {
>           "itemId": 1,
>           "name": "TagEnricher",
>           "enricher": 
> "org.apache.ranger.plugin.contextenricher.RangerTagEnricher",
> "enricherOptions" : 
> {"tagRetrieverClassName":"org.apache.ranger.plugin.contextenricher.RangerFileBasedTagRetriever",
>  "tagRefresherPollingInterval":1000, 
> "serviceTagsFileName":"testdata/test_hive_tag.json", "deDupTags": "false", 
> "tagFileCount": "2"}
>       }
>   ] {code}
> where testdata directory contains the following files:
> test_hive_tag.json : 
> {code:java}
> {
>     "op": "add_or_update",
>     "serviceName": "test_hive",
>     "tagVersion": 5,
>     "tagDefinitions": {
>         "1": {
>             "name": "PII",
>             "source": "Atlas",
>             "attributeDefs": [],
>             "id": 1,
>             "isEnabled": true,
>             "version": 1
>         }
>     },
>     "tags": {
>         "1": {
>             "type": "PII",
>             "owner": 0,
>             "attributes": {},
>             "options": {},
>             "validityPeriods": [],
>             "id": 1,
>             "isEnabled": true
>         }
>     },
>     "serviceResources": [
>         {
>             "serviceName": "test_hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "default"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "sample_07"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             },
>             "id": 1,
>             "isEnabled": true,
>             "version": 2
>         }
>     ],
>     "resourceToTagIds": {
>         "1": [
>             1
>         ]
>     },
>     "isDelta": false,
>     "tagsChangeExtent": "ALL",
>     "cachedTags": {}
> } {code}
> file test_hive_tag.json_0.json
> {code:java}
> {
>     "op": "add_or_update",
>     "serviceName": "test_hive",
>     "tagVersion": 4,
>     "tagDefinitions": {
>         "2": {
>             "id": 2,
>             "isEnabled": true,
>             "version": 1,
>             "name": "TEST_TAG",
>             "source": "Atlas",
>             "attributeDefs": []
>         }
>     },
>     "tags": {
>         "1": {
>             "id": 1,
>             "isEnabled": true,
>             "type": "PII",
>             "owner": 0,
>             "attributes": {},
>             "options": {},
>             "validityPeriods": []
>         },
>         "2": {
>             "id": 2,
>             "isEnabled": true,
>             "type": "TEST_TAG",
>             "owner": 0,
>             "attributes": {},
>             "options": {},
>             "validityPeriods": []
>         }
>     },
>     "serviceResources": [
>         {
>             "id": 1,
>             "isEnabled": true,
>             "version": 4,
>             "serviceName": "test_hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "default"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "sample_07"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             }
>         }
>     ],
>     "resourceToTagIds": {
>         "1": [
>             1,
>             2
>         ]
>     },
>     "isDelta": true,
>     "tagsChangeExtent": "SERVICE_RESOURCE"
> }
>  {code}
> file test_hive_tag.json_0.json
> {code:java}
> {
>     "op": "add_or_update",
>     "serviceName": "test_hive",
>     "tagVersion": 5,
>     "tagDefinitions": {},
>     "tags": {
>         "1": {
>             "id": 1,
>             "isEnabled": true,
>             "type": "PII",
>             "owner": 0,
>             "attributes": {},
>             "options": {},
>             "validityPeriods": []
>         },
>         "2": {
>             "id": 2,
>             "isEnabled": true,
>             "owner": 0,
>             "attributes": {},
>             "options": {},
>             "validityPeriods": []
>         }
>     },
>     "serviceResources": [
>         {
>             "id": 1,
>             "isEnabled": true,
>             "version": 6,
>             "serviceName": "test_hive",
>             "resourceElements": {
>                 "database": {
>                     "values": [
>                         "default"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 },
>                 "table": {
>                     "values": [
>                         "sample_07"
>                     ],
>                     "isExcludes": false,
>                     "isRecursive": false
>                 }
>             }
>         }
>     ],
>     "resourceToTagIds": {
>         "1": [
>             1
>         ]
>     },
>     "isDelta": true,
>     "tagsChangeExtent": "SERVICE_RESOURCE"
> }
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to