Repository: incubator-ranger
Updated Branches:
  refs/heads/master d69fc28d2 -> c45e1e72a


RNAGER-287: policy download audit log generation is fixed to include pluginId


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

Branch: refs/heads/master
Commit: c45e1e72a8547b3605a78d19628973936397090e
Parents: d69fc28
Author: Madhan Neethiraj <[email protected]>
Authored: Tue Mar 3 16:22:23 2015 -0800
Committer: Madhan Neethiraj <[email protected]>
Committed: Tue Mar 3 16:43:53 2015 -0800

----------------------------------------------------------------------
 .../ranger/admin/client/RangerAdminClient.java  |  8 +--
 .../admin/client/RangerAdminRESTClient.java     | 56 +++++++++++---------
 .../ranger/plugin/service/RangerBasePlugin.java | 22 ++++----
 .../ranger/plugin/util/PolicyRefresher.java     | 16 ++++--
 .../ranger/plugin/util/RangerRESTUtils.java     | 48 ++++++++++++++---
 .../client/RangerAdminJersey2RESTClient.java    | 37 +++++++------
 .../org/apache/ranger/rest/ServiceREST.java     | 14 ++---
 .../conf.dist/security-applicationContext.xml   |  6 +--
 8 files changed, 132 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
index 9807dd4..618a44e 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
@@ -25,11 +25,11 @@ import org.apache.ranger.plugin.util.ServicePolicies;
 
 
 public interface RangerAdminClient {
-       void init(String configPropertyPrefix);
+       void init(String serviceName, String appId, String 
configPropertyPrefix);
 
-       ServicePolicies getServicePoliciesIfUpdated(String serviceName, long 
lastKnownVersion) throws Exception;
+       ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion) 
throws Exception;
 
-       void grantAccess(String serviceName, GrantRevokeRequest request) throws 
Exception;
+       void grantAccess(GrantRevokeRequest request) throws Exception;
 
-       void revokeAccess(String serviceName, GrantRevokeRequest request) 
throws Exception;
+       void revokeAccess(GrantRevokeRequest request) throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
index f6bbebc..9d103bb 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
@@ -19,6 +19,7 @@
 
  package org.apache.ranger.admin.client;
 
+
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
 
@@ -29,26 +30,27 @@ import org.apache.ranger.admin.client.datatype.RESTResponse;
 import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
 import org.apache.ranger.plugin.util.GrantRevokeRequest;
 import org.apache.ranger.plugin.util.RangerRESTClient;
+import org.apache.ranger.plugin.util.RangerRESTUtils;
 import org.apache.ranger.plugin.util.ServicePolicies;
 
 
 public class RangerAdminRESTClient implements RangerAdminClient {
        private static final Log LOG = 
LogFactory.getLog(RangerAdminRESTClient.class);
-
-       public final String REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED = 
"/service/plugins/policies/download/";
-       public final String REST_URL_SERVICE_GRANT_ACCESS              = 
"/service/plugins/services/grant/";
-       public final String REST_URL_SERVICE_REVOKE_ACCESS             = 
"/service/plugins/services/revoke/";
-
-       public static final String REST_EXPECTED_MIME_TYPE = "application/json" 
;
-       public static final String REST_MIME_TYPE_JSON = "application/json" ;
-
-       private RangerRESTClient restClient = null;
+ 
+       private String           serviceName = null;
+       private String           pluginId    = null;
+       private RangerRESTClient restClient  = null;
+       private RangerRESTUtils  restUtils   = new RangerRESTUtils();
 
 
        public RangerAdminRESTClient() {
        }
 
-       public void init(String propertyPrefix) {
+       @Override
+       public void init(String serviceName, String appId, String 
propertyPrefix) {
+               this.serviceName = serviceName;
+               this.pluginId    = restUtils.getPluginId(serviceName, appId);
+
                String url               = 
RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.url");
                String sslConfigFileName = 
RangerConfiguration.getInstance().get(propertyPrefix + 
".policy.rest.ssl.config.file");
 
@@ -56,15 +58,17 @@ public class RangerAdminRESTClient implements 
RangerAdminClient {
        }
 
        @Override
-       public ServicePolicies getServicePoliciesIfUpdated(String serviceName, 
long lastKnownVersion) throws Exception {
+       public ServicePolicies getServicePoliciesIfUpdated(long 
lastKnownVersion) throws Exception {
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> 
RangerAdminRESTClient.getServicePoliciesIfUpdated(" + serviceName + ", " + 
lastKnownVersion + ")");
+                       LOG.debug("==> 
RangerAdminRESTClient.getServicePoliciesIfUpdated(" + lastKnownVersion + ")");
                }
 
                ServicePolicies ret = null;
 
-               WebResource    webResource = 
createWebResource(REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED + serviceName + 
"/" + lastKnownVersion);
-               ClientResponse response    = 
webResource.accept(REST_MIME_TYPE_JSON).get(ClientResponse.class);
+               WebResource webResource = 
createWebResource(RangerRESTUtils.REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED + 
serviceName)
+                                                                               
.queryParam(RangerRESTUtils.REST_PARAM_LAST_KNOWN_POLICY_VERSION, 
Long.toString(lastKnownVersion))
+                                                                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, pluginId);
+               ClientResponse response = 
webResource.accept(RangerRESTUtils.REST_MIME_TYPE_JSON).get(ClientResponse.class);
 
                if(response != null && response.getStatus() == 200) {
                        ret = response.getEntity(ServicePolicies.class);
@@ -77,20 +81,21 @@ public class RangerAdminRESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== 
RangerAdminRESTClient.getServicePoliciesIfUpdated(" + serviceName + ", " + 
lastKnownVersion + "): " + ret);
+                       LOG.debug("<== 
RangerAdminRESTClient.getServicePoliciesIfUpdated(" + lastKnownVersion + "): " 
+ ret);
                }
 
                return ret;
        }
 
        @Override
-       public void grantAccess(String serviceName, GrantRevokeRequest request) 
throws Exception {
+       public void grantAccess(GrantRevokeRequest request) throws Exception {
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
 
-               WebResource    webResource = 
createWebResource(REST_URL_SERVICE_GRANT_ACCESS + serviceName);
-               ClientResponse response    = 
webResource.accept(REST_EXPECTED_MIME_TYPE).type(REST_EXPECTED_MIME_TYPE).post(ClientResponse.class,
 restClient.toJson(request));
+               WebResource webResource = 
createWebResource(RangerRESTUtils.REST_URL_SERVICE_GRANT_ACCESS + serviceName)
+                                                                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, pluginId);
+               ClientResponse response = 
webResource.accept(RangerRESTUtils.REST_EXPECTED_MIME_TYPE).type(RangerRESTUtils.REST_EXPECTED_MIME_TYPE).post(ClientResponse.class,
 restClient.toJson(request));
 
                if(response != null && response.getStatus() != 200) {
                        LOG.error("grantAccess() failed: HTTP status=" + 
response.getStatus());
@@ -105,18 +110,19 @@ public class RangerAdminRESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
        }
 
        @Override
-       public void revokeAccess(String serviceName, GrantRevokeRequest 
request) throws Exception {
+       public void revokeAccess(GrantRevokeRequest request) throws Exception {
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> RangerAdminRESTClient.revokeAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("==> RangerAdminRESTClient.revokeAccess(" + 
request + ")");
                }
 
-               WebResource    webResource = 
createWebResource(REST_URL_SERVICE_REVOKE_ACCESS + serviceName);
-               ClientResponse response    = 
webResource.accept(REST_EXPECTED_MIME_TYPE).type(REST_EXPECTED_MIME_TYPE).post(ClientResponse.class,
 restClient.toJson(request));
+               WebResource webResource = 
createWebResource(RangerRESTUtils.REST_URL_SERVICE_REVOKE_ACCESS + serviceName)
+                                                                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, pluginId);
+               ClientResponse response = 
webResource.accept(RangerRESTUtils.REST_EXPECTED_MIME_TYPE).type(RangerRESTUtils.REST_EXPECTED_MIME_TYPE).post(ClientResponse.class,
 restClient.toJson(request));
 
                if(response != null && response.getStatus() != 200) {
                        LOG.error("revokeAccess() failed: HTTP status=" + 
response.getStatus());
@@ -131,7 +137,7 @@ public class RangerAdminRESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerAdminRESTClient.revokeAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("<== RangerAdminRESTClient.revokeAccess(" + 
request + ")");
                }
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
index feef506..77e63fa 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
@@ -44,15 +44,15 @@ public class RangerBasePlugin {
        private static final Log LOG = 
LogFactory.getLog(RangerBasePlugin.class);
 
        private String             serviceType  = null;
-       private String             auditAppType = null;
+       private String             appId        = null;
        private String             serviceName  = null;
        private PolicyRefresher    refresher    = null;
        private RangerPolicyEngine policyEngine = null;
 
 
-       public RangerBasePlugin(String serviceType, String auditAppType) {
-               this.serviceType  = serviceType;
-               this.auditAppType = auditAppType;
+       public RangerBasePlugin(String serviceType, String appId) {
+               this.serviceType = serviceType;
+               this.appId       = appId;
        }
 
        public String getServiceType() {
@@ -71,8 +71,8 @@ public class RangerBasePlugin {
                return serviceDef != null && serviceDef.getId() != null ? 
serviceDef.getId().intValue() : -1;
        }
 
-       public String getAuditAppType() {
-               return auditAppType;
+       public String getAppId() {
+               return appId;
        }
 
        public String getServiceName() {
@@ -89,7 +89,7 @@ public class RangerBasePlugin {
                cleanup();
 
                
RangerConfiguration.getInstance().addResourcesForServiceType(serviceType);
-               RangerConfiguration.getInstance().initAudit(auditAppType);
+               RangerConfiguration.getInstance().initAudit(appId);
 
                String propertyPrefix    = "ranger.plugin." + serviceType;
                long   pollingIntervalMs = 
RangerConfiguration.getInstance().getLong(propertyPrefix + 
".policy.pollIntervalMs", 30 * 1000);
@@ -99,7 +99,7 @@ public class RangerBasePlugin {
 
                RangerAdminClient admin = createAdminClient(propertyPrefix);
 
-               refresher = new PolicyRefresher(policyEngine, serviceType, 
serviceName, admin, pollingIntervalMs, cacheDir);
+               refresher = new PolicyRefresher(policyEngine, serviceType, 
appId, serviceName, admin, pollingIntervalMs, cacheDir);
                refresher.startRefresher();
                this.policyEngine = policyEngine;
        }
@@ -203,7 +203,7 @@ public class RangerBasePlugin {
                        throw new Exception("ranger-admin client is null");
                }
 
-               admin.grantAccess(serviceName, request);
+               admin.grantAccess(request);
        }
 
        public void revokeAccess(GrantRevokeRequest request, RangerAuditHandler 
auditHandler) throws Exception {
@@ -214,7 +214,7 @@ public class RangerBasePlugin {
                        throw new Exception("ranger-admin client is null");
                }
 
-               admin.revokeAccess(serviceName, request);
+               admin.revokeAccess(request);
        }
 
 
@@ -250,7 +250,7 @@ public class RangerBasePlugin {
                        ret = new RangerAdminRESTClient();
                }
 
-               ret.init(propertyPrefix);
+               ret.init(serviceName, appId, propertyPrefix);
 
                if(LOG.isDebugEnabled()) {
                        LOG.debug("<== 
RangerAdminRESTClient.createAdminClient(" + propertyPrefix + "): 
policySourceImpl=" + policySourceImpl + ", client=" + ret);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
index eaccf7a..6947a8e 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
@@ -25,6 +25,7 @@ import java.io.FileWriter;
 import java.io.Reader;
 import java.io.Writer;
 
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -50,7 +51,7 @@ public class PolicyRefresher extends Thread {
 
 
 
-       public PolicyRefresher(RangerPolicyEngine policyEngine, String 
serviceType, String serviceName, RangerAdminClient rangerAdmin, long 
pollingIntervalMs, String cacheDir) {
+       public PolicyRefresher(RangerPolicyEngine policyEngine, String 
serviceType, String appId, String serviceName, RangerAdminClient rangerAdmin, 
long pollingIntervalMs, String cacheDir) {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> PolicyRefresher(serviceName=" + 
serviceName + ").PolicyRefresher()");
                }
@@ -60,7 +61,16 @@ public class PolicyRefresher extends Thread {
                this.serviceName       = serviceName;
                this.rangerAdmin       = rangerAdmin;
                this.pollingIntervalMs = pollingIntervalMs;
-               this.cacheFile         = cacheDir == null ? null : (cacheDir + 
File.separator + String.format("%s_%s.json", serviceType, serviceName));
+
+               if(StringUtils.isEmpty(appId)) {
+                       appId = serviceType;
+               }
+
+               String cacheFilename = String.format("%s_%s.json", appId, 
serviceName);
+               cacheFilename = cacheFilename.replace(File.separatorChar,  '_');
+               cacheFilename = cacheFilename.replace(File.pathSeparatorChar,  
'_');
+
+               this.cacheFile = cacheDir == null ? null : (cacheDir + 
File.separator + cacheFilename);
 
         try {
                this.gson = new 
GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
@@ -139,7 +149,7 @@ public class PolicyRefresher extends Thread {
 
                while(true) {
                        try {
-                               ServicePolicies svcPolicies = 
rangerAdmin.getServicePoliciesIfUpdated(serviceName, lastKnownVersion);
+                               ServicePolicies svcPolicies = 
rangerAdmin.getServicePoliciesIfUpdated(lastKnownVersion);
 
                                boolean isUpdated = svcPolicies != null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
index f9b9a3e..03b0d2e 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
@@ -20,6 +20,9 @@
 package org.apache.ranger.plugin.util;
 
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -32,10 +35,20 @@ import 
org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
 public class RangerRESTUtils {
 
        private static final Log LOG = LogFactory.getLog(RangerRESTUtils.class);
-       static final String REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED = 
"/service/plugins/policies/download/";
-       static final String REST_URL_SERVICE_GRANT_ACCESS              = 
"/service/plugins/services/grant/";
-       static final String REST_URL_SERVICE_REVOKE_ACCESS             = 
"/service/plugins/services/revoke/";
-       
+
+       public static final String REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED = 
"/service/plugins/policies/download/";
+       public static final String REST_URL_SERVICE_GRANT_ACCESS              = 
"/service/plugins/services/grant/";
+       public static final String REST_URL_SERVICE_REVOKE_ACCESS             = 
"/service/plugins/services/revoke/";
+
+       public static final String REST_EXPECTED_MIME_TYPE = "application/json" 
;
+       public static final String REST_MIME_TYPE_JSON     = "application/json" 
;
+
+       public static final String REST_PARAM_LAST_KNOWN_POLICY_VERSION = 
"lastKnownVersion";
+       public static final String REST_PARAM_PLUGIN_ID                 = 
"pluginId";
+
+       private static final int MAX_PLUGIN_ID_LEN = 255 ;
+
+
        public String getPolicyRestUrl(String propertyPrefix) {
                String url = 
RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.url");
                
@@ -56,8 +69,8 @@ public class RangerRESTUtils {
                return sslConfigFileName;
        }
        
-       public String getUrlForPolicyUpdate(String baseUrl, String serviceName, 
long lastKnownVersion) {
-               String url = baseUrl + 
REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED + serviceName + "/" + 
lastKnownVersion;
+       public String getUrlForPolicyUpdate(String baseUrl, String serviceName) 
{
+               String url = baseUrl + 
REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED + serviceName;
                
                return url;
        }
@@ -77,4 +90,27 @@ public class RangerRESTUtils {
                
                return url;
        }
+
+    public String getPluginId(String serviceName, String appId) {
+        String hostName = null;
+
+        try {
+            hostName = InetAddress.getLocalHost().getHostName() ;
+        } catch (UnknownHostException e) {
+            LOG.error("ERROR: Unable to find hostname for the agent ", e);
+            hostName = "unknownHost" ;
+        }
+
+        String ret  = hostName + "-" + serviceName ;
+
+        if(! StringUtils.isEmpty(appId)) {
+               ret = appId + "@" + ret;
+        }
+
+        if (ret.length() > MAX_PLUGIN_ID_LEN ) {
+               ret = ret.substring(0,MAX_PLUGIN_ID_LEN) ;
+        }
+
+        return ret  ;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
----------------------------------------------------------------------
diff --git 
a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
 
b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
index fa16566..7fc33f9 100644
--- 
a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
+++ 
b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
@@ -57,14 +57,18 @@ public class RangerAdminJersey2RESTClient implements 
RangerAdminClient {
        HostnameVerifier _hv;
        String _baseUrl = null;
        String _sslConfigFileName = null;
+       String _serviceName = null;
+       String _pluginId = null;
        
        
        @Override
-       public void init(String configPropertyPrefix) {
+       public void init(String serviceName, String appId, String 
configPropertyPrefix) {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> RangerAdminJersey2RESTClient.init(" + 
configPropertyPrefix + ")");
                }
 
+               _serviceName = serviceName;
+               _pluginId = _utils.getPluginId(serviceName, appId);
                _baseUrl = _utils.getPolicyRestUrl(configPropertyPrefix);
                _sslConfigFileName = 
_utils.getSsslConfigFileName(configPropertyPrefix);
                _isSSL = _utils.isSsl(_baseUrl);
@@ -81,15 +85,16 @@ public class RangerAdminJersey2RESTClient implements 
RangerAdminClient {
        }
 
        @Override
-       public ServicePolicies getServicePoliciesIfUpdated(String serviceName,
-                       long lastKnownVersion) throws Exception {
+       public ServicePolicies getServicePoliciesIfUpdated(long 
lastKnownVersion) throws Exception {
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> 
RangerAdminJersey2RESTClient.getServicePoliciesIfUpdated(" + serviceName + ", " 
+ lastKnownVersion + ")");
+                       LOG.debug("==> 
RangerAdminJersey2RESTClient.getServicePoliciesIfUpdated(" + lastKnownVersion + 
")");
                }
 
                ServicePolicies servicePolicies = null;
-               String url = _utils.getUrlForPolicyUpdate(_baseUrl, 
serviceName, lastKnownVersion);
+               String url = _utils.getUrlForPolicyUpdate(_baseUrl, 
_serviceName);
                Response response = _client.target(url)
+                               
.queryParam(RangerRESTUtils.REST_PARAM_LAST_KNOWN_POLICY_VERSION, 
Long.toString(lastKnownVersion))
+                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, _pluginId)
                                .request(MediaType.APPLICATION_JSON_TYPE)
                                .get();
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
@@ -123,21 +128,21 @@ public class RangerAdminJersey2RESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== 
RangerAdminJersey2RESTClient.getServicePoliciesIfUpdated(" + serviceName + ", " 
+ lastKnownVersion + "): " + servicePolicies);
+                       LOG.debug("<== 
RangerAdminJersey2RESTClient.getServicePoliciesIfUpdated(" + lastKnownVersion + 
"): " + servicePolicies);
                }
                return servicePolicies;
        }
 
        @Override
-       public void grantAccess(String serviceName, GrantRevokeRequest request)
-                       throws Exception {
+       public void grantAccess(GrantRevokeRequest request) throws Exception {
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
 
-               String url = _utils.getUrlForGrantAccess(_baseUrl, serviceName);
+               String url = _utils.getUrlForGrantAccess(_baseUrl, 
_serviceName);
                Response response = _client.target(url)
+                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, _pluginId)
                                .request(MediaType.APPLICATION_JSON_TYPE)
                                .get();
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
@@ -159,20 +164,20 @@ public class RangerAdminJersey2RESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
        }
 
        @Override
-       public void revokeAccess(String serviceName, GrantRevokeRequest request)
-                       throws Exception {
+       public void revokeAccess(GrantRevokeRequest request) throws Exception {
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
 
-               String url = _utils.getUrlForRevokeAccess(_baseUrl, 
serviceName);
+               String url = _utils.getUrlForRevokeAccess(_baseUrl, 
_serviceName);
                Response response = _client.target(url)
+                               
.queryParam(RangerRESTUtils.REST_PARAM_PLUGIN_ID, _pluginId)
                                .request(MediaType.APPLICATION_JSON_TYPE)
                                .get();
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
@@ -194,7 +199,7 @@ public class RangerAdminJersey2RESTClient implements 
RangerAdminClient {
                }
 
                if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
serviceName + ", " + request + ")");
+                       LOG.debug("<== RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
----------------------------------------------------------------------
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 ab09bf6..fc2178f 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
@@ -35,6 +35,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 
@@ -988,9 +989,9 @@ public class ServiceREST {
        }
 
        @GET
-       @Path("/policies/download/{serviceName}/{lastKnownVersion}")
+       @Path("/policies/download/{serviceName}")
        @Produces({ "application/json", "application/xml" })
-       public ServicePolicies 
getServicePoliciesIfUpdated(@PathParam("serviceName") String serviceName, 
@PathParam("lastKnownVersion") Long lastKnownVersion, @Context 
HttpServletRequest request) throws Exception {
+       public ServicePolicies 
getServicePoliciesIfUpdated(@PathParam("serviceName") String serviceName, 
@QueryParam("lastKnownVersion") Long lastKnownVersion, @QueryParam("pluginId") 
String pluginId, @Context HttpServletRequest request) throws Exception {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> 
ServiceREST.getServicePoliciesIfUpdated(" + serviceName + ", " + 
lastKnownVersion + ")");
                }
@@ -1015,7 +1016,7 @@ public class ServiceREST {
                        httpCode = HttpServletResponse.SC_BAD_REQUEST;
                        logMsg   = excp.getMessage();
                } finally {
-                       createPolicyDownloadAudit(serviceName, 
lastKnownVersion, ret, httpCode, request);
+                       createPolicyDownloadAudit(serviceName, 
lastKnownVersion, pluginId, ret, httpCode, request);
                }
 
                if(httpCode != HttpServletResponse.SC_OK) {
@@ -1062,10 +1063,9 @@ public class ServiceREST {
                return ret;
        }
 
-       private void createPolicyDownloadAudit(String serviceName, Long 
lastKnownVersion, ServicePolicies policies, int httpRespCode, 
HttpServletRequest request) {
+       private void createPolicyDownloadAudit(String serviceName, Long 
lastKnownVersion, String pluginId, ServicePolicies policies, int httpRespCode, 
HttpServletRequest request) {
                try {
-                       String  agentId   = request.getParameter("agentId");
-                       String  ipAddress = 
request.getHeader("X-FORWARDED-FOR");  
+                       String ipAddress = 
request.getHeader("X-FORWARDED-FOR");  
 
                        if (ipAddress == null) {  
                                ipAddress = request.getRemoteAddr();
@@ -1074,7 +1074,7 @@ public class ServiceREST {
                        XXPolicyExportAudit policyExportAudit = new 
XXPolicyExportAudit();
 
                        policyExportAudit.setRepositoryName(serviceName);
-                       policyExportAudit.setAgentId(agentId);
+                       policyExportAudit.setAgentId(pluginId);
                        policyExportAudit.setClientIP(ipAddress);
                        policyExportAudit.setRequestedEpoch(lastKnownVersion);
                        policyExportAudit.setHttpRetCode(httpRespCode);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c45e1e72/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/resources/conf.dist/security-applicationContext.xml 
b/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
index a12a097..8d2392b 100644
--- 
a/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
+++ 
b/security-admin/src/main/resources/conf.dist/security-applicationContext.xml
@@ -56,11 +56,11 @@ 
http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd";>
        <security:http pattern="/loadInit.html" security="none" />
        <security:http pattern="/service/documents/result/**" security="none" />
        <security:http pattern="/service/assets/policyList/*" security="none"/>
-       <security:http pattern="/service/plugins/policies/download/*/*" 
security="none"/>
-       <security:http pattern="/service/plugins/services/grant/*" 
security="none"/>
-       <security:http pattern="/service/plugins/services/revoke/*" 
security="none"/>
        <security:http pattern="/service/assets/resources/grant" 
security="none"/>
        <security:http pattern="/service/assets/resources/revoke" 
security="none"/>
+       <security:http pattern="/service/plugins/policies/download/*" 
security="none"/>
+       <security:http pattern="/service/plugins/services/grant/*" 
security="none"/>
+       <security:http pattern="/service/plugins/services/revoke/*" 
security="none"/>
        <security:http pattern="/service/users/default" security="none"/>
        <security:http pattern="/service/xusers/groups/**" security="none"/>
        <security:http pattern="/service/xusers/users/*" security="none"/>

Reply via email to