kumaab commented on code in PR #442:
URL: https://github.com/apache/ranger/pull/442#discussion_r1880798421


##########
agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopConfigHolder.java:
##########
@@ -27,450 +32,428 @@
 import java.util.Properties;
 import java.util.Set;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.hadoop.security.SecureClientLogin;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+public class HadoopConfigHolder {
+    private static final Logger LOG = 
LoggerFactory.getLogger(HadoopConfigHolder.class);
+
+    public static final String GLOBAL_LOGIN_PARAM_PROP_FILE          = 
"hadoop-login.properties";
+    public static final String DEFAULT_DATASOURCE_PARAM_PROP_FILE    = 
"datasource.properties";
+    public static final String RESOURCEMAP_PROP_FILE                 = 
"resourcenamemap.properties";
+    public static final String DEFAULT_RESOURCE_NAME                 = 
"core-site.xml";
+    public static final String RANGER_SECTION_NAME                   = 
"xalogin.xml";
+    public static final String RANGER_LOGIN_USER_NAME_PROP           = 
"username";
+    public static final String RANGER_LOGIN_KEYTAB_FILE_PROP         = 
"keytabfile";
+    public static final String RANGER_LOGIN_PASSWORD                 = 
"password";
+    public static final String RANGER_LOOKUP_PRINCIPAL               = 
"lookupprincipal";
+    public static final String RANGER_LOOKUP_KEYTAB                  = 
"lookupkeytab";
+    public static final String RANGER_PRINCIPAL                      = 
"rangerprincipal";
+    public static final String RANGER_KEYTAB                         = 
"rangerkeytab";
+    public static final String RANGER_NAME_RULES                     = 
"namerules";
+    public static final String RANGER_AUTH_TYPE                      = 
"authtype";
+    public static final String HADOOP_SECURITY_AUTHENTICATION        = 
"hadoop.security.authentication";
+    public static final String HADOOP_NAME_RULES                     = 
"hadoop.security.auth_to_local";
+    public static final String HADOOP_SECURITY_AUTHENTICATION_METHOD = 
"kerberos";
+    public static final String HADOOP_RPC_PROTECTION                 = 
"hadoop.rpc.protection";
+    public static final String ENABLE_HIVE_METASTORE_LOOKUP          = 
"enable.hive.metastore.lookup";
+    public static final String HIVE_SITE_FILE_PATH                   = 
"hive.site.file.path";
+
+    private static       boolean                                  initialized;
+    private static final Map<String, HashMap<String, Properties>> 
dataSource2ResourceListMap    = new HashMap<>();
+    private static final Map<String, HadoopConfigHolder>          
dataSource2HadoopConfigHolder = new HashMap<>();
+    private static       Properties                               
globalLoginProp               = new Properties();
+    private static       Properties                               
resourcemapProperties;
+    private static final Set<String>                              
rangerInternalPropertyKeys = new HashSet<>();
+
+    private final String              datasourceName;
+    private       String              defaultConfigFile;
+    private       String              userName;
+    private       String              keyTabFile;
+    private       String              password;
+    private       String              lookupPrincipal;
+    private       String              lookupKeytab;
+    private       String              nameRules;
+    private       String              authType;
+    private       String              hiveSiteFilePath;
+    private       boolean             isKerberosAuth;
+    private       boolean             enableHiveMetastoreLookup;
+    private       Map<String, String> connectionProperties;
+
+    private HadoopConfigHolder(String aDatasourceName) {
+        datasourceName = aDatasourceName;
+
+        if (!initialized) {
+            init();
+        }
+
+        initLoginInfo();
+    }
+
+    private HadoopConfigHolder(String aDatasourceName, Map<String, String> 
connectionProperties) {
+        this(aDatasourceName, connectionProperties, null);
+    }
+
+    private HadoopConfigHolder(String aDatasourceName, Map<String, String> 
connectionProperties, String defaultConfigFile) {
+        this.datasourceName       = aDatasourceName;
+        this.connectionProperties = connectionProperties;
+        this.defaultConfigFile    = defaultConfigFile;
+
+        initConnectionProp();
+        initLoginInfo();
+    }
+
+    public static HadoopConfigHolder getInstance(String aDatasourceName) {
+        HadoopConfigHolder ret = 
dataSource2HadoopConfigHolder.get(aDatasourceName);
+
+        if (ret == null) {
+            synchronized (HadoopConfigHolder.class) {
+                ret = dataSource2HadoopConfigHolder.get(aDatasourceName);
+
+                if (ret == null) {
+                    ret = new HadoopConfigHolder(aDatasourceName);
+
+                    dataSource2HadoopConfigHolder.put(aDatasourceName, ret);
+                }
+            }
+        }
+
+        return ret;
+    }
+
+    public static HadoopConfigHolder getInstance(String aDatasourceName, 
Map<String, String> connectionProperties, String defaultConfigFile) {
+        HadoopConfigHolder ret = 
dataSource2HadoopConfigHolder.get(aDatasourceName);
+
+        if (ret == null) {
+            synchronized (HadoopConfigHolder.class) {
+                ret = dataSource2HadoopConfigHolder.get(aDatasourceName);
+
+                if (ret == null) {
+                    ret = new HadoopConfigHolder(aDatasourceName, 
connectionProperties, defaultConfigFile);
+
+                    dataSource2HadoopConfigHolder.put(aDatasourceName, ret);
+                }
+            }
+        } else {
+            if (connectionProperties != null && 
!connectionProperties.equals(ret.connectionProperties)) {
+                ret = new HadoopConfigHolder(aDatasourceName, 
connectionProperties);
+
+                dataSource2HadoopConfigHolder.remove(aDatasourceName);
+                dataSource2HadoopConfigHolder.put(aDatasourceName, ret);
+            }
+        }
+
+        return ret;
+    }
+
+    public Properties getRangerSection() {
+        Properties prop = this.getProperties(RANGER_SECTION_NAME);
+
+        if (prop == null) {
+            prop = globalLoginProp;
+        }
+
+        return prop;
+    }
+
+    public String getDatasourceName() {
+        return datasourceName;
+    }
+
+    public boolean hasResourceExists(String aResourceName) {    // dilli

Review Comment:
   nit: comment can be removed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@ranger.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to