<?php
-// $Id$
-
// Require login
require_once 'plc_login.php';
// --------------------
// recognized URL arguments
-$node_id=intval($_GET['id']);
+$node_id=intval(get_array($_GET, 'id'));
if ( ! $node_id ) { plc_error('Malformed URL - id not set'); return; }
////////////////////
-// Get all columns as we focus on only one entry
-$nodes= $api->GetNodes( array($node_id));
+// Need to mention columns explicitly as we want hrn which is a tag
+$columns=array ('hostname','boot_state','run_level','site_id','model','node_type','version',
+ 'slice_ids','conf_file_ids','interface_ids','nodegroup_ids','peer_id',
+ 'pcu_ids','ports','hrn');
+$nodes= $api->GetNodes( array($node_id),$columns);
if (empty($nodes)) {
drupal_set_message ("Node " . $node_id . " not found");
$node=$nodes[0];
// node info
$hostname= $node['hostname'];
+$hrn=$node['hrn'];
$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'];
// 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
$toggle = new PlekitToggle ('node',"Details",
array('bubble'=>'Display and modify details for that node',
- 'visible'=>get_arg('show_details',true)));
+ 'visible'=>get_arg('show_details')));
$toggle->start();
$details=new PlekitDetails($privileges);
// xxx can hostname really be changed like this without breaking the rest, bootcd .. ?
//$details->th_td("Hostname",$hostname,"hostname");
$details->th_td("Hostname",$hostname);
+if ($hrn) $details->th_td("SFA hrn",$hrn);
+else $details->tr("SFA hrn not set","center");
$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();
$details->space();
//////////////////// type & version
-$details->th_td("Type",$node_type);
-$details->th_td("Version",$version);
+$details->th_td("CD Version",$version);
// let's use plc_objects
$Node = new Node($node);
$details->th_td("Date created",$Node->dateCreated());
"action"=>"node-boot-state"));
$boot_value .= $boot_form->start_html();
$states = array( 'boot'=>'Boot', 'safeboot'=>'SafeBoot',
- 'disabled' => 'Disabled', 'reinstall'=>'Reinstall');
+ 'disabled' => 'Disabled', 'reinstall'=>'Reinstall',
+ 'upgrade' => 'Upgrade');
$selectors=array();
foreach ($states as $dbname=>$displayname) {
$selector=array("display"=>$displayname, "value"=>$dbname);
{
$toggle=new PlekitToggle ('slices',count_english_warning($slices,'sliver'),
array('bubble'=>'Review slices running on that node',
- 'visible'=>get_arg('show_slices',false)));
+ 'visible'=>get_arg('show_slices')));
$toggle->start();
if ( ! $slices ) {
plc_warning ("This node is not associated to any slice");
$toggle = new PlekitToggle ('tags',count_english($tags,'tag'),
array('bubble'=>'Inspect and set tags on that node',
- 'visible'=>get_arg('show_tags',false)));
+ 'visible'=>get_arg('show_tags')));
$toggle->start();
$headers=array("Name"=>"string",
if ( $local_peer ) {
$toggle=new PlekitToggle ('interfaces',count_english_warning($interfaces,'interface'),
array('bubble'=>'Inspect and tune interfaces on that node',
- 'visible'=>get_arg('show_interfaces',false)));
+ 'visible'=>get_arg('show_interfaces')));
$toggle->start();
// display interfaces
if( ! $interfaces ) {
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;
$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'];
$table->row_end();
}
$table->end();
- }
+ // }
$toggle->end();
}