You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2015/01/22 03:09:49 UTC
ambari git commit: AMBARI-9244. JAAS configuration file parser leaves
trailing quote in quoted values (rlevas)
Repository: ambari
Updated Branches:
refs/heads/trunk e606c9d81 -> 2686976e8
AMBARI-9244. JAAS configuration file parser leaves trailing quote in quoted values (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2686976e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2686976e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2686976e
Branch: refs/heads/trunk
Commit: 2686976e85fbc9c701e6478f1f48b0b057d66579
Parents: e606c9d
Author: Robert Levas <rl...@hortonworks.com>
Authored: Wed Jan 21 21:09:28 2015 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Wed Jan 21 21:09:28 2015 -0500
----------------------------------------------------------------------
.../resource_management/TestSecurityCommons.py | 49 ++++++++++++++++++++
.../libraries/functions/security_commons.py | 3 +-
2 files changed, 51 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2686976e/ambari-agent/src/test/python/resource_management/TestSecurityCommons.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/resource_management/TestSecurityCommons.py b/ambari-agent/src/test/python/resource_management/TestSecurityCommons.py
index 196ae34..602b88b 100644
--- a/ambari-agent/src/test/python/resource_management/TestSecurityCommons.py
+++ b/ambari-agent/src/test/python/resource_management/TestSecurityCommons.py
@@ -21,6 +21,7 @@ from unittest import TestCase
from resource_management.libraries.functions.security_commons import *
from datetime import datetime, timedelta
from tempfile import gettempdir
+import os
class TestSecurityCommons(TestCase):
@patch('os.path.isfile')
@@ -119,6 +120,54 @@ class TestSecurityCommons(TestCase):
self.assertEquals(not result[config_file].items(), True)
+ def test_get_params_from_filesystem_JAAS(self):
+ conf_dir = gettempdir()
+ jaas_file = "test_jaas.conf"
+ jaas_file_path = conf_dir + os.sep + jaas_file
+
+ # Create temporary test file (mocking a files for reading isn't available for the current version
+ # of the library
+ with open(jaas_file_path, "w+") as f:
+ f.write('Client {\n'
+ ' com.sun.security.auth.module.Krb5LoginModule required\n'
+ ' useKeyTab=true\n'
+ ' storeKey=true\n'
+ ' useTicketCache=false\n'
+ ' keyTab="/etc/security/keytabs/hbase.service.keytab"\n'
+ ' principal="hbase/vp-ambari-ranger-med-0120-2.cs1cloud.internal@EXAMPLE.COM";\n'
+ '};\n')
+
+ config_file = {
+ jaas_file : FILE_TYPE_JAAS_CONF
+ }
+
+ result = get_params_from_filesystem(conf_dir, config_file)
+
+ self.assertIn('test_jaas', result)
+ self.assertIn('Client', result['test_jaas'])
+
+ self.assertIn('com.sun.security.auth.module.Krb5LoginModule', result['test_jaas']['Client'])
+ self.assertEquals('required', result['test_jaas']['Client']['com.sun.security.auth.module.Krb5LoginModule'])
+
+ self.assertIn('useKeyTab', result['test_jaas']['Client'])
+ self.assertEquals('true', result['test_jaas']['Client']['useKeyTab'])
+
+ self.assertIn('storeKey', result['test_jaas']['Client'])
+ self.assertEquals('true', result['test_jaas']['Client']['storeKey'])
+
+ self.assertIn('useTicketCache', result['test_jaas']['Client'])
+ self.assertEquals('false', result['test_jaas']['Client']['useTicketCache'])
+
+ self.assertIn('keyTab', result['test_jaas']['Client'])
+ self.assertEquals('/etc/security/keytabs/hbase.service.keytab', result['test_jaas']['Client']['keyTab'])
+
+ self.assertIn('principal', result['test_jaas']['Client'])
+ self.assertEquals('hbase/vp-ambari-ranger-med-0120-2.cs1cloud.internal@EXAMPLE.COM', result['test_jaas']['Client']['principal'])
+
+ os.unlink(jaas_file_path)
+
+ print result
+
@patch('xml.etree.ElementTree.parse')
def test_get_params_from_filesystem(self, et_parser_mock):
http://git-wip-us.apache.org/repos/asf/ambari/blob/2686976e/ambari-common/src/main/python/resource_management/libraries/functions/security_commons.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/security_commons.py b/ambari-common/src/main/python/resource_management/libraries/functions/security_commons.py
index 7f6ed00..1e92f9d 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/security_commons.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/security_commons.py
@@ -146,13 +146,14 @@ def get_params_from_filesystem(conf_dir, config_files):
elif file_type == FILE_TYPE_JAAS_CONF:
section_header = re.compile('^(\w+)\s+\{\s*$')
- section_data = re.compile('^\s*([^ \s\=\}\{]+)\s*=?\s*"?([^ ";].+)"?;?\s*$')
+ section_data = re.compile('^\s*([^ \s\=\}\{]+)\s*=?\s*"?([^ ";]+)"?;?\s*$')
section_footer = re.compile('^\}\s*;?\s*$')
section_name = "root"
result[file_name] = {}
with open(conf_dir + os.sep + config_file, 'r') as f:
for line in f:
if line:
+ line = line.strip()
m = section_header.search(line)
if m:
section_name = m.group(1)