You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/02/17 09:17:27 UTC

[54/55] [abbrv] incubator-ranger git commit: RANGER-203: handling of legacy service-def (hdfs/hbase/hive/knox/storm) creation in the service store during ranger-admin startup.

RANGER-203: handling of legacy service-def (hdfs/hbase/hive/knox/storm)
creation in the service store during ranger-admin startup.

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

Branch: refs/heads/master
Commit: 3471cc5806a614efe55422ae0756b9e20777a5f3
Parents: 32af455
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Sun Feb 15 10:37:52 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Sun Feb 15 10:37:52 2015 -0800

----------------------------------------------------------------------
 .../plugin/store/LegacyServiceDefsUtil.java     | 164 +++++++++++++++++++
 .../plugin/store/file/ServiceFileStore.java     |  65 +-------
 .../service-defs/ranger-servicedef-hdfs.json    |   2 +-
 .../org/apache/ranger/biz/ServiceDBStore.java   | 134 ++++++++++++---
 .../org/apache/ranger/common/ServiceUtil.java   |  11 +-
 5 files changed, 287 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3471cc58/agents-common/src/main/java/org/apache/ranger/plugin/store/LegacyServiceDefsUtil.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/LegacyServiceDefsUtil.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/LegacyServiceDefsUtil.java
new file mode 100644
index 0000000..491e1e9
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/LegacyServiceDefsUtil.java
@@ -0,0 +1,164 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.plugin.store;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.plugin.model.RangerServiceDef;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+/*
+ * This utility class deals with service-def for legacy services hdfs/hbase/hive/knox/storm.
+ * If any of service-defs don't exist in the given service store, they will be created in
+ * the store using the definitions embedded in ranger-plugins-common.jar.
+ * 
+ * init() method should be called from ServiceStore implementations to initialize legacy service-defs.
+ */
+public class LegacyServiceDefsUtil {
+	private static final Log LOG = LogFactory.getLog(LegacyServiceDefsUtil.class);
+
+
+	public static final String LEGACY_SERVICEDEF_HDFS_NAME  = "hdfs";
+	public static final String LEGACY_SERVICEDEF_HBASE_NAME = "hbase";
+	public static final String LEGACY_SERVICEDEF_HIVE_NAME  = "hive";
+	public static final String LEGACY_SERVICEDEF_KNOX_NAME  = "knox";
+	public static final String LEGACY_SERVICEDEF_STORM_NAME = "storm";
+	public static final String PROPERTY_CREATE_LEGACY_SERVICE_DEFS = "ranger.service.store.create.legacy.service-defs";
+
+	private static LegacyServiceDefsUtil instance = new LegacyServiceDefsUtil();
+
+	private boolean          createLegacyServiceDefs = true;
+	private RangerServiceDef hdfsServiceDef  = null;
+	private RangerServiceDef hBaseServiceDef = null;
+	private RangerServiceDef hiveServiceDef  = null;
+	private RangerServiceDef knoxServiceDef  = null;
+	private RangerServiceDef stormServiceDef = null;
+
+	private Gson gsonBuilder = null;
+
+
+	/* private constructor to restrict instantiation of this singleton utility class */
+	private LegacyServiceDefsUtil() {
+	}
+
+	public static LegacyServiceDefsUtil instance() {
+		return instance;
+	}
+
+	public void init(ServiceStore store) {
+		LOG.info("==> LegacyServiceDefsUtil.init()");
+
+		try {
+			createLegacyServiceDefs = RangerConfiguration.getInstance().getBoolean(PROPERTY_CREATE_LEGACY_SERVICE_DEFS, true);
+
+			gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
+
+			hdfsServiceDef  = getOrCreateServiceDef(store, LEGACY_SERVICEDEF_HDFS_NAME);
+			hBaseServiceDef = getOrCreateServiceDef(store, LEGACY_SERVICEDEF_HBASE_NAME);
+			hiveServiceDef  = getOrCreateServiceDef(store, LEGACY_SERVICEDEF_HIVE_NAME);
+			knoxServiceDef  = getOrCreateServiceDef(store, LEGACY_SERVICEDEF_KNOX_NAME);
+			stormServiceDef = getOrCreateServiceDef(store, LEGACY_SERVICEDEF_STORM_NAME);
+		} catch(Throwable excp) {
+			LOG.fatal("LegacyServiceDefsUtil.init(): failed", excp);
+		}
+
+
+		LOG.info("<== LegacyServiceDefsUtil.init()");
+	}
+
+	public long getHdfsServiceDefId() {
+		return getId(hdfsServiceDef);
+	}
+
+	public long getHBaseServiceDefId() {
+		return getId(hBaseServiceDef);
+	}
+
+	public long getHiveServiceDefId() {
+		return getId(hiveServiceDef);
+	}
+
+	public long getKnoxServiceDefId() {
+		return getId(knoxServiceDef);
+	}
+
+	public long getStormServiceDefId() {
+		return getId(stormServiceDef);
+	}
+
+
+	private long getId(RangerServiceDef serviceDef) {
+		return serviceDef == null || serviceDef.getId() == null ? -1 : serviceDef.getId().longValue();
+	}
+
+	private RangerServiceDef getOrCreateServiceDef(ServiceStore store, String serviceDefName) {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> LegacyServiceDefsUtil.getOrCreateServiceDef(" + serviceDefName + ")");
+		}
+
+		RangerServiceDef ret = null;
+
+		try {
+			ret = store.getServiceDefByName(serviceDefName);
+			if(ret == null && createLegacyServiceDefs) {
+				ret = loadLegacyServiceDef(serviceDefName);
+
+				LOG.info("creating legacy service-def " + serviceDefName);
+				store.createServiceDef(ret);
+			}
+		} catch(Exception excp) {
+			LOG.fatal("LegacyServiceDefsUtil.getOrCreateServiceDef(): failed to load/create serviceType " + serviceDefName, excp);
+		}
+
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("<== LegacyServiceDefsUtil.getOrCreateServiceDef(" + serviceDefName + "): " + ret);
+		}
+
+		return ret;
+	}
+
+	private RangerServiceDef loadLegacyServiceDef(String serviceType) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> LegacyServiceDefsUtil.loadLegacyServiceDef(" + serviceType + ")");
+		}
+
+		RangerServiceDef ret = null;
+	
+		String resource = "/service-defs/ranger-servicedef-" + serviceType + ".json";
+
+		InputStream inStream = getClass().getResourceAsStream(resource);
+
+		InputStreamReader reader = new InputStreamReader(inStream);
+
+		ret = gsonBuilder.fromJson(reader, RangerServiceDef.class);
+
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> LegacyServiceDefsUtil.loadLegacyServiceDef(" + serviceType + ")");
+		}
+
+		return ret;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3471cc58/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
index 01b53f2..bbde42d 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/ServiceFileStore.java
@@ -45,6 +45,7 @@ import org.apache.ranger.plugin.model.RangerService;
 import org.apache.ranger.plugin.model.RangerServiceDef;
 import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
 import org.apache.ranger.plugin.resourcematcher.RangerAbstractResourceMatcher;
+import org.apache.ranger.plugin.store.LegacyServiceDefsUtil;
 import org.apache.ranger.plugin.store.ServiceStore;
 import org.apache.ranger.plugin.util.SearchFilter;
 import org.apache.ranger.plugin.util.ServicePolicies;
@@ -60,16 +61,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 	private long   nextServiceId    = 0;
 	private long   nextPolicyId     = 0;
 
-	static Map<String, Long> legacyServiceDefs = new HashMap<String, Long>();
-
-	static {
-		legacyServiceDefs.put("hdfs",  new Long(1));
-		legacyServiceDefs.put("hbase", new Long(2));
-		legacyServiceDefs.put("hive",  new Long(3));
-		legacyServiceDefs.put("knox",  new Long(5));
-		legacyServiceDefs.put("storm", new Long(6));
-	}
-
 	public ServiceFileStore() {
 		if(LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceFileStore.ServiceFileStore()");
@@ -102,6 +93,8 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 
 		super.initStore(dataDir);
 
+		LegacyServiceDefsUtil.instance().init(this);
+
 		if(LOG.isDebugEnabled()) {
 			LOG.debug("<== ServiceFileStore.init()");
 		}
@@ -154,14 +147,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 			throw new Exception(serviceDef.getId() + ": service-def does not exist");
 		}
 
-		if(isLegacyServiceDef(existing)) {
-			String msg = existing.getName() + ": is an in-built service-def. Update not allowed";
-
-			LOG.warn(msg);
-
-			throw new Exception(msg);
-		}
-
 		String existingName = existing.getName();
 
 		boolean renamed = !StringUtils.equalsIgnoreCase(serviceDef.getName(), existingName);
@@ -208,14 +193,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 			throw new Exception("service-def does not exist. id=" + id);
 		}
 
-		if(isLegacyServiceDef(existing)) {
-			String msg = existing.getName() + ": is an in-built service-def. Update not allowed";
-
-			LOG.warn(msg);
-
-			throw new Exception(msg);
-		}
-
 		// TODO: deleting service-def would require deleting services that refer to this service-def
 
 		try {
@@ -853,18 +830,6 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 		return ret;
 	}
 
-	private boolean isLegacyServiceDef(RangerServiceDef sd) {
-		return sd == null ? false : (isLegacyServiceDef(sd.getName()) || isLegacyServiceDef(sd.getId()));
-	}
-
-	private boolean isLegacyServiceDef(String name) {
-		return name == null ? false : legacyServiceDefs.containsKey(name);
-	}
-
-	private boolean isLegacyServiceDef(Long id) {
-		return id == null ? false : legacyServiceDefs.containsValue(id);
-	}
-
 	private List<RangerServiceDef> getAllServiceDefs() throws Exception {
 		if(LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceDefFileStore.getAllServiceDefs()");
@@ -873,36 +838,12 @@ public class ServiceFileStore extends BaseFileStore implements ServiceStore {
 		List<RangerServiceDef> ret = new ArrayList<RangerServiceDef>();
 
 		try {
-			// load definitions for legacy services from embedded resources
-			String[] legacyServiceDefResources = {
-					"/service-defs/ranger-servicedef-hdfs.json",
-					"/service-defs/ranger-servicedef-hive.json",
-					"/service-defs/ranger-servicedef-hbase.json",
-					"/service-defs/ranger-servicedef-knox.json",
-					"/service-defs/ranger-servicedef-storm.json",
-			};
-			
-			for(String resource : legacyServiceDefResources) {
-				RangerServiceDef sd = loadFromResource(resource, RangerServiceDef.class);
-				
-				if(sd != null) {
-					ret.add(sd);
-				}
-			}
-			nextServiceDefId = getMaxId(ret) + 1;
-
 			// load service definitions from file system
 			List<RangerServiceDef> sds = loadFromDir(new Path(getDataDir()), FILE_PREFIX_SERVICE_DEF, RangerServiceDef.class);
 			
 			if(sds != null) {
 				for(RangerServiceDef sd : sds) {
 					if(sd != null) {
-						if(isLegacyServiceDef(sd)) {
-							LOG.warn("Found in-built service-def '" + sd.getName() + "'  under " + getDataDir() + ". Ignorning");
-
-							continue;
-						}
-						
 						// if the ServiceDef is already found, remove the earlier definition
 						for(int i = 0; i < ret.size(); i++) {
 							RangerServiceDef currSd = ret.get(i);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3471cc58/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
index 56160d9..67583ed 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
@@ -28,7 +28,7 @@
         {"name":"privacy",       "label":"Privacy"}
       ],
       "defaultIndex":0
-    },
+    }
   ],
   "configs":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3471cc58/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
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 47add30..3673a30 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
@@ -10,6 +10,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import javax.annotation.PostConstruct;
+
 import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
@@ -72,6 +74,7 @@ import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef;
 import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef;
 import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
 import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef;
+import org.apache.ranger.plugin.store.LegacyServiceDefsUtil;
 import org.apache.ranger.plugin.store.ServiceStore;
 import org.apache.ranger.plugin.util.ServicePolicies;
 import org.apache.ranger.service.RangerAuditFields;
@@ -82,7 +85,12 @@ import org.apache.ranger.service.RangerServiceService;
 import org.apache.ranger.service.XUserService;
 import org.apache.ranger.view.VXUser;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
 import org.apache.ranger.plugin.util.SearchFilter;
 
 
@@ -119,32 +127,62 @@ public class ServiceDBStore implements ServiceStore {
 	
 	@Autowired
 	RangerDataHistService dataHistService;
-	
-	static Map<String, Long> legacyServiceDefs = new HashMap<String, Long>();
-
-	static {
-		legacyServiceDefs.put("hdfs",  new Long(1));
-		legacyServiceDefs.put("hbase", new Long(2));
-		legacyServiceDefs.put("hive",  new Long(3));
-		legacyServiceDefs.put("knox",  new Long(5));
-		legacyServiceDefs.put("storm", new Long(6));
-	}
-	
 
+    @Autowired
+    @Qualifier(value = "transactionManager")
+    PlatformTransactionManager txManager;
+
+	private static volatile boolean legacyServiceDefsInitDone = false;
+	
 	@Override
 	public void init() throws Exception {
 		if (LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceDefDBStore.init()");
 		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.init()");
+		}
 	}
 
+	@PostConstruct
+	public void initStore() {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.initStore()");
+		}
+
+		if(! legacyServiceDefsInitDone) {
+			synchronized(ServiceDBStore.class) {
+				if(!legacyServiceDefsInitDone) {
+					TransactionTemplate txTemplate = new TransactionTemplate(txManager);
+
+					final ServiceDBStore dbStore = this;
+
+					txTemplate.execute(new TransactionCallback<Object>() {
+						@Override
+	                    public Object doInTransaction(TransactionStatus status) {
+							LegacyServiceDefsUtil.instance().init(dbStore);
+
+							return null;
+	                    }
+					});
+
+					legacyServiceDefsInitDone = true;
+				}
+			}
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.initStore()");
+		}
+	}
 
 	@Override
-	public RangerServiceDef createServiceDef(RangerServiceDef serviceDef)
-			throws Exception {
+	public RangerServiceDef createServiceDef(RangerServiceDef serviceDef) throws Exception {
 		if (LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceDefDBStore.createServiceDef(" + serviceDef + ")");
 		}
+
 		XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(
 				serviceDef.getName());
 		if (xServiceDef != null) {
@@ -158,6 +196,11 @@ public class ServiceDBStore implements ServiceStore {
 		List<RangerAccessTypeDef> accessTypes = serviceDef.getAccessTypes();
 		List<RangerPolicyConditionDef> policyConditions = serviceDef.getPolicyConditions();
 		List<RangerEnumDef> enums = serviceDef.getEnums();
+
+		// following fields will be auto populated
+		serviceDef.setId(null);
+		serviceDef.setCreateTime(null);
+		serviceDef.setUpdateTime(null);
 		
 		serviceDef = serviceDefService.create(serviceDef);
 		Long serviceDefId = serviceDef.getId();
@@ -222,6 +265,11 @@ public class ServiceDBStore implements ServiceStore {
 		}
 		RangerServiceDef createdServiceDef = serviceDefService.getPopulatedViewObject(createdSvcDef);
 		dataHistService.createObjectDataHistory(createdServiceDef, RangerDataHistService.ACTION_CREATE);
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.createServiceDef(" + serviceDef + "): " + createdServiceDef);
+		}
+
 		return createdServiceDef;
 	}
 
@@ -231,12 +279,29 @@ public class ServiceDBStore implements ServiceStore {
 		if (LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceDefDBStore.updateServiceDef(" + serviceDef + ")");
 		}
-		return null;
+
+		RangerServiceDef ret = null;
+
+		// TODO: updateServiceDef()
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.updateServiceDef(" + serviceDef + "): " + ret);
+		}
+
+		return ret;
 	}
 
 	@Override
 	public void deleteServiceDef(Long servceId) throws Exception {
-		
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.deleteServiceDef(" + servceId + ")");
+		}
+
+		// TODO: updateServiceDef()
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.deleteServiceDef(" + servceId + ")");
+		}
 	}
 
 	@Override
@@ -244,7 +309,16 @@ public class ServiceDBStore implements ServiceStore {
 		if (LOG.isDebugEnabled()) {
 			LOG.debug("==> ServiceDefDBStore.getServiceDef(" + id + ")");
 		}
-		return serviceDefService.read(id);
+		
+		RangerServiceDef ret = null;
+
+		ret = serviceDefService.read(id);
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDefDBStore.getServiceDef(" + id + "): " + ret);
+		}
+
+		return ret;
 	}
 
 	@Override
@@ -253,18 +327,36 @@ public class ServiceDBStore implements ServiceStore {
 			LOG.debug("==> ServiceDefDBStore.getServiceDefByName(" + name + ")");
 		}
 		
+		RangerServiceDef ret = null;
+		
 		XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(name);
-		return serviceDefService.getPopulatedViewObject(xServiceDef);
+
+		if(xServiceDef != null) {
+			serviceDefService.getPopulatedViewObject(xServiceDef);
+		}
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("== ServiceDefDBStore.getServiceDefByName(" + name + "): " + ret);
+		}
+
+		return  ret;
 	}
 
 	@Override
 	public List<RangerServiceDef> getServiceDefs(SearchFilter filter) throws Exception {
 		if(LOG.isDebugEnabled()) {
-			LOG.debug("==> ServiceDBStore.getServiceDefs()");
+			LOG.debug("==> ServiceDBStore.getServiceDefs(" + filter + ")");
+		}
+
+		List<RangerServiceDef> ret = null;
+
+		ret = serviceDefService.getServiceDefs(filter);
+
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServiceDefs(" + filter + "): " + ret);
 		}
-		List<RangerServiceDef> serviceDefList = serviceDefService.getServiceDefs(filter);
 
-		return serviceDefList;
+		return ret;
 	}
 
 	@Override
@@ -460,7 +552,7 @@ public class ServiceDBStore implements ServiceStore {
 			LOG.debug("==> ServiceDBStore.getServiceByName()");
 		}
 		XXService xService = daoMgr.getXXService().findByName(name);
-		return svcService.getPopulatedViewObject(xService);
+		return xService == null ? null : svcService.getPopulatedViewObject(xService);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3471cc58/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
index 5bb624f..1e8b8af 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java
@@ -34,6 +34,7 @@ import org.apache.ranger.plugin.model.RangerBaseModelObject;
 import org.apache.ranger.plugin.model.RangerPolicy;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess;
 import org.apache.ranger.plugin.model.RangerService;
+import org.apache.ranger.plugin.store.LegacyServiceDefsUtil;
 import org.apache.ranger.view.VXAsset;
 import org.apache.ranger.view.VXAuditMap;
 import org.apache.ranger.view.VXDataObject;
@@ -55,11 +56,11 @@ public class ServiceUtil {
 	RangerDaoManager xaDaoMgr;
 
 	static {
-		mapServiceTypeToAssetType.put("hdfs",  new Integer(RangerCommonEnums.ASSET_HDFS));
-		mapServiceTypeToAssetType.put("hbase", new Integer(RangerCommonEnums.ASSET_HBASE));
-		mapServiceTypeToAssetType.put("hive",  new Integer(RangerCommonEnums.ASSET_HIVE));
-		mapServiceTypeToAssetType.put("knox",  new Integer(RangerCommonEnums.ASSET_KNOX));
-		mapServiceTypeToAssetType.put("storm", new Integer(RangerCommonEnums.ASSET_STORM));
+		mapServiceTypeToAssetType.put(LegacyServiceDefsUtil.LEGACY_SERVICEDEF_HDFS_NAME,  new Integer(RangerCommonEnums.ASSET_HDFS));
+		mapServiceTypeToAssetType.put(LegacyServiceDefsUtil.LEGACY_SERVICEDEF_HBASE_NAME, new Integer(RangerCommonEnums.ASSET_HBASE));
+		mapServiceTypeToAssetType.put(LegacyServiceDefsUtil.LEGACY_SERVICEDEF_HIVE_NAME,  new Integer(RangerCommonEnums.ASSET_HIVE));
+		mapServiceTypeToAssetType.put(LegacyServiceDefsUtil.LEGACY_SERVICEDEF_KNOX_NAME,  new Integer(RangerCommonEnums.ASSET_KNOX));
+		mapServiceTypeToAssetType.put(LegacyServiceDefsUtil.LEGACY_SERVICEDEF_STORM_NAME, new Integer(RangerCommonEnums.ASSET_STORM));
 
 		mapAccessTypeToPermType.put("Unknown", 0);
 		mapAccessTypeToPermType.put("Reset", 1);