Repository: incubator-ranger
Updated Branches:
  refs/heads/master 60fa8f04c -> cc7277118


RANGER-1120 : Need a java patch to handle upgrade of hive servicedef

Signed-off-by: Velmurugan Periasamy <[email protected]>


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

Branch: refs/heads/master
Commit: f3d999b4e5731c672a5de0b6e4c90221844f7d53
Parents: 60fa8f0
Author: Mehul Parikh <[email protected]>
Authored: Tue Jul 26 11:06:14 2016 +0530
Committer: Velmurugan Periasamy <[email protected]>
Committed: Tue Jul 26 14:48:26 2016 -0400

----------------------------------------------------------------------
 .../plugin/store/EmbeddedServiceDefsUtil.java   |   8 +
 .../PatchForHiveServiceDefUpdate_J10006.java    | 147 +++++++++++++++++++
 2 files changed, 155 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3d999b4/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
index 2002295..81c74a5 100755
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
@@ -187,6 +187,14 @@ public class EmbeddedServiceDefsUtil {
 
        public long getTagServiceDefId() { return getId(tagServiceDef); }
 
+       public RangerServiceDef getEmbeddedServiceDef(String defType) throws 
Exception {
+               RangerServiceDef serviceDef=null;
+               if(StringUtils.isNotEmpty(defType)){
+                       serviceDef=loadEmbeddedServiceDef(defType);
+               }
+               return serviceDef;
+       }
+
        private long getId(RangerServiceDef serviceDef) {
                return serviceDef == null || serviceDef.getId() == null ? -1 : 
serviceDef.getId().longValue();
        }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3d999b4/security-admin/src/main/java/org/apache/ranger/patch/PatchForHiveServiceDefUpdate_J10006.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/patch/PatchForHiveServiceDefUpdate_J10006.java
 
b/security-admin/src/main/java/org/apache/ranger/patch/PatchForHiveServiceDefUpdate_J10006.java
new file mode 100644
index 0000000..f053212
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/patch/PatchForHiveServiceDefUpdate_J10006.java
@@ -0,0 +1,147 @@
+/*
+ * 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.patch;
+
+import org.apache.log4j.Logger;
+import org.apache.ranger.biz.RangerBizUtil;
+import org.apache.ranger.biz.ServiceDBStore;
+import org.apache.ranger.common.JSONUtil;
+import org.apache.ranger.common.RangerValidatorFactory;
+import org.apache.ranger.common.StringUtil;
+import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.plugin.model.RangerServiceDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerDataMaskDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerRowFilterDef;
+import org.apache.ranger.plugin.model.validation.RangerServiceDefValidator;
+import org.apache.ranger.plugin.model.validation.RangerValidator.Action;
+import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil;
+import org.apache.ranger.service.RangerPolicyService;
+import org.apache.ranger.service.XPermMapService;
+import org.apache.ranger.service.XPolicyService;
+import org.apache.ranger.util.CLIUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PatchForHiveServiceDefUpdate_J10006 extends BaseLoader {
+       private static Logger logger = 
Logger.getLogger(PatchForHiveServiceDefUpdate_J10006.class);
+       public static final String SERVICEDBSTORE_SERVICEDEFBYNAME_HIVE_NAME  = 
"hive";
+       @Autowired
+       RangerDaoManager daoMgr;
+
+       @Autowired
+       ServiceDBStore svcDBStore;
+
+       @Autowired
+       JSONUtil jsonUtil;
+
+       @Autowired
+       RangerPolicyService policyService;
+
+       @Autowired
+       StringUtil stringUtil;
+
+       @Autowired
+       XPolicyService xPolService;
+
+       @Autowired
+       XPermMapService xPermMapService;
+       
+       @Autowired
+       RangerBizUtil bizUtil;
+
+       @Autowired
+       RangerValidatorFactory validatorFactory;
+
+       @Autowired
+       ServiceDBStore svcStore;
+
+       public static void main(String[] args) {
+               logger.info("main()");
+               try {
+                       PatchForHiveServiceDefUpdate_J10006 loader = 
(PatchForHiveServiceDefUpdate_J10006) 
CLIUtil.getBean(PatchForHiveServiceDefUpdate_J10006.class);
+                       loader.init();
+                       while (loader.isMoreToProcess()) {
+                               loader.load();
+                       }
+                       logger.info("Load complete. Exiting!!!");
+                       System.exit(0);
+               } catch (Exception e) {
+                       logger.error("Error loading", e);
+                       System.exit(1);
+               }
+       }
+       
+       @Override
+       public void init() throws Exception {
+               // Do Nothing
+       }
+
+       @Override
+       public void execLoad() {
+               logger.info("==> PatchForHiveServiceDefUpdate.execLoad()");
+               try {
+                       updateHiveServiceDef();
+               } catch (Exception e) {
+                       logger.error("Error whille 
updateHiveServiceDef()data.", e);
+               }
+               logger.info("<== PatchForHiveServiceDefUpdate.execLoad()");
+       }
+
+       @Override
+       public void printStats() {
+               logger.info("PatchForHiveServiceDefUpdate data ");
+       }
+
+       private void updateHiveServiceDef(){
+               RangerServiceDef ret                                    = null;
+               RangerServiceDef embeddedHiveServiceDef = null;
+               RangerServiceDef dbHiveServiceDef               = null;
+               RangerDataMaskDef dataMaskDef                   = null;
+               RangerRowFilterDef rowFilterDef                 = null;
+               try{
+                       
embeddedHiveServiceDef=EmbeddedServiceDefsUtil.instance().getEmbeddedServiceDef(SERVICEDBSTORE_SERVICEDEFBYNAME_HIVE_NAME);
+                       if(embeddedHiveServiceDef!=null){
+                               dataMaskDef= 
embeddedHiveServiceDef.getDataMaskDef();
+                               rowFilterDef= 
embeddedHiveServiceDef.getRowFilterDef();
+
+                               
dbHiveServiceDef=svcDBStore.getServiceDefByName(SERVICEDBSTORE_SERVICEDEFBYNAME_HIVE_NAME);
+                               
+                               if(dbHiveServiceDef!=null){
+                                       if(dataMaskDef!=null){
+                                               
dbHiveServiceDef.setDataMaskDef(dataMaskDef);
+                                       }
+                                       if(rowFilterDef!=null){
+                                               
dbHiveServiceDef.setRowFilterDef(rowFilterDef);
+                                       }
+                                       RangerServiceDefValidator validator = 
validatorFactory.getServiceDefValidator(svcStore);
+                                       validator.validate(dbHiveServiceDef, 
Action.UPDATE);
+
+                                       ret = 
svcStore.updateServiceDef(dbHiveServiceDef);
+                                       if(ret==null){
+                                               logger.error("Error while 
updating "+SERVICEDBSTORE_SERVICEDEFBYNAME_HIVE_NAME+"service-def");
+                                               System.exit(1);
+                                       }
+                               }
+                       }
+                       }catch(Exception e)
+                       {
+                               logger.error("Error while updating 
"+SERVICEDBSTORE_SERVICEDEFBYNAME_HIVE_NAME+"service-def", e);
+                       }
+       }
+}
\ No newline at end of file

Reply via email to