mising
[plewww.git] / planetlab / nodes / nodes.php
index d03c7b5..b1daeff 100644 (file)
@@ -15,6 +15,7 @@ include 'plc_header.php';
 
 // Common functions
 require_once 'plc_functions.php';
+require_once 'plc_peers.php';
 require_once 'plc_minitabs.php';
 require_once 'plc_tables.php';
 
@@ -32,8 +33,9 @@ $mysite_id=plc_my_site_id();
 $tabs['My nodes'] = array('url'=>l_nodes(),
                          'values'=>array('site_id'=>plc_my_site_id()),
                          'bubble'=>'Lists nodes on site ' . $mysite_id);
+$tabs['Local nodes'] = array ('url'=>l_nodes_peer('local'),
+                             'bubble' => 'Nodes local to this peer');
 // -------------------- 
-$peer_filter=array();
 $node_filter=array();
 
 //////////////////
@@ -54,7 +56,7 @@ function node_status ($node) {
 
 
 // fetch nodes 
-$node_columns=array('hostname','node_type','site_id','node_id','boot_state','interface_ids','peer_id');
+$node_columns=array('hostname','node_type','site_id','node_id','boot_state','interface_ids','peer_id', "arch");
 // server-side filtering - set pattern in $_GET for filtering on hostname
 if ($pattern) {
   $node_filter['hostname']=$pattern;
@@ -64,8 +66,9 @@ if ($pattern) {
  }
 
 // server-side selection on peerscope
-list ( $peer_filter, $peer_label) = plc_peer_info($api,$_GET['peerscope']);
-$node_filter=array_merge($node_filter,$peer_filter);
+$peerscope=new PeerScope($api,$_GET['peerscope']);
+$node_filter=array_merge($node_filter,$peerscope->filter());
+$title .= ' - ' . $peerscope->label();
 
 if ($site_id) {
   $sites=$api->GetSites(array($site_id),array("name","login_base"));
@@ -102,9 +105,7 @@ $interface_filter=array('is_primary'=>TRUE,'interface_id'=>$interface_ids);
 $interfaces=$api->GetInterfaces($interface_filter,$interface_columns);
 
 $interface_hash=array();
-foreach ($interfaces as $interface) {
-    $interface_hash[$interface['node_id']]=$interface;
-}
+foreach ($interfaces as $interface) $interface_hash[$interface['node_id']]=$interface;
 
 // fetch related sites
 $site_columns=array('site_id','login_base');
@@ -112,9 +113,7 @@ $site_filter=array('site_id'=>$site_ids);
 $sites=$api->GetSites($site_filter,$site_columns);
 
 $site_hash=array();
-foreach ($sites as $site) {
-    $site_hash[$site['site_id']]=$site;
-}
+foreach ($sites as $site) $site_hash[$site['site_id']]=$site;
 
 // --------------------
 drupal_set_title($title);
@@ -126,24 +125,23 @@ if ( ! $nodes ) {
   return;
  }
   
-$columns = array ("Peer"=>"string",
+$headers = array ("Peer"=>"string",
                  "Region"=>"string",
                  "Site"=>"string",
                  "State"=>"string",
                  "Hostname"=>"string",
                  "IP"=>"IPAddress",
                  "Type"=>"string",
+                 "Arch"=>"string",
                  "?"=>"string",
-                 "Int"=>"int",
-                 "Float"=>"float");
+                 );
 
 # initial sort on hostnames
-$table_options=array();
-plc_table_start("nodes",$columns,4,$table_options);
+$table=new PlcTable ("nodes",$headers,4);
+$table->start();
 
-$peer_hash = plc_peer_get_hash ($api);
+$peers = new Peers ($api);
 // write rows
-$fake1=1; $fake2=3.14; $fake_i=0;
 foreach ($nodes as $node) {
     $hostname=$node['hostname'];
     $node_id=$node['node_id'];
@@ -153,28 +151,25 @@ foreach ($nodes as $node) {
     $node_id=$node['node_id'];
     $ip=$interface_hash[$node['node_id']]['ip'];
     $interface_id=$interface_hash[$node['node_id']]['interface_id'];
-    $shortname = plc_peer_shortname ($peer_hash,$node['peer_id']);
+    $peer_id=$node['peer_id'];
+    $shortname = $peers->shortname($peer_id);
     $node_type = $node['node_type'];
 
-    plc_table_row_start($hostname);
-    plc_table_cell ($shortname);
-    plc_table_cell (topdomain($hostname));
-    plc_table_cell (l_site_t($site_id,$login_base));
-    plc_table_cell ($node['boot_state']);
-    plc_table_cell (l_node_t($node_id,$hostname));
-    plc_table_cell (l_interface_t($interface_id,$ip));
-    plc_table_cell ($node_type);
-    plc_table_cell (node_status($node));
-    plc_table_cell ($fake1);
-    plc_table_cell ($fake2);
-    plc_table_row_end();
+    $table->row_start();
+    $table->cell ($peers->link($peer_id,$shortname));
+    $table->cell (topdomain($hostname));
+    $table->cell (l_site_t($site_id,$login_base));
+    $table->cell ($node['boot_state']);
+    $table->cell (l_node_t($node_id,$hostname));
+    $table->cell (l_interface_t($interface_id,$ip));
+    $table->cell ($node_type);
+    $table->cell ($node['arch']);
+    $table->cell (node_status($node));
+    $table->row_end();
                                 
-    if ($fake_i % 5 == 0) $fake1 += 3; 
-    if ($fake_i % 3 == 0) $fake2 +=5; else $fake2 -= $fake_i;
-    $fake_i += 1;
 }
 
-plc_table_end($table_options);
+$table->end();
 
 // Print footer
 include 'plc_footer.php';