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 2016/12/15 08:07:00 UTC
incubator-ranger git commit: RANGER-1251: plugin status should show
tag data only when tag-service is associated
Repository: incubator-ranger
Updated Branches:
refs/heads/master a1dd7be65 -> 7901d43c2
RANGER-1251: plugin status should show tag data only when tag-service is associated
Signed-off-by: Madhan Neethiraj <ma...@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/7901d43c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/7901d43c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/7901d43c
Branch: refs/heads/master
Commit: 7901d43c21d3e392c2f88ed40c22d5c84e227fac
Parents: a1dd7be
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Fri Dec 9 12:20:55 2016 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Wed Dec 14 23:50:33 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/ranger/biz/AssetMgr.java | 25 +++++++++++++++++---
.../java/org/apache/ranger/db/XXServiceDao.java | 18 ++++++++++++++
.../ranger/service/RangerPluginInfoService.java | 23 ++++++++++++------
.../resources/META-INF/jpa_named_queries.xml | 15 ++++++++++++
4 files changed, 71 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7901d43c/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index d32d796..fbe846d 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -712,19 +712,30 @@ public class AssetMgr extends AssetMgrBase {
logger.debug("==> createOrUpdatePluginInfo(pluginInfo=" + pluginInfo + ", httpCode=" + httpCode + ")");
}
+ final boolean isTagVersionResetNeeded;
+
if (httpCode == HttpServletResponse.SC_NOT_MODIFIED) {
// Create or update PluginInfo record after transaction is completed. If it is created in-line here
// then the TransactionManager will roll-back the changes because the HTTP return code is
// HttpServletResponse.SC_NOT_MODIFIED
+
+ boolean isPolicyInfo = pluginInfo.getPolicyDownloadedVersion() != null;
+ if (isPolicyInfo) {
+ isTagVersionResetNeeded = rangerDaoManager.getXXService().findAssociatedTagService(pluginInfo.getServiceName()) == null;
+ } else {
+ isTagVersionResetNeeded = false;
+ }
+
Runnable commitWork = new Runnable() {
@Override
public void run() {
- doCreateOrUpdateXXPluginInfo(pluginInfo);
+ doCreateOrUpdateXXPluginInfo(pluginInfo, isTagVersionResetNeeded);
}
};
activityLogger.commitAfterTransactionComplete(commitWork);
} else {
- doCreateOrUpdateXXPluginInfo(pluginInfo);
+ isTagVersionResetNeeded = false;
+ doCreateOrUpdateXXPluginInfo(pluginInfo, isTagVersionResetNeeded);
}
if (logger.isDebugEnabled()) {
logger.debug("<== createOrUpdatePluginInfo(pluginInfo=" + pluginInfo + ", httpCode=" + httpCode + ")");
@@ -732,7 +743,7 @@ public class AssetMgr extends AssetMgrBase {
}
- private XXPluginInfo doCreateOrUpdateXXPluginInfo(RangerPluginInfo pluginInfo) {
+ private XXPluginInfo doCreateOrUpdateXXPluginInfo(RangerPluginInfo pluginInfo, final boolean isTagVersionResetNeeded) {
XXPluginInfo ret = null;
if (StringUtils.isNotBlank(pluginInfo.getServiceName())) {
@@ -814,6 +825,14 @@ public class AssetMgr extends AssetMgrBase {
}
}
+ if (isTagVersionResetNeeded) {
+ dbObj.setTagDownloadedVersion(null);
+ dbObj.setTagDownloadTime(null);
+ dbObj.setTagActiveVersion(null);
+ dbObj.setTagActivationTime(null);
+ needsUpdating = true;
+ }
+
if (needsUpdating) {
if (logger.isDebugEnabled()) {
logger.debug("Updating XXPluginInfo record for service-version");
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7901d43c/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
index 240345f..93c65a8 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
@@ -81,6 +81,24 @@ public class XXServiceDao extends BaseDao<XXService> {
}
}
+ public XXService findAssociatedTagService(String serviceName) {
+ try {
+ return getEntityManager().createNamedQuery("XXService.findAssociatedTagService", tClass)
+ .setParameter("serviceName", serviceName).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXService> getAllServicesWithTagService() {
+ try {
+ return getEntityManager().createNamedQuery("XXService.getAllServicesWithTagService", tClass)
+ .getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXService>();
+ }
+ }
+
public void updateSequence() {
Long maxId = getMaxIdOfXXService();
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7901d43c/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 b496b86..d4d0605 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
@@ -33,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.XXService;
import org.apache.ranger.entity.XXServiceVersionInfo;
import org.apache.ranger.plugin.model.RangerPluginInfo;
import org.apache.ranger.plugin.store.PList;
@@ -88,6 +89,8 @@ public class RangerPluginInfoService {
PList<RangerPluginInfo> retList = new PList<RangerPluginInfo>();
List<RangerPluginInfo> objList = new ArrayList<RangerPluginInfo>();
+ List<XXService> servicesWithTagService = daoManager.getXXService().getAllServicesWithTagService();
+
List<XXPluginInfo> xObjList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
List<Object[]> objectsList = null;
@@ -97,6 +100,7 @@ public class RangerPluginInfoService {
for (XXPluginInfo xObj : xObjList) {
XXServiceVersionInfo xxServiceVersionInfo = null;
+ boolean hasAssociatedTagService = false;
if (CollectionUtils.isNotEmpty(objectsList)) {
for (Object[] objects : objectsList) {
@@ -104,6 +108,12 @@ public class RangerPluginInfoService {
if (xObj.getServiceName().equals(objects[1])) {
if (objects[0] instanceof XXServiceVersionInfo) {
xxServiceVersionInfo = (XXServiceVersionInfo) objects[0];
+ for (XXService service : servicesWithTagService) {
+ if (service.getName().equals(xObj.getServiceName())) {
+ hasAssociatedTagService = true;
+ break;
+ }
+ }
} else {
LOG.warn("Expected first object to be XXServiceVersionInfo, got " + objects[0]);
}
@@ -115,7 +125,7 @@ public class RangerPluginInfoService {
}
}
- RangerPluginInfo obj = populateViewObjectWithServiceVersionInfo(xObj, xxServiceVersionInfo);
+ RangerPluginInfo obj = populateViewObjectWithServiceVersionInfo(xObj, xxServiceVersionInfo, hasAssociatedTagService);
objList.add(obj);
}
@@ -133,7 +143,7 @@ public class RangerPluginInfoService {
ret.setHostName(xObj.getHostName());
ret.setAppType(xObj.getAppType());
ret.setIpAddress(xObj.getIpAddress());
- ret.setInfo(jsonStringToMap(xObj.getInfo(), null));
+ ret.setInfo(jsonStringToMap(xObj.getInfo(), null, false));
return ret;
}
@@ -150,7 +160,7 @@ public class RangerPluginInfoService {
return ret;
}
- private RangerPluginInfo populateViewObjectWithServiceVersionInfo(XXPluginInfo xObj, XXServiceVersionInfo xxServiceVersionInfo) {
+ private RangerPluginInfo populateViewObjectWithServiceVersionInfo(XXPluginInfo xObj, XXServiceVersionInfo xxServiceVersionInfo, boolean hasAssociatedTagService) {
RangerPluginInfo ret = new RangerPluginInfo();
ret.setId(xObj.getId());
ret.setCreateTime(xObj.getCreateTime());
@@ -159,7 +169,7 @@ public class RangerPluginInfoService {
ret.setHostName(xObj.getHostName());
ret.setAppType(xObj.getAppType());
ret.setIpAddress(xObj.getIpAddress());
- ret.setInfo(jsonStringToMap(xObj.getInfo(), xxServiceVersionInfo));
+ ret.setInfo(jsonStringToMap(xObj.getInfo(), xxServiceVersionInfo, hasAssociatedTagService));
return ret;
}
@@ -227,7 +237,7 @@ public class RangerPluginInfoService {
return ret;
}
- private Map<String, String> jsonStringToMap(String jsonStr, XXServiceVersionInfo xxServiceVersionInfo) {
+ private Map<String, String> jsonStringToMap(String jsonStr, XXServiceVersionInfo xxServiceVersionInfo, boolean hasAssociatedTagService) {
Map<String, String> ret = null;
@@ -241,8 +251,7 @@ public class RangerPluginInfoService {
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) {
+ if (hasAssociatedTagService) {
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 {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7901d43c/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 ac34b07..c8c3d2f 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
@@ -402,6 +402,21 @@
<query>select obj from XXService obj where obj.tagService = :tagServiceId</query>
</named-query>
+ <named-query name="XXService.findAssociatedTagService">
+ <query>select obj from XXService obj
+ where obj.name = :serviceName
+ and obj.tagService is NOT null
+ and exists (select tagService from XXService tagService where obj.tagService = tagService.id and tagService.isEnabled = TRUE)
+ </query>
+ </named-query>
+
+ <named-query name="XXService.getAllServicesWithTagService">
+ <query>select obj from XXService obj
+ where obj.tagService is NOT null
+ and exists (select tagService from XXService tagService where obj.tagService = tagService.id and tagService.isEnabled = TRUE)
+ </query>
+ </named-query>
+
<!-- XXServiceVersionInfo -->
<named-query name="XXServiceVersionInfo.findByServiceName">
<query>