Jelajahi Sumber

AMBARI-3453. Yarn smoke test failed with SSL enabled for hadoop daemons. (Oleksandr Diachenko via swagle)

Siddharth Wagle 12 tahun lalu
induk
melakukan
d58802e974

+ 2 - 0
ambari-agent/src/main/puppet/modules/hdp-hadoop/manifests/params.pp

@@ -123,6 +123,8 @@ class hdp-hadoop::params(
   $proxyuser_group = hdp_default("core-site/proxyuser.group","users")
   $proxyuser_group = hdp_default("core-site/proxyuser.group","users")
   
   
   $hadoop_tmp_dir = hdp_default("core-site/hadoop.tmp.dir","/tmp/hadoop-$hdfs_user")
   $hadoop_tmp_dir = hdp_default("core-site/hadoop.tmp.dir","/tmp/hadoop-$hdfs_user")
+  
+  $hadoop_ssl_enabled = hdp_default("core-site/hadoop.ssl.enabled","false")
 
 
   ### hdfs-site
   ### hdfs-site
   $datanode_du_reserved = hdp_default("hdfs-site/datanode.du.reserved",1073741824)
   $datanode_du_reserved = hdp_default("hdfs-site/datanode.du.reserved",1073741824)

+ 16 - 9
ambari-agent/src/main/puppet/modules/hdp-yarn/files/validateYarnComponentStatus.py

@@ -30,13 +30,18 @@ STARTED_STATE = 'STARTED'
 RUNNING_STATE = 'RUNNING'
 RUNNING_STATE = 'RUNNING'
 
 
 #Return reponse for given path and address
 #Return reponse for given path and address
-def getResponse(path, address):
+def getResponse(path, address, ssl_enabled):
 
 
   command = "curl"
   command = "curl"
   httpGssnegotiate = "--negotiate"
   httpGssnegotiate = "--negotiate"
   userpswd = "-u:"
   userpswd = "-u:"
-  url = 'http://' + address + path
-  command_with_flags = [command,httpGssnegotiate,userpswd,url]
+  insecure = "-k"# This is smoke test, no need to check CA of server
+  if ssl_enabled:
+    url = 'https://' + address + path
+  else:
+    url = 'http://' + address + path
+      
+  command_with_flags = [command,httpGssnegotiate,userpswd,insecure,url]
   try:
   try:
     proc = subprocess.Popen(command_with_flags, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     proc = subprocess.Popen(command_with_flags, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     (stdout, stderr) = proc.communicate()
     (stdout, stderr) = proc.communicate()
@@ -50,10 +55,10 @@ def getResponse(path, address):
     exit(1)
     exit(1)
 
 
 #Verify that REST api is available for given component
 #Verify that REST api is available for given component
-def validateAvailability(component, path, address):
+def validateAvailability(component, path, address, ssl_enabled):
 
 
   try:
   try:
-    response = getResponse(path, address)
+    response = getResponse(path, address, ssl_enabled)
     is_valid = validateAvailabilityResponse(component, response)
     is_valid = validateAvailabilityResponse(component, response)
     if not is_valid:
     if not is_valid:
       exit(1)
       exit(1)
@@ -91,10 +96,10 @@ def validateAvailabilityResponse(component, response):
     return False
     return False
 
 
 #Verify that component has required resources to work
 #Verify that component has required resources to work
-def validateAbility(component, path, address):
+def validateAbility(component, path, address, ssl_enabled):
 
 
   try:
   try:
-    response = getResponse(path, address)
+    response = getResponse(path, address, ssl_enabled)
     is_valid = validateAbilityResponse(component, response)
     is_valid = validateAbilityResponse(component, response)
     if not is_valid:
     if not is_valid:
       exit(1)
       exit(1)
@@ -133,12 +138,14 @@ def validateAbilityResponse(component, response):
 def main():
 def main():
   parser = optparse.OptionParser(usage="usage: %prog [options] component ")
   parser = optparse.OptionParser(usage="usage: %prog [options] component ")
   parser.add_option("-p", "--port", dest="address", help="Host:Port for REST API of a desired component")
   parser.add_option("-p", "--port", dest="address", help="Host:Port for REST API of a desired component")
+  parser.add_option("-s", "--ssl", dest="ssl_enabled", help="Is SSL enabled for UI of component")
 
 
   (options, args) = parser.parse_args()
   (options, args) = parser.parse_args()
 
 
   component = args[0]
   component = args[0]
   
   
   address = options.address
   address = options.address
+  ssl_enabled = (options.ssl_enabled) in 'true'
   if component == RESOURCEMANAGER:
   if component == RESOURCEMANAGER:
     path = '/ws/v1/cluster/info'
     path = '/ws/v1/cluster/info'
   elif component == NODEMANAGER:
   elif component == NODEMANAGER:
@@ -148,11 +155,11 @@ def main():
   else:
   else:
     parser.error("Invalid component")
     parser.error("Invalid component")
 
 
-  validateAvailability(component, path, address)
+  validateAvailability(component, path, address, ssl_enabled)
 
 
   if component == RESOURCEMANAGER:
   if component == RESOURCEMANAGER:
     path = '/ws/v1/cluster/nodes'
     path = '/ws/v1/cluster/nodes'
-    validateAbility(component, path, address)
+    validateAbility(component, path, address, ssl_enabled)
 
 
 if __name__ == "__main__":
 if __name__ == "__main__":
   main()
   main()

+ 1 - 0
ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/params.pp

@@ -42,6 +42,7 @@ class hdp-yarn::params(
   
   
   ## yarn-site
   ## yarn-site
   $rm_webui_address = hdp_default("yarn-site/yarn.resourcemanager.webapp.address", "0.0.0.0:8088")
   $rm_webui_address = hdp_default("yarn-site/yarn.resourcemanager.webapp.address", "0.0.0.0:8088")
+  $rm_webui_https_address = hdp_default("yarn-site/yarn.resourcemanager.webapp.https.address", "0.0.0.0:8090")
   $nm_webui_address = hdp_default("yarn-site/yarn.nodemanager.webapp.address", "0.0.0.0:8042")
   $nm_webui_address = hdp_default("yarn-site/yarn.nodemanager.webapp.address", "0.0.0.0:8042")
   $hs_webui_address = hdp_default("mapred-site/mapreduce.jobhistory.webapp.address", "0.0.0.0:19888")
   $hs_webui_address = hdp_default("mapred-site/mapreduce.jobhistory.webapp.address", "0.0.0.0:19888")
   
   

+ 9 - 2
ambari-agent/src/main/puppet/modules/hdp-yarn/manifests/smoketest.pp

@@ -23,12 +23,19 @@ define hdp-yarn::smoketest(
 )
 )
 {
 {
   $rm_webui_address = $hdp-yarn::params::rm_webui_address
   $rm_webui_address = $hdp-yarn::params::rm_webui_address
+  $rm_webui_https_address = $hdp-yarn::params::rm_webui_https_address
   $nm_webui_address = $hdp-yarn::params::nm_webui_address
   $nm_webui_address = $hdp-yarn::params::nm_webui_address
   $hs_webui_address = $hdp-yarn::params::hs_webui_address
   $hs_webui_address = $hdp-yarn::params::hs_webui_address
+  
+  $hadoop_ssl_enabled = $hdp-hadoop::params::hadoop_ssl_enabled
 
 
   if ($component_name == 'resourcemanager') {
   if ($component_name == 'resourcemanager') {
     $component_type = 'rm'
     $component_type = 'rm'
-    $component_address = $rm_webui_address
+    if ($hadoop_ssl_enabled == "true") {
+      $component_address = $rm_webui_https_address
+    } else {
+      $component_address = $rm_webui_address
+    }
   } elsif ($component_name == 'nodemanager') {
   } elsif ($component_name == 'nodemanager') {
     $component_type = 'nm'
     $component_type = 'nm'
     $component_address = $nm_webui_address
     $component_address = $nm_webui_address
@@ -48,7 +55,7 @@ define hdp-yarn::smoketest(
   $validateStatusFileName = "validateYarnComponentStatus.py"
   $validateStatusFileName = "validateYarnComponentStatus.py"
   $validateStatusFilePath = "/tmp/$validateStatusFileName"
   $validateStatusFilePath = "/tmp/$validateStatusFileName"
 
 
-  $validateStatusCmd = "$validateStatusFilePath $component_type -p $component_address"
+  $validateStatusCmd = "$validateStatusFilePath $component_type -p $component_address -s $hadoop_ssl_enabled"
 
 
     if ($security_enabled == true) {
     if ($security_enabled == true) {
          $smoke_cmd = "${kinit_cmd}  $validateStatusCmd"
          $smoke_cmd = "${kinit_cmd}  $validateStatusCmd"