Github user cestella commented on a diff in the pull request: https://github.com/apache/metron/pull/888#discussion_r161239480 --- Diff: metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_master.py --- @@ -150,12 +151,36 @@ def zeppelin_notebook_import(self, env): env.set_params(params) Logger.info(ambari_format('Searching for Zeppelin Notebooks in {metron_config_zeppelin_path}')) + + # With Ambari 2.5+, Zeppelin server is enabled to work with Shiro authentication, which requires user/password + # for authentication (see https://zeppelin.apache.org/docs/0.6.0/security/shiroauthentication.html for details). + ses = requests.session() + + # Check if authentication is enabled on the Zeppelin server + try: + conn = ses.get(ambari_format('http://{zeppelin_server_url}/api/login')) + + # Establish connection if authentication is enabled + try: + # The following credentials are created at install time by Ambari at /etc/zeppelin/conf/shiro.ini + # when Shiro auth is enabled on the Zeppelin server + zeppelin_payload = {'userName': 'admin', 'password' : 'admin'} --- End diff -- so, I wonder if we should add a configuration parameter for zeppelin user/pass. If people change the default user/pass of zeppelin, this won't work, I think. The other option is whether or not there is an existing config in ambari where this is held (maybe not though). Beyond that, we could always parse the shiro.ini (even as simple as a little python snippet like: ``` with open('/etc/zeppelin/conf/shiro.ini', 'r') as f: seen_users = False for line in f: if '[users]' in line: seen_users = True if seen_users and 'admin = ' in line: tokens = line.strip().split(',') username = tokens[0].split(' ')[-1].strip() password = tokens[1].strip() print "username: {}, password: {}".format(username, password) break ``` I am just a bit concerned at having this go in as it is given this assumption, but I could probably be talked into it by another committer.
---