This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new 5aaa99e Ranger-2506: Add Cluster Name On Plugin Status Tab
5aaa99e is described below
commit 5aaa99ef1b1c35c702498138c2b9bc38f957e748
Author: mateenmansoori <[email protected]>
AuthorDate: Wed Jul 24 10:38:56 2019 +0530
Ranger-2506: Add Cluster Name On Plugin Status Tab
Signed-off-by: Pradeep <[email protected]>
---
.../apache/ranger/plugin/util/SearchFilter.java | 1 +
.../main/java/org/apache/ranger/biz/AssetMgr.java | 29 ++++++++++++++++------
.../org/apache/ranger/common/RangerSearchUtil.java | 1 +
.../java/org/apache/ranger/rest/ServiceREST.java | 4 +--
.../main/java/org/apache/ranger/rest/TagREST.java | 12 +++++++--
.../ranger/service/RangerPluginInfoService.java | 15 +++++++++++
.../webapp/scripts/views/reports/AuditLayout.js | 17 +++++++++++--
7 files changed, 66 insertions(+), 13 deletions(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
index 7e672c3..029b104 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
@@ -85,6 +85,7 @@ public class SearchFilter {
public static final String PLUGIN_APP_TYPE = "pluginAppType";
public static final String PLUGIN_ENTITY_TYPE =
"pluginEntityType";
public static final String PLUGIN_IP_ADDRESS =
"pluginIpAddress";
+ public static final String CLUSTER_NAME = "clusterName";
private Map<String, String> params;
private int startIndex;
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 f5fce93..63959c9 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
@@ -56,6 +56,7 @@ import org.apache.ranger.entity.XXTrxLog;
import org.apache.ranger.entity.XXUser;
import org.apache.ranger.plugin.model.RangerPluginInfo;
import org.apache.ranger.plugin.util.RangerRESTUtils;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.service.*;
import org.apache.ranger.solr.SolrAccessAuditsService;
import org.apache.ranger.util.RestUtil;
@@ -660,7 +661,7 @@ public class AssetMgr extends AssetMgrBase {
return ret;
}
- public void createPluginInfo(String serviceName, String pluginId,
HttpServletRequest request, int entityType, Long downloadedVersion, long
lastKnownVersion, long lastActivationTime, int httpCode) {
+ public void createPluginInfo(String serviceName, String pluginId,
HttpServletRequest request, int entityType, Long downloadedVersion, long
lastKnownVersion, long lastActivationTime, int httpCode, String clusterName) {
RangerRESTUtils restUtils = new RangerRESTUtils();
final String ipAddress = getRemoteAddress(request);
@@ -695,10 +696,10 @@ public class AssetMgr extends AssetMgrBase {
pluginSvcVersionInfo.setTagDownloadTime(new
Date().getTime());
}
- createOrUpdatePluginInfo(pluginSvcVersionInfo, entityType ==
RangerPluginInfo.ENTITY_TYPE_POLICIES, httpCode);
+ createOrUpdatePluginInfo(pluginSvcVersionInfo, entityType ==
RangerPluginInfo.ENTITY_TYPE_POLICIES, httpCode, clusterName);
}
- private void createOrUpdatePluginInfo(final RangerPluginInfo
pluginInfo, final boolean isPolicyDownloadRequest, final int httpCode) {
+ private void createOrUpdatePluginInfo(final RangerPluginInfo
pluginInfo, final boolean isPolicyDownloadRequest, final int httpCode, String
clusterName) {
if (logger.isDebugEnabled()) {
logger.debug("==> createOrUpdatePluginInfo(pluginInfo =
" + pluginInfo + ", isPolicyDownloadRequest = " + isPolicyDownloadRequest + ",
httpCode = " + httpCode + ")");
}
@@ -719,7 +720,7 @@ public class AssetMgr extends AssetMgrBase {
Runnable commitWork = new Runnable() {
@Override
public void run() {
-
doCreateOrUpdateXXPluginInfo(pluginInfo, isPolicyDownloadRequest,
isTagVersionResetNeeded);
+
doCreateOrUpdateXXPluginInfo(pluginInfo, isPolicyDownloadRequest,
isTagVersionResetNeeded, clusterName);
}
};
activityLogger.commitAfterTransactionComplete(commitWork);
@@ -737,7 +738,7 @@ public class AssetMgr extends AssetMgrBase {
commitWork = new Runnable() {
@Override
public void run() {
-
doCreateOrUpdateXXPluginInfo(pluginInfo, isPolicyDownloadRequest, false);
+
doCreateOrUpdateXXPluginInfo(pluginInfo, isPolicyDownloadRequest, false,
clusterName);
}
};
}
@@ -745,7 +746,7 @@ public class AssetMgr extends AssetMgrBase {
} else {
isTagVersionResetNeeded = false;
- doCreateOrUpdateXXPluginInfo(pluginInfo,
isPolicyDownloadRequest, isTagVersionResetNeeded);
+ doCreateOrUpdateXXPluginInfo(pluginInfo,
isPolicyDownloadRequest, isTagVersionResetNeeded, clusterName);
}
if (logger.isDebugEnabled()) {
logger.debug("<== createOrUpdatePluginInfo(pluginInfo =
" + pluginInfo + ", isPolicyDownloadRequest = " + isPolicyDownloadRequest + ",
httpCode = " + httpCode + ")");
@@ -753,8 +754,9 @@ public class AssetMgr extends AssetMgrBase {
}
- private XXPluginInfo doCreateOrUpdateXXPluginInfo(RangerPluginInfo
pluginInfo, final boolean isPolicyDownloadRequest, final boolean
isTagVersionResetNeeded) {
+ private XXPluginInfo doCreateOrUpdateXXPluginInfo(RangerPluginInfo
pluginInfo, final boolean isPolicyDownloadRequest, final boolean
isTagVersionResetNeeded, String clusterName) {
XXPluginInfo ret = null;
+ Map<String, String> infoMap = null;
if (StringUtils.isNotBlank(pluginInfo.getServiceName())) {
@@ -762,6 +764,11 @@ public class AssetMgr extends AssetMgrBase {
pluginInfo.getHostName(),
pluginInfo.getAppType());
if (xObj == null) {
+ infoMap = pluginInfo.getInfo();
+ if(!stringUtil.isEmpty(clusterName) && infoMap
!= null ) {
+ infoMap.put(SearchFilter.CLUSTER_NAME,
clusterName);
+ pluginInfo.setInfo(infoMap);
+ }
// ranger-admin is restarted, plugin contains
latest versions and no earlier record for this plug-in client
if (isPolicyDownloadRequest) {
if
(pluginInfo.getPolicyDownloadedVersion() != null &&
pluginInfo.getPolicyDownloadedVersion().equals(pluginInfo.getPolicyActiveVersion()))
{
@@ -783,6 +790,14 @@ public class AssetMgr extends AssetMgrBase {
boolean needsUpdating = false;
RangerPluginInfo dbObj =
pluginInfoService.populateViewObject(xObj);
+
+ infoMap = dbObj.getInfo();
+ if (infoMap != null &&
!stringUtil.isEmpty(clusterName)) {
+
if(!stringUtil.isEmpty(infoMap.get(SearchFilter.CLUSTER_NAME)) &&
!stringUtil.equals(infoMap.get(SearchFilter.CLUSTER_NAME) , clusterName) ) {
+
infoMap.put(SearchFilter.CLUSTER_NAME, clusterName);
+ needsUpdating = true;
+ }
+ }
if
(!dbObj.getIpAddress().equals(pluginInfo.getIpAddress())) {
dbObj.setIpAddress(pluginInfo.getIpAddress());
needsUpdating = true;
diff --git
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
index fc57601..954144b 100644
---
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
+++
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
@@ -80,6 +80,7 @@ public class RangerSearchUtil extends SearchUtil {
ret.setParam(SearchFilter.ROLE_NAME_PARTIAL,
request.getParameter(SearchFilter.ROLE_NAME_PARTIAL));
ret.setParam(SearchFilter.GROUP_NAME_PARTIAL,
request.getParameter(SearchFilter.GROUP_NAME_PARTIAL));
ret.setParam(SearchFilter.USER_NAME_PARTIAL,
request.getParameter(SearchFilter.USER_NAME_PARTIAL));
+ ret.setParam(SearchFilter.CLUSTER_NAME,
request.getParameter(SearchFilter.CLUSTER_NAME));
for (Map.Entry<String, String[]> e :
request.getParameterMap().entrySet()) {
String name = e.getKey();
String[] values = e.getValue();
diff --git
a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index deb8b43..b06273c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -3010,7 +3010,7 @@ public class ServiceREST {
RangerPerfTracer.log(perf);
}
}
- assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_POLICIES, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode);
+ assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_POLICIES, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode, clusterName);
if(httpCode != HttpServletResponse.SC_OK) {
boolean logError = httpCode !=
HttpServletResponse.SC_NOT_MODIFIED;
@@ -3135,7 +3135,7 @@ public class ServiceREST {
RangerPerfTracer.log(perf);
}
}
- assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_POLICIES, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode);
+ assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_POLICIES, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode, clusterName);
if (httpCode != HttpServletResponse.SC_OK) {
boolean logError = httpCode !=
HttpServletResponse.SC_NOT_MODIFIED;
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
index e650968..03d06e2 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
@@ -1115,6 +1115,10 @@ public class TagREST {
int httpCode = HttpServletResponse.SC_OK;
String logMsg = null;
Long downloadedVersion = null;
+ String clusterName = null;
+ if (request != null) {
+ clusterName =
!StringUtils.isEmpty(request.getParameter(SearchFilter.CLUSTER_NAME)) ?
request.getParameter(SearchFilter.CLUSTER_NAME) : "";
+ }
try {
ret = tagStore.getServiceTagsIfUpdated(serviceName,
lastKnownVersion);
@@ -1135,7 +1139,7 @@ public class TagREST {
httpCode = HttpServletResponse.SC_BAD_REQUEST;
logMsg = excp.getMessage();
} finally {
- assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_TAGS, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode);
+ assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_TAGS, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode, clusterName);
}
if(httpCode != HttpServletResponse.SC_OK) {
@@ -1169,6 +1173,10 @@ public class TagREST {
boolean isAdmin = bizUtil.isAdmin();
boolean isKeyAdmin = bizUtil.isKeyAdmin();
Long downloadedVersion = null;
+ String clusterName = null;
+ if (request != null) {
+ clusterName =
!StringUtils.isEmpty(request.getParameter(SearchFilter.CLUSTER_NAME)) ?
request.getParameter(SearchFilter.CLUSTER_NAME) : "";
+ }
try {
XXService xService =
daoManager.getXXService().findByName(serviceName);
@@ -1217,7 +1225,7 @@ public class TagREST {
httpCode = HttpServletResponse.SC_BAD_REQUEST;
logMsg = excp.getMessage();
} finally {
- assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_TAGS, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode);
+ assetMgr.createPluginInfo(serviceName, pluginId, request,
RangerPluginInfo.ENTITY_TYPE_TAGS, downloadedVersion, lastKnownVersion,
lastActivationTime, httpCode, clusterName);
}
if(httpCode != HttpServletResponse.SC_OK) {
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 3ca3b8f..e2ccb5b 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
@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
@@ -98,6 +99,7 @@ public class RangerPluginInfoService {
if (StringUtils.isNotBlank(serviceTypeToSearch)) {
searchFilter.removeParam(SearchFilter.SERVICE_TYPE);
}
+ String clusterNameToSearch =
searchFilter.getParam(SearchFilter.CLUSTER_NAME);
List<XXPluginInfo> xObjList = searchRangerObjects(searchFilter,
searchFields, sortFields, retList);
@@ -138,6 +140,19 @@ public class RangerPluginInfoService {
if (StringUtils.isBlank(serviceTypeToSearch) ||
StringUtils.equals(serviceTypeToSearch, obj.getServiceType())) {
objList.add(obj);
}
+
+ if (StringUtils.isNotBlank(clusterNameToSearch)) {
+ Map<String, String> infoMap = obj.getInfo();
+ Set<Map.Entry<String, String>> infoSet =
infoMap.entrySet();
+ for (Map.Entry<String, String> info : infoSet) {
+ if (StringUtils.equals(info.getKey(),
SearchFilter.CLUSTER_NAME)) {
+ if
(!StringUtils.equals(info.getValue(), clusterNameToSearch)) {
+ objList.remove(obj);
+ }
+ break;
+ }
+ }
+ }
}
retList.setList(objList);
diff --git
a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
index f7237fd..5c5d54e 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js
@@ -199,6 +199,7 @@ define(function(require) {
<th class="renderable ruser"></th>\
<th class="renderable ruser"></th>\
<th class="renderable ruser"></th>\
+ <th class="renderable ruser"></th>\
<th class="renderable cip"
colspan="3">Policy ( Time )<i class="icon-info-sign m-l-sm" data-id
="policyTimeDetails"></th>\
<th class="renderable cip" colspan="3">Tag ( Time )<i
class="icon-info-sign m-l-sm" data-id ="tagPolicyTimeDetails"></th>\
</tr>');
@@ -650,10 +651,10 @@ define(function(require) {
addSearchForPluginStatusTab : function(){
var that = this , query = '';
var searchOpt = [localization.tt("lbl.serviceName"),
localization.tt("lbl.serviceType"),localization.tt("lbl.applicationType"),
- localization.tt("lbl.agentIp"),
localization.tt("lbl.hostName")];
+ localization.tt("lbl.agentIp"),
localization.tt("lbl.hostName"), localization.tt("lbl.clusterName")];
var serverAttrName = [{text :
localization.tt("lbl.serviceName"), label :"serviceName"},{text :
localization.tt("lbl.applicationType"), label :"pluginAppType"},
{text :
localization.tt("lbl.agentIp"), label :"pluginIpAddress"}, {text :
localization.tt("lbl.hostName"), label :"pluginHostName"},
- {text :
localization.tt("lbl.serviceType"), label :"serviceType"}];
+ {text :
localization.tt("lbl.serviceType"), label :"serviceType"}, {text :
localization.tt("lbl.clusterName"),label :'clusterName'}];
_.map(App.vsHistory.pluginStatus, function(m){ query
+= '"'+m.get('category')+'":"'+m.get('value')+'"'; });
var pluginAttr = {
placeholder :
localization.tt('msg.searchForPluginStatus'),
@@ -1616,6 +1617,18 @@ define(function(require) {
editable:false,
sortable:true,
},
+ clusterName : {
+ cell : 'html',
+ label :
localization.tt("lbl.clusterName"),
+ editable:false,
+ sortable:true,
+ formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
+ fromRaw: function (rawValue,
model) {
+ var clusterName =
_.escape(model.get('info')['clusterName']);
+ return '<span
title="'+clusterName+'">'+clusterName+'</span>';
+ }
+ }),
+ },
lastPolicyUpdateTime : {
cell : 'html',
label :
localization.tt("lbl.lastUpdate"),