|
@@ -23,6 +23,7 @@ import urllib2
|
|
|
import ambari_simplejson as json # simplejson is much faster comparing to Python 2.6 json module and has the same functions set.
|
|
|
import logging
|
|
|
from resource_management.core.environment import Environment
|
|
|
+from resource_management.libraries.script import Script
|
|
|
|
|
|
logger = logging.getLogger()
|
|
|
RANGER_ADMIN_URL = '{{admin-properties/policymgr_external_url}}'
|
|
@@ -30,6 +31,7 @@ ADMIN_USERNAME = '{{ranger-env/admin_username}}'
|
|
|
ADMIN_PASSWORD = '{{ranger-env/admin_password}}'
|
|
|
RANGER_ADMIN_USERNAME = '{{ranger-env/ranger_admin_username}}'
|
|
|
RANGER_ADMIN_PASSWORD = '{{ranger-env/ranger_admin_password}}'
|
|
|
+SECURITY_ENABLED = '{{cluster-env/security_enabled}}'
|
|
|
|
|
|
def get_tokens():
|
|
|
"""
|
|
@@ -38,7 +40,7 @@ def get_tokens():
|
|
|
|
|
|
:return tuple
|
|
|
"""
|
|
|
- return (RANGER_ADMIN_URL, ADMIN_USERNAME, ADMIN_PASSWORD, RANGER_ADMIN_USERNAME, RANGER_ADMIN_PASSWORD)
|
|
|
+ return (RANGER_ADMIN_URL, ADMIN_USERNAME, ADMIN_PASSWORD, RANGER_ADMIN_USERNAME, RANGER_ADMIN_PASSWORD, SECURITY_ENABLED)
|
|
|
|
|
|
|
|
|
def execute(configurations={}, parameters={}, host_name=None):
|
|
@@ -61,6 +63,9 @@ def execute(configurations={}, parameters={}, host_name=None):
|
|
|
admin_password = None
|
|
|
ranger_admin_username = None
|
|
|
ranger_admin_password = None
|
|
|
+ security_enabled = False
|
|
|
+
|
|
|
+ stack_is_hdp25_or_further = Script.is_stack_greater_or_equal("2.5")
|
|
|
|
|
|
if RANGER_ADMIN_URL in configurations:
|
|
|
ranger_link = configurations[RANGER_ADMIN_URL]
|
|
@@ -81,33 +86,40 @@ def execute(configurations={}, parameters={}, host_name=None):
|
|
|
if RANGER_ADMIN_PASSWORD in configurations:
|
|
|
ranger_admin_password = configurations[RANGER_ADMIN_PASSWORD]
|
|
|
|
|
|
+ if SECURITY_ENABLED in configurations:
|
|
|
+ security_enabled = str(configurations[SECURITY_ENABLED]).upper() == 'TRUE'
|
|
|
+
|
|
|
label = None
|
|
|
result_code = 'OK'
|
|
|
|
|
|
try:
|
|
|
- admin_http_code = check_ranger_login(ranger_auth_link, admin_username, admin_password)
|
|
|
- if admin_http_code == 200:
|
|
|
- get_user_code = get_ranger_user(ranger_get_user, admin_username, admin_password, ranger_admin_username)
|
|
|
- if get_user_code:
|
|
|
- user_http_code = check_ranger_login(ranger_auth_link, ranger_admin_username, ranger_admin_password)
|
|
|
- if user_http_code == 200:
|
|
|
- result_code = 'OK'
|
|
|
- label = 'Login Successful for users {0} and {1}'.format(admin_username, ranger_admin_username)
|
|
|
- elif user_http_code == 401:
|
|
|
- result_code = 'CRITICAL'
|
|
|
- label = 'User:{0} credentials on Ambari UI are not in sync with Ranger'.format(ranger_admin_username)
|
|
|
+ if security_enabled and stack_is_hdp25_or_further:
|
|
|
+ result_code = 'UNKNOWN'
|
|
|
+ label = 'This alert will get skipped for Ranger Admin on kerberos env'
|
|
|
+ else:
|
|
|
+ admin_http_code = check_ranger_login(ranger_auth_link, admin_username, admin_password)
|
|
|
+ if admin_http_code == 200:
|
|
|
+ get_user_code = get_ranger_user(ranger_get_user, admin_username, admin_password, ranger_admin_username)
|
|
|
+ if get_user_code:
|
|
|
+ user_http_code = check_ranger_login(ranger_auth_link, ranger_admin_username, ranger_admin_password)
|
|
|
+ if user_http_code == 200:
|
|
|
+ result_code = 'OK'
|
|
|
+ label = 'Login Successful for users {0} and {1}'.format(admin_username, ranger_admin_username)
|
|
|
+ elif user_http_code == 401:
|
|
|
+ result_code = 'CRITICAL'
|
|
|
+ label = 'User:{0} credentials on Ambari UI are not in sync with Ranger'.format(ranger_admin_username)
|
|
|
+ else:
|
|
|
+ result_code = 'WARNING'
|
|
|
+ label = 'Ranger Admin service is not reachable, please restart the service'
|
|
|
else:
|
|
|
- result_code = 'WARNING'
|
|
|
- label = 'Ranger Admin service is not reachable, please restart the service'
|
|
|
+ result_code = 'OK'
|
|
|
+ label = 'Login Successful for user: {0}. User:{1} user not yet synced with Ranger'.format(admin_username, ranger_admin_username)
|
|
|
+ elif admin_http_code == 401:
|
|
|
+ result_code = 'CRITICAL'
|
|
|
+ label = 'User:{0} credentials on Ambari UI are not in sync with Ranger'.format(admin_username)
|
|
|
else:
|
|
|
- result_code = 'OK'
|
|
|
- label = 'Login Successful for user: {0}. User:{1} user not yet synced with Ranger'.format(admin_username, ranger_admin_username)
|
|
|
- elif admin_http_code == 401:
|
|
|
- result_code = 'CRITICAL'
|
|
|
- label = 'User:{0} credentials on Ambari UI are not in sync with Ranger'.format(admin_username)
|
|
|
- else:
|
|
|
- result_code = 'WARNING'
|
|
|
- label = 'Ranger Admin service is not reachable, please restart the service'
|
|
|
+ result_code = 'WARNING'
|
|
|
+ label = 'Ranger Admin service is not reachable, please restart the service'
|
|
|
|
|
|
except Exception, e:
|
|
|
label = str(e)
|