You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/10/03 19:44:50 UTC

incubator-ranger git commit: RANGER-660: updated TagSync with an option to delete tags on removal of tag-resource map

Repository: incubator-ranger
Updated Branches:
  refs/heads/tag-policy 9aa396b50 -> 819426928


RANGER-660: updated TagSync with an option to delete tags on removal of tag-resource map

Signed-off-by: Madhan Neethiraj <ma...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/81942692
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/81942692
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/81942692

Branch: refs/heads/tag-policy
Commit: 819426928a7615a4de538e37c6d226def8fb21ad
Parents: 9aa396b
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Fri Oct 2 16:39:43 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Sat Oct 3 10:37:52 2015 -0700

----------------------------------------------------------------------
 .../ranger/plugin/store/file/TagFileStore.java  |  1 +
 .../apache/ranger/plugin/util/ServiceTags.java  | 30 ++++++++++++++++++--
 .../java/org/apache/ranger/biz/TagDBStore.java  |  1 +
 .../ranger/rest/ServiceTagsProcessor.java       | 30 ++++++++++++++------
 tagsync/samples/tags.json                       |  1 +
 .../source/atlas/AtlasNotificationMapper.java   |  1 +
 .../main/resources/etc/ranger/data/tags.json    |  3 +-
 7 files changed, 54 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
index 8f94164..6a94f04 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
@@ -1075,6 +1075,7 @@ public class TagFileStore extends AbstractTagStore {
 
 		ServiceTags ret = new ServiceTags();
 		ret.setOp(ServiceTags.OP_ADD_OR_UPDATE);
+		ret.setTagModel(ServiceTags.TAGMODEL_SHARED);
 
 		boolean tagsChanged = true;
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
index 146c3f9..d03e7bc 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
@@ -47,7 +47,12 @@ public class ServiceTags implements java.io.Serializable {
 	public static final String OP_ADD_OR_UPDATE = "add_or_update";
 	public static final String OP_DELETE        = "delete";
 
-	private String                      op;
+	public static final String TAGMODEL_SHARED        = "shared";
+	public static final String TAGMODEL_RESOURCE_PRIVATE        = "resource_private";
+
+
+	private String                      op = OP_ADD_OR_UPDATE;
+	private String                      tagModel = TAGMODEL_SHARED;
 	private String                      serviceName;
 	private Long                        tagVersion;
 	private Date                        tagUpdateTime;
@@ -64,6 +69,13 @@ public class ServiceTags implements java.io.Serializable {
 	}
 
 	/**
+	 * @return the tagModel
+	 */
+	public String getTagModel() {
+		return tagModel;
+	}
+
+	/**
 	 * @return the serviceName
 	 */
 	public String getServiceName() {
@@ -77,6 +89,14 @@ public class ServiceTags implements java.io.Serializable {
 		this.op = op;
 	}
 
+
+	/**
+	 * @param tagModel the tagModel to set
+	 */
+	public void setTagModel(String tagModel) {
+		this.tagModel = tagModel;
+	}
+
 	/**
 	 * @param serviceName the serviceName to set
 	 */
@@ -154,8 +174,12 @@ public class ServiceTags implements java.io.Serializable {
 	}
 
 	public StringBuilder toString(StringBuilder sb) {
-		sb.append("ServiceTags={").append("tagVersion=").append(tagVersion).append(", ")
-				.append("tagUpdateTime={").append(tagUpdateTime).append("} ")
+		sb.append("ServiceTags={")
+				.append("op=").append(op).append(", ")
+				.append("tagModel=").append(tagModel).append(", ")
+				.append("serviceName=").append(serviceName).append(", ")
+				.append("tagVersion=").append(tagVersion).append(", ")
+				.append("tagUpdateTime={").append(tagUpdateTime).append("}")
 				.append("}");
 
 		return sb;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
index 98a6e87..300ba8d 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
@@ -891,6 +891,7 @@ public class TagDBStore extends AbstractTagStore {
 
 			ret = new ServiceTags();
 			ret.setOp(ServiceTags.OP_ADD_OR_UPDATE);
+			ret.setTagModel(ServiceTags.TAGMODEL_SHARED);
 			ret.setServiceName(xxService.getName());
 			ret.setTagVersion(xxService.getTagVersion());
 			ret.setTagUpdateTime(xxService.getTagUpdateTime());

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/security-admin/src/main/java/org/apache/ranger/rest/ServiceTagsProcessor.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceTagsProcessor.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceTagsProcessor.java
index b34313f..586f6b7 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceTagsProcessor.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceTagsProcessor.java
@@ -51,6 +51,10 @@ public class ServiceTagsProcessor {
 		}
 
 		if (tagStore != null && serviceTags != null) {
+			if (LOG.isDebugEnabled()) {
+				LOG.debug("serviceTags:	op=" + serviceTags.getOp());
+				LOG.debug("serviceTags:	tagModel=" + serviceTags.getTagModel());
+			}
 			String op = serviceTags.getOp();
 
 			if (StringUtils.equalsIgnoreCase(op, ServiceTags.OP_ADD_OR_UPDATE)) {
@@ -237,9 +241,9 @@ public class ServiceTagsProcessor {
 				}
 
 				// Get all tags associated with this resourceId
-				List<Long> tagMapsToDelete = null;
+				List<Long> tagsToDelete = null;
 				try {
-					tagMapsToDelete = tagStore.getTagIdsForResourceId(resourceInStore.getId());
+					tagsToDelete = tagStore.getTagIdsForResourceId(resourceInStore.getId());
 				} catch (Exception exception) {
 					LOG.error("RangerTags cannot be retrieved for resource with guid=" + resourceInStore.getGuid());
 					throw exception;
@@ -270,8 +274,8 @@ public class ServiceTagsProcessor {
 							tagResourceMap = tagStore.createTagResourceMap(tagResourceMap);
 						}
 
-						if(tagMapsToDelete != null) {
-							tagMapsToDelete.remove((Long)tagInStore.getId());
+						if(tagsToDelete != null) {
+							tagsToDelete.remove((Long)tagInStore.getId());
 						}
 					}
 				} catch (Exception exception) {
@@ -279,12 +283,12 @@ public class ServiceTagsProcessor {
 					throw exception;
 				}
 
-				if (CollectionUtils.isNotEmpty(tagMapsToDelete)) {
+				if (CollectionUtils.isNotEmpty(tagsToDelete)) {
 					Long tagId = null;
 
 					try {
-						for(int i = 0; i < tagMapsToDelete.size(); i++) {
-							tagId = tagMapsToDelete.get(i);
+						for(int i = 0; i < tagsToDelete.size(); i++) {
+							tagId = tagsToDelete.get(i);
 
 							RangerTagResourceMap tagResourceMap = tagStore.getTagResourceMapForTagAndResourceId(tagId, resourceInStore.getId());
 
@@ -293,11 +297,19 @@ public class ServiceTagsProcessor {
 							}
 
 							if (LOG.isDebugEnabled()) {
-								LOG.debug("Deleted tagResourceMap(tagId=" + tagId + ", resourceId=" + resourceId);
+								LOG.debug("Deleted tagResourceMap(tagId=" + tagId + ", resourceId=" + resourceInStore.getId());
+							}
+
+							if (StringUtils.equals(serviceTags.getTagModel(), ServiceTags.TAGMODEL_RESOURCE_PRIVATE)) {
+								tagStore.deleteTag(tagId);
+
+								if (LOG.isDebugEnabled()) {
+									LOG.debug("Deleted tag(tagId=" + tagId + ") as tagModel=" + ServiceTags.TAGMODEL_RESOURCE_PRIVATE);
+								}
 							}
 						}
 					} catch(Exception exception) {
-						LOG.error("deleteTagResourceMap failed, tagId=" + tagId + ", resourceId=" + resourceId);
+						LOG.error("deleteTagResourceMap failed, tagId=" + tagId + ", resourceId=" + resourceInStore.getId());
 						throw exception;
 					}
 				}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/tagsync/samples/tags.json
----------------------------------------------------------------------
diff --git a/tagsync/samples/tags.json b/tagsync/samples/tags.json
index 1b24fc8..3028f9d 100644
--- a/tagsync/samples/tags.json
+++ b/tagsync/samples/tags.json
@@ -1,5 +1,6 @@
 {
   "op": "add_or_update",
+  "tagModel": "resource_private",
   "serviceName": "cl1_hive",
   "tagVersion": 1,
   "tagUpdateTime": "20150924-22:26:33.000-+0000",

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
----------------------------------------------------------------------
diff --git a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
index 44c4973..2c843af 100644
--- a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
+++ b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
@@ -152,6 +152,7 @@ class AtlasNotificationMapper {
 		ret = new ServiceTags();
 
 		ret.setOp(ServiceTags.OP_ADD_OR_UPDATE);
+		ret.setTagModel(ServiceTags.TAGMODEL_RESOURCE_PRIVATE);
 		ret.setServiceName(serviceResource.getServiceName());
 		ret.setServiceResources(serviceResources);
 		ret.setTagDefinitions(tagDefs);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/81942692/tagsync/src/main/resources/etc/ranger/data/tags.json
----------------------------------------------------------------------
diff --git a/tagsync/src/main/resources/etc/ranger/data/tags.json b/tagsync/src/main/resources/etc/ranger/data/tags.json
index 28e7922..274cf69 100644
--- a/tagsync/src/main/resources/etc/ranger/data/tags.json
+++ b/tagsync/src/main/resources/etc/ranger/data/tags.json
@@ -1,5 +1,6 @@
 {
-    "op":"create_or_update",
+    "op":"add_or_update",
+    "tagModel":"shared",
     "serviceName": "cl1_hive",
     "tagVersion": 24,
     "tagUpdateTime": "20150901-20:03:17.000-+0000",