Repository: incubator-ranger
Updated Branches:
  refs/heads/stack 32af455bf -> f9791b467


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/stack
Commit: 3471cc5806a614efe55422ae0756b9e20777a5f3
Parents: 32af455
Author: Madhan Neethiraj <[email protected]>
Authored: Sun Feb 15 10:37:52 2015 -0800
Committer: Madhan Neethiraj <[email protected]>
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);

Reply via email to