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/03/31 08:51:48 UTC

incubator-ranger git commit: RANGER-352: ID attribute added to objects contained by service-def, to facilitate update

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 092214406 -> a697bca04


RANGER-352: ID attribute added to objects contained by service-def, to facilitate update


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

Branch: refs/heads/master
Commit: a697bca04a16b7e9abc506835813a48c50012a67
Parents: 0922144
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Mon Mar 30 23:28:37 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Mon Mar 30 23:37:57 2015 -0700

----------------------------------------------------------------------
 .../ranger/plugin/model/RangerPolicy.java       |  25 ++-
 .../ranger/plugin/model/RangerServiceDef.java   | 200 +++++++++++++++++--
 .../service-defs/ranger-servicedef-hbase.json   |  19 ++
 .../service-defs/ranger-servicedef-hdfs.json    |  22 ++
 .../service-defs/ranger-servicedef-hive.json    |  17 ++
 .../service-defs/ranger-servicedef-knox.json    |   8 +
 .../service-defs/ranger-servicedef-solr.json    |  17 +-
 .../service-defs/ranger-servicedef-storm.json   |  19 ++
 .../service-defs/ranger-servicedef-yarn.json    |   8 +
 .../ranger/plugin/store/TestServiceStore.java   |   2 +-
 .../service/RangerServiceDefServiceBase.java    |   2 +-
 11 files changed, 310 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
index 3092c79..9130863 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java
@@ -45,6 +45,7 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
 
 	private String                            service        = null;
 	private String                            name           = null;
+	private Integer                           policyType     = null;
 	private String                            description    = null;
 	private Boolean                           isAuditEnabled = null;
 	private Map<String, RangerPolicyResource> resources      = null;
@@ -55,21 +56,23 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
 	 * @param type
 	 */
 	public RangerPolicy() {
-		this(null, null, null, null, null);
+		this(null, null, null, null, null, null);
 	}
 
 	/**
-	 * @param type
+	 * @param service
 	 * @param name
+	 * @param policyType
 	 * @param description
 	 * @param resources
 	 * @param policyItems
 	 */
-	public RangerPolicy(String service, String name, String description, Map<String, RangerPolicyResource> resources, List<RangerPolicyItem> policyItems) {
+	public RangerPolicy(String service, String name, Integer policyType, String description, Map<String, RangerPolicyResource> resources, List<RangerPolicyItem> policyItems) {
 		super();
 
 		setService(service);
 		setName(name);
+		setPolicyType(policyType);
 		setDescription(description);
 		setIsAuditEnabled(null);
 		setResources(resources);
@@ -84,6 +87,7 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
 
 		setService(other.getService());
 		setName(other.getName());
+		setPolicyType(other.getPolicyType());
 		setDescription(other.getDescription());
 		setIsAuditEnabled(other.getIsAuditEnabled());
 		setResources(other.getResources());
@@ -119,6 +123,20 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
 	}
 
 	/**
+	 * @return the policyType
+	 */
+	public Integer getPolicyType() {
+		return policyType;
+	}
+
+	/**
+	 * @param policyType the policyType to set
+	 */
+	public void setPolicyType(Integer policyType) {
+		this.policyType = policyType;
+	}
+
+	/**
 	 * @return the description
 	 */
 	public String getDescription() {
@@ -218,6 +236,7 @@ public class RangerPolicy extends RangerBaseModelObject implements java.io.Seria
 
 		sb.append("service={").append(service).append("} ");
 		sb.append("name={").append(name).append("} ");
+		sb.append("policyType={").append(policyType).append("} ");
 		sb.append("description={").append(description).append("} ");
 		sb.append("isAuditEnabled={").append(isAuditEnabled).append("} ");
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
index 62be788..87fab8f 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
@@ -62,7 +62,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	}
 
 	/**
-	 * @param name
+	 * @param type
 	 * @param implClass
 	 * @param label
 	 * @param description
@@ -73,10 +73,10 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	 * @param contextEnrichers
 	 * @param enums
 	 */
-	public RangerServiceDef(String name, String implClass, String label, String description, List<RangerServiceConfigDef> configs, List<RangerResourceDef> resources, List<RangerAccessTypeDef> accessTypes, List<RangerPolicyConditionDef> policyConditions, List<RangerContextEnricherDef> contextEnrichers, List<RangerEnumDef> enums) {
+	public RangerServiceDef(String type, String implClass, String label, String description, List<RangerServiceConfigDef> configs, List<RangerResourceDef> resources, List<RangerAccessTypeDef> accessTypes, List<RangerPolicyConditionDef> policyConditions, List<RangerContextEnricherDef> contextEnrichers, List<RangerEnumDef> enums) {
 		super();
 
-		setName(name);
+		setType(type);
 		setImplClass(implClass);
 		setLabel(label);
 		setDescription(description);
@@ -94,7 +94,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public void updateFrom(RangerServiceDef other) {
 		super.updateFrom(other);
 
-		setName(other.getName());
+		setType(other.getName());
 		setImplClass(other.getImplClass());
 		setLabel(other.getLabel());
 		setDescription(other.getDescription());
@@ -115,7 +115,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	/**
 	 * @param name the name to set
 	 */
-	public void setName(String name) {
+	public void setType(String name) {
 		this.name = name;
 	}
 
@@ -447,22 +447,38 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerEnumDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long                       id           = null;
 		private String                     name         = null;
 		private List<RangerEnumElementDef> elements     = null;
 		private Integer                    defaultIndex = null;
 
 
 		public RangerEnumDef() {
-			this(null, null, null);
+			this(null, null, null, null);
 		}
 
-		public RangerEnumDef(String name, List<RangerEnumElementDef> elements, Integer defaultIndex) {
+		public RangerEnumDef(Long id, String name, List<RangerEnumElementDef> elements, Integer defaultIndex) {
+			setId(id);
 			setName(name);
 			setElements(elements);
 			setDefaultIndex(defaultIndex);
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -529,6 +545,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerEnumDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("elements={");
 			if(elements != null) {
@@ -549,6 +566,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		public int hashCode() {
 			final int prime = 31;
 			int result = 1;
+			result = prime * result + ((id == null) ? 0 : id.hashCode());
 			result = prime * result
 					+ ((defaultIndex == null) ? 0 : defaultIndex.hashCode());
 			result = prime * result
@@ -566,6 +584,12 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			if (getClass() != obj.getClass())
 				return false;
 			RangerEnumDef other = (RangerEnumDef) obj;
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (other.id == null || !id.equals(other.id))
+				return false;
+
 			if (defaultIndex == null) {
 				if (other.defaultIndex != null)
 					return false;
@@ -589,22 +613,38 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerEnumElementDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 		
+		private Long   id         = null;
 		private String name       = null;
 		private String label      = null;
 		private String rbKeyLabel = null;
 
 
 		public RangerEnumElementDef() {
-			this(null, null, null);
+			this(null, null, null, null);
 		}
 
-		public RangerEnumElementDef(String name, String label, String rbKeyLabel) {
+		public RangerEnumElementDef(Long id, String name, String label, String rbKeyLabel) {
+			setId(id);
 			setName(name);
 			setLabel(label);
 			setRbKeyLabel(rbKeyLabel);
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -657,6 +697,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerEnumElementDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("label={").append(label).append("} ");
 			sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
@@ -669,6 +710,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		public int hashCode() {
 			final int prime = 31;
 			int result = 1;
+			result = prime * result + ((id == null) ? 0 : id.hashCode());
 			result = prime * result + ((label == null) ? 0 : label.hashCode());
 			result = prime * result + ((name == null) ? 0 : name.hashCode());
 			result = prime * result
@@ -685,6 +727,14 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			if (getClass() != obj.getClass())
 				return false;
 			RangerEnumElementDef other = (RangerEnumElementDef) obj;
+			if (id == null) {
+				if (other.id != null) {
+					return false;
+				}
+			} else if (other.id == null || !id.equals(other.id)) {
+				return false;
+			}
+
 			if (label == null) {
 				if (other.label != null)
 					return false;
@@ -708,6 +758,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerServiceConfigDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long    id                = null;
 		private String  name              = null;
 		private String  type              = null;
 		private String  subType           = null;
@@ -724,10 +775,11 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 
 		public RangerServiceConfigDef() {
-			this(null, null, null, null, null, null, null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerServiceConfigDef(String name, String type, String subType, Boolean mandatory, String defaultValue, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+		public RangerServiceConfigDef(Long id, String name, String type, String subType, Boolean mandatory, String defaultValue, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+			setId(id);
 			setName(name);
 			setType(type);
 			setSubType(subType);
@@ -744,6 +796,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -936,6 +1002,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerServiceConfigDef={");
+			sb.append("id={").append(name).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("type={").append(type).append("} ");
 			sb.append("subType={").append(subType).append("} ");
@@ -1075,6 +1142,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerResourceDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long                id                     = null;
 		private String              name                   = null;
 		private String              type                   = null;
 		private Integer             level                  = null;
@@ -1096,10 +1164,11 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 
 		public RangerResourceDef() {
-			this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerResourceDef(String name, String type, Integer level, String parent, Boolean mandatory, Boolean lookupSupported, Boolean recursiveSupported, Boolean excludesSupported, String matcher, Map<String, String> matcherOptions, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+		public RangerResourceDef(Long id, String name, String type, Integer level, String parent, Boolean mandatory, Boolean lookupSupported, Boolean recursiveSupported, Boolean excludesSupported, String matcher, Map<String, String> matcherOptions, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+			setId(id);
 			setName(name);
 			setType(type);
 			setLevel(level);
@@ -1121,6 +1190,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -1383,6 +1466,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerResourceDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("type={").append(type).append("} ");
 			sb.append("level={").append(level).append("} ");
@@ -1569,6 +1653,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerAccessTypeDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long               id            = null;
 		private String             name          = null;
 		private String             label         = null;
 		private String             rbKeyLabel    = null;
@@ -1576,10 +1661,11 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 
 		public RangerAccessTypeDef() {
-			this(null, null, null, null);
+			this(null, null, null, null, null);
 		}
 
-		public RangerAccessTypeDef(String name, String label, String rbKeyLabel, Collection<String> impliedGrants) {
+		public RangerAccessTypeDef(Long id, String name, String label, String rbKeyLabel, Collection<String> impliedGrants) {
+			setId(id);
 			setName(name);
 			setLabel(label);
 			setRbKeyLabel(rbKeyLabel);
@@ -1587,6 +1673,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -1667,6 +1767,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerAccessTypeDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("label={").append(label).append("} ");
 			sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
@@ -1690,6 +1791,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		public int hashCode() {
 			final int prime = 31;
 			int result = 1;
+			result = prime * result + ((id == null) ? 0 : id.hashCode());
 			result = prime * result
 					+ ((impliedGrants == null) ? 0 : impliedGrants.hashCode());
 			result = prime * result + ((label == null) ? 0 : label.hashCode());
@@ -1708,6 +1810,12 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			if (getClass() != obj.getClass())
 				return false;
 			RangerAccessTypeDef other = (RangerAccessTypeDef) obj;
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (other.id == null || !id.equals(other.id))
+				return false;
+
 			if (impliedGrants == null) {
 				if (other.impliedGrants != null)
 					return false;
@@ -1736,6 +1844,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerPolicyConditionDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long                id                     = null;
 		private String              name                   = null;
 		private String              evaluator              = null;
 		private Map<String, String> evaluatorOptions       = null;
@@ -1750,14 +1859,15 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 
 		public RangerPolicyConditionDef() {
-			this(null, null, null, null, null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerPolicyConditionDef(String name, String evaluator, Map<String, String> evaluatorOptions) {
-			this(name, evaluator, evaluatorOptions, null, null, null, null, null, null, null, null);
+		public RangerPolicyConditionDef(Long id, String name, String evaluator, Map<String, String> evaluatorOptions) {
+			this(id, name, evaluator, evaluatorOptions, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerPolicyConditionDef(String name, String evaluator, Map<String, String> evaluatorOptions, String validationRegEx, String vaidationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+		public RangerPolicyConditionDef(Long id, String name, String evaluator, Map<String, String> evaluatorOptions, String validationRegEx, String vaidationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
+			setId(id);
 			setName(name);
 			setEvaluator(evaluator);
 			setEvaluatorOptions(evaluatorOptions);
@@ -1772,6 +1882,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -1936,6 +2060,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerPolicyConditionDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("evaluator={").append(evaluator).append("} ");
 			sb.append("evaluatorOptions={").append(evaluatorOptions).append("} ");
@@ -1957,6 +2082,8 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			final int prime = 31;
 			int result = 1;
 			result = prime * result
+					+ ((id == null) ? 0 : id.hashCode());
+			result = prime * result
 					+ ((description == null) ? 0 : description.hashCode());
 			result = prime * result
 					+ ((evaluator == null) ? 0 : evaluator.hashCode());
@@ -1998,6 +2125,13 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			if (getClass() != obj.getClass())
 				return false;
 			RangerPolicyConditionDef other = (RangerPolicyConditionDef) obj;
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (other.id != null || !id.equals(other.id)) {
+				return false;
+			}
+
 			if (description == null) {
 				if (other.description != null)
 					return false;
@@ -2061,22 +2195,38 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerContextEnricherDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
+		private Long                id              = null;
 		private String              name            = null;
 		private String              enricher        = null;
 		private Map<String, String> enricherOptions = null;
 
 
 		public RangerContextEnricherDef() {
-			this(null, null, null);
+			this(null, null, null, null);
 		}
 
-		public RangerContextEnricherDef(String name, String enricher, Map<String, String> enricherOptions) {
+		public RangerContextEnricherDef(Long id, String name, String enricher, Map<String, String> enricherOptions) {
+			setId(id);
 			setName(name);
 			setEnricher(enricher);
 			setEnricherOptions(enricherOptions);
 		}
 
 		/**
+		 * @return the id
+		 */
+		public Long getId() {
+			return id;
+		}
+
+		/**
+		 * @param id the id to set
+		 */
+		public void setId(Long id) {
+			this.id = id;
+		}
+
+		/**
 		 * @return the name
 		 */
 		public String getName() {
@@ -2129,6 +2279,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 
 		public StringBuilder toString(StringBuilder sb) {
 			sb.append("RangerContextEnricherDef={");
+			sb.append("id={").append(id).append("} ");
 			sb.append("name={").append(name).append("} ");
 			sb.append("enricher={").append(enricher).append("} ");
 			sb.append("enricherOptions={").append(enricherOptions).append("} ");
@@ -2141,6 +2292,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		public int hashCode() {
 			final int prime = 31;
 			int result = 1;
+			result = prime * result + ((id == null) ? 0 : id.hashCode());
 			result = prime * result
 					+ ((enricher == null) ? 0 : enricher.hashCode());
 			result = prime
@@ -2160,6 +2312,12 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			if (getClass() != obj.getClass())
 				return false;
 			RangerContextEnricherDef other = (RangerContextEnricherDef) obj;
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (other.id == null || !id.equals(other.id))
+				return false;
+
 			if (enricher == null) {
 				if (other.enricher != null)
 					return false;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
index e611895..42fb502 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "table",
 			"type": "string",
 			"level": 10,
@@ -29,6 +30,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "column-family",
 			"type": "string",
 			"level": 20,
@@ -47,6 +49,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "column",
 			"type": "string",
 			"level": 30,
@@ -68,21 +71,25 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "read",
 			"label": "Read"
 		},
 
 		{
+			"id": 2,
 			"name": "write",
 			"label": "Write"
 		},
 
 		{
+			"id": 3,
 			"name": "create",
 			"label": "Create"
 		},
 
 		{
+			"id": 4,
 			"name": "admin",
 			"label": "Admin",
 			"impliedGrants": 
@@ -97,6 +104,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"subType": "",
@@ -108,6 +116,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"subType": "",
@@ -119,6 +128,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "hadoop.security.authentication",
 			"type": "enum",
 			"subType": "authnType",
@@ -130,6 +140,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "hbase.master.kerberos.principal",
 			"type": "string",
 			"subType": "",
@@ -138,6 +149,7 @@
 		},
 
 		{
+			"id": 5,
 			"name": "hbase.security.authentication",
 			"type": "enum",
 			"subType": "authnType",
@@ -149,6 +161,7 @@
 		},
 
 		{
+			"id": 6,
 			"name": "hbase.zookeeper.property.clientPort",
 			"type": "int",
 			"subType": "",
@@ -160,6 +173,7 @@
 		},
 
 		{
+			"id": 7,
 			"name": "hbase.zookeeper.quorum",
 			"type": "string",
 			"subType": "",
@@ -170,6 +184,7 @@
 		},
 
 		{
+			"id": 8,
 			"name": "zookeeper.znode.parent",
 			"type": "string",
 			"subType": "",
@@ -181,6 +196,7 @@
 		},
 		
 		{
+			"id": 9,
 			"name": "certificate.cn",
 			"type": "string",
 			"subType": "",
@@ -195,15 +211,18 @@
 	"enums": 
 	[
 		{
+			"id": 1,
 			"name": "authnType",
 			"elements": 
 			[
 				{
+					"id": 1,
 					"name": "simple",
 					"label": "Simple"
 				},
 
 				{
+					"id": 2,
 					"name": "kerberos",
 					"label": "Kerberos"
 				}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
index b279f0c..a37d549 100755
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "path",
 			"type": "path",
 			"level": 10,
@@ -32,16 +33,19 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "read",
 			"label": "Read"
 		},
 
 		{
+			"id": 2,
 			"name": "write",
 			"label": "Write"
 		},
 
 		{
+			"id": 3,
 			"name": "execute",
 			"label": "Execute"
 		}
@@ -50,6 +54,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"subType": "",
@@ -61,6 +66,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"subType": "",
@@ -72,6 +78,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "fs.default.name",
 			"type": "string",
 			"subType": "",
@@ -83,6 +90,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "hadoop.security.authorization",
 			"type": "bool",
 			"subType": "YesTrue:NoFalse",
@@ -95,6 +103,7 @@
 		},
 
 		{
+			"id": 5,
 			"name": "hadoop.security.authentication",
 			"type": "enum",
 			"subType": "authnType",
@@ -107,6 +116,7 @@
 		},
 
 		{
+			"id": 6,
 			"name": "hadoop.security.auth_to_local",
 			"type": "string",
 			"subType": "",
@@ -117,6 +127,7 @@
 		},
 
 		{
+			"id": 7,
 			"name": "dfs.datanode.kerberos.principal",
 			"type": "string",
 			"subType": "",
@@ -127,6 +138,7 @@
 		},
 
 		{
+			"id": 8,
 			"name": "dfs.namenode.kerberos.principal",
 			"type": "string",
 			"subType": "",
@@ -137,6 +149,7 @@
 		},
 
 		{
+			"id": 9,
 			"name": "dfs.secondary.namenode.kerberos.principal",
 			"type": "string",
 			"subType": "",
@@ -147,6 +160,7 @@
 		},
 
 		{
+			"id": 10,
 			"name": "hadoop.rpc.protection",
 			"type": "enum",
 			"subType": "rpcProtection",
@@ -159,6 +173,7 @@
 		},
 
 		{
+			"id": 11,
 			"name": "certificate.cn",
 			"type": "string",
 			"subType": "",
@@ -173,15 +188,18 @@
 	"enums": 
 	[
 		{
+			"id": 1,
 			"name": "authnType",
 			"elements": 
 			[
 				{
+					"id": 1,
 					"name": "simple",
 					"label": "Simple"
 				},
 
 				{
+					"id": 2,
 					"name": "kerberos",
 					"label": "Kerberos"
 				}
@@ -191,20 +209,24 @@
 		},
 
 		{
+			"id": 2,
 			"name": "rpcProtection",
 			"elements": 
 			[
 				{
+					"id": 1,
 					"name": "authentication",
 					"label": "Authentication"
 				},
 
 				{
+					"id": 2,
 					"name": "integrity",
 					"label": "Integrity"
 				},
 
 				{
+					"id": 3,
 					"name": "privacy",
 					"label": "Privacy"
 				}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
index aabc73b..27bd40f 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "database",
 			"type": "string",
 			"level": 10,
@@ -29,6 +30,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "table",
 			"type": "string",
 			"level": 20,
@@ -47,6 +49,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "udf",
 			"type": "string",
 			"level": 20,
@@ -65,6 +68,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "column",
 			"type": "string",
 			"level": 30,
@@ -86,41 +90,49 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "select",
 			"label": "select"
 		},
 
 		{
+			"id": 2,
 			"name": "update",
 			"label": "update"
 		},
 
 		{
+			"id": 3,
 			"name": "create",
 			"label": "Create"
 		},
 
 		{
+			"id": 4,
 			"name": "drop",
 			"label": "Drop"
 		},
 
 		{
+			"id": 5,
 			"name": "alter",
 			"label": "Alter"
 		},
 
 		{
+			"id": 6,
 			"name": "index",
 			"label": "Index"
 		},
 
 		{
+			"id": 7,
 			"name": "lock",
 			"label": "Lock"
 		},
 
 		{
+			"id": 8,
 			"name": "all",
 			"label": "All"
 		}
@@ -129,6 +141,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"mandatory": true,
@@ -139,6 +152,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"mandatory": true,
@@ -149,6 +163,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "jdbc.driverClassName",
 			"type": "string",
 			"mandatory": true,
@@ -159,6 +174,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "jdbc.url",
 			"type": "string",
 			"mandatory": true,
@@ -169,6 +185,7 @@
 		},
 
 		{
+			"id": 5,
 			"name": "certificate.cn",
 			"type": "string",
 			"mandatory": false,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
index 0174e96..894b976 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "topology",
 			"type": "string",
 			"level": 10,
@@ -29,6 +30,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "service",
 			"type": "string",
 			"level": 20,
@@ -50,6 +52,7 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "allow",
 			"label": "Allow"
 		}
@@ -58,6 +61,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"mandatory": true,
@@ -68,6 +72,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"mandatory": true,
@@ -78,6 +83,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "knox.url",
 			"type": "string",
 			"mandatory": true,
@@ -88,6 +94,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "certificate.cn",
 			"type": "string",
 			"mandatory": false,
@@ -111,6 +118,7 @@
 	"policyConditions": 
 	[
 		{
+			"id": 1,
 			"name": "ip-range",
 			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
 			"evaluatorOptions": { },

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-solr.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-solr.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-solr.json
index 6ae7a87..19e9b63 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-solr.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-solr.json
@@ -5,6 +5,7 @@
 	"description":"Solr",
 	"resources":[
 		{
+			"id": 1,
 			"name":"collection",
 			"type":"string",
 			"level":10,
@@ -14,7 +15,7 @@
 			"recursiveSupported":false,
 			"excludesSupported":true,
 			"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
-			"matcherOptions":{ "wildCard":true, "ignoreCase":true, "pathSeparatorChar":"." },
+			"matcherOptions":{ "wildCard":true, "ignoreCase":true },
 			"validationRegEx":"",
 			"validationMessage":"",
 			"uiHint":"",
@@ -22,6 +23,7 @@
 			"description":"Solr Collection"
 		},
 		{
+			"id": 2,
 			"name":"field",
 			"type":"string",
 			"level":20,
@@ -31,7 +33,7 @@
 			"recursiveSupported":false,
 			"excludesSupported":true,
 			"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
-			"matcherOptions":{ "wildCard":true, "ignoreCase":true, "pathSeparatorChar":"." },
+			"matcherOptions":{ "wildCard":true, "ignoreCase":true },
 			"validationRegEx":"",
 			"validationMessage":"",
 			"uiHint":"",
@@ -42,18 +44,22 @@
 	],
 	"accessTypes":[
 		{
+			"id": 1,
 			"name":"create",
 			"label":"Create"
 		},
 		{
+			"id": 2,
 			"name":"update",
 			"label":"Update"
 		},
 		{
+			"id": 3,
 			"name":"query",
 			"label":"Query"
 		},
 		{
+			"id": 4,
 			"name":"solr_admin",
 			"label":"Solr Admin"
 		}
@@ -61,6 +67,7 @@
 	],
 	"configs":[
 		{
+			"id": 1,
 			"name":"username",
 			"type":"string",
 			"mandatory":true,
@@ -70,6 +77,7 @@
 			"label":"Username"
 		},
 		{
+			"id": 2,
 			"name":"password",
 			"type":"password",
 			"mandatory":true,
@@ -79,6 +87,7 @@
 			"label":"Password"
 		},
 		{
+			"id": 3,
 			"name":"solr.url",
 			"type":"string",
 			"mandatory":true,
@@ -89,6 +98,7 @@
 			"label":"Solr URL"
 		},
 		{
+			"id": 4,
 			"name":"certificate.cn",
 			"type":"string",
 			"mandatory":false,
@@ -107,6 +117,7 @@
 	],
 	"policyConditions":[
 		{
+			"id": 1,
 			"name":"ip-range",
 			"evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
 			"evaluatorOptions":"",
@@ -118,4 +129,4 @@
 		}
 		
 	]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
index bcc4394..3a00276 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "topology",
 			"type": "string",
 			"level": 10,
@@ -31,6 +32,7 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "submitTopology",
 			"label": "Submit Topology",
 			"impliedGrants":
@@ -41,66 +43,79 @@
 		},
 
 		{
+			"id": 2,
 			"name": "fileUpload",
 			"label": "File Upload"
 		},
 
 		{
+			"id": 3,
 			"name": "getNimbusConf",
 			"label": "Get Nimbus Conf"
 		},
 
 		{
+			"id": 4,
 			"name": "getClusterInfo",
 			"label": "Get Cluster Info"
 		},
 
 		{
+			"id": 5,
 			"name": "fileDownload",
 			"label": "File Download"
 		},
 
 		{
+			"id": 6,
 			"name": "killTopology",
 			"label": "Kill Topology"
 		},
 
 		{
+			"id": 7,
 			"name": "rebalance",
 			"label": "Rebalance"
 		},
 
 		{
+			"id": 8,
 			"name": "activate",
 			"label": "Activate"
 		},
 
 		{
+			"id": 9,
 			"name": "deactivate",
 			"label": "Deactivate"
 		},
 
 		{
+			"id": 10,
 			"name": "getTopologyConf",
 			"label": "Get Topology Conf"
 		},
 
 		{
+			"id": 11,
 			"name": "getTopology",
 			"label": "Get Topology"
 		},
 
 		{
+			"id": 12,
 			"name": "getUserTopology",
 			"label": "Get User Topology"
 		},
 
 		{
+			"id": 13,
 			"name": "getTopologyInfo",
 			"label": "Get Topology Info"
 		},
 
 		{
+			"id": 14,
 			"name": "uploadNewCredentials",
 			"label": "Upload New Credential"
 		}
@@ -109,6 +124,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"mandatory": true,
@@ -119,6 +135,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"mandatory": true,
@@ -129,6 +146,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "nimbus.url",
 			"type": "string",
 			"mandatory": true,
@@ -140,6 +158,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "certificate.cn",
 			"type": "string",
 			"mandatory": false,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
index 8af8f9d..e0a18da 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
@@ -11,6 +11,7 @@
 	"resources": 
 	[
 		{
+			"id": 1,
 			"name": "queue",
 			"type": "string",
 			"level": 10,
@@ -30,11 +31,13 @@
 	"accessTypes": 
 	[
 		{
+			"id": 1,
 			"name": "submit-app",
 			"label": "submit-app"
 		},
 
 		{
+			"id": 2,
 			"name": "admin-queue",
 			"label": "admin-queue",
 			"impliedGrants":
@@ -47,6 +50,7 @@
 	"configs": 
 	[
 		{
+			"id": 1,
 			"name": "username",
 			"type": "string",
 			"mandatory": true,
@@ -57,6 +61,7 @@
 		},
 
 		{
+			"id": 2,
 			"name": "password",
 			"type": "password",
 			"mandatory": true,
@@ -67,6 +72,7 @@
 		},
 
 		{
+			"id": 3,
 			"name": "yarn.url",
 			"type": "string",
 			"mandatory": true,
@@ -78,6 +84,7 @@
 		},
 
 		{
+			"id": 4,
 			"name": "certificate.cn",
 			"type": "string",
 			"mandatory": false,
@@ -101,6 +108,7 @@
 	"policyConditions": 
 	[
 		{
+			"id": 1,
 			"name": "ip-range",
 			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
 			"evaluatorOptions": { },

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
index ae04e28..7ceb00e 100644
--- a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
+++ b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
@@ -153,7 +153,7 @@ public class TestServiceStore {
 
 		int initPolicyCount = policies == null ? 0 : policies.size();
 
-		RangerPolicy policy = new RangerPolicy(updatedSvc.getName(), policyName, "test policy description", null, null);
+		RangerPolicy policy = new RangerPolicy(updatedSvc.getName(), policyName, 0, "test policy description", null, null);
 		policy.getResources().put("path", new RangerPolicyResource("/demo/test/finance", Boolean.FALSE, Boolean.TRUE));
 
 		RangerPolicyItem item1 = new RangerPolicyItem();

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/a697bca0/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
index 48fd7f8..044cf56 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
@@ -66,7 +66,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	protected RangerServiceDef mapEntityToViewBean(RangerServiceDef vObj, XXServiceDef xObj) {
 		vObj.setGuid(xObj.getGuid());
 		vObj.setVersion(xObj.getVersion());
-		vObj.setName(xObj.getName());
+		vObj.setType(xObj.getName());
 		vObj.setImplClass(xObj.getImplclassname());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setDescription(xObj.getDescription());