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
