admins can change nodes to reservable/regular in the node page
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Tue, 4 Oct 2011 11:03:34 +0000 (13:03 +0200)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Tue, 4 Oct 2011 11:03:34 +0000 (13:03 +0200)
planetlab/common/actions.php
planetlab/includes/plc_functions.php
planetlab/nodes/node.php

index dd6a661..8c4beab 100644 (file)
@@ -49,7 +49,7 @@ $known_actions []= "node-boot-state";
 $known_actions []= "delete-node";      
 //     expects:        node_id
 $known_actions []= "update-node";      
-//     expects:        node_id, hostname, model
+//     expects:        node_id, hostname, model, node_type
 $known_actions []= "attach-pcu";
 //     expects:        node_id, pcu_id, port (pcu_id <0 means detach)
 $known_actions []= "reboot-node-with-pcu";
@@ -349,8 +349,9 @@ switch ($action) {
    $node_id=intval($_POST['node_id']);
    $hostname= $_POST['hostname'];
    $model= $_POST['model'];
+   $node_type= $_POST['node_type'];
 
-   $fields= array( "hostname"=>$hostname, "model"=>$model );
+   $fields= array( "hostname"=>$hostname, "model"=>$model, "node_type"=>$node_type );
    $api->UpdateNode( $node_id, $fields );
    $error= $api->error();
 
index 8de54c5..d40de74 100644 (file)
@@ -511,12 +511,21 @@ function plc_redirect ($url) {
 }
 
 //////////////////// the options for an nodetype - suitable for plekit/form
-function node_type_selectors ($api,$nodetype) {
-  $builtin_types = array ( "regular" => "Regular/Shared",
-                          "reservable" => "Reservable (requires to get leases)");
-  foreach ($builtin_types as $value=>$display) {
+global $builtin_node_types;
+$builtin_node_types = array ( "regular" => "Regular/Shared",
+                             "reservable" => "Reservable (requires to get leases)");
+function node_type_display ($api, $node_type) {
+  global $builtin_node_types;
+  $val=$builtin_node_types[$node_type];
+  if ( ! $val) $val="??undefined??";
+  return $val;
+}
+
+function node_type_selectors ($api,$node_type) {
+  global $builtin_node_types;
+  foreach ($builtin_node_types as $value=>$display) {
     $selector=array('display'=>$display, 'value'=>$value);
-    if ($value == $nodetype) $selector['selected']=true;
+    if ($value == $node_type) $selector['selected']=true;
     $selectors []= $selector;
   }
   return $selectors;
index 4d8ccb5..f7c5e6f 100644 (file)
@@ -42,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'];
@@ -99,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
@@ -146,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();
@@ -276,7 +286,6 @@ I've experienced a problem rebooting $hostname with the pcu_id $pcu_id;
 $details->space();
 
 //////////////////// type & version
-$details->th_td("Type",$node_type);
 $details->th_td("Version",$version);
 // let's use plc_objects
 $Node = new Node($node);