You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ab...@apache.org on 2018/03/18 21:17:57 UTC
ranger git commit: RANGER-2025: tagsync updates to handle hbase
namespace entity notification
Repository: ranger
Updated Branches:
refs/heads/master 54fab186a -> a1a989d17
RANGER-2025: tagsync updates to handle hbase namespace entity notification
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/a1a989d1
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/a1a989d1
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/a1a989d1
Branch: refs/heads/master
Commit: a1a989d1751204ff216479f96f730ccc1648d679
Parents: 54fab18
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Sun Mar 18 14:17:47 2018 -0700
Committer: Abhay Kulkarni <ak...@hortonworks.com>
Committed: Sun Mar 18 14:17:47 2018 -0700
----------------------------------------------------------------------
.../source/atlas/AtlasHbaseResourceMapper.java | 24 ++++--
.../process/TestHbaseResourceMapper.java | 82 +++++++++++++++++---
2 files changed, 87 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/a1a989d1/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasHbaseResourceMapper.java
----------------------------------------------------------------------
diff --git a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasHbaseResourceMapper.java b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasHbaseResourceMapper.java
index 33e804a..8d712d9 100644
--- a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasHbaseResourceMapper.java
+++ b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasHbaseResourceMapper.java
@@ -28,6 +28,7 @@ import org.apache.ranger.plugin.model.RangerServiceResource;
import org.apache.ranger.tagsync.source.atlasrest.RangerAtlasEntity;
public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
+ public static final String ENTITY_TYPE_HBASE_NAMESPACE = "hbase_namespace";
public static final String ENTITY_TYPE_HBASE_TABLE = "hbase_table";
public static final String ENTITY_TYPE_HBASE_COLUMN_FAMILY = "hbase_column_family";
public static final String ENTITY_TYPE_HBASE_COLUMN = "hbase_column";
@@ -36,6 +37,8 @@ public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
public static final String RANGER_TYPE_HBASE_COLUMN_FAMILY = "column-family";
public static final String RANGER_TYPE_HBASE_COLUMN = "column";
+ public static final String RANGER_NAMESPACE_TABLE_DELIMITER = ":";
+
public static final String[] SUPPORTED_ENTITY_TYPES = { ENTITY_TYPE_HBASE_TABLE, ENTITY_TYPE_HBASE_COLUMN_FAMILY, ENTITY_TYPE_HBASE_COLUMN };
public AtlasHbaseResourceMapper() {
@@ -65,10 +68,16 @@ public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
Map<String, RangerPolicyResource> elements = new HashMap<String, RangerPolicyResource>();
- if (StringUtils.equals(entityType, ENTITY_TYPE_HBASE_TABLE)) {
- String tblName = resourceStr;
- if (StringUtils.isNotEmpty(tblName)) {
- elements.put(RANGER_TYPE_HBASE_TABLE, new RangerPolicyResource(tblName));
+ if (StringUtils.equals(entityType, ENTITY_TYPE_HBASE_NAMESPACE)) {
+ if (StringUtils.isNotEmpty(resourceStr)) {
+ String namespaceName = StringUtils.strip(resourceStr);
+ if (StringUtils.isNotEmpty(namespaceName)) {
+ elements.put(RANGER_TYPE_HBASE_TABLE, new RangerPolicyResource(namespaceName + RANGER_NAMESPACE_TABLE_DELIMITER + "*"));
+ }
+ }
+ } else if (StringUtils.equals(entityType, ENTITY_TYPE_HBASE_TABLE)) {
+ if (StringUtils.isNotEmpty(resourceStr)) {
+ elements.put(RANGER_TYPE_HBASE_TABLE, new RangerPolicyResource(resourceStr));
}
} else if (StringUtils.equals(entityType, ENTITY_TYPE_HBASE_COLUMN_FAMILY)) {
String[] resources = resourceStr.split(QUALIFIED_NAME_DELIMITER);
@@ -79,7 +88,7 @@ public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
tblName = resources[0];
familyName = resources[1];
} else if (resources.length > 2) {
- StringBuffer tblNameBuf = new StringBuffer(resources[0]);
+ StringBuilder tblNameBuf = new StringBuilder(resources[0]);
for (int i = 1; i < resources.length - 1; i++) {
tblNameBuf.append(QUALIFIED_NAME_DELIMITER_CHAR).append(resources[i]);
@@ -104,7 +113,7 @@ public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
familyName = resources[1];
colName = resources[2];
} else if (resources.length > 3) {
- StringBuffer tblNameBuf = new StringBuffer(resources[0]);
+ StringBuilder tblNameBuf = new StringBuilder(resources[0]);
for (int i = 1; i < resources.length - 2; i++) {
tblNameBuf.append(QUALIFIED_NAME_DELIMITER_CHAR).append(resources[i]);
@@ -128,8 +137,7 @@ public class AtlasHbaseResourceMapper extends AtlasResourceMapper {
throwExceptionWithMessage("invalid qualifiedName for entity-type '" + entityType + "': " + qualifiedName);
}
- RangerServiceResource ret = new RangerServiceResource(entityGuid, serviceName, elements);
+ return new RangerServiceResource(entityGuid, serviceName, elements);
- return ret;
}
}
http://git-wip-us.apache.org/repos/asf/ranger/blob/a1a989d1/tagsync/src/test/java/org/apache/ranger/tagsync/process/TestHbaseResourceMapper.java
----------------------------------------------------------------------
diff --git a/tagsync/src/test/java/org/apache/ranger/tagsync/process/TestHbaseResourceMapper.java b/tagsync/src/test/java/org/apache/ranger/tagsync/process/TestHbaseResourceMapper.java
index 499247c..0a2b814 100644
--- a/tagsync/src/test/java/org/apache/ranger/tagsync/process/TestHbaseResourceMapper.java
+++ b/tagsync/src/test/java/org/apache/ranger/tagsync/process/TestHbaseResourceMapper.java
@@ -32,24 +32,53 @@ import java.util.Map;
import static org.apache.ranger.tagsync.source.atlas.AtlasHbaseResourceMapper.ENTITY_ATTRIBUTE_QUALIFIED_NAME;
public class TestHbaseResourceMapper {
- private static final String TABLE_QUALIFIED_NAME = "table@cl1";
- private static final String COLUMN_FAMILY_QUALIFIED_NAME = "table.family@cl1";
- private static final String COLUMN_QUALIFIED_NAME = "table.family.column@cl1";
+ private static final String NAMESPACE_QUALIFIED_NAME = "namespace@cl1";
+ private static final String TABLE_QUALIFIED_NAME = "table@cl1";
+ private static final String COLUMN_FAMILY_QUALIFIED_NAME = "table.family@cl1";
+ private static final String COLUMN_QUALIFIED_NAME = "table.family.column@cl1";
- private static final String DOTTED_TABLE_QUALIFIED_NAME = "table.prefix.1@cl1";
- private static final String DOTTED_COLUMN_FAMILY_QUALIFIED_NAME = "table.prefix.1.family@cl1";
- private static final String DOTTED_COLUMN_QUALIFIED_NAME = "table.prefix.1.family.column@cl1";
+ private static final String DOTTED_TABLE_QUALIFIED_NAME = "table.prefix.1@cl1";
+ private static final String DOTTED_COLUMN_FAMILY_QUALIFIED_NAME = "table.prefix.1.family@cl1";
+ private static final String DOTTED_COLUMN_QUALIFIED_NAME = "table.prefix.1.family.column@cl1";
- private static final String SERVICE_NAME = "cl1_hbase";
- private static final String RANGER_TABLE = "table";
- private static final String RANGER_COLUMN_FAMILY = "family";
- private static final String RANGER_COLUMN = "column";
+ private static final String TABLE_WITH_NAMESPACE_QUALIFIED_NAME = "namespace:table@cl1";
- private static final String DOTTED_RANGER_TABLE = "table.prefix.1";
+ private static final String SERVICE_NAME = "cl1_hbase";
+ private static final String RANGER_NAMESPACE = "namespace:*";
+ private static final String RANGER_TABLE = "table";
+ private static final String RANGER_COLUMN_FAMILY = "family";
+ private static final String RANGER_COLUMN = "column";
+
+ private static final String DOTTED_RANGER_TABLE = "table.prefix.1";
+ private static final String RANGER_TABLE_WITH_NAMESPACE = "namespace:table";
AtlasHbaseResourceMapper resourceMapper = new AtlasHbaseResourceMapper();
@Test
+ public void testHbaseNamespace() throws Exception {
+ Map<String, Object> entAttribs = new HashMap<String, Object>();
+
+ entAttribs.put(ENTITY_ATTRIBUTE_QUALIFIED_NAME, NAMESPACE_QUALIFIED_NAME);
+
+ RangerAtlasEntity entity = getHbaseNamespaceEntity(entAttribs);
+ RangerServiceResource resource = resourceMapper.buildResource(entity);
+
+ assertNamespaceResource(resource);
+ }
+
+ @Test
+ public void testHbaseNamespaceAndTable() throws Exception {
+ Map<String, Object> entAttribs = new HashMap<String, Object>();
+
+ entAttribs.put(ENTITY_ATTRIBUTE_QUALIFIED_NAME, TABLE_WITH_NAMESPACE_QUALIFIED_NAME);
+
+ RangerAtlasEntity entity = getHbaseTableEntity(entAttribs);
+ RangerServiceResource resource = resourceMapper.buildResource(entity);
+
+ assertTableWithNamespaceResource(resource);
+ }
+
+ @Test
public void testHbaseTable() throws Exception {
Map<String, Object> entAttribs = new HashMap<String, Object>();
@@ -170,6 +199,15 @@ public class TestHbaseResourceMapper {
assertColumnResource(resource, true);
}
+ private RangerAtlasEntity getHbaseNamespaceEntity(Map<String, Object> entAttribs) throws Exception {
+ RangerAtlasEntity entity = Mockito.mock(RangerAtlasEntity.class);
+
+ Mockito.when(entity.getTypeName()).thenReturn(AtlasHbaseResourceMapper.ENTITY_TYPE_HBASE_NAMESPACE);
+ Mockito.when(entity.getAttributes()).thenReturn(entAttribs);
+
+ return entity;
+ }
+
private RangerAtlasEntity getHbaseTableEntity(Map<String, Object> entAttribs) throws Exception {
RangerAtlasEntity entity = Mockito.mock(RangerAtlasEntity.class);
@@ -203,6 +241,28 @@ public class TestHbaseResourceMapper {
Assert.assertNotNull(resource.getResourceElements());
}
+ private void assertNamespaceResource(RangerServiceResource resource) {
+ assertServiceResource(resource);
+
+ Assert.assertEquals(1, resource.getResourceElements().size());
+
+ Assert.assertTrue(resource.getResourceElements().containsKey(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE));
+ Assert.assertNotNull(resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues());
+ Assert.assertEquals(1, resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues().size());
+ Assert.assertEquals(RANGER_NAMESPACE, resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues().get(0));
+ }
+
+ private void assertTableWithNamespaceResource(RangerServiceResource resource) {
+ assertServiceResource(resource);
+
+ Assert.assertEquals(1, resource.getResourceElements().size());
+
+ Assert.assertTrue(resource.getResourceElements().containsKey(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE));
+ Assert.assertNotNull(resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues());
+ Assert.assertEquals(1, resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues().size());
+ Assert.assertEquals(RANGER_TABLE_WITH_NAMESPACE, resource.getResourceElements().get(AtlasHbaseResourceMapper.RANGER_TYPE_HBASE_TABLE).getValues().get(0));
+ }
+
private void assertTableResource(RangerServiceResource resource, boolean isDottedTable) {
assertServiceResource(resource);