You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vi...@apache.org on 2012/06/07 04:08:20 UTC

svn commit: r1347299 - in /incubator/ambari/branches/ambari-186: CHANGES.txt hmc/js/addNodes.js hmc/php/db/HMCDBAccessor.php hmc/php/frontend/addNodes.php

Author: vikram
Date: Thu Jun  7 02:08:19 2012
New Revision: 1347299

URL: http://svn.apache.org/viewvc?rev=1347299&view=rev
Log:
AMBARI-479. Add nodes after install does not allow re-bootstrap if user closes browser after bootstrap and before starting services (Contributed by Vikram)

Modified:
    incubator/ambari/branches/ambari-186/CHANGES.txt
    incubator/ambari/branches/ambari-186/hmc/js/addNodes.js
    incubator/ambari/branches/ambari-186/hmc/php/db/HMCDBAccessor.php
    incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes.php

Modified: incubator/ambari/branches/ambari-186/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/CHANGES.txt?rev=1347299&r1=1347298&r2=1347299&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/CHANGES.txt (original)
+++ incubator/ambari/branches/ambari-186/CHANGES.txt Thu Jun  7 02:08:19 2012
@@ -6,6 +6,8 @@ characters wide.
 
 Release 0.1.x - unreleased
 
+  AMBARI-479. Add nodes after install does not allow re-bootstrap if user closes browser after bootstrap and before starting services (Vikram)
+
   AMBARI-477. Spec file for using installer with php-5.3 (Hitesh via Vikram)
 
   AMBARI-478. Checkbox in the review and deploy page does not show proper state (Vikram)

Modified: incubator/ambari/branches/ambari-186/hmc/js/addNodes.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/js/addNodes.js?rev=1347299&r1=1347298&r2=1347299&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/js/addNodes.js (original)
+++ incubator/ambari/branches/ambari-186/hmc/js/addNodes.js Thu Jun  7 02:08:19 2012
@@ -186,11 +186,7 @@ globalYui.one("#fileUploadTargetId").on(
 
       if (responseJson.result != 0) {
         // This means we hit an error
-        if (responseJson.result == 2) {
-          hideLoadingImg();
-          setFormStatus(responseJson.error, true);
-          return;
-      } else if (responseJson.result == 3) {
+      if (responseJson.result == 3) {
         info =
           '<p>' +
             responseJson.error + '. ' +
@@ -201,11 +197,15 @@ globalYui.one("#fileUploadTargetId").on(
           setFormStatus(info, true);
           var infoPanel = createInformationalPanel("#informationalPanelContainerDivId", "Duplicate nodes");
           infoPanel.set('centered', true);
-          var infoPanelContent = '<ul>';
-          for (host in responseJson.hosts) {
-            infoPanelContent += '<li>' + responseJson.hosts[host] + '</li>';
+          var infoPanelContent = '';
+          for (cluster in responseJson.hosts) {
+            infoPanelContent += 'Cluster: <b>' + cluster + '</b><ul>';
+            for (host in responseJson.hosts[cluster]) {
+              infoPanelContent += '<li>' + responseJson.hosts[cluster][host] + '</li>';
+            }
+
+            infoPanelContent += '</ul><br/>';
           }
-          infoPanelContent += '</ul>';
           infoPanel.set('bodyContent', infoPanelContent);
           infoPanel.addButton({
             value: 'Close',

Modified: incubator/ambari/branches/ambari-186/hmc/php/db/HMCDBAccessor.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/php/db/HMCDBAccessor.php?rev=1347299&r1=1347298&r2=1347299&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/php/db/HMCDBAccessor.php (original)
+++ incubator/ambari/branches/ambari-186/hmc/php/db/HMCDBAccessor.php Thu Jun  7 02:08:19 2012
@@ -1094,6 +1094,7 @@ class HMCDBAccessor {
       $host["discoveryStatus"] = $entry["discovery_status"];
       $host["badHealthReason"] = $entry["bad_health_reason"];
       $host["attributes"] = json_decode($entry["attributes"], true);
+      $host["clusterName"] = $entry["cluster_name"];
       array_push($response["hosts"], $host);
     }
     LockRelease(); return $response;
@@ -3381,7 +3382,7 @@ class HMCDBAccessor {
       $host["discoveryStatus"] = $entry["discovery_status"];
       $host["badHealthReason"] = $entry["bad_health_reason"];
       $host["attributes"] = json_decode($entry["attributes"], true);
-      array_push($response["hosts"], $host);
+      array_push($response["hosts"][$host["hostName"]], $host);
     }
     LockRelease(); return $response;
   }

Modified: incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes.php?rev=1347299&r1=1347298&r2=1347299&view=diff
==============================================================================
--- incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes.php (original)
+++ incubator/ambari/branches/ambari-186/hmc/php/frontend/addNodes.php Thu Jun  7 02:08:19 2012
@@ -82,42 +82,48 @@ $logger->log_info("Doing a fresh install
 if (!$freshInstall) {
 
   // Get the list of current nodes
-    $allHostsInfoResult = $dbAccessor->getAllHostsInfo($clusterName, array());
-    if ($allHostsInfoResult["result"] != 0 ) {
-      $logger->log_error("Got error while getting hostInfo for $host :" .$allHostsInfoResult["error"]);
-      print json_encode($allHostsInfoResult);
-      return;
-    }
-
-    // See if they are duplicates
-    $newHosts = readHostsFile($hostsFileDestination);
-    $duplicateHosts = array();
-    $logger->log_debug("Checking for Duplicate Hosts.");
-    foreach ($allHostsInfoResult["hosts"] as $hostInfo) {
-      if (in_array($hostInfo["hostName"], $newHosts)) {
-        $duplicateHosts[] = $hostInfo["hostName"];
-      }
-    }
-    $numDupHosts = count($duplicateHosts);
-    $numNewHosts = count($newHosts);
-    if ($numDupHosts != 0) {
-      if ($numNewHosts == $numDupHosts) {
-        print (json_encode(array("result" => 2, "error" => "All the hosts in the given file are already being used in cluster '$clusterName'")));
-      } else {
-        print (json_encode(array("result" => 3, "error" => "Some hosts in the given file are already being used in cluster '$clusterName'", "hosts" => $duplicateHosts)));
-
-        // Just re-edit the hosts' file in case users says go ahead
-        $nodeFileOut = fopen($hostsFileDestination, "w");
-        foreach ($newHosts as $newHost) {
-          if (in_array($newHost, $duplicateHosts)) {
-            continue;
-          }
-          fwrite($nodeFileOut, $newHost."\n");
+  $allHostsInfoResult = $dbAccessor->getAllHostsInfo("", array());
+  if ($allHostsInfoResult["result"] != 0 ) {
+    $logger->log_error("Got error while getting hostInfo for $host :" .$allHostsInfoResult["error"]);
+    print json_encode($allHostsInfoResult);
+    return;
+  }
+
+  $unassignedHostResult = $dbAccessor->getAllUnassignedHosts($clusterName);
+  if ($unassignedHostResult["result"] != 0) {
+    print json_encode($unassignedHostResult);
+    return;
+  }
+
+  $unassignedHostList = $unassignedHostResult["hosts"];
+
+  // See if they are duplicates
+  $newHosts = readHostsFile($hostsFileDestination);
+  $duplicateHosts = array();
+  $logger->log_debug("Checking for Duplicate Hosts.");
+  foreach ($allHostsInfoResult["hosts"] as $hostInfo) {
+    $logger->log_debug("Checking for Duplicate Hosts. hostname = ".
+      $hostInfo["hostName"]. " key does not exist? " . 
+      array_key_exists($hostInfo["hostName"], $unassignedHostList). 
+      " incoming cluster name: $clusterName, host is part of cluster "
+      .$hostInfo["clusterName"]);
+    if (in_array($hostInfo["hostName"], $newHosts) &&
+      (!(array_key_exists($hostInfo["hostName"], $unassignedHostList)) 
+      || ($hostInfo["clusterName"] != $clusterName))) {
+        if (!array_key_exists($hostInfo["clusterName"], $duplicateHosts)) {
+          $duplicateHosts[$hostInfo["clusterName"]] = array();
         }
-        fclose($nodeFileOut);
+
+        array_push($duplicateHosts[$hostInfo["clusterName"]], 
+                   $hostInfo["hostName"]);
       }
-      return;
-    }
+  }
+  $numDupHosts = count($duplicateHosts);
+  $numNewHosts = count($newHosts);
+  if ($numDupHosts != 0) {
+    print (json_encode(array("result" => 3, "error" => "Some hosts in the given file are already being used in cluster", "hosts" => $duplicateHosts)));
+    return;
+  }
 } else {
   // Update the state of the cluster.
   $state = "CONFIGURATION_IN_PROGRESS";