[
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)