This is an automated email from the ASF dual-hosted git repository.

rmani 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 7b66386  RANGER-2777:Ranger Knox Plugin failed to download Roles
7b66386 is described below

commit 7b66386ebbd81337888cbc3b5b0fc65c2a8aa4a1
Author: Ramesh Mani <[email protected]>
AuthorDate: Sat Apr 4 13:36:10 2020 -0700

    RANGER-2777:Ranger Knox Plugin failed to download Roles
---
 .../apache/ranger/plugin/util/RangerRESTUtils.java | 73 ----------------------
 .../admin/client/RangerAdminJersey2RESTClient.java | 56 ++++++++++++-----
 2 files changed, 42 insertions(+), 87 deletions(-)

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 3e402aa..adf0c0a 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
@@ -26,7 +26,6 @@ import java.net.UnknownHostException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
 import com.kstruct.gethostname4j.Hostname;
 
 /**
@@ -45,9 +44,6 @@ public class RangerRESTUtils {
        public static final String REST_URL_SECURE_SERVICE_GRANT_ACCESS         
     = "/service/plugins/secure/services/grant/";
        public static final String REST_URL_SECURE_SERVICE_REVOKE_ACCESS        
     = "/service/plugins/secure/services/revoke/";
 
-       public static final String 
REST_URL_ROLE_GET_FOR_SECURE_SERVICE_IF_UPDATED   = 
"/service/roles/secure/download/";
-       public static final String REST_URL_ROLE_GET_FOR_SERVICE_IF_UPDATED     
     = "/service/roles/download/";
-
        public static final String REST_URL_SERVICE_CREATE_ROLE              = 
"/service/public/v2/api/roles/";
        public static final String REST_URL_SERVICE_DROP_ROLE         = 
"/service/public/v2/api/roles/name/";
        public static final String REST_URL_SERVICE_GET_ALL_ROLES         = 
"/service/public/v2/api/roles/names/";
@@ -102,75 +98,6 @@ public class RangerRESTUtils {
                }
        }
 
-       public String getPolicyRestUrl(String propertyPrefix, Configuration 
config) {
-               String url = config.get(propertyPrefix + ".policy.rest.url");
-               
-               if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerRESTUtils.getPolicyRestUrl(" + url 
+ ")");
-               }
-
-               return url;
-       }
-       
-       public String getSsslConfigFileName(String propertyPrefix, 
Configuration config) {
-               String sslConfigFileName = config.get(propertyPrefix + 
".policy.rest.ssl.config.file");
-
-               if(LOG.isDebugEnabled()) {
-                       LOG.debug("<== RangerRESTUtils.getSsslConfigFileName(" 
+ sslConfigFileName + ")");
-               }
-
-               return sslConfigFileName;
-       }
-       
-       public String getUrlForPolicyUpdate(String baseUrl, String serviceName) 
{
-               String url = baseUrl + 
REST_URL_POLICY_GET_FOR_SERVICE_IF_UPDATED + serviceName;
-               
-               return url;
-       }
-
-       public String getUrlForRoleUpdate(String baseUrl, String serviceName) {
-               String url = baseUrl + REST_URL_ROLE_GET_FOR_SERVICE_IF_UPDATED 
+ serviceName;
-
-               return url;
-       }
-
-
-       public String getSecureUrlForPolicyUpdate(String baseUrl, String 
serviceName) {
-               String url = baseUrl + 
REST_URL_POLICY_GET_FOR_SECURE_SERVICE_IF_UPDATED + serviceName;
-               return url;
-       }
-
-       public String getSecureUrlForRoleUpdate(String baseUrl, String 
serviceName) {
-               String url = baseUrl + 
REST_URL_ROLE_GET_FOR_SECURE_SERVICE_IF_UPDATED + serviceName;
-               return url;
-       }
-
-       public String getUrlForTagUpdate(String baseUrl, String serviceName) {
-               String url = baseUrl + REST_URL_GET_SERVICE_TAGS_IF_UPDATED + 
serviceName;
-
-               return url;
-       }
-
-       public String getSecureUrlForTagUpdate(String baseUrl, String 
serviceName) {
-               String url = baseUrl + 
REST_URL_GET_SECURE_SERVICE_TAGS_IF_UPDATED + serviceName;
-               return url;
-       }
-
-       public boolean isSsl(String _baseUrl) {
-               return !StringUtils.isEmpty(_baseUrl) && 
_baseUrl.toLowerCase().startsWith("https");
-       }
-
-       public String getUrlForGrantAccess(String baseUrl, String serviceName) {
-               String url = baseUrl + REST_URL_SERVICE_GRANT_ACCESS + 
serviceName;
-               
-               return url;
-       }
-
-       public String getUrlForRevokeAccess(String baseUrl, String serviceName) 
{
-               String url = baseUrl + REST_URL_SERVICE_REVOKE_ACCESS + 
serviceName;
-               
-               return url;
-       }
     public String getPluginId(String serviceName, String appId) {
         String hostName = null;
 
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 b2184b6..1beef86 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
@@ -20,6 +20,8 @@
 package org.apache.ranger.admin.client;
 
 import java.lang.reflect.Type;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.security.PrivilegedAction;
 import java.util.Date;
 import java.util.HashMap;
@@ -61,13 +63,11 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
        // none of the members are public -- this is only for testability.  
None of these is meant to be accessible
        private static final Log LOG = 
LogFactory.getLog(RangerAdminJersey2RESTClient.class);
-       RangerRESTUtils _utils = new RangerRESTUtils();
-       
+
        boolean _isSSL = false;
        volatile Client _client = null;
        SSLContext _sslContext = null;
        HostnameVerifier _hv;
-       String _baseUrl = "";
        String _sslConfigFileName = null;
        String _serviceName = null;
        String _clusterName = null;
@@ -79,6 +79,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
        private int lastKnownActiveUrlIndex;
        private List<String> configURLs;
        private final String   pluginCapabilities = Long.toHexString(new 
RangerPluginCapability().getPluginCapabilities());
+       private static final int MAX_PLUGIN_ID_LEN = 255;
 
        @Override
        public void init(String serviceName, String appId, String 
configPropertyPrefix, Configuration config) {
@@ -88,13 +89,13 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                super.init(serviceName, appId, configPropertyPrefix, config);
 
-               _serviceName = serviceName;
-               _pluginId = _utils.getPluginId(serviceName, appId);
-               String tmpUrl = _utils.getPolicyRestUrl(configPropertyPrefix, 
config);
-               _sslConfigFileName = 
_utils.getSsslConfigFileName(configPropertyPrefix, config);
+               _serviceName             = serviceName;
+               _pluginId                        = getPluginId(serviceName, 
appId);
+               String tmpUrl                = config.get(configPropertyPrefix 
+ ".policy.rest.url");
+               _sslConfigFileName               = 
config.get(configPropertyPrefix + ".policy.rest.ssl.config.file");
                _restClientConnTimeOutMs = config.getInt(configPropertyPrefix + 
".policy.rest.client.connection.timeoutMs", 120 * 1000);
                _restClientReadTimeOutMs = config.getInt(configPropertyPrefix + 
".policy.rest.client.read.timeoutMs", 30 * 1000);
-               _clusterName = config.get(configPropertyPrefix + 
".access.cluster.name", "");
+               _clusterName             = config.get(configPropertyPrefix + 
".access.cluster.name", "");
                if(StringUtil.isEmpty(_clusterName)){
                        _clusterName =config.get(configPropertyPrefix + 
".ambari.cluster.name", "");
                }
@@ -109,9 +110,9 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                configURLs = StringUtil.getURLs(tmpUrl);
                this.lastKnownActiveUrlIndex = new 
Random().nextInt(configURLs.size());
-               _baseUrl = configURLs.get(this.lastKnownActiveUrlIndex);
-               _isSSL = _utils.isSsl(_baseUrl);
-               LOG.info("Init params: " + String.format("Base URL[%s], SSL 
Config filename[%s], ServiceName=[%s], SupportsPolicyDeltas=[%s], 
ConfigURLs=[%s]", _baseUrl, _sslConfigFileName, _serviceName, 
_supportsPolicyDeltas, _supportsTagDeltas, configURLs));
+               String url = configURLs.get(this.lastKnownActiveUrlIndex);
+               _isSSL = isSsl(url);
+               LOG.info("Init params: " + String.format("Base URL[%s], SSL 
Config filename[%s], ServiceName=[%s], SupportsPolicyDeltas=[%s], 
ConfigURLs=[%s]", url, _sslConfigFileName, _serviceName, _supportsPolicyDeltas, 
_supportsTagDeltas, configURLs));
                
                _client = getClient();
                _client.property(ClientProperties.CONNECT_TIMEOUT, 
_restClientConnTimeOutMs);
@@ -234,7 +235,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                LOG.debug("Checking Roles if updated as user : 
" + user);
                        }
 
-                       relativeURL = 
_utils.getSecureUrlForRoleUpdate(_baseUrl, _serviceName);
+                       relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USER_GROUP_ROLES + _serviceName;
                        final String secureRelativeUrl = relativeURL;
                        PrivilegedAction<Response> action = new 
PrivilegedAction<Response>() {
                                public Response run() {
@@ -247,7 +248,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                LOG.debug("Checking Roles if updated with old 
api call");
                        }
 
-                       relativeURL = _utils.getUrlForRoleUpdate(_baseUrl, 
_serviceName);
+                       relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GET_USER_GROUP_ROLES + _serviceName;
                        response = get(queryParams, relativeURL);
                }
 
@@ -537,7 +538,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                LOG.warn("Failed to communicate with Ranger 
Admin, URL : " + configURLs.get(currentIndex));
                                if (index == configURLs.size() - 1) {
                                        throw new ClientHandlerException(
-                                                       "Failed to communicate 
with all Ranger Admin's URL's : [ " + configURLs + " ]");
+                                                       "Failed to communicate 
with all Ranger Admin's URL's : [ " + configURLs + " ]", e);
                                }
                        }
                }
@@ -558,4 +559,31 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
        private void setLastKnownActiveUrlIndex(int lastKnownActiveUrlIndex) {
                this.lastKnownActiveUrlIndex = lastKnownActiveUrlIndex;
        }
+
+       private boolean isSsl(String url) {
+               return !StringUtils.isEmpty(url) && 
url.toLowerCase().startsWith("https");
+       }
+
+       private 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 ;
+       }
 }

Reply via email to