From e0bf7d5e52aa379d1303ef3b5d73be87b857bc6f Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 16 Jan 2009 14:51:48 +0000 Subject: [PATCH] checkpoint --- planetlab/nodes/newindex.php | 81 ++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 17 deletions(-) diff --git a/planetlab/nodes/newindex.php b/planetlab/nodes/newindex.php index a00bdac..05218ae 100644 --- a/planetlab/nodes/newindex.php +++ b/planetlab/nodes/newindex.php @@ -23,40 +23,77 @@ $_person= $plc->person; $_roles= $_person['role_ids']; // -------------------- -$pattern=$_GET['pattern']; +// recognized URL arguments $peerscope=$_GET['peerscope']; +$pattern=$_GET['pattern']; +$site_id=intval($_GET['site_id']); +$slice_id=intval($_GET['slice_id']); -drupal_set_title('Nodes'); - -$minitabs=array("Old page"=>"/db/nodes/index.php", - "About"=>"/db/about.php", - "Logout"=>"/planetlab/logout.php", - "And others"=>"http://www.google.com", - "For demo"=>"/undefined"); -plc_show_options($minitabs); +// --- decoration +$title="Nodes"; +$tabs=array("Old page"=>l_nodes(), + "Logout"=>"/planetlab/logout.php"); // -------------------- $peer_filter=array(); +$node_filter=array(); + + +////////////////// +// performs sanity check and summarize the result in a single column +function node_status ($node) { + + $messages=array(); + + // do all this stuff on local nodes only + if ( ! $node['peer_id'] ) { + // check that the node has keys + if (count($node['interface_ids']) == 0) { + $messages [] = "No interface"; + } + } + return plc_make_table('plc-warning',$messages); +} + // fetch nodes - set pattern in the url for server-side filtering $node_columns=array('hostname','site_id','node_id','boot_state','interface_ids','peer_id'); if ($pattern) { $node_filter['hostname']=$pattern; + $title .= " matching " . $pattern; } else { - $node_filter=array('hostname'=>"*"); + $node_filter['hostname']="*"; } // server-side selection on peerscope list ( $peer_filter, $peer_label) = plc_peer_info($api,$_GET['peerscope']); $node_filter=array_merge($node_filter,$peer_filter); +if ($site_id) { + $sites=$api->GetSites(array($site_id),array("name","login_base")); + $site=$sites[0]; + $name=$site['name']; + $login_base=$site['login_base']; + $title .= t_site($site); + $tabs = array_merge($tabs,tabs_site($site)); + $node_filter['site_id']=array($site_id); +} + +if ($slice_id) { + $slices=$api->GetSlices(array($slice_id),array('node_ids','name')); + $slice=$slices[0]; + $title .= t_slice($slice); + $tabs = array_merge($tabs,tabs_slice($slice)); + $node_filter['node_id'] = $slice['node_ids']; + } + // go $nodes=$api->GetNodes($node_filter,$node_columns); // build site_ids - interface_ids $site_ids=array(); $interface_ids=array(); -foreach ($nodes as $node) { +if ($nodes) foreach ($nodes as $node) { $site_ids []= $node['site_id']; $interface_ids = array_merge ($interface_ids,$node['interface_ids']); } @@ -91,8 +128,16 @@ foreach ($peers as $peer) { $peer_hash[$peer['peer_id']]=$peer; } +// -------------------- +drupal_set_title($title); +plc_tabs($tabs); +if ( ! $nodes ) { + drupal_set_message ('No node found'); + return; + } + $columns = array ("Peer"=>"string", "Region"=>"string", "Site"=>"string", @@ -100,7 +145,8 @@ $columns = array ("Peer"=>"string", "Hostname"=>"string", "IP"=>"IPAddress", "Load"=>"int", - "Avg Load"=>"float"); + "Avg Load"=>"float", + "Status"=>"string"); # initial sort on hostnames plc_table_start("nodes",$columns,4); @@ -117,19 +163,20 @@ foreach ($nodes as $node) { $ip=$interface_hash[$node['node_id']]['ip']; $interface_id=$interface_hash[$node['node_id']]['interface_id']; if ( ! $node['peer_id'] ) { - $shortname="local"; + $shortname=PLC_SHORTNAME; } else { $shortname=$peer_hash[$node['peer_id']]['shortname']; } printf ('',$hostname); - printf (' %s ',$shortname); + plc_table_cell($shortname); printf (' %s ',topdomain($hostname)); - printf (' %s',$site_id,$login_base); + printf (' %s',l_site2($site_id,$login_base)); printf (' %s ',$node['boot_state']); - printf (' %s',$node_id,$hostname); - printf (' %s', $interface_id,$ip); + printf (' %s ',l_node2($node_id,$hostname)); + printf (' %s ', l_interface2($interface_id,$ip)); printf (' %s ', $fake1); printf (' %s ', $fake2); + plc_table_cell (node_status($node)); printf ( ''); if ($fake_i % 5 == 0) $fake1 += 3; -- 2.47.0