admins can change nodes to reservable/regular in the node page
[plewww.git] / planetlab / nodes / node.php
index cfce37e..f7c5e6f 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 
-// $Id$
-
 // Require login
 require_once 'plc_login.php';
 
@@ -44,8 +42,8 @@ $boot_state= $node['boot_state'];
 $run_level = $node['run_level'];
 $site_id= $node['site_id'];
 $model= $node['model'];
+$node_type= $node['node_type'];
 $version= $node['version'];
-$node_type = $node['node_type'];
 
 // arrays of ids of node info
 $slice_ids= $node['slice_ids'];
@@ -101,7 +99,8 @@ $local_peer= ! $peer_id;
 
   
 // extra privileges to admins, and (pi||tech) on this site
-$privileges = (plc_is_admin () && $local_peer) || ( plc_in_site($site_id) && ( plc_is_pi() || plc_is_tech()));
+$admin_privileges=(plc_is_admin () && $local_peer);
+$privileges =  $admin_privileges || ( plc_in_site($site_id) && ( plc_is_pi() || plc_is_tech()));
   
 $tabs=array();
 // available actions
@@ -148,6 +147,15 @@ $details->form_start(l_actions(),array("action"=>"update-node", "node_id"=>$node
 //$details->th_td("Hostname",$hostname,"hostname"); 
 $details->th_td("Hostname",$hostname); 
 $details->th_td("Model",$model,"model");
+// reservation ?
+if ( $admin_privileges) {
+  $reservation_value = $details->form->select_html("node_type",
+                                                  node_type_selectors ($api, $node_type));
+} else {
+  $reservation_value = node_type_display ($api,$node_type);
+}
+$details->th_td("Reservation",$reservation_value);
+
 $details->tr_submit("submit","Update Node");
 $details->form_end();
 if ($privileges) $details->space();
@@ -261,14 +269,23 @@ I've experienced a problem rebooting $hostname with the pcu_id $pcu_id;
     $url=rawurlencode($body);
     $email = "<font style='font-size: smaller'>><a href=\"mailto:".PLC_MAIL_SUPPORT_ADDRESS."?Subject=Reporting a problem rebooting $hostname&Body=$url\">Report a problem</a></font>";
 
-    $details->form_start(l_actions(),array("action"=>"reboot-node-with-pcu", "node_id"=>$node_id, "hostname"=>$hostname));
-    print $details->tr_html($email . $details->form->submit_html("submit","Reboot Node"), "right");
-    $details->form_end();
+    // NOTE: not sure how to make the buttons display side-by-side...
+    $reboot = $details->form_start_html(l_actions(),array("action"=>"reboot-node-with-pcu",
+                                "node_id"=>$node_id, "hostname"=>$hostname, "test"=>FALSE));
+    $reboot .= $email . $details->form->submit_html("submit","Reboot Node");
+    $reboot .= $details->form_end_html();
+
+    $reboot .= $details->form_start_html(l_actions(),array("action"=>"reboot-node-with-pcu",
+                                "node_id"=>$node_id, "hostname"=>$hostname, "test"=>TRUE));
+    $reboot .= $details->form->submit_html("submit","Test PCU");
+    $reboot .= $details->form_end_html();
+
+    $details->tr($reboot, "right");
+
 }
 $details->space();
 
 //////////////////// type & version
-$details->th_td("Type",$node_type);
 $details->th_td("Version",$version);
 // let's use plc_objects
 $Node = new Node($node);
@@ -453,7 +470,7 @@ if ( $local_peer ) {
     echo '<p>';
     plc_warning_html("This node has no interface");
     echo "Please add an interface to make this a usable PLC node.</p>\n";
-  } else {
+  } // else { // show this unconditionnally as otherwise there's no mean to create one..
 
     // display a hostname column iff at least one interface has a hostname
     $need_hostname=false;
@@ -478,7 +495,7 @@ if ( $local_peer ) {
     $table=new PlekitTable("node_interfaces",$headers,$sort_column,$table_options);
     $table->start();
        
-    foreach ( $interfaces as $interface ) {
+    if ($interfaces) foreach ( $interfaces as $interface ) {
       $interface_id= $interface['interface_id'];
       $interface_ip= $interface['ip'];
 
@@ -514,7 +531,7 @@ if ( $local_peer ) {
       $table->row_end();
     }
     $table->end();
-  }
+    //  }
   $toggle->end();
  }