This is an automated email from the ASF dual-hosted git repository. mehul pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push: new 72bccb3 RANGER-2590 : add displayName attribute to service-def and service 72bccb3 is described below commit 72bccb365ef3b473444c10c1c6f802100ed5c242 Author: Kishor Gollapalliwar <kishor.gollapalli...@gmail.com> AuthorDate: Thu Nov 7 11:40:22 2019 +0530 RANGER-2590 : add displayName attribute to service-def and service Signed-off-by: Mehul Parikh <me...@apache.org> --- .../ranger/plugin/errors/ValidationErrorCode.java | 4 ++ .../apache/ranger/plugin/model/RangerService.java | 11 ++++ .../ranger/plugin/model/RangerServiceDef.java | 20 +++++++ .../model/validation/RangerServiceDefHelper.java | 2 +- .../validation/RangerServiceDefValidator.java | 55 ++++++++++++++++++- .../model/validation/RangerServiceValidator.java | 35 ++++++++++++- .../plugin/model/validation/RangerValidator.java | 45 ++++++++++++++-- .../apache/ranger/plugin/store/ServiceStore.java | 4 ++ .../apache/ranger/plugin/util/SearchFilter.java | 4 ++ .../service-defs/ranger-servicedef-abfs.json | 1 + .../service-defs/ranger-servicedef-atlas.json | 1 + .../ranger-servicedef-elasticsearch.json | 1 + .../service-defs/ranger-servicedef-hbase.json | 1 + .../service-defs/ranger-servicedef-hdfs.json | 1 + .../service-defs/ranger-servicedef-hive.json | 1 + .../service-defs/ranger-servicedef-kafka.json | 1 + .../service-defs/ranger-servicedef-kms.json | 1 + .../service-defs/ranger-servicedef-knox.json | 1 + .../service-defs/ranger-servicedef-kylin.json | 1 + .../ranger-servicedef-nifi-registry.json | 1 + .../service-defs/ranger-servicedef-nifi.json | 1 + .../service-defs/ranger-servicedef-ozone.json | 1 + .../service-defs/ranger-servicedef-presto.json | 1 + .../service-defs/ranger-servicedef-solr.json | 1 + .../service-defs/ranger-servicedef-sqoop.json | 1 + .../service-defs/ranger-servicedef-storm.json | 1 + .../service-defs/ranger-servicedef-tag.json | 1 + .../service-defs/ranger-servicedef-wasb.json | 1 + .../service-defs/ranger-servicedef-yarn.json | 1 + .../validation/TestRangerServiceValidator.java | 9 ++-- .../optimized/current/ranger_core_db_mysql.sql | 7 +++ ...playName-col-in-x_service_def_and_x_service.sql | 37 +++++++++++++ ...ributes-col-in-x_user-x_portal_user-x_group.sql | 38 ++++++++++++++ .../optimized/current/ranger_core_db_oracle.sql | 7 +++ ...playName-col-in-x_service_def_and_x_service.sql | 33 ++++++++++++ ...ributes-col-in-x_user-x_portal_user-x_group.sql | 36 +++++++++++++ .../optimized/current/ranger_core_db_postgres.sql | 7 +++ ...playName-col-in-x_service_def_and_x_service.sql | 40 ++++++++++++++ ...ributes-col-in-x_user-x_portal_user-x_group.sql | 42 +++++++++++++++ .../current/ranger_core_db_sqlanywhere.sql | 9 ++++ ...playName-col-in-x_service_def_and_x_service.sql | 27 ++++++++++ ...ributes-col-in-x_user-x_portal_user-x_group.sql | 28 ++++++++++ .../optimized/current/ranger_core_db_sqlserver.sql | 9 +++- ...playName-col-in-x_service_def_and_x_service.sql | 30 +++++++++++ ...ributes-col-in-x_user-x_portal_user-x_group.sql | 32 ++++++++++++ .../java/org/apache/ranger/biz/ServiceDBStore.java | 44 ++++++++++++++++ .../org/apache/ranger/common/RangerSearchUtil.java | 3 ++ .../java/org/apache/ranger/db/XXServiceDao.java | 13 +++++ .../java/org/apache/ranger/db/XXServiceDefDao.java | 17 ++++++ .../java/org/apache/ranger/entity/XXGroup.java | 26 ++++++++- .../org/apache/ranger/entity/XXPortalUser.java | 27 ++++++++++ .../org/apache/ranger/entity/XXServiceBase.java | 18 ++++++- .../org/apache/ranger/entity/XXServiceDefBase.java | 30 ++++++++++- .../main/java/org/apache/ranger/entity/XXUser.java | 26 +++++++++ .../java/org/apache/ranger/rest/ServiceREST.java | 61 ++++++++++++++++++++-- .../service/RangerServiceDefServiceBase.java | 18 ++++--- .../ranger/service/RangerServiceService.java | 1 + .../ranger/service/RangerServiceServiceBase.java | 12 +++-- .../apache/ranger/service/XGroupServiceBase.java | 2 + .../ranger/service/XPortalUserServiceBase.java | 2 + .../apache/ranger/service/XUserServiceBase.java | 2 + .../main/java/org/apache/ranger/view/VXGroup.java | 24 ++++++++- .../java/org/apache/ranger/view/VXPortalUser.java | 24 +++++++++ .../main/java/org/apache/ranger/view/VXUser.java | 22 ++++++++ .../main/resources/META-INF/jpa_named_queries.xml | 10 +++- .../main/webapp/scripts/models/RangerServiceDef.js | 5 ++ .../views/service/RangerServiceViewDetail.js | 1 + .../webapp/scripts/views/service/ServiceForm.js | 4 +- .../common/ServiceManagerLayout_tmpl.html | 2 +- .../src/main/webapp/templates/helpers/XAHelpers.js | 10 +++- .../service/RangerServiceViewDetail_tmpl.html | 8 +++ .../org/apache/ranger/rest/TestServiceREST.java | 1 + 72 files changed, 969 insertions(+), 35 deletions(-) diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/errors/ValidationErrorCode.java b/agents-common/src/main/java/org/apache/ranger/plugin/errors/ValidationErrorCode.java index 2927362..1498505 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/errors/ValidationErrorCode.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/errors/ValidationErrorCode.java @@ -34,7 +34,9 @@ public enum ValidationErrorCode { SERVICE_VALIDATION_ERR_INVALID_SERVICE_ID(1005, "No service found for id [{0}]"), SERVICE_VALIDATION_ERR_INVALID_SERVICE_NAME(1006, "Missing service name"), SERVICE_VALIDATION_ERR_SERVICE_NAME_CONFICT(1007, "Duplicate service name: name=[{0}]"), + SERVICE_VALIDATION_ERR_SERVICE_DISPLAY_NAME_CONFICT(3051,"Display name [{0}] is already used by service [{1}]"), SERVICE_VALIDATION_ERR_SPECIAL_CHARACTERS_SERVICE_NAME(3031, "Name should not start with space, it should be less than 256 characters and special characters are not allowed(except _ - and space). : name=[{0}]"), + SERVICE_VALIDATION_ERR_SPECIAL_CHARACTERS_SERVICE_DISPLAY_NAME(3050, "Invalid display name [{0}]. It should be not be longer than 256 characters, should not start with space, and should not include special characters (except underscore, hyphen and space)"), SERVICE_VALIDATION_ERR_ID_NAME_CONFLICT(1008, "Duplicate service name: name=[{0}], id=[{1}]"), SERVICE_VALIDATION_ERR_MISSING_SERVICE_DEF(1009, "Missing service def"), SERVICE_VALIDATION_ERR_INVALID_SERVICE_DEF(1010, "Service def not found: service-def-name=[{0}]"), @@ -47,7 +49,9 @@ public enum ValidationErrorCode { SERVICE_DEF_VALIDATION_ERR_EMPTY_SERVICE_DEF_ID(2004, "Internal error: service def id was null/empty/blank"), SERVICE_DEF_VALIDATION_ERR_INVALID_SERVICE_DEF_ID(2005, "No service def found for id [{0}]"), SERVICE_DEF_VALIDATION_ERR_INVALID_SERVICE_DEF_NAME(2006, "Service def name[{0}] was null/empty/blank"), + SERVICE_DEF_VALIDATION_ERR_INVALID_SERVICE_DEF_DISPLAY_NAME(2024, "Service def display name[{0}] was null/empty/blank"), SERVICE_DEF_VALIDATION_ERR_SERVICE_DEF_NAME_CONFICT(2007, "service def with the name[{0}] already exists"), + SERVICE_DEF_VALIDATION_ERR_SERVICE_DEF__DISPLAY_NAME_CONFICT(2025, "Display name [{0}] is already used by service def [{1}]"), SERVICE_DEF_VALIDATION_ERR_ID_NAME_CONFLICT(2008, "id/name conflict: another service def already exists with name[{0}], its id is [{1}]"), SERVICE_DEF_VALIDATION_ERR_IMPLIED_GRANT_UNKNOWN_ACCESS_TYPE(2009, "implied grant[{0}] contains an unknown access types[{1}]"), SERVICE_DEF_VALIDATION_ERR_IMPLIED_GRANT_IMPLIES_ITSELF(2010, "implied grants list [{0}] for access type[{1}] contains itself"), diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java index ed8d384..8bd4586 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java @@ -43,6 +43,7 @@ public class RangerService extends RangerBaseModelObject implements java.io.Seri private String type; private String name; + private String displayName; private String description; private String tagService; private Map<String, String> configs; @@ -84,6 +85,7 @@ public class RangerService extends RangerBaseModelObject implements java.io.Seri setType(other.getType()); setName(other.getName()); + setDisplayName(other.getDisplayName()); setDescription(other.getDescription()); setConfigs(other.getConfigs()); setTagService(other.tagService); @@ -117,6 +119,14 @@ public class RangerService extends RangerBaseModelObject implements java.io.Seri this.name = name; } + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + /** * @return the description */ @@ -244,6 +254,7 @@ public class RangerService extends RangerBaseModelObject implements java.io.Seri super.toString(sb); sb.append("name={").append(name).append("} "); + sb.append("displayName={").append(displayName).append("} "); sb.append("type={").append(type).append("} "); sb.append("description={").append(description).append("} "); sb.append("tagService={").append(tagService).append("} "); 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 50d84a4..1ac45f1 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 @@ -48,6 +48,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S public static final String OPTION_ENABLE_DENY_AND_EXCEPTIONS_IN_POLICIES = "enableDenyAndExceptionsInPolicies"; private String name; + private String displayName; private String implClass; private String label; private String description; @@ -103,6 +104,15 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S setRowFilterDef(rowFilterDef); } + public RangerServiceDef(String name, String displayName, String implClass, String label, String description, + Map<String, String> options, List<RangerServiceConfigDef> configs, + List<RangerResourceDef> modifiedResourceDefs, List<RangerAccessTypeDef> accessTypes, + List<RangerPolicyConditionDef> policyConditions, List<RangerContextEnricherDef> contextEnrichers, + List<RangerEnumDef> enums) { + this(name, implClass, label, description, options, configs, modifiedResourceDefs, accessTypes, policyConditions, contextEnrichers, enums); + this.setDisplayName(displayName); + } + /** * @param other */ @@ -110,6 +120,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S super.updateFrom(other); setName(other.getName()); + setDisplayName(other.getDisplayName()); setImplClass(other.getImplClass()); setLabel(other.getLabel()); setDescription(other.getDescription()); @@ -405,6 +416,14 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S this.rowFilterDef = rowFilterDef == null ? new RangerRowFilterDef() : rowFilterDef; } + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + @Override public String toString( ) { StringBuilder sb = new StringBuilder(); @@ -420,6 +439,7 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S super.toString(sb); sb.append("name={").append(name).append("} "); + sb.append("displayName={").append(displayName).append("} "); sb.append("implClass={").append(implClass).append("} "); sb.append("label={").append(label).append("} "); sb.append("description={").append(description).append("} "); diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefHelper.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefHelper.java index 0954beb..943b361 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefHelper.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefHelper.java @@ -77,7 +77,7 @@ public class RangerServiceDefHelper { modifiedResourceDefs.add(modifiedResourceDef); } - return new RangerServiceDef(serviceDef.getName(), serviceDef.getImplClass(), serviceDef.getLabel(), + return new RangerServiceDef(serviceDef.getName(), serviceDef.getDisplayName(), serviceDef.getImplClass(), serviceDef.getLabel(), serviceDef.getDescription(), serviceDef.getOptions(), serviceDef.getConfigs(), modifiedResourceDefs, serviceDef.getAccessTypes(), serviceDef.getPolicyConditions(), serviceDef.getContextEnrichers(), serviceDef.getEnums()); } diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefValidator.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefValidator.java index f96fcfc..8a21f4d 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefValidator.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceDefValidator.java @@ -139,6 +139,7 @@ public class RangerServiceDefValidator extends RangerValidator { Long id = serviceDef.getId(); valid = isValidServiceDefId(id, action, failures) && valid; valid = isValidServiceDefName(serviceDef.getName(), id, action, failures) && valid; + valid = isValidServiceDefDisplayName(serviceDef.getDisplayName(), id, action, failures) && valid; valid = isValidAccessTypes(serviceDef.getId(), serviceDef.getAccessTypes(), failures, action) && valid; if (isValidResources(serviceDef, failures, action)) { // Semantic check of resource graph can only be done if resources are "syntactically" valid @@ -240,7 +241,59 @@ public class RangerServiceDefValidator extends RangerValidator { } return valid; } - + + /** + * Performs all validations related to ServiceDef displayName. + * @param displayName + * @param id + * @param action + * @param failures + * @return + */ + boolean isValidServiceDefDisplayName(final String displayName, Long id, final Action action, final List<ValidationFailureDetails> failures) { + if(LOG.isDebugEnabled()) { + LOG.debug(String.format("==> RangerServiceDefValidator.isValidServiceDefDisplayName(%s, %s, %s, %s)", displayName, id, action, failures)); + } + boolean valid = true; + + if (StringUtils.isBlank(displayName)) { + ValidationErrorCode error = ValidationErrorCode.SERVICE_DEF_VALIDATION_ERR_INVALID_SERVICE_DEF_DISPLAY_NAME; + failures.add(new ValidationFailureDetailsBuilder() + .field("displayName") + .isMissing() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName)) + .build()); + valid = false; + } else { + RangerServiceDef otherServiceDef = getServiceDefByDisplayName(displayName); + if (otherServiceDef != null && action == Action.CREATE) { + ValidationErrorCode error = ValidationErrorCode.SERVICE_DEF_VALIDATION_ERR_SERVICE_DEF__DISPLAY_NAME_CONFICT; + failures.add(new ValidationFailureDetailsBuilder() + .field("displayName") + .isSemanticallyIncorrect() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName, otherServiceDef.getName())) + .build()); + valid = false; + } else if (otherServiceDef != null && !Objects.equals(id, otherServiceDef.getId())) { + ValidationErrorCode error = ValidationErrorCode.SERVICE_DEF_VALIDATION_ERR_SERVICE_DEF__DISPLAY_NAME_CONFICT; + failures.add(new ValidationFailureDetailsBuilder() + .field("id/displayName") + .isSemanticallyIncorrect() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName, otherServiceDef.getName())) + .build()); + valid = false; + } + } + + if(LOG.isDebugEnabled()) { + LOG.debug(String.format("<== RangerServiceDefValidator.isValidServiceDefName(%s, %s, %s, %s): %s", displayName, id, action, failures, valid)); + } + return valid; + } + boolean isValidAccessTypes(final Long serviceDefId, final List<RangerAccessTypeDef> accessTypeDefs, final List<ValidationFailureDetails> failures, final Action action) { if(LOG.isDebugEnabled()) { diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceValidator.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceValidator.java index 9b5d8d5..aa8cf7e 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceValidator.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerServiceValidator.java @@ -47,7 +47,6 @@ public class RangerServiceValidator extends RangerValidator { if(LOG.isDebugEnabled()) { LOG.debug(String.format("==> RangerServiceValidator.validate(%s, %s)", service, action)); } - List<ValidationFailureDetails> failures = new ArrayList<>(); boolean valid = isValid(service, action, failures); String message = ""; @@ -184,6 +183,40 @@ public class RangerServiceValidator extends RangerValidator { } } } + // Display name + String displayName = service.getDisplayName(); + if(!validateString(VALIDATION_SERVICE_NAME, displayName)){ + ValidationErrorCode error = ValidationErrorCode.SERVICE_VALIDATION_ERR_SPECIAL_CHARACTERS_SERVICE_DISPLAY_NAME; + failures.add(new ValidationFailureDetailsBuilder() + .field("displayName") + .isSemanticallyIncorrect() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName)) + .build()); + valid = false; + }else{ + RangerService otherService = getServiceByDisplayName(displayName); + if (otherService != null && action == Action.CREATE) { + ValidationErrorCode error = ValidationErrorCode.SERVICE_VALIDATION_ERR_SERVICE_DISPLAY_NAME_CONFICT; + failures.add(new ValidationFailureDetailsBuilder() + .field("displayName") + .isSemanticallyIncorrect() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName, otherService.getName())) + .build()); + valid = false; + } else if (otherService != null && otherService.getId() !=null && !otherService.getId().equals(id)) { + ValidationErrorCode error = ValidationErrorCode.SERVICE_VALIDATION_ERR_SERVICE_DISPLAY_NAME_CONFICT; + failures.add(new ValidationFailureDetailsBuilder() + .field("id/displayName") + .isSemanticallyIncorrect() + .errorCode(error.getErrorCode()) + .becauseOf(error.getMessage(displayName, otherService.getName())) + .build()); + valid = false; + } + } + String type = service.getType(); boolean typeSpecified = StringUtils.isNotBlank(type); if (!typeSpecified) { diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidator.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidator.java index c4ec63b..b02090b 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidator.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/validation/RangerValidator.java @@ -210,7 +210,7 @@ public abstract class RangerValidator { } RangerServiceDef getServiceDef(String type) { - + if(LOG.isDebugEnabled()) { LOG.debug("==> RangerValidator.getServiceDef(" + type + ")"); } @@ -227,8 +227,30 @@ public abstract class RangerValidator { return result; } + /** + * @param displayName + * @return {@link RangerServiceDef} - service using display name if present, <code>null</code> otherwise. + */ + RangerServiceDef getServiceDefByDisplayName(final String displayName) { + + if(LOG.isDebugEnabled()) { + LOG.debug("==> RangerValidator.getServiceDefByDisplayName(" + displayName + ")"); + } + RangerServiceDef result = null; + try { + result = _store.getServiceDefByDisplayName(displayName); + } catch (Exception e) { + LOG.debug("Encountered exception while retrieving service definition from service store!", e); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== RangerValidator.getServiceDefByDisplayName(" + displayName + "): " + result); + } + return result; + } + RangerService getService(Long id) { - + if(LOG.isDebugEnabled()) { LOG.debug("==> RangerValidator.getService(" + id + ")"); } @@ -263,6 +285,23 @@ public abstract class RangerValidator { return result; } + RangerService getServiceByDisplayName(final String displayName) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> RangerValidator.getService(" + displayName + ")"); + } + RangerService result = null; + try { + result = _store.getServiceByDisplayName(displayName); + } catch (Exception e) { + LOG.debug("Encountred exception while retrieving service from service store!", e); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== RangerValidator.getService(" + displayName + "): " + result); + } + return result; + } + boolean policyExists(Long id) { try { return _store.policyExists(id); @@ -273,7 +312,7 @@ public abstract class RangerValidator { } RangerPolicy getPolicy(Long id) { - + if(LOG.isDebugEnabled()) { LOG.debug("==> RangerValidator.getPolicy(" + id + ")"); } diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java index 4af457e..67778ef 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java @@ -47,6 +47,8 @@ public interface ServiceStore { RangerServiceDef getServiceDefByName(String name) throws Exception; + RangerServiceDef getServiceDefByDisplayName(String name) throws Exception; + List<RangerServiceDef> getServiceDefs(SearchFilter filter) throws Exception; PList<RangerServiceDef> getPaginatedServiceDefs(SearchFilter filter) throws Exception; @@ -61,6 +63,8 @@ public interface ServiceStore { RangerService getServiceByName(String name) throws Exception; + RangerService getServiceByDisplayName(String displayName) throws Exception; + List<RangerService> getServices(SearchFilter filter) throws Exception; PList<RangerService> getPaginatedServices(SearchFilter filter) throws Exception; diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java index 93b28a8..c17c63b 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java @@ -89,6 +89,10 @@ public class SearchFilter { public static final String FETCH_ZONE_UNZONE_POLICIES = "fetchZoneAndUnzonePolicies"; public static final String FETCH_TAG_POLICIES = "fetchTagPolicies"; + public static final String SERVICE_DISPLAY_NAME = "serviceDisplayName"; // search, sort + public static final String SERVICE_DISPLAY_NAME_PARTIAL = "serviceDisplayNamePartial"; // search + public static final String SERVICE_TYPE_DISPLAY_NAME = "serviceTypeDisplayName"; // search, sort + private Map<String, String> params; private int startIndex; private int maxRows = Integer.MAX_VALUE; diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-abfs.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-abfs.json index 18454de..7dcf388 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-abfs.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-abfs.json @@ -1,6 +1,7 @@ { "id":103, "name": "abfs", + "displayName": "abfs", "implClass": "", "label": "Azure Blob File System", "description": "Ranger plugin for ABFS", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-atlas.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-atlas.json index 07a9800..7a6f0b9 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-atlas.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-atlas.json @@ -1,6 +1,7 @@ { "id": 15, "name": "atlas", + "displayName": "atlas", "implClass": "org.apache.ranger.services.atlas.RangerServiceAtlas", "label": "Atlas Metadata Server", "description": "Atlas Metadata Server", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-elasticsearch.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-elasticsearch.json index b055bf8..da621c7 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-elasticsearch.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-elasticsearch.json @@ -1,6 +1,7 @@ { "id":16, "name": "elasticsearch", + "displayName": "elasticsearch", "implClass": "org.apache.ranger.services.elasticsearch.RangerServiceElasticsearch", "label": "ELASTICSEARCH", "description": "ELASTICSEARCH", 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 71fae66..f98c919 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 @@ -1,6 +1,7 @@ { "id":2, "name": "hbase", + "displayName": "hbase", "implClass": "org.apache.ranger.services.hbase.RangerServiceHBase", "label": "HBase", "description": "HBase", 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 2e5d07c..fbb16d7 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 @@ -1,6 +1,7 @@ { "id":1, "name": "hdfs", + "displayName": "hdfs", "implClass": "org.apache.ranger.services.hdfs.RangerServiceHdfs", "label": "HDFS Repository", "description": "HDFS Repository", 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 5722e09..42df0a8 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 @@ -1,6 +1,7 @@ { "id":3, "name": "hive", + "displayName": "Hadoop SQL", "implClass": "org.apache.ranger.services.hive.RangerServiceHive", "label": "Hive Server2", "description": "Hive Server2", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-kafka.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-kafka.json index 800b123..38bc31c 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-kafka.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-kafka.json @@ -1,6 +1,7 @@ { "id":9, "name":"kafka", + "displayName": "kafka", "implClass":"org.apache.ranger.services.kafka.RangerServiceKafka", "label":"Kafka", "description":"Apache Kafka", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json index f96cb9c..5a2915c 100755 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json @@ -1,6 +1,7 @@ { "id":7, "name": "kms", + "displayName": "kms", "implClass": "org.apache.ranger.services.kms.RangerServiceKMS", "label": "KMS", "description": "KMS", 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 495a699..aa0f672 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 @@ -1,6 +1,7 @@ { "id":5, "name": "knox", + "displayName": "knox", "implClass": "org.apache.ranger.services.knox.RangerServiceKnox", "label": "Knox Gateway", "description": "Knox Gateway", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-kylin.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-kylin.json index a6e76a0..70566df 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-kylin.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-kylin.json @@ -1,6 +1,7 @@ { "id":12, "name": "kylin", + "displayName": "kylin", "implClass": "org.apache.ranger.services.kylin.RangerServiceKylin", "label": "KYLIN", "description": "KYLIN", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi-registry.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi-registry.json index ef5f7cf..bf2768a 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi-registry.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi-registry.json @@ -1,6 +1,7 @@ { "id":13, "name":"nifi-registry", + "displayName": "nifi-registry", "implClass":"org.apache.ranger.services.nifi.registry.RangerServiceNiFiRegistry", "label":"NIFI Registry", "description":"NiFi Registry", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi.json index 400e516..c34533e 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-nifi.json @@ -1,6 +1,7 @@ { "id":10, "name":"nifi", + "displayName": "nifi", "implClass":"org.apache.ranger.services.nifi.RangerServiceNiFi", "label":"NIFI", "description":"NiFi", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-ozone.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-ozone.json index 5787d93..4f2a432 100755 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-ozone.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-ozone.json @@ -1,6 +1,7 @@ { "id":201, "name": "ozone", + "displayName": "ozone", "implClass": "org.apache.ranger.services.ozone.RangerServiceOzone", "label": "OZONE", "description": "Ozone Repository", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-presto.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-presto.json index 151c7d2..56a8f5a 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-presto.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-presto.json @@ -1,6 +1,7 @@ { "id": 17, "name": "presto", + "displayName": "presto", "implClass": "org.apache.ranger.services.presto.RangerServicePresto", "label": "Presto", "description": "Presto", 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 2f12721..ec2ebcf 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 @@ -1,6 +1,7 @@ { "id":8, "name":"solr", + "displayName": "solr", "implClass":"org.apache.ranger.services.solr.RangerServiceSolr", "label":"SOLR", "description":"Solr", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-sqoop.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-sqoop.json index 8cff9ab..544276e 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-sqoop.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-sqoop.json @@ -1,6 +1,7 @@ { "id":14, "name": "sqoop", + "displayName": "sqoop", "implClass": "org.apache.ranger.services.sqoop.RangerServiceSqoop", "label": "SQOOP", "description": "SQOOP", 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 03c1574..4db4a74 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 @@ -1,6 +1,7 @@ { "id":6, "name": "storm", + "displayName": "storm", "implClass": "org.apache.ranger.services.storm.RangerServiceStorm", "label": "Storm", "description": "Storm", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-tag.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-tag.json index c17b750..7b72f45 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-tag.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-tag.json @@ -1,6 +1,7 @@ { "id":100, "name": "tag", + "displayName": "tag", "implClass": "org.apache.ranger.services.tag.RangerServiceTag", "label": "TAG", "description": "TAG Service Definition", diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-wasb.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-wasb.json index 946b662..fd30c51 100644 --- a/agents-common/src/main/resources/service-defs/ranger-servicedef-wasb.json +++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-wasb.json @@ -1,6 +1,7 @@ { "id":101, "name": "wasb", + "displayName": "wasb", "implClass": "", "label": "WASB File System", "description": "Ranger plugin for WASB File System", 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 a32c08d..968f49e 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 @@ -1,6 +1,7 @@ { "id":4, "name": "yarn", + "displayName": "yarn", "implClass": "org.apache.ranger.services.yarn.RangerServiceYarn", "label": "YARN", "description": "YARN", diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/model/validation/TestRangerServiceValidator.java b/agents-common/src/test/java/org/apache/ranger/plugin/model/validation/TestRangerServiceValidator.java index c271dd9..02216b6 100644 --- a/agents-common/src/test/java/org/apache/ranger/plugin/model/validation/TestRangerServiceValidator.java +++ b/agents-common/src/test/java/org/apache/ranger/plugin/model/validation/TestRangerServiceValidator.java @@ -72,14 +72,15 @@ public class TestRangerServiceValidator { break; } } - + @Test public void testIsValidServiceNameCreationWithOutSpecialCharacters() throws Exception{ RangerService rangerService = new RangerService(); rangerService.setName("c1_yarn"); + rangerService.setDisplayName("c1_yarn"); rangerService.setType("yarn"); rangerService.setTagService(""); - + RangerServiceConfigDef configDef = new RangerServiceConfigDef(); configDef.setMandatory(true); @@ -110,9 +111,10 @@ public class TestRangerServiceValidator { RangerService rangerService = new RangerService(); rangerService.setId(1L); rangerService.setName("c1_yarn"); + rangerService.setDisplayName("c1_yarn"); rangerService.setType("yarn"); rangerService.setTagService(""); - + RangerServiceConfigDef configDef = new RangerServiceConfigDef(); configDef.setMandatory(true); @@ -387,6 +389,7 @@ public class TestRangerServiceValidator { // create a service with some parameters on it RangerService service = mock(RangerService.class); when(service.getName()).thenReturn("aName"); + when(service.getDisplayName()).thenReturn("aDisplayName"); when(service.getType()).thenReturn("aType"); // contains an extra parameter (param6) and one optional is missing(param4) String[] configs = new String[] { "param1", "param2", "param3", "param5", "param6" }; diff --git a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql index 1857a77..2bbce2d 100644 --- a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql +++ b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql @@ -116,6 +116,7 @@ CREATE TABLE `x_portal_user` ( `status` int(11) NOT NULL DEFAULT '0', `user_src` int(11) NOT NULL DEFAULT '0', `notes` varchar(4000) DEFAULT NULL, + `other_attributes` varchar(4000) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `x_portal_user_UK_login_id` (`login_id`), UNIQUE KEY `x_portal_user_UK_email` (`email`), @@ -274,6 +275,7 @@ CREATE TABLE `x_group` ( `cred_store_id` bigint(20) DEFAULT NULL, `group_src` INT NOT NULL DEFAULT 0, `is_visible` INT(11) NOT NULL DEFAULT '1', + `other_attributes` varchar(4000) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `x_group_UK_group_name` (`group_name`), KEY `x_group_FK_added_by_id` (`added_by_id`), @@ -319,6 +321,7 @@ CREATE TABLE `x_user` ( `status` int(11) NOT NULL DEFAULT '0', `cred_store_id` bigint(20) DEFAULT NULL, `is_visible` INT(11) NOT NULL DEFAULT '1', + `other_attributes` varchar(4000) DEFAULT NULL, PRIMARY KEY (`id`), KEY `x_user_FK_added_by_id` (`added_by_id`), KEY `x_user_FK_upd_by_id` (`upd_by_id`), @@ -513,6 +516,7 @@ CREATE TABLE `x_service_def` ( `upd_by_id` bigint(20) DEFAULT NULL, `version` bigint(20) DEFAULT NULL, `name` varchar(1024) DEFAULT NULL, +`display_name` varchar(1024) DEFAULT NULL, `impl_class_name` varchar(1024) DEFAULT NULL, `label` varchar(1024) DEFAULT NULL, `description` varchar(1024) DEFAULT NULL, @@ -539,6 +543,7 @@ CREATE TABLE `x_service` ( `version` bigint(20) DEFAULT NULL, `type` bigint(20) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, +`display_name` varchar(255) DEFAULT NULL, `policy_version` bigint(20) DEFAULT NULL, `policy_update_time`datetime DEFAULT NULL, `description` varchar(1024) DEFAULT NULL, @@ -1667,6 +1672,8 @@ INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('041',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('042',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('043',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('044',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('045',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('DB_PATCHES',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y'); INSERT INTO x_user_module_perm (user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) diff --git a/security-admin/db/mysql/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql b/security-admin/db/mysql/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql new file mode 100644 index 0000000..b552c42 --- /dev/null +++ b/security-admin/db/mysql/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql @@ -0,0 +1,37 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +drop procedure if exists add_column_in_x_service_def_and_x_service; + +delimiter ;; +create procedure add_column_in_x_service_def_and_x_service() begin + +if not exists (select * from information_schema.columns where table_schema=database() and table_name = 'x_service_def' and column_name='display_name') then + ALTER TABLE x_service_def ADD display_name varchar(1024) DEFAULT NULL; + UPDATE x_service_def SET display_name=name; + UPDATE x_service_def SET display_name='Hadoop SQL' where name='hive'; +end if; + +if not exists (select * from information_schema.columns where table_schema=database() and table_name = 'x_service' and column_name='display_name') then + ALTER TABLE x_service ADD display_name varchar(255) DEFAULT NULL; + UPDATE x_service SET display_name = name; +end if; + +end;; + +delimiter ; +call add_column_in_x_service_def_and_x_service(); + +drop procedure if exists add_column_in_x_service_def_and_x_service; \ No newline at end of file diff --git a/security-admin/db/mysql/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql b/security-admin/db/mysql/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql new file mode 100644 index 0000000..fa9bd1a --- /dev/null +++ b/security-admin/db/mysql/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql @@ -0,0 +1,38 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +drop procedure if exists add_column_in_x_user_and_x_portal_user_and_x_group; + +delimiter ;; +create procedure add_column_in_x_user_and_x_portal_user_and_x_group() begin + +if not exists (select * from information_schema.columns where table_schema=database() and table_name = 'x_user' and column_name='other_attributes') then + ALTER TABLE x_user ADD other_attributes varchar(4000) DEFAULT NULL; +end if; + +if not exists (select * from information_schema.columns where table_schema=database() and table_name = 'x_portal_user' and column_name='other_attributes') then + ALTER TABLE x_portal_user ADD other_attributes varchar(4000) DEFAULT NULL; +end if; + +if not exists (select * from information_schema.columns where table_schema=database() and table_name = 'x_group' and column_name='other_attributes') then + ALTER TABLE x_group ADD other_attributes varchar(4000) DEFAULT NULL; +end if; + +end;; + +delimiter ; +call add_column_in_x_user_and_x_portal_user_and_x_group(); + +drop procedure if exists add_column_in_x_user_and_x_portal_user_and_x_group; \ No newline at end of file diff --git a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql index 0293abe..8587a0b 100644 --- a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql +++ b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql @@ -310,6 +310,7 @@ CREATE TABLE x_portal_user ( status NUMBER(11) DEFAULT '0' NOT NULL , user_src NUMBER(11) DEFAULT '0' NOT NULL , notes VARCHAR(4000) DEFAULT NULL NULL , + other_attributes VARCHAR(4000) DEFAULT NULL NULL, PRIMARY KEY (id), CONSTRAINT x_portal_user_UK_login_id UNIQUE (login_id) , CONSTRAINT x_portal_user_UK_email UNIQUE (email), @@ -435,6 +436,7 @@ CREATE TABLE X_GROUP( CRED_STORE_ID NUMBER(20,0) DEFAULT NULL, group_src NUMBER(10) DEFAULT 0 NOT NULL, is_visible NUMBER(11) DEFAULT 1 NOT NULL, + other_attributes VARCHAR(4000) DEFAULT NULL NULL, PRIMARY KEY (ID), CONSTRAINT x_group_UK_group_name UNIQUE (group_name), CONSTRAINT X_GROUP_FK_ADDED_BY_ID FOREIGN KEY (ADDED_BY_ID) REFERENCES X_PORTAL_USER (ID) ENABLE, @@ -469,6 +471,7 @@ CREATE TABLE x_user ( status NUMBER(11) DEFAULT '0' NOT NULL, cred_store_id NUMBER(20) DEFAULT NULL NULL , is_visible NUMBER(11) DEFAULT 1 NOT NULL , + other_attributes VARCHAR(4000) DEFAULT NULL NULL , PRIMARY KEY (id), CONSTRAINT x_user_UK_user_name UNIQUE (user_name), CONSTRAINT x_user_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), @@ -624,6 +627,7 @@ added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, version NUMBER(20) DEFAULT NULL NULL, name VARCHAR(1024) DEFAULT NULL NULL, +display_name VARCHAR(1024) DEFAULT NULL NULL, impl_class_name VARCHAR(1024) DEFAULT NULL NULL, label VARCHAR(1024) DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, @@ -646,6 +650,7 @@ upd_by_id NUMBER(20) DEFAULT NULL NULL, version NUMBER(20) DEFAULT NULL NULL, type NUMBER(20) DEFAULT NULL NULL, name varchar(255) DEFAULT NULL NULL, +display_name varchar(255) DEFAULT NULL NULL, policy_version NUMBER(20) DEFAULT NULL NULL, policy_update_time DATE DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, @@ -1863,6 +1868,8 @@ INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,act INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, '041',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, '042',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, '043',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); +INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, '044',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); +INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, '045',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); INSERT INTO x_db_version_h (id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES (X_DB_VERSION_H_SEQ.nextval, 'DB_PATCHES',sys_extract_utc(systimestamp),'Ranger 1.0.0',sys_extract_utc(systimestamp),'localhost','Y'); INSERT INTO x_user_module_perm (id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES (X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('admin'),getModulesIdByName('Reports'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1); INSERT INTO x_user_module_perm (id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES (X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('admin'),getModulesIdByName('Resource Based Policies'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1); diff --git a/security-admin/db/oracle/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql b/security-admin/db/oracle/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql new file mode 100644 index 0000000..0d634c6 --- /dev/null +++ b/security-admin/db/oracle/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql @@ -0,0 +1,33 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +DECLARE + v_count number:=0; +BEGIN + select count(*) into v_count from user_tab_cols where table_name='x_service_def' and column_name='display_name'; + if (v_count = 0) then + execute immediate 'ALTER TABLE x_service_def ADD display_name VARCHAR(1024) DEFAULT NULL NULL'; + execute immediate 'UPDATE x_service_def SET display_name=name'; + execute immediate 'UPDATE x_service_def SET display_name=:val where name=:searchVal' using 'Hadoop SQL', 'hive'; + end if; + + v_count number:=0; + select count(*) into v_count from user_tab_cols where table_name='x_service' and column_name='display_name'; + if (v_count = 0) then + execute immediate 'ALTER TABLE x_service ADD display_name VARCHAR(255) DEFAULT NULL NULL'; + execute immediate 'UPDATE x_service SET display_name=name'; + end if; + commit; +END;/ \ No newline at end of file diff --git a/security-admin/db/oracle/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql b/security-admin/db/oracle/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql new file mode 100644 index 0000000..01ad187 --- /dev/null +++ b/security-admin/db/oracle/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql @@ -0,0 +1,36 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +DECLARE + v_count number:=0; +BEGIN + select count(*) into v_count from user_tab_cols where table_name='x_portal_user' and column_name='other_attributes'; + if (v_count = 0) then + execute immediate 'ALTER TABLE x_portal_user ADD other_attributes VARCHAR(4000) DEFAULT NULL NULL'; + end if; + + v_count number:=0; + select count(*) into v_count from user_tab_cols where table_name='x_user' and column_name='other_attributes'; + if (v_count = 0) then + execute immediate 'ALTER TABLE x_user ADD other_attributes VARCHAR(4000) DEFAULT NULL NULL'; + end if; + + v_count number:=0; + select count(*) into v_count from user_tab_cols where table_name='X_GROUP' and column_name='other_attributes'; + if (v_count = 0) then + execute immediate 'ALTER TABLE X_GROUP ADD other_attributes VARCHAR(4000) DEFAULT NULL NULL'; + end if; + commit; +END;/ \ No newline at end of file diff --git a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql index 1d1a31c..f2d1512 100644 --- a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql +++ b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql @@ -191,6 +191,7 @@ email VARCHAR(512) DEFAULT NULL NULL, status INT DEFAULT '0' NOT NULL, user_src INT DEFAULT '0' NOT NULL, notes VARCHAR(4000) DEFAULT NULL NULL, +other_attributes VARCHAR(4000) DEFAULT NULL NULL, PRIMARY KEY(id), CONSTRAINT x_portal_user_UK_login_id UNIQUE(login_id), CONSTRAINT x_portal_user_UK_email UNIQUE(email), @@ -323,6 +324,7 @@ GROUP_TYPE INT DEFAULT '0' NOT NULL, CRED_STORE_ID BIGINT DEFAULT NULL, GROUP_SRC INT DEFAULT 0 NOT NULL, IS_VISIBLE INT DEFAULT '1' NOT NULL, +other_attributes VARCHAR(4000) DEFAULT NULL NULL, PRIMARY KEY(ID), CONSTRAINT x_group_UK_group_name UNIQUE(group_name), CONSTRAINT X_GROUP_FK_ADDED_BY_ID FOREIGN KEY(ADDED_BY_ID) REFERENCES X_PORTAL_USER(ID), @@ -359,6 +361,7 @@ descr VARCHAR(4000) DEFAULT NULL NULL, status INT DEFAULT '0' NOT NULL, cred_store_id BIGINT DEFAULT NULL NULL, is_visible INT DEFAULT '1' NOT NULL, +other_attributes VARCHAR(4000) DEFAULT NULL NULL, PRIMARY KEY(id), CONSTRAINT x_user_UK_user_name UNIQUE(user_name), CONSTRAINT x_user_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id), @@ -521,6 +524,7 @@ added_by_id BIGINT DEFAULT NULL NULL, upd_by_id BIGINT DEFAULT NULL NULL, version BIGINT DEFAULT NULL NULL, name VARCHAR(1024) DEFAULT NULL NULL, +display_name VARCHAR(1024) DEFAULT NULL NULL, impl_class_name VARCHAR(1024) DEFAULT NULL NULL, label VARCHAR(1024) DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, @@ -544,6 +548,7 @@ upd_by_id BIGINT DEFAULT NULL NULL, version BIGINT DEFAULT NULL NULL, type BIGINT DEFAULT NULL NULL, name VARCHAR(255) DEFAULT NULL NULL, +display_name VARCHAR(255) DEFAULT NULL NULL, policy_version BIGINT DEFAULT NULL NULL, policy_update_time TIMESTAMP DEFAULT NULL NULL, description VARCHAR(1024) DEFAULT NULL NULL, @@ -1790,6 +1795,8 @@ INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('041',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('042',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('043',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('044',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('045',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('DB_PATCHES',current_timestamp,'Ranger 1.0.0',current_timestamp,'localhost','Y'); INSERT INTO x_user_module_perm (user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES diff --git a/security-admin/db/postgres/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql b/security-admin/db/postgres/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql new file mode 100644 index 0000000..2f31685 --- /dev/null +++ b/security-admin/db/postgres/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql @@ -0,0 +1,40 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +select 'delimiter start'; +CREATE OR REPLACE FUNCTION add_col_in_x_service_def_and_x_service() +RETURNS void AS $$ +DECLARE + v_column_exists integer := 0; +BEGIN + select count(*) into v_column_exists from pg_attribute where attrelid in(select oid from pg_class where relname='x_service_def') and attname='display_name'; + IF v_column_exists = 0 THEN + ALTER TABLE x_service_def ADD COLUMN display_name VARCHAR(1024) DEFAULT NULL NULL; + UPDATE x_service_def SET display_name=name; + UPDATE x_service_def SET display_name='Hadoop SQL' where name='hive'; + END IF; + + select count(*) into v_column_exists from pg_attribute where attrelid in(select oid from pg_class where relname='x_service') and attname='display_name'; + IF v_column_exists = 0 THEN + ALTER TABLE x_service ADD COLUMN display_name VARCHAR(255) DEFAULT NULL NULL; + UPDATE x_service SET display_name=name; + END IF; + +END; +$$ LANGUAGE plpgsql; +select 'delimiter end'; + +select add_col_in_x_service_def_and_x_service(); +select 'delimiter end'; \ No newline at end of file diff --git a/security-admin/db/postgres/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql b/security-admin/db/postgres/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql new file mode 100644 index 0000000..4962891 --- /dev/null +++ b/security-admin/db/postgres/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql @@ -0,0 +1,42 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +select 'delimiter start'; +CREATE OR REPLACE FUNCTION add_column_in_x_user_and_x_portal_user_and_x_group() +RETURNS void AS $$ +DECLARE + v_column_exists integer := 0; +BEGIN + select count(*) into v_column_exists from pg_attribute where attrelid in(select oid from pg_class where relname='x_portal_user') and attname='other_attributes'; + IF v_column_exists = 0 THEN + ALTER TABLE x_portal_user ADD COLUMN other_attributes VARCHAR(4000) DEFAULT NULL NULL; + END IF; + + select count(*) into v_column_exists from pg_attribute where attrelid in(select oid from pg_class where relname='x_user') and attname='other_attributes'; + IF v_column_exists = 0 THEN + ALTER TABLE x_user ADD COLUMN other_attributes VARCHAR(4000) DEFAULT NULL NULL; + END IF; + + select count(*) into v_column_exists from pg_attribute where attrelid in(select oid from pg_class where relname='x_group') and attname='other_attributes'; + IF v_column_exists = 0 THEN + ALTER TABLE x_group ADD COLUMN other_attributes VARCHAR(4000) DEFAULT NULL NULL; + END IF; + +END; +$$ LANGUAGE plpgsql; +select 'delimiter end'; + +select add_column_in_x_user_and_x_portal_user_and_x_group(); +select 'delimiter end'; \ No newline at end of file diff --git a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql index 5381398..0c17eb9 100644 --- a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql +++ b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql @@ -217,6 +217,7 @@ create table dbo.x_portal_user( status int DEFAULT 0 NOT NULL, user_src int DEFAULT 0 NOT NULL, notes varchar(4000) DEFAULT NULL NULL, + other_attributes varchar(4000) DEFAULT NULL NULL, CONSTRAINT x_portal_user_PK_id PRIMARY KEY CLUSTERED(id), CONSTRAINT x_portal_user_UK_login_id UNIQUE NONCLUSTERED (login_id) ) @@ -330,6 +331,7 @@ create table dbo.x_group( cred_store_id bigint DEFAULT NULL NULL, group_src int DEFAULT 0 NOT NULL, is_visible int DEFAULT 1 NOT NULL, + other_attributes varchar(4000) DEFAULT NULL NULL, CONSTRAINT x_group_PK_id PRIMARY KEY CLUSTERED(id), CONSTRAINT x_group_UK_group_name UNIQUE NONCLUSTERED (group_name) ) @@ -357,6 +359,7 @@ create table dbo.x_user( status int DEFAULT 0 NOT NULL, cred_store_id bigint DEFAULT NULL NULL, is_visible int DEFAULT 1 NOT NULL, + other_attributes varchar(4000) DEFAULT NULL NULL, CONSTRAINT x_user_PK_id PRIMARY KEY CLUSTERED(id), CONSTRAINT x_user_UK_user_name UNIQUE NONCLUSTERED (user_name) ) @@ -487,6 +490,7 @@ create table dbo.x_service_def( upd_by_id bigint DEFAULT NULL NULL, version bigint DEFAULT NULL NULL, name varchar(1024) DEFAULT NULL NULL, + display_name varchar(1024) DEFAULT NULL NULL, impl_class_name varchar(1024) DEFAULT NULL NULL, label varchar(1024) DEFAULT NULL NULL, description varchar(1024) DEFAULT NULL NULL, @@ -507,6 +511,7 @@ create table dbo.x_service ( version bigint DEFAULT NULL NULL, type bigint DEFAULT NULL NULL, name varchar(255) DEFAULT NULL NULL, + display_name varchar(255) DEFAULT NULL NULL, policy_version bigint DEFAULT NULL NULL, policy_update_time datetime DEFAULT NULL NULL, description varchar(1024) DEFAULT NULL NULL, @@ -2150,6 +2155,10 @@ INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active GO INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('043',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); GO +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('044',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); +GO +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('045',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); +GO INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); GO INSERT INTO x_user_module_perm (user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES (dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1); diff --git a/security-admin/db/sqlanywhere/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql b/security-admin/db/sqlanywhere/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql new file mode 100644 index 0000000..76bb780 --- /dev/null +++ b/security-admin/db/sqlanywhere/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql @@ -0,0 +1,27 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_service_def' and cname = 'display_name') THEN + ALTER TABLE dbo.x_service_def ADD display_name varchar(1024) DEFAULT NULL NULL; + UPDATE dbo.x_service_def SET display_name=name; + UPDATE dbo.x_service_def SET display_name='Hadoop SQL' where name='hive'; +END IF; +GO +IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_service' and cname = 'display_name') THEN + ALTER TABLE dbo.x_service ADD display_name varchar(255) DEFAULT NULL NULL; + UPDATE dbo.x_service SET display_name=name; +END IF; +GO +exit \ No newline at end of file diff --git a/security-admin/db/sqlanywhere/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql b/security-admin/db/sqlanywhere/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql new file mode 100644 index 0000000..a70bf9d --- /dev/null +++ b/security-admin/db/sqlanywhere/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql @@ -0,0 +1,28 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_portal_user' and cname = 'other_attributes') THEN + ALTER TABLE dbo.x_portal_user ADD other_attributes varchar(4000) DEFAULT NULL NULL; +END IF; +GO +IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_user' and cname = 'other_attributes') THEN + ALTER TABLE dbo.x_user ADD other_attributes varchar(4000) DEFAULT NULL NULL; +END IF; +GO +IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_group' and cname = 'other_attributes') THEN + ALTER TABLE dbo.x_group ADD other_attributes varchar(4000) DEFAULT NULL NULL; +END IF; +GO +exit \ No newline at end of file diff --git a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql index d24de68..d049110 100644 --- a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql +++ b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql @@ -975,6 +975,7 @@ CREATE TABLE [dbo].[x_portal_user]( [status] [int] DEFAULT 0 NOT NULL, [user_src] [int] DEFAULT 0 NOT NULL, [notes] [varchar](4000) DEFAULT NULL NULL, + [other_attributes] [varchar](4000) DEFAULT NULL NULL, PRIMARY KEY CLUSTERED ( [id] ASC @@ -1126,6 +1127,7 @@ CREATE TABLE [dbo].[x_group]( [cred_store_id] [bigint] DEFAULT NULL NULL, [group_src] [int] DEFAULT 0 NOT NULL, [is_visible] [int] DEFAULT 1 NOT NULL, + [other_attributes] [varchar](4000) DEFAULT NULL NULL, PRIMARY KEY CLUSTERED ( [id] ASC @@ -1168,6 +1170,7 @@ CREATE TABLE [dbo].[x_user]( [status] [int] DEFAULT 0 NOT NULL, [cred_store_id] [bigint] DEFAULT NULL NULL, [is_visible] [int] DEFAULT 1 NOT NULL, + [other_attributes] [varchar](4000) DEFAULT NULL NULL, PRIMARY KEY CLUSTERED ( [id] ASC @@ -1350,6 +1353,7 @@ CREATE TABLE [dbo].[x_service_def]( [upd_by_id] [bigint] DEFAULT NULL NULL, [version] [bigint] DEFAULT NULL NULL, [name] [varchar](1024) DEFAULT NULL NULL, + [display_name] [varchar](1024) DEFAULT NULL NULL, [impl_class_name] [varchar](1024) DEFAULT NULL NULL, [label] [varchar](1024) DEFAULT NULL NULL, [description] [varchar](1024) DEFAULT NULL NULL, @@ -1375,6 +1379,7 @@ CREATE TABLE [dbo].[x_service] ( [version] [bigint] DEFAULT NULL NULL, [type] [bigint] DEFAULT NULL NULL, [name] [varchar](255) DEFAULT NULL NULL, + [display_name] [varchar](255) DEFAULT NULL NULL, [policy_version] [bigint] DEFAULT NULL NULL, [policy_update_time] [datetime2] DEFAULT NULL NULL, [description] [varchar](1024) DEFAULT NULL NULL, @@ -2048,7 +2053,7 @@ CREATE TABLE [dbo].[x_service_version_info]( [policy_update_time] [datetime2] DEFAULT NULL NULL, [tag_version] [bigint] NOT NULL DEFAULT 0, [tag_update_time] [datetime2] DEFAULT NULL NULL, - [policy_version] [bigint] NOT NULL DEFAULT 0, + [role_version] [bigint] NOT NULL DEFAULT 0, [role_update_time] [datetime2] DEFAULT NULL NULL, PRIMARY KEY CLUSTERED ( @@ -3895,6 +3900,8 @@ INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('041',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('042',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('043',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('044',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); +INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('045',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); INSERT INTO x_db_version_h (version,inst_at,inst_by,updated_at,updated_by,active) VALUES ('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger 1.0.0',CURRENT_TIMESTAMP,'localhost','Y'); INSERT INTO x_user_module_perm (user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES (dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1); INSERT INTO x_user_module_perm (user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed) VALUES (dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Resource Based Policies'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1); diff --git a/security-admin/db/sqlserver/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql b/security-admin/db/sqlserver/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql new file mode 100644 index 0000000..2d47927 --- /dev/null +++ b/security-admin/db/sqlserver/patches/044-add-displayName-col-in-x_service_def_and_x_service.sql @@ -0,0 +1,30 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +GO +IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name = 'x_service_def' and column_name = 'display_name') +BEGIN + ALTER TABLE [dbo].[x_service_def] ADD [display_name] [varchar](1024) DEFAULT NULL NULL; + UPDATE [dbo].[x_service_def] SET [display_name] = [name]; + UPDATE [dbo].[x_service_def] SET [display_name] = 'Hadoop SQL' where [name] = 'hive'; +END +GO +IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name = 'x_service' and column_name = 'display_name') +BEGIN + ALTER TABLE [dbo].[x_service] ADD [display_name] [varchar](255) DEFAULT NULL NULL; + UPDATE [dbo].[x_service] SET [display_name] = [name]; +END +GO +exit \ No newline at end of file diff --git a/security-admin/db/sqlserver/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql b/security-admin/db/sqlserver/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql new file mode 100644 index 0000000..6bd0ff9 --- /dev/null +++ b/security-admin/db/sqlserver/patches/045-add-otherAttributes-col-in-x_user-x_portal_user-x_group.sql @@ -0,0 +1,32 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +GO +IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name = 'x_portal_user' and column_name = 'other_attributes') +BEGIN + ALTER TABLE [dbo].[x_portal_user] ADD [other_attributes] [varchar](4000) DEFAULT NULL NULL; +END +GO +IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name = 'x_user' and column_name = 'other_attributes') +BEGIN + ALTER TABLE [dbo].[x_user] ADD [other_attributes] [varchar](4000) DEFAULT NULL NULL; +END +GO +IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name = 'x_group' and column_name = 'other_attributes') +BEGIN + ALTER TABLE [dbo].[x_group] ADD [other_attributes] [varchar](4000) DEFAULT NULL NULL; +END +GO +exit \ No newline at end of file diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index 866eed9..0ab733c 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -1392,6 +1392,31 @@ public class ServiceDBStore extends AbstractServiceStore { return ret; } + /** + * @param displayName + * @return {@link RangerServiceDef} - service using display name if present in DB, <code>null</code> otherwise. + */ + @Override + public RangerServiceDef getServiceDefByDisplayName(String displayName) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServiceDefByDisplayName(" + displayName + ")"); + } + + RangerServiceDef ret = null; + + XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByDisplayName(displayName); + + if(xServiceDef != null) { + ret = serviceDefService.getPopulatedViewObject(xServiceDef); + } + + if (LOG.isDebugEnabled()) { + LOG.debug("== ServiceDBStore.getServiceDefByName(" + displayName + "): " + ret); + } + + return ret; + } + @Override public List<RangerServiceDef> getServiceDefs(SearchFilter filter) throws Exception { if (LOG.isDebugEnabled()) { @@ -1850,6 +1875,25 @@ public class ServiceDBStore extends AbstractServiceStore { return xService == null ? null : svcService.getPopulatedViewObject(xService); } + @Override + public RangerService getServiceByDisplayName(String displayName) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServiceByName()"); + } + XXService xService = daoMgr.getXXService().findByDisplayName(displayName); + + if (ContextUtil.getCurrentUserSession() != null) { + if (xService == null) { + return null; + } + if (!bizUtil.hasAccess(xService, null)) { + throw restErrorUtil.createRESTException("Logged in user is not allowed to read service, name: " + displayName, + MessageEnums.OPER_NO_PERMISSION); + } + } + return xService == null ? null : svcService.getPopulatedViewObject(xService); + } + public RangerService getServiceByNameForDP(String name) throws Exception { if(LOG.isDebugEnabled()) { LOG.debug("==> ServiceDBStore.getServiceByNameForDP()"); diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java index 99af818..98a8596 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java @@ -51,9 +51,12 @@ public class RangerSearchUtil extends SearchUtil { } ret.setParam(SearchFilter.SERVICE_TYPE, request.getParameter(SearchFilter.SERVICE_TYPE)); + ret.setParam(SearchFilter.SERVICE_TYPE_DISPLAY_NAME, request.getParameter(SearchFilter.SERVICE_TYPE_DISPLAY_NAME)); ret.setParam(SearchFilter.SERVICE_TYPE_ID, request.getParameter(SearchFilter.SERVICE_TYPE_ID)); ret.setParam(SearchFilter.SERVICE_NAME, request.getParameter(SearchFilter.SERVICE_NAME)); + ret.setParam(SearchFilter.SERVICE_DISPLAY_NAME, request.getParameter(SearchFilter.SERVICE_DISPLAY_NAME)); ret.setParam(SearchFilter.SERVICE_NAME_PARTIAL, request.getParameter(SearchFilter.SERVICE_NAME_PARTIAL)); + ret.setParam(SearchFilter.SERVICE_DISPLAY_NAME_PARTIAL, request.getParameter(SearchFilter.SERVICE_DISPLAY_NAME_PARTIAL)); ret.setParam(SearchFilter.SERVICE_ID, request.getParameter(SearchFilter.SERVICE_ID)); ret.setParam(SearchFilter.POLICY_NAME, request.getParameter(SearchFilter.POLICY_NAME)); ret.setParam(SearchFilter.POLICY_NAME_PARTIAL, request.getParameter(SearchFilter.POLICY_NAME_PARTIAL)); diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java index 0791f2f..d667f2c 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java @@ -51,6 +51,19 @@ public class XXServiceDao extends BaseDao<XXService> { } } + public XXService findByDisplayName(String displayName) { + if (displayName == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXService.findByDisplayName", tClass) + .setParameter("displayName", displayName).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + public Long getMaxIdOfXXService() { try { return (Long) getEntityManager().createNamedQuery("XXService.getMaxIdOfXXService").getSingleResult(); diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java index beef5bf..ddf28f2 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java @@ -24,6 +24,8 @@ import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXServiceDef; import org.springframework.stereotype.Service; +import java.util.Objects; + @Service public class XXServiceDefDao extends BaseDao<XXServiceDef> { /** @@ -47,6 +49,21 @@ public class XXServiceDefDao extends BaseDao<XXServiceDef> { } } + public XXServiceDef findByDisplayName(String displayName) { + if (Objects.isNull(displayName)) { + return null; + } + try { + XXServiceDef xServiceDef = getEntityManager() + .createNamedQuery("XXServiceDef.findByDisplayName", tClass) + .setParameter("displayName", displayName).getSingleResult(); + return xServiceDef; + } catch (NoResultException e) { + return null; + } + } + + public Long getMaxIdOfXXServiceDef() { try { return (Long) getEntityManager().createNamedQuery("XXServiceDef.getMaxIdOfXXServiceDef").getSingleResult(); diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXGroup.java b/security-admin/src/main/java/org/apache/ranger/entity/XXGroup.java index dc95b58..996a9e1 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXGroup.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXGroup.java @@ -119,6 +119,14 @@ public class XXGroup extends XXDBBase implements java.io.Serializable { @Column(name="CRED_STORE_ID" ) protected Long credStoreId; + /** + * Additional store attributes. + * <ul> + * </ul> + * + */ + @Column(name="OTHER_ATTRIBUTES") + protected String otherAttributes; /** * Default constructor. This will set all the attributes to default value. @@ -239,7 +247,22 @@ public class XXGroup extends XXDBBase implements java.io.Serializable { return this.credStoreId; } + /** + * This method sets JSON {@link String} representation of additional store attributes. + * This method accepts null values. + * @param otherAttributes + */ + public void setOtherAttributes(String otherAttributes) { + this.otherAttributes = otherAttributes; + } + /** + * @return JSON {@link String} representation of additional store attributes if available, + * <code>null</code> otherwise. + */ + public String getOtherAttributes() { + return otherAttributes; + } /** * This return the bean content in string format @@ -256,10 +279,11 @@ public class XXGroup extends XXDBBase implements java.io.Serializable { str += "groupType={" + groupType + "} "; str += "credStoreId={" + credStoreId + "} "; str += "groupSrc={" + groupSource + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } - + public int getGroupSource() { return groupSource; } diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPortalUser.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPortalUser.java index 89b180d..ed69f38 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXPortalUser.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPortalUser.java @@ -148,6 +148,15 @@ public class XXPortalUser extends XXDBBase implements java.io.Serializable { protected String notes; /** + * Additional store attributes. + * <ul> + * </ul> + * + */ + @Column(name="OTHER_ATTRIBUTES") + protected String otherAttributes; + + /** * Default constructor. This will set all the attributes to default value. */ public XXPortalUser ( ) { @@ -314,6 +323,23 @@ public class XXPortalUser extends XXDBBase implements java.io.Serializable { } /** + * This method sets JSON {@link String} representation of additional store attributes. + * This method accepts null values. + * @param otherAttributes + */ + public void setOtherAttributes(String otherAttributes) { + this.otherAttributes = otherAttributes; + } + + /** + * @return JSON {@link String} representation of additional store attributes if available, + * <code>null</code> otherwise. + */ + public String getOtherAttributes() { + return otherAttributes; + } + + /** * This return the bean content in string format * @return formatedStr */ @@ -329,6 +355,7 @@ public class XXPortalUser extends XXDBBase implements java.io.Serializable { str += "status={" + status + "} "; str += "userSource={" + userSource + "} "; str += "notes={" + notes + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java index 366dc55..85ce53c 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java @@ -70,6 +70,14 @@ public abstract class XXServiceBase extends XXDBBase { protected String name; /** + * displayName of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "display_name") + protected String displayName; + /** * tagService of the XXService * <ul> * </ul> @@ -209,6 +217,14 @@ public abstract class XXServiceBase extends XXDBBase { return this.name; } + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + /** * This method sets the value to the member attribute <b> tagService</b> . * @@ -453,7 +469,7 @@ public abstract class XXServiceBase extends XXDBBase { @Override public String toString() { return "XXServiceBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", type=" + type - + ", name=" + name + ", tagService=" + tagService + ", policyVersion=" + policyVersion + ", policyUpdateTime=" + policyUpdateTime + + ", name=" + name +", displayName=" + displayName + ", tagService=" + tagService + ", policyVersion=" + policyVersion + ", policyUpdateTime=" + policyUpdateTime + ", tagVersion=" + tagVersion + ", tagUpdateTime=" + tagUpdateTime + ", description=" + description + ", isEnabled=" + isEnabled + "]"; } diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDefBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDefBase.java index 9a35359..7f8d619 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDefBase.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDefBase.java @@ -58,6 +58,15 @@ public abstract class XXServiceDefBase extends XXDBBase implements Serializable protected String name; /** + * displayName of the XXServiceDef + * <ul> + * </ul> + * + */ + @Column(name = "display_name") + protected String displayName; + + /** * implClassName of the XXServiceDef * <ul> * </ul> @@ -306,6 +315,25 @@ public abstract class XXServiceDefBase extends XXDBBase implements Serializable return this.isEnabled; } + /** + * This method sets the value to the member attribute <b> displayName</b> . You cannot set null to the attribute. + * + * @param displayName + * Value to set member attribute <b> displayName</b> + */ + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + /** + * Returns the value for the member attribute <b>displayName</b> + * + * @return Date - value of member attribute <b>displayName</b> . + */ + public String getDisplayName() { + return displayName; + } + /* * (non-Javadoc) * @@ -396,7 +424,7 @@ public abstract class XXServiceDefBase extends XXDBBase implements Serializable */ @Override public String toString() { - return "XXServiceDefBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", name=" + name + return "XXServiceDefBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", name=" + name +", displayName=" + displayName + ", implClassName=" + implClassName + ", label=" + label + ", description=" + description + ", rbKeyLabel=" + rbKeyLabel + ", rbKeyDescription=" + rbKeyDescription + ", isEnabled" + isEnabled + "]"; diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXUser.java b/security-admin/src/main/java/org/apache/ranger/entity/XXUser.java index 4720095..0464e7b 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXUser.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXUser.java @@ -106,6 +106,14 @@ public class XXUser extends XXDBBase implements java.io.Serializable { @Column(name="CRED_STORE_ID" ) protected Long credStoreId; + /** + * Additional store attributes. + * <ul> + * </ul> + * + */ + @Column(name="OTHER_ATTRIBUTES") + protected String otherAttributes; /** * Default constructor. This will set all the attributes to default value. @@ -212,6 +220,23 @@ public class XXUser extends XXDBBase implements java.io.Serializable { /** + * This method sets JSON {@link String} representation of additional store attributes. + * This method accepts null values. + * @param otherAttributes + */ + public void setOtherAttributes(String otherAttributes) { + this.otherAttributes = otherAttributes; + } + + /** + * @return JSON {@link String} representation of additional store attributes if available, + * <code>null</code> otherwise. + */ + public String getOtherAttributes() { + return otherAttributes; + } + + /** * This return the bean content in string format * @return formatedStr */ @@ -224,6 +249,7 @@ public class XXUser extends XXDBBase implements java.io.Serializable { str += "status={" + status + "} "; str += "isvisible={" + isVisible + "} "; str += "credStoreId={" + credStoreId + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java index d60b738..3d8a329 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; +import java.util.Objects; import javax.annotation.Nonnull; import javax.annotation.PostConstruct; @@ -266,6 +267,13 @@ public class ServiceREST { RangerServiceDef ret = null; RangerPerfTracer perf = null; + /** + * If display name is blank (EMPTY String or NULL), use name. + */ + if (StringUtils.isBlank(serviceDef.getDisplayName())) { + serviceDef.setDisplayName(serviceDef.getName()); + } + try { if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "ServiceREST.createServiceDef(serviceDefName=" + serviceDef.getName() + ")"); @@ -310,6 +318,21 @@ public class ServiceREST { if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "ServiceREST.updateServiceDef(" + serviceDef.getName() + ")"); } + + /** + * If display name is blank (EMPTY String or NULL), use previous display name. + */ + if (StringUtils.isBlank(serviceDef.getDisplayName())) { + RangerServiceDef rangerServiceDef = svcStore.getServiceDef(serviceDef.getId()); + + // If previous display name is blank (EMPTY String or NULL), user name. + if (Objects.isNull(rangerServiceDef) || StringUtils.isBlank(rangerServiceDef.getDisplayName())) { + serviceDef.setDisplayName(serviceDef.getName()); + } else { + serviceDef.setDisplayName(rangerServiceDef.getDisplayName()); + } + } + RangerServiceDefValidator validator = validatorFactory.getServiceDefValidator(svcStore); validator.validate(serviceDef, Action.UPDATE); @@ -676,18 +699,29 @@ public class ServiceREST { RangerService ret = null; RangerPerfTracer perf = null; + /** + * If display name is blank (EMPTY String or NULL), use name. + */ + if (StringUtils.isBlank(service.getDisplayName())) { + service.setDisplayName(service.getName()); + } + try { - + if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "ServiceREST.createService(serviceName=" + service.getName() + ")"); } RangerServiceValidator validator = validatorFactory.getServiceValidator(svcStore); validator.validate(service, Action.CREATE); - + if(!StringUtils.isEmpty(service.getName().trim())){ service.setName(service.getName().trim()); } + if(!StringUtils.isEmpty(service.getDisplayName().trim())){ + service.setDisplayName(service.getDisplayName().trim()); + } + UserSessionBase session = ContextUtil.getCurrentUserSession(); XXServiceDef xxServiceDef = daoManager.getXXServiceDef().findByName(service.getType()); if(session != null && !session.isSpnegoEnabled()){ @@ -747,17 +781,36 @@ public class ServiceREST { RangerPerfTracer perf = null; try { - + if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "ServiceREST.updateService(serviceName=" + service.getName() + ")"); } + + /** + * If display name is blank (EMPTY String or NULL), use previous display name. + */ + if (StringUtils.isBlank(service.getDisplayName())) { + RangerService rangerService = svcStore.getService(service.getId()); + + // If previous display name is blank (EMPTY String or NULL), user name. + if (Objects.isNull(rangerService) || StringUtils.isBlank(rangerService.getDisplayName())) { + service.setDisplayName(service.getName()); + } else { + service.setDisplayName(rangerService.getDisplayName()); + } + } + RangerServiceValidator validator = validatorFactory.getServiceValidator(svcStore); validator.validate(service, Action.UPDATE); - + if(!StringUtils.isEmpty(service.getName().trim())){ service.setName(service.getName().trim()); } + if(!StringUtils.isEmpty(service.getDisplayName().trim())){ + service.setDisplayName(service.getDisplayName().trim()); + } + bizUtil.hasAdminPermissions("Services"); // TODO: As of now we are allowing SYS_ADMIN to create all the 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 9b543ef..d8ecd5f 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 @@ -69,20 +69,22 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V @Autowired GUIDUtil guidUtil; - + public RangerServiceDefServiceBase() { super(); - + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_DISPLAY_NAME, "obj.displayName", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); - + sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); sortFields.add(new SortField(SearchFilter.SERVICE_TYPE_ID, "obj.id")); sortFields.add(new SortField(SearchFilter.SERVICE_TYPE, "obj.name")); + sortFields.add(new SortField(SearchFilter.SERVICE_TYPE_DISPLAY_NAME, "obj.displayName")); } - + @Override protected V populateViewBean(T xServiceDef) { V serviceDef = super.populateViewBean((T) xServiceDef); @@ -205,11 +207,12 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V @Override protected T mapViewToEntityBean(V vObj, T xObj, int operationContext) { - + String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid(); - + xObj.setGuid(guid); xObj.setName(vObj.getName()); + xObj.setDisplayName(vObj.getDisplayName()); xObj.setImplclassname(vObj.getImplClass()); xObj.setLabel(vObj.getLabel()); xObj.setDescription(vObj.getDescription()); @@ -234,9 +237,10 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V vObj.setRbKeyLabel(xObj.getRbkeylabel()); vObj.setRbKeyDescription(xObj.getRbkeydescription()); vObj.setIsEnabled(xObj.getIsEnabled()); + vObj.setDisplayName(xObj.getDisplayName()); return vObj; } - + public XXServiceConfigDef populateRangerServiceConfigDefToXX(RangerServiceConfigDef vObj, XXServiceConfigDef xObj, XXServiceDef serviceDef, int operationContext) { if(serviceDef == null) { diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java index 22d3c60..9ca6355 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java @@ -62,6 +62,7 @@ public class RangerServiceService extends RangerServiceServiceBase<XXService, Ra String actionDelete; static { trxLogAttrs.put("name", new VTrxLogAttr("name", "Service Name", false)); + trxLogAttrs.put("displayName", new VTrxLogAttr("displayName", "Service Display Name", false)); trxLogAttrs.put("description", new VTrxLogAttr("description", "Service Description", false)); trxLogAttrs.put("isEnabled", new VTrxLogAttr("isEnabled", "Service Status", false)); trxLogAttrs.put("configs", new VTrxLogAttr("configs", "Connection Configurations", false)); diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java index 7db67ac..fbe5e42 100755 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java @@ -44,25 +44,27 @@ public abstract class RangerServiceServiceBase<T extends XXServiceBase, V extend public RangerServiceServiceBase() { super(); - + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "xSvcDef.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, "XXServiceDef xSvcDef", "obj.type = xSvcDef.id")); searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "obj.type", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.SERVICE_DISPLAY_NAME, "obj.displayName", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.SERVICE_NAME_PARTIAL, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.PARTIAL)); + searchFields.add(new SearchField(SearchFilter.SERVICE_DISPLAY_NAME_PARTIAL, "obj.displayName", DATA_TYPE.STRING, SEARCH_TYPE.PARTIAL)); searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_ID, "obj.tagService", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_NAME, "xTagSvc.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, "XXServiceBase xTagSvc", "obj.tagService = xTagSvc.id")); - + sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); sortFields.add(new SortField(SearchFilter.SERVICE_ID, "obj.id", true, SORT_ORDER.ASC)); sortFields.add(new SortField(SearchFilter.SERVICE_NAME, "obj.name")); - + sortFields.add(new SortField(SearchFilter.SERVICE_DISPLAY_NAME, "obj.displayName")); } - + @Override protected T mapViewToEntityBean(V vObj, T xObj, int OPERATION_CONTEXT) { String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid(); @@ -92,6 +94,7 @@ public abstract class RangerServiceServiceBase<T extends XXServiceBase, V extend xObj.setType(xServiceDef.getId()); xObj.setName(vObj.getName()); + xObj.setDisplayName(vObj.getDisplayName()); xObj.setTagService(tagServiceId); if (OPERATION_CONTEXT == OPERATION_CREATE_CONTEXT) { xObj.setTagVersion(vObj.getTagVersion()); @@ -109,6 +112,7 @@ public abstract class RangerServiceServiceBase<T extends XXServiceBase, V extend vObj.setGuid(xObj.getGuid()); vObj.setVersion(xObj.getVersion()); vObj.setName(xObj.getName()); + vObj.setDisplayName(xObj.getDisplayName()); vObj.setDescription(xObj.getDescription()); vObj.setTagService(xTagService != null ? xTagService.getName() : null); XXServiceVersionInfo versionInfoObj = daoMgr.getXXServiceVersionInfo().findByServiceId(xObj.getId()); diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java index 378e393..1a701bb 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java @@ -47,6 +47,7 @@ public abstract class XGroupServiceBase<T extends XXGroup, V extends VXGroup> mObj.setGroupType( vObj.getGroupType()); mObj.setCredStoreId( vObj.getCredStoreId()); mObj.setGroupSource(vObj.getGroupSource()); + mObj.setOtherAttributes(vObj.getOtherAttributes()); return mObj; } @@ -58,6 +59,7 @@ public abstract class XGroupServiceBase<T extends XXGroup, V extends VXGroup> vObj.setGroupType( mObj.getGroupType()); vObj.setCredStoreId( mObj.getCredStoreId()); vObj.setGroupSource(mObj.getGroupSource()); + vObj.setOtherAttributes(mObj.getOtherAttributes()); return vObj; } diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java index 1c0b7c8..85e4b84 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java @@ -50,6 +50,7 @@ public abstract class XPortalUserServiceBase<T extends XXPortalUser, V extends V mObj.setStatus( vObj.getStatus()); mObj.setUserSource( vObj.getUserSource()); mObj.setNotes( vObj.getNotes()); + mObj.setOtherAttributes(vObj.getOtherAttributes()); return mObj; } @@ -64,6 +65,7 @@ public abstract class XPortalUserServiceBase<T extends XXPortalUser, V extends V vObj.setStatus( mObj.getStatus()); vObj.setUserSource( mObj.getUserSource()); vObj.setNotes( mObj.getNotes()); + vObj.setOtherAttributes(mObj.getOtherAttributes()); return vObj; } diff --git a/security-admin/src/main/java/org/apache/ranger/service/XUserServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XUserServiceBase.java index 9669c0b..1004952 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/XUserServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/XUserServiceBase.java @@ -46,6 +46,7 @@ public abstract class XUserServiceBase<T extends XXUser, V extends VXUser> mObj.setIsVisible(vObj.getIsVisible()); mObj.setDescription( vObj.getDescription()); mObj.setCredStoreId( vObj.getCredStoreId()); + mObj.setOtherAttributes(vObj.getOtherAttributes()); return mObj; } @@ -56,6 +57,7 @@ public abstract class XUserServiceBase<T extends XXUser, V extends VXUser> vObj.setIsVisible(mObj.getIsVisible()); vObj.setDescription( mObj.getDescription()); vObj.setCredStoreId( mObj.getCredStoreId()); + vObj.setOtherAttributes(mObj.getOtherAttributes()); return vObj; } diff --git a/security-admin/src/main/java/org/apache/ranger/view/VXGroup.java b/security-admin/src/main/java/org/apache/ranger/view/VXGroup.java index 624dd5a..ed64704 100644 --- a/security-admin/src/main/java/org/apache/ranger/view/VXGroup.java +++ b/security-admin/src/main/java/org/apache/ranger/view/VXGroup.java @@ -65,7 +65,13 @@ public class VXGroup extends VXDataObject implements java.io.Serializable { * Group visibility */ protected Integer isVisible; - + + /** + * Additional store attributes. + * + */ + protected String otherAttributes; + /** * Default constructor. This will set all the attributes to default value. */ @@ -173,6 +179,21 @@ public class VXGroup extends VXDataObject implements java.io.Serializable { } /** + * @return {@link String} - additional attributes. + */ + public String getOtherAttributes() { + return otherAttributes; + } + + /** + * This method sets additional attributes. + * @param otherAttributes + */ + public void setOtherAttributes(final String otherAttributes) { + this.otherAttributes = otherAttributes; + } + + /** * This return the bean content in string format * @return formatedStr */ @@ -185,6 +206,7 @@ public class VXGroup extends VXDataObject implements java.io.Serializable { str += "credStoreId={" + credStoreId + "} "; str += "isVisible={" + isVisible + "} "; str += "groupSrc={" + groupSource + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } diff --git a/security-admin/src/main/java/org/apache/ranger/view/VXPortalUser.java b/security-admin/src/main/java/org/apache/ranger/view/VXPortalUser.java index 0295649..b6035b2 100644 --- a/security-admin/src/main/java/org/apache/ranger/view/VXPortalUser.java +++ b/security-admin/src/main/java/org/apache/ranger/view/VXPortalUser.java @@ -84,6 +84,13 @@ public class VXPortalUser extends VXDataObject implements java.io.Serializable { protected List<VXUserPermission> userPermList; protected List<VXGroupPermission> groupPermissions; + + /** + * Additional store attributes. + * + */ + protected String otherAttributes; + /** * Default constructor. This will set all the attributes to default value. */ @@ -292,6 +299,22 @@ public class VXPortalUser extends VXDataObject implements java.io.Serializable { this.groupPermissions = groupPermissions; } + + /** + * @return {@link String} - additional attributes. + */ + public String getOtherAttributes() { + return otherAttributes; + } + + /** + * This method sets additional attributes. + * @param otherAttributes + */ + public void setOtherAttributes(final String otherAttributes) { + this.otherAttributes = otherAttributes; + } + /** * This return the bean content in string format * @return formatedStr @@ -308,6 +331,7 @@ public class VXPortalUser extends VXDataObject implements java.io.Serializable { str += "userSource={" + userSource + "} "; str += "notes={" + notes + "} "; str += "userRoleList={" + userRoleList + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } diff --git a/security-admin/src/main/java/org/apache/ranger/view/VXUser.java b/security-admin/src/main/java/org/apache/ranger/view/VXUser.java index 1c01219..96f6468 100644 --- a/security-admin/src/main/java/org/apache/ranger/view/VXUser.java +++ b/security-admin/src/main/java/org/apache/ranger/view/VXUser.java @@ -86,6 +86,12 @@ public class VXUser extends VXDataObject implements java.io.Serializable { protected Collection<String> userRoleList; /** + * Additional store attributes. + * + */ + protected String otherAttributes; + + /** * Default constructor. This will set all the attributes to default value. */ public VXUser ( ) { @@ -285,6 +291,21 @@ public class VXUser extends VXDataObject implements java.io.Serializable { } /** + * @return {@link String} - additional attributes. + */ + public String getOtherAttributes() { + return otherAttributes; + } + + /** + * This method sets additional attributes. + * @param otherAttributes + */ + public void setOtherAttributes(final String otherAttributes) { + this.otherAttributes = otherAttributes; + } + + /** * This return the bean content in string format * @return formatedStr */ @@ -301,6 +322,7 @@ public class VXUser extends VXDataObject implements java.io.Serializable { str += "groupIdList={" + groupIdList + "} "; str += "groupNameList={" + groupNameList + "} "; str += "roleList={" + userRoleList + "} "; + str += "otherAttributes={" + otherAttributes + "} "; str += "}"; return str; } diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index b619b7a..e36f563 100755 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -330,6 +330,10 @@ <query>select obj from XXServiceDef obj where obj.name = :name</query> </named-query> + <named-query name="XXServiceDef.findByDisplayName"> + <query>select obj from XXServiceDef obj where obj.displayName = :displayName</query> + </named-query> + <named-query name="XXServiceDef.getMaxIdOfXXServiceDef"> <query>select MAX(obj.id) from XXServiceDef obj</query> </named-query> @@ -462,10 +466,14 @@ <query>select obj from XXService obj where obj.name = :name</query> </named-query> + <named-query name="XXService.findByDisplayName"> + <query>select obj from XXService obj where obj.displayName = :displayName</query> + </named-query> + <named-query name="XXService.getMaxIdOfXXService"> <query>select MAX(obj.id) from XXService obj</query> </named-query> - + <named-query name="XXService.findByServiceDefId"> <query>select obj from XXService obj where obj.type = :serviceDefId</query> </named-query> diff --git a/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js b/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js index 398941a..e5a28e8 100644 --- a/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js +++ b/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js @@ -54,6 +54,11 @@ define(function(require){ // Overwrite your schema definition here return _.extend(attrs,{ + displayName : { + type : 'Text', + title : 'Display Name' + }, + name : { type : 'Text', title : 'Service Name *', diff --git a/security-admin/src/main/webapp/scripts/views/service/RangerServiceViewDetail.js b/security-admin/src/main/webapp/scripts/views/service/RangerServiceViewDetail.js index a169baa..24aeedb 100644 --- a/security-admin/src/main/webapp/scripts/views/service/RangerServiceViewDetail.js +++ b/security-admin/src/main/webapp/scripts/views/service/RangerServiceViewDetail.js @@ -44,6 +44,7 @@ define(function(require) { description : this.options.rangerService.get('description'), isEnabled : this.options.rangerService.get('isEnabled'), tagService : (this.options.rangerService.get('tagService')) ? this.options.rangerService.get('tagService') : false, + displayName : this.options.rangerService.get('displayName'), } }, diff --git a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js index b7215f2..59df159 100644 --- a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js +++ b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js @@ -82,7 +82,7 @@ define(function(require){ * Override here ONLY if special case!! */ - fields: ['name', 'description', 'isEnabled', 'type','configs', '_vPassword'], + fields: ['displayName', 'name', 'description', 'isEnabled', 'type','configs', '_vPassword'], schema : function(){ var attrs = _.pick(_.result(this.rangerServiceDefModel,'schemaBase'), this.getSerivceBaseFieldNames()); @@ -225,7 +225,7 @@ define(function(require){ } }, getSerivceBaseFieldNames : function(){ - var fields = ['name', 'description', 'isEnabled','tagService'] + var fields = ['displayName', 'name', 'description', 'isEnabled','tagService'] return this.rangerServiceDefModel.get('name') == XAEnums.ServiceType.SERVICE_TAG.label ? fields.slice(0,fields.indexOf("tagService")) : fields; } }); diff --git a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html index 82b667c..ded4c34 100644 --- a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html +++ b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html @@ -57,7 +57,7 @@ <!-- Remove alt attribut from img tag --> <span> <img src="images/folder-grey.png"> - {{./this.attributes.name}} + {{./this.attributes.displayName}} </span> {{#if ../operation}} <span> diff --git a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js index 4b64d01..d190a87 100644 --- a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js +++ b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js @@ -525,8 +525,14 @@ if (!serv.get('isEnabled')) { tr += '<i class="icon-ban-circle text-color-red pull-left icon-large"></i>'; } - tr += '<a class="pull-left serviceNameEllipsis" data-id="'+serv.id+'" href="#!/service/'+serv.id+'/policies/'+policyType+'" title="'+_.escape(serv.attributes.name)+'">'+_.escape(serv.attributes.name)+'</a>'+serviceOperationDiv+'\ - </div></td></tr>'; + //For service name + if(!_.isUndefined(serv) && !_.isUndefined(serv.get('displayName')) ) { + tr += '<a class="pull-left serviceNameEllipsis" data-id="'+serv.id+'" href="#!/service/'+serv.id+'/policies/'+policyType+'" title="'+_.escape(serv.get('displayName'))+'">'+_.escape(serv.get('displayName'))+'</a>'+serviceOperationDiv+'\ + </div></td></tr>'; + } else { + tr += '<a class="pull-left serviceNameEllipsis" data-id="'+serv.id+'" href="#!/service/'+serv.id+'/policies/'+policyType+'" title="'+_.escape(serv.attributes.name)+'">'+_.escape(serv.attributes.name)+'</a>'+serviceOperationDiv+'\ + </div></td></tr>'; + } }); } return tr; diff --git a/security-admin/src/main/webapp/templates/service/RangerServiceViewDetail_tmpl.html b/security-admin/src/main/webapp/templates/service/RangerServiceViewDetail_tmpl.html index d9fe51f..e3a2e67 100644 --- a/security-admin/src/main/webapp/templates/service/RangerServiceViewDetail_tmpl.html +++ b/security-admin/src/main/webapp/templates/service/RangerServiceViewDetail_tmpl.html @@ -22,6 +22,14 @@ <tbody> <tr> <td> + {{tt 'lbl.displayName'}} + </td> + <td> + {{displayName}} + </td> + </tr> + <tr> + <td> {{tt 'lbl.serviceName'}} </td> <td> diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java index f687ab8..422cdbe 100644 --- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java +++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java @@ -301,6 +301,7 @@ public class TestServiceREST { rangerService.setGuid("1427365526516_835_0"); rangerService.setIsEnabled(true); rangerService.setName("HDFS_1"); + rangerService.setDisplayName("HDFS_1"); rangerService.setPolicyUpdateTime(new Date()); rangerService.setType("1"); rangerService.setUpdatedBy("Admin");