You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ve...@apache.org on 2016/12/06 01:15:30 UTC
incubator-ranger git commit: Add latest policy and tag info to
RangerPluginInfo
Repository: incubator-ranger
Updated Branches:
refs/heads/master 883666c67 -> 10f2befe9
Add latest policy and tag info to RangerPluginInfo
Signed-off-by: Velmurugan Periasamy <ve...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/10f2befe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/10f2befe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/10f2befe
Branch: refs/heads/master
Commit: 10f2befe97f597ebef7cc7ad032e833633905117
Parents: 883666c
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Wed Nov 30 16:16:20 2016 -0800
Committer: Velmurugan Periasamy <ve...@apache.org>
Committed: Mon Dec 5 20:15:08 2016 -0500
----------------------------------------------------------------------
.../ranger/plugin/model/RangerPluginInfo.java | 30 ++++++++
.../ranger/db/XXServiceVersionInfoDao.java | 7 ++
.../ranger/service/RangerPluginInfoService.java | 80 ++++++++++++++++++--
.../resources/META-INF/jpa_named_queries.xml | 4 +
4 files changed, 113 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/10f2befe/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPluginInfo.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPluginInfo.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPluginInfo.java
index ee11c42..d859368 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPluginInfo.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPluginInfo.java
@@ -53,6 +53,12 @@ public class RangerPluginInfo implements Serializable {
public static final String PLUGIN_INFO_TAG_ACTIVATION_TIME = "tagActivationTime";
public static final String PLUGIN_INFO_TAG_ACTIVE_VERSION = "tagActiveVersion";
+
+ public static final String RANGER_ADMIN_LAST_POLICY_UPDATE_TIME = "lastPolicyUpdateTime";
+ public static final String RANGER_ADMIN_LATEST_POLICY_VERSION = "latestPolicyVersion";
+ public static final String RANGER_ADMIN_LAST_TAG_UPDATE_TIME = "lastTagUpdateTime";
+ public static final String RANGER_ADMIN_LATEST_TAG_VERSION = "latestTagVersion";
+
private Long id = null;
private Date createTime = null;
private Date updateTime = null;
@@ -232,6 +238,30 @@ public class RangerPluginInfo implements Serializable {
return StringUtils.isNotBlank(activeVersionString) ? Long.valueOf(activeVersionString) : null;
}
+ @JsonIgnore
+ public Long getLatestPolicyVersion() {
+ String latestPolicyVersionString = getInfo().get(RANGER_ADMIN_LATEST_POLICY_VERSION);
+ return StringUtils.isNotBlank(latestPolicyVersionString) ? Long.valueOf(latestPolicyVersionString) : null;
+ }
+
+ @JsonIgnore
+ public Long getLastPolicyUpdateTime() {
+ String updateTimeString = getInfo().get(RANGER_ADMIN_LAST_POLICY_UPDATE_TIME);
+ return StringUtils.isNotBlank(updateTimeString) ? Long.valueOf(updateTimeString) : null;
+ }
+
+ @JsonIgnore
+ public Long getLatestTagVersion() {
+ String latestTagVersionString = getInfo().get(RANGER_ADMIN_LATEST_TAG_VERSION);
+ return StringUtils.isNotBlank(latestTagVersionString) ? Long.valueOf(latestTagVersionString) : null;
+ }
+
+ @JsonIgnore
+ public Long getLastTagUpdateTime() {
+ String updateTimeString = getInfo().get(RANGER_ADMIN_LAST_TAG_UPDATE_TIME);
+ return StringUtils.isNotBlank(updateTimeString) ? Long.valueOf(updateTimeString) : null;
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/10f2befe/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java
index f1535fe..0098bff 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceVersionInfoDao.java
@@ -62,6 +62,13 @@ public class XXServiceVersionInfoDao extends BaseDao<XXServiceVersionInfo> {
}
}
+ @SuppressWarnings("unchecked")
+ public List<Object[]> getAllWithServiceNames(){
+ return getEntityManager()
+ .createNamedQuery("XXServiceVersionInfo.getAllWithServiceNames")
+ .getResultList();
+ }
+
public void updateServiceVersionInfoForServiceResourceUpdate(Long resourceId, Date updateTime) {
if (resourceId == null) {
return;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/10f2befe/security-admin/src/main/java/org/apache/ranger/service/RangerPluginInfoService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPluginInfoService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPluginInfoService.java
index fe86e72..b496b86 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerPluginInfoService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPluginInfoService.java
@@ -19,9 +19,13 @@ package org.apache.ranger.service;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ranger.biz.RangerBizUtil;
import org.apache.ranger.common.JSONUtil;
import org.apache.ranger.common.RangerSearchUtil;
@@ -29,6 +33,7 @@ import org.apache.ranger.common.SearchField;
import org.apache.ranger.common.SortField;
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.XXPluginInfo;
+import org.apache.ranger.entity.XXServiceVersionInfo;
import org.apache.ranger.plugin.model.RangerPluginInfo;
import org.apache.ranger.plugin.store.PList;
import org.apache.ranger.plugin.util.SearchFilter;
@@ -41,6 +46,8 @@ import javax.persistence.Query;
@Service
public class RangerPluginInfoService {
+ private static final Log LOG = LogFactory.getLog(RangerPluginInfoService.class);
+
@Autowired
RangerSearchUtil searchUtil;
@@ -83,8 +90,32 @@ public class RangerPluginInfoService {
List<XXPluginInfo> xObjList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
+ List<Object[]> objectsList = null;
+ if (CollectionUtils.isNotEmpty(xObjList)) {
+ objectsList = daoManager.getXXServiceVersionInfo().getAllWithServiceNames();
+ }
+
for (XXPluginInfo xObj : xObjList) {
- RangerPluginInfo obj = populateViewObject(xObj);
+ XXServiceVersionInfo xxServiceVersionInfo = null;
+
+ if (CollectionUtils.isNotEmpty(objectsList)) {
+ for (Object[] objects : objectsList) {
+ if (objects.length == 2) {
+ if (xObj.getServiceName().equals(objects[1])) {
+ if (objects[0] instanceof XXServiceVersionInfo) {
+ xxServiceVersionInfo = (XXServiceVersionInfo) objects[0];
+ } else {
+ LOG.warn("Expected first object to be XXServiceVersionInfo, got " + objects[0]);
+ }
+ break;
+ }
+ } else {
+ LOG.warn("Expected 2 objects in the list returned by getAllWithServiceNames(), received " + objects.length);
+ }
+ }
+ }
+
+ RangerPluginInfo obj = populateViewObjectWithServiceVersionInfo(xObj, xxServiceVersionInfo);
objList.add(obj);
}
@@ -102,7 +133,7 @@ public class RangerPluginInfoService {
ret.setHostName(xObj.getHostName());
ret.setAppType(xObj.getAppType());
ret.setIpAddress(xObj.getIpAddress());
- ret.setInfo(jsonStringToMap(xObj.getInfo()));
+ ret.setInfo(jsonStringToMap(xObj.getInfo(), null));
return ret;
}
@@ -118,6 +149,20 @@ public class RangerPluginInfoService {
ret.setInfo(mapToJsonString(modelObj.getInfo()));
return ret;
}
+
+ private RangerPluginInfo populateViewObjectWithServiceVersionInfo(XXPluginInfo xObj, XXServiceVersionInfo xxServiceVersionInfo) {
+ RangerPluginInfo ret = new RangerPluginInfo();
+ ret.setId(xObj.getId());
+ ret.setCreateTime(xObj.getCreateTime());
+ ret.setUpdateTime(xObj.getUpdateTime());
+ ret.setServiceName(xObj.getServiceName());
+ ret.setHostName(xObj.getHostName());
+ ret.setAppType(xObj.getAppType());
+ ret.setIpAddress(xObj.getIpAddress());
+ ret.setInfo(jsonStringToMap(xObj.getInfo(), xxServiceVersionInfo));
+ return ret;
+ }
+
private List<XXPluginInfo> searchRangerObjects(SearchFilter searchCriteria, List<SearchField> searchFieldList, List<SortField> sortFieldList, PList<RangerPluginInfo> pList) {
// Get total count of the rows which meet the search criteria
@@ -175,21 +220,40 @@ public class RangerPluginInfoService {
try {
ret = jsonUtil.readMapToString(map);
} catch(Exception excp) {
+ LOG.error("Failed to convert map to JSON string: '" + map + "'", excp);
}
}
return ret;
}
- private Map<String, String> jsonStringToMap(String jsonStr) {
- Map<String, String> ret = null;
+ private Map<String, String> jsonStringToMap(String jsonStr, XXServiceVersionInfo xxServiceVersionInfo) {
- try {
- ret = jsonUtil.jsonToMap(jsonStr);
- } catch(Exception excp) {
+ Map<String, String> ret = null;
+ try {
+ ret = jsonUtil.jsonToMap(jsonStr);
+
+ if (xxServiceVersionInfo != null) {
+ Long latestPolicyVersion = xxServiceVersionInfo.getPolicyVersion();
+ Date lastPolicyUpdateTime = xxServiceVersionInfo.getPolicyUpdateTime();
+ Long latestTagVersion = xxServiceVersionInfo.getTagVersion();
+ Date lastTagUpdateTime = xxServiceVersionInfo.getTagUpdateTime();
+ ret.put(RangerPluginInfo.RANGER_ADMIN_LATEST_POLICY_VERSION, Long.toString(latestPolicyVersion));
+ ret.put(RangerPluginInfo.RANGER_ADMIN_LAST_POLICY_UPDATE_TIME, Long.toString(lastPolicyUpdateTime.getTime()));
+ // Meaningful tag-versions start from 2
+ if (latestTagVersion.longValue() > 1L) {
+ ret.put(RangerPluginInfo.RANGER_ADMIN_LATEST_TAG_VERSION, Long.toString(latestTagVersion));
+ ret.put(RangerPluginInfo.RANGER_ADMIN_LAST_TAG_UPDATE_TIME, Long.toString(lastTagUpdateTime.getTime()));
+ } else {
+ ret.remove(RangerPluginInfo.RANGER_ADMIN_LATEST_TAG_VERSION);
+ ret.remove(RangerPluginInfo.RANGER_ADMIN_LAST_TAG_UPDATE_TIME);
+ }
}
-
+ }
+ catch(Exception excp) {
+ LOG.error("Failed to convert JSON string to Map: '" + jsonStr + "'", excp);
+ }
return ret;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/10f2befe/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
----------------------------------------------------------------------
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 e54bfe2..ac34b07 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -413,6 +413,10 @@
<query>select obj from XXServiceVersionInfo obj where obj.serviceId = :serviceId</query>
</named-query>
+ <named-query name="XXServiceVersionInfo.getAllWithServiceNames">
+ <query>select obj, service.name from XXServiceVersionInfo obj, XXService service where obj.serviceId = service.id</query>
+ </named-query>
+
<named-query name="XXServiceVersionInfo.findByServiceResourceId">
<query>
select obj from XXServiceVersionInfo obj where obj.serviceId in