From 0777db4df3d599ed06170e1b36ae1b5838686ab0 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> Date: Mon, 19 Jan 2009 12:38:44 +0000 Subject: [PATCH] checkpoint --- planetlab/includes/plc_functions.php | 73 +++- planetlab/includes/plc_minitabs.php | 4 +- planetlab/includes/plc_session.php | 1 - planetlab/includes/plc_tables.php | 15 + planetlab/nodes/all_hosts.php | 5 - planetlab/nodes/all_ips.php | 5 - planetlab/nodes/alpha_hosts.php | 5 - planetlab/nodes/alpha_ips.php | 5 - planetlab/nodes/beta_hosts.php | 5 - planetlab/nodes/beta_ips.php | 5 - planetlab/nodes/etc_hosts.php | 5 - planetlab/nodes/node.php | 324 ++++++++++++++++++ planetlab/nodes/{newindex.php => nodes.php} | 36 +- planetlab/nodes/production_hosts.php | 5 - planetlab/nodes/production_ips.php | 5 - planetlab/{slices/tags.php => tags/index.php} | 0 .../node_groups.php => tags/nodegroups.php} | 0 planetlab/{slices => tags}/tag_action.php | 0 18 files changed, 420 insertions(+), 78 deletions(-) delete mode 100644 planetlab/nodes/all_hosts.php delete mode 100644 planetlab/nodes/all_ips.php delete mode 100644 planetlab/nodes/alpha_hosts.php delete mode 100644 planetlab/nodes/alpha_ips.php delete mode 100644 planetlab/nodes/beta_hosts.php delete mode 100644 planetlab/nodes/beta_ips.php delete mode 100644 planetlab/nodes/etc_hosts.php create mode 100644 planetlab/nodes/node.php rename planetlab/nodes/{newindex.php => nodes.php} (87%) delete mode 100644 planetlab/nodes/production_hosts.php delete mode 100644 planetlab/nodes/production_ips.php rename planetlab/{slices/tags.php => tags/index.php} (100%) rename planetlab/{nodes/node_groups.php => tags/nodegroups.php} (100%) rename planetlab/{slices => tags}/tag_action.php (100%) diff --git a/planetlab/includes/plc_functions.php b/planetlab/includes/plc_functions.php index a0f3e59..2dde891 100644 --- a/planetlab/includes/plc_functions.php +++ b/planetlab/includes/plc_functions.php @@ -86,7 +86,60 @@ function is_reserved_network_addr($network_addr) { return false; } -//////////////////////////////////////////////////////////// peerscopes +//////////////////////////////////////////////////////////// roles & other checks on global $plc +function plc_is_admin () { + global $plc; + return in_array( 10, $plc->person['role_ids']); +} +function plc_is_pi () { + global $plc; + return in_array( 20, $plc->person['role_ids']); +} +function plc_is_tech () { + global $plc; + return in_array( 40, $plc->person['role_ids']); +} +function plc_in_site ($site_id) { + global $plc; + return in_array( $site_id, $plc->person['site_ids']); +} + +//////////////////////////////////////////////////////////// peer & peerscopes +// when shortnames are needed on peers +function plc_peer_get_hash ($api) { + $peer_columns=array('peer_id','shortname'); + $peer_filter=array(); + $peers = $api->GetPeers($peer_filter,$peer_columns); + + $peer_hash=array(); + foreach ($peers as $peer) { + $peer_hash[$peer['peer_id']]=$peer; + } +} + +function plc_peer_shortname ($peer_hash,$peer_id) { + if ( ! $peer_id ) { + return PLC_SHORTNAME; + } else { + return $peer_hash[$node['peer_id']]['shortname']; + } +} + +// to set the background to grey on foreign objects +function plc_peer_block_start ($peer_hash,$peer_id) { + if ( ! $peer_id ) { + print "<div>"; + } else { + // set two classes, one eneraic to all foreign, and one based on the peer's shortname for finer grain tuning + printf ('<div class="plc-foreign plc-%s>"',strtolower(plc_peer_shortname($peer_hash,$peer_id))); + } +} + +function plc_peer_block_end () { + print "</div>\n"; +} + +//// standard peerscope syntax function plc_peer_info ($api,$peerscope) { switch ($_GET['peerscope']) { case '': @@ -119,26 +172,32 @@ function l_node_u ($node_id) { return "/db/nodes/node.php?id=" . $node_id; } function l_node ($node_id) { return href (l_node_u($node_id),$node_id); } function l_node2 ($node_id,$text) { return href (l_node_u($node_id),$text); } +function l_interface_u ($interface_id) { return "/db/nodes/interfaces.php?id=" . $interface_id; } +function l_interface_add_u($node_id) { return "/db/nodes/interfaces.php?node_id=" . $node_id; } +function l_interface ($interface_id) { return href (l_interface_u($interface_id),$interface_id); } +function l_interface2 ($interface_id,$text) { return href (l_interface_u($interface_id),$text); } + +function l_nodegroup_u ($nodegroup_id) { return "/db/nodes/node_groups.php?id=" . $nodegroup_id; } +function l_nodegroup2 ($nodegroup_id,$text) { return href(l_nodegroup_u($nodegroup_id),$text); } + function l_sites () { return "/db/sites/index.php"; } function l_site_u ($site_id) { return "/db/persons/index.php?id=" . $site_id; } function l_site ($site_id) { return href (l_site_u($site_id),$site_id); } function l_site2 ($site_id,$text) { return href (l_site_u($site_id),$text); } function l_slices () { return "/db/slices/index.php"; } -function l_slice_u ($slice_id) { return "/db/persons/index.php?id=" . $slice_id; } +function l_slice_u ($slice_id) { return "/db/slices/index.php?id=" . $slice_id; } function l_slice ($slice_id) { return href (l_slice_u($slice_id),$slice_id); } function l_slice2 ($slice_id,$text) { return href (l_slice_u($slice_id),$text); } +function l_sliver_u ($node_id,$slice_id) { return "/db/nodes/slivers.php?node_id=" . $node_id. "&slice_id=" . $slice_id; } +function l_sliver3 ($node_id,$slice_id,$text) { return href (l_sliver_u($node_id,$slice_id),$text) ; } + function l_persons () { return "/db/persons/index.php"; } function l_person_u ($person_id) { return "/db/persons/index.php?id=" . $person_id; } function l_person ($person_id) { return href (l_person_u($person_id),$person_id); } function l_person2 ($person_id,$text) { return href (l_person_u($person_id),$text); } -function l_interfaces () { return "/db/interfaces/index.php"; } -function l_interface_u ($interface_id) { return "/db/interfaces/index.php?id=" . $interface_id; } -function l_interface ($interface_id) { return href (l_interface_u($interface_id),$interface_id); } -function l_interface2 ($interface_id,$text) { return href (l_interface_u($interface_id),$text); } - function l_event ($type,$param,$id) { return '/db/events/index.php?type=' . $type . '&' . $param . '=' . $id; } function l_comon($id_name,$id_value) { return '/db/nodes/comon.php?' . $id_name . "=" . $id_value; } diff --git a/planetlab/includes/plc_minitabs.php b/planetlab/includes/plc_minitabs.php index 2df465f..00cb870 100644 --- a/planetlab/includes/plc_minitabs.php +++ b/planetlab/includes/plc_minitabs.php @@ -10,8 +10,10 @@ drupal_set_html_head(' function plc_tabs($array) { print '<div id="minitabs_container">'; print '<ul id="miniflex">'; + print "\n"; foreach ($array as $name=>$url) { - print "<li class='minitabs'><a href=\"" . $url . "\"title=\"\">" . $name . "</a></li>\n"; + printf ('<li class="minitabs"><a href="%s" title="">%s</a></li>',$url,$name); + print "\n"; } print '</ul>'; print '</div>'; diff --git a/planetlab/includes/plc_session.php b/planetlab/includes/plc_session.php index afd008b..c0f9656 100644 --- a/planetlab/includes/plc_session.php +++ b/planetlab/includes/plc_session.php @@ -8,7 +8,6 @@ // To use, include this file and declare the global variable // $plc. This object contains the following members: // -// admin: Admin API handle. Use cautiously. // person: If logged in, the user's GetPersons() details // api: If logged in, the user's API handle // diff --git a/planetlab/includes/plc_tables.php b/planetlab/includes/plc_tables.php index 7bdcf51..7deb794 100644 --- a/planetlab/includes/plc_tables.php +++ b/planetlab/includes/plc_tables.php @@ -126,6 +126,21 @@ Hold down the shift key to select multiple columns to sort EOF; } +//////////////////////////////////////// +function plc_table_title ($text) { + print "<h2> $text </h2>\n"; +} + +function plc_table_row_start ($id="") { + if ( $id) { + printf ('<tr id="%s">',$id); + } else { + print '<tr>'; + } +} +function plc_table_row_end () { + print "</tr>\n"; +} ?> diff --git a/planetlab/nodes/all_hosts.php b/planetlab/nodes/all_hosts.php deleted file mode 100644 index a838f14..0000000 --- a/planetlab/nodes/all_hosts.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "all_hosts"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/all_ips.php b/planetlab/nodes/all_ips.php deleted file mode 100644 index eeb5d7d..0000000 --- a/planetlab/nodes/all_ips.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "all_ips"; -@include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/alpha_hosts.php b/planetlab/nodes/alpha_hosts.php deleted file mode 100644 index ee0f2eb..0000000 --- a/planetlab/nodes/alpha_hosts.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "alpha_hosts"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/alpha_ips.php b/planetlab/nodes/alpha_ips.php deleted file mode 100644 index c8e5b7f..0000000 --- a/planetlab/nodes/alpha_ips.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "alpha_ips"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/beta_hosts.php b/planetlab/nodes/beta_hosts.php deleted file mode 100644 index 6637731..0000000 --- a/planetlab/nodes/beta_hosts.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "beta_hosts"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/beta_ips.php b/planetlab/nodes/beta_ips.php deleted file mode 100644 index 081ce1a..0000000 --- a/planetlab/nodes/beta_ips.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "beta_ips"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/etc_hosts.php b/planetlab/nodes/etc_hosts.php deleted file mode 100644 index c3ee907..0000000 --- a/planetlab/nodes/etc_hosts.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "etc_hosts"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/node.php b/planetlab/nodes/node.php new file mode 100644 index 0000000..78b3059 --- /dev/null +++ b/planetlab/nodes/node.php @@ -0,0 +1,324 @@ +<?php + +// $Id: index.php 11577 2009-01-16 06:29:51Z thierry $ + +// Require login +require_once 'plc_login.php'; + +// Get session and API handles +require_once 'plc_session.php'; +global $plc, $api; + +// Print header +require_once 'plc_drupal.php'; +include 'plc_header.php'; + +// Common functions +require_once 'plc_functions.php'; +require_once 'plc_minitabs.php'; +require_once 'plc_tables.php'; + +// tmp +//require_once 'plc_sorts.php'; +// find person roles +$_person= $plc->person; +$_roles= $_person['role_ids']; + +// -------------------- +// recognized URL arguments +$node_id=intval($_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)); + +if (empty($nodes)) { + drupal_set_message ("Node " . $node_id . " not found"); + } else { + $node=$nodes[0]; + // node info + $hostname= $node['hostname']; + $boot_state= $node['boot_state']; + $site_id= $node['site_id']; + $model= $node['model']; + $version= $node['version']; + $node_type = $node['node_type']; + + // arrays of ids of node info + $slice_ids= $node['slice_ids']; + $conf_file_ids= $node['conf_file_ids']; + $interface_ids= $node['interface_ids']; + $nodegroup_ids= $node['nodegroup_ids']; + $pcu_ids= $node['pcu_ids']; + + // get peer + $peer_id= $node['peer_id']; + + // gets site info + $sites= $api->GetSites( array( $site_id ) ); + $site=$sites[0]; + $site_name= $site['name']; + $site_node_ids= $site['node_ids']; + + $site_node_hash=array(); + if( !empty( $site_node_ids ) ) { + // get site node info basics + $site_nodes= $api->GetNodes( $site_node_ids ); + + foreach( $site_nodes as $site_node ) { + $site_node_hash[$site_node['node_id']]= $site_node['hostname']; + } + } + + // gets slice info for each slice + if( !empty( $slice_ids ) ) + $slices= $api->GetSlices( $slice_ids, array( "slice_id", "name" , "peer_id" ) ); + + // gets conf file info + if( !empty( $conf_file_ids ) ) + $conf_files= $api->GetConfFiles( $conf_file_ids ); + + // get interface info + if( !empty( $interface_ids ) ) + $interfaces= $api->GetInterfaces( $interface_ids ); + + // gets nodegroup info + if( !empty( $nodegroup_ids ) ) + $nodegroups= $api->GetNodeGroups( $nodegroup_ids, array("groupname","tag_type_id","value")); + + // xxx Thierry : disabling call to GetEvents, that gets the session deleted in the DB + // needs being reworked + + // gets pcu and port info key to both is $pcu_id + if( !empty( $pcu_ids ) ) + $PCUs= $api->GetPCUs( $pcu_ids ); + + + // display node info + plc_peer_block_start ($peer_hash,$peer_id); + + drupal_set_title("Details for node " . $hostname); + + // extra privileges to admins, and (pi||tech) on this site + $extra_privileges = plc_is_admin () || ( plc_in_site($site_id) && ( plc_is_pi() || plc_is_tech())); + + $tabs=array(); + // available actions + if ( ! $peer_id && $extra_privileges ) { + + $tabs["All nodes"]=l_nodes(); + // xxx subject to roles + $tabs["Add Interface"]=l_interface_add_u($node_id); + $tabs["Comon"]=l_comon("node_id",$node_id); + if ($extra_privileges) { + $tabs["Events"]=l_event("Node","node",$node_id); + } + plc_tabs($tabs); + + // the javascript callback we set on the form; this + // (*) checks whether we clicked on 'delete' + // (*) in this case performs a javascript 'confirm' + // (*) then, notice that if we select delete, then cancel, we can select back 'Choose action' + // so submit only when value is not empty + $change='if (document.actions.action.value=="delete") if (! confirm("Are you sure you want to delete ' . $hostname . ' ? ") ) return false; if (document.actions.action.value!="") submit();'; + + echo "<table><tr><td>"; + echo "</td><td>"; + echo "<form name='actions' action='/db/nodes/node_actions.php' method='post'>\n"; + echo "<input type=hidden name='node_id' value='$node_id'></input>\n"; + echo "<select name='action' onChange='$change'>\n"; + echo "<option value='' selected='selected'> Choose Action </option>\n"; + echo "<option value='prompt-update'> Update $hostname </option>\n"; + echo "<option value='delete'> Delete $hostname </option>\n"; + echo "</select></form>\n"; + + echo "</td></tr></table>"; + } + + echo "<hr />"; + echo "<table><tbody>\n"; + + echo "<tr><th>Hostname: </th><td> $hostname </td></tr>\n"; + echo "<tr><th>Type: </th><td> $node_type</td></tr>\n"; + echo "<tr><th>Model: </th><td> $model</td></tr>\n"; + echo "<tr><th>Version: </th><td> $version</td></tr>\n"; + + echo "<tr><th>Boot State: </th><td>"; + if ($peer_id) { + echo $boot_state; + } else { + echo "<form name='bootstate' action='/db/nodes/node_actions.php' method=post>\n"; + echo "<input type=hidden name='node_id' value='$node_id'>\n"; + echo "<input type=hidden name='action' value='boot-state'>\n"; + echo "<select name='boot_state' onChange=\"submit();\">\n"; + + $states= array( 'boot'=>'Boot', 'dbg'=>'Debug', 'inst'=>'Install', 'rins'=>'Reinstall', 'rcnf'=>'Reconfigure', 'new'=>'New' ); + + foreach( $states as $key => $val ) { + echo "<option value='$key'"; + + if( $key == $boot_state ) + echo " selected"; + + echo ">$val</option>\n"; + + } + + echo "</select></input></form>"; + } + echo "</td></tr>\n"; + + if ( ! $peer_id && $extra_privileges) { + + echo "<tr><th>Download </th><td>"; + echo "<form name='download' action='/db/nodes/node_actions.php' method='post'>\n"; + echo "<input type=hidden name='node_id' value='$node_id'></input>\n"; + echo "<select name='action' onChange='submit();'>\n"; + echo "<option value='' selected='selected'> Download Mode </option>\n"; + echo "<option value='' disabled='disabled'> -- All in one images -- </option>"; + echo "<option value='download-node-iso' $new_api_only> Download ISO image for $hostname</option>\n"; + echo "<option value='download-node-usb' $new_api_only> Download USB image for $hostname</option>\n"; + echo "<option value='' disabled='disabled'> -- Floppy + generic image -- </option>"; + echo "<option value='download-node-floppy'> Download Floppy file for $hostname</option>\n"; + echo "<option value='download-generic-iso' $new_api_only> Download generic ISO image (requires floppy) </option>\n"; + echo "<option value='download-generic-usb' $new_api_only> Download generic USB image (requires floppy) </option>\n"; + echo "</select></form>"; + echo "</td></tr>\n"; + + } + + // site info and all site nodes + echo "<tr><td colspan=2> </td></tr>\n"; + echo "<tr><th>Site: </th><td> <a href='/db/sites/index.php?id=$site_id'>$site_name</a></td></tr>\n"; + echo "<tr><th>All site nodes: </th><td>"; + if (empty($site_node_hash)) { + echo "<span class='plc-warning'>Site has no node</span>"; + } else { + foreach( $site_node_hash as $key => $val ) { + echo "<a href=index.php?id=$key>$val</a><br />"; + } + } + echo "</td></tr>\n"; + + echo "</tbody></table><br />\n"; + + //////////////////////////////////////////////////////////// interfaces + if ( ! $peer_id ) { + + // display interfaces + if( ! $interfaces ) { + echo "<p><span class='plc-warning'>No interface</span>. Please add an interface to make this a usable PLC node</p>.\n"; + } else { + $columns=array(); + if ( $extra_privileges ) { + // a single symbol, marking 'p' for primary and a delete button for non-primary + $columns[' ']='string'; + } + + $columns["IP"]="IPAddress"; + $columns["Method"]="string"; + $columns["Type"]="string"; + $columns["MAC"]="string"; + $columns["bw limit"]="FileSize"; + + print "<hr/>\n"; + plc_table_title('Interfaces'); + plc_table_start("interfaces",$columns,2,false); + + foreach ( $interfaces as $interface ) { + $interface_id= $interface['interface_id']; + $interface_ip= $interface['ip']; + $interface_broad= $interface['broadcast']; + $interface_primary= $interface['is_primary']; + $interface_network= $interface['network']; + $interface_dns1= $interface['dns1']; + $interface_dns2= $interface['dns2']; + $interface_hostname= $interface['hostname']; + $interface_netmaks= $interface['netmask']; + $interface_gatewary= $interface['gateway']; + $interface_mac= $interface['mac']; + $interface_bwlimit= $interface['bwlimit']; + $interface_type= $interface['type']; + $interface_method= $interface['method']; + + plc_table_row_start($interface['ip']); + if ( $extra_privileges ) { + if (!$interface_primary) { + // xxx + plc_table_cell (plc_delete_link_button ('interfaces.php?id=' . $interface_id . '&delete=1&submitted=1', + '\\nInterface ' . $interface_ip)); + } else { + plc_table_cell('p'); + } + } + plc_table_cell(l_interface2($interface_id,$interface_ip)); + plc_table_cell($interface_method); + plc_table_cell($interface_type); + plc_table_cell($interface_mac); + plc_table_cell($interface_bwlimit); + plc_table_row_end(); + } + plc_table_end(); + } + + } + + //////////////////////////////////////////////////////////// slices + // display slices + $peer_hash = plc_peer_get_hash ($api); + + print "<hr/>\n"; + plc_table_title ("Slices"); + if ( ! $slices ) { + echo "<p><span class='plc-warning'>This node is not associated to any slice.</span></p>\n"; + } else { + $columns=array(); + $columns['Peer']="string"; + $columns['Name']="string"; + $columns['Slivers']="string"; + plc_table_start ("slivers",$columns,1); + + foreach ($slices as $slice) { + plc_table_row_start($slice['name']); + plc_table_cell (plc_peer_shortname($peer_hash,$slice['peer_id'])); + plc_table_cell (l_slice2 ($slice['slice_id'],$slice['name'])); + plc_table_cell (l_sliver3 ($node_id,$slice['slice_id'],'view')); + plc_table_row_end(); + } + plc_table_end(); + } + + //////////////////////////////////////////////////////////// nodegroups + // display node group info + if ( ! $nodegroups ) { + echo "<p><span class='plc-warning'>This node is not in any nodegroup.</span></p>\n"; + } else { + $columns=array(); + $columns['Name']="string"; + $columns['Tag']="string"; + $columns['Value']="string"; + + print "<hr/>\n"; + plc_table_title("Nodegroups"); + plc_table_start("nodegroups",$columns,0,false); + + foreach( $nodegroups as $nodegroup ) { + plc_table_row_start(); + plc_table_cell(l_nodegroup2($nodegroup_id,$nodegroup['groupname'])); + $tag_types=$api->GetTagTypes(array($nodegroup['tag_type_id'])); + plc_table_cell($tag_types[0]['tagname']); + plc_table_cell($nodegroup['value']); + plc_table_row_end(); + } + plc_table_end(); + } + + //////////////////////////////////////////////////////////// + plc_peer_block_end(); +} + +// Print footer +include 'plc_footer.php'; + +?> diff --git a/planetlab/nodes/newindex.php b/planetlab/nodes/nodes.php similarity index 87% rename from planetlab/nodes/newindex.php rename to planetlab/nodes/nodes.php index ddbdda9..8e13d37 100644 --- a/planetlab/nodes/newindex.php +++ b/planetlab/nodes/nodes.php @@ -38,7 +38,6 @@ $tabs=array("Old page"=>l_nodes(), $peer_filter=array(); $node_filter=array(); - ////////////////// // performs sanity check and summarize the result in a single column function node_status ($node) { @@ -57,7 +56,7 @@ function node_status ($node) { // 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'); +$node_columns=array('hostname','node_type','site_id','node_id','boot_state','interface_ids','peer_id'); if ($pattern) { $node_filter['hostname']=$pattern; $title .= " matching " . $pattern; @@ -118,16 +117,6 @@ foreach ($sites as $site) { $site_hash[$site['site_id']]=$site; } -// fetch peers -$peer_columns=array('peer_id','shortname'); -$peer_filter=array(); -$peers = $api->GetPeers($peer_filter,$peer_columns); - -$peer_hash=array(); -foreach ($peers as $peer) { - $peer_hash[$peer['peer_id']]=$peer; -} - // -------------------- drupal_set_title($title); @@ -144,13 +133,15 @@ $columns = array ("Peer"=>"string", "State"=>"string", "Hostname"=>"string", "IP"=>"IPAddress", - "Load"=>"int", - "Avg Load"=>"float", - "Status"=>"string"); + "Type"=>"string", + "?"=>"string", + "Int"=>"int", + "Float"=>"float"); # initial sort on hostnames plc_table_start("nodes",$columns,4); +$peer_hash = plc_peer_get_hash ($api); // write rows $fake1=1; $fake2=3.14; $fake_i=0; foreach ($nodes as $node) { @@ -162,24 +153,21 @@ 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']; - if ( ! $node['peer_id'] ) { - $shortname=PLC_SHORTNAME; - } else { - $shortname=$peer_hash[$node['peer_id']]['shortname']; - } - printf ('<tr id="%s">',$hostname); + $shortname = plc_peer_shortname ($peer_hash,$node['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_site2($site_id,$login_base)); plc_table_cell ($node['boot_state']); plc_table_cell (l_node2($node_id,$hostname)); plc_table_cell (l_interface2($interface_id,$ip)); + plc_table_cell ($node_type); + plc_table_cell (node_status($node)); plc_table_cell ($fake1); plc_table_cell ($fake2); - plc_table_cell (node_status($node)); - - printf ( '</tr>'); + plc_table_row_end(); if ($fake_i % 5 == 0) $fake1 += 3; if ($fake_i % 3 == 0) $fake2 +=5; else $fake2 -= $fake_i; diff --git a/planetlab/nodes/production_hosts.php b/planetlab/nodes/production_hosts.php deleted file mode 100644 index e384416..0000000 --- a/planetlab/nodes/production_hosts.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "production_hosts"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/nodes/production_ips.php b/planetlab/nodes/production_ips.php deleted file mode 100644 index e5ee49e..0000000 --- a/planetlab/nodes/production_ips.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header("Content-type: text/plain"); -$which_node_list= "production_ips"; -include('_gen_node_lists.php'); -?> diff --git a/planetlab/slices/tags.php b/planetlab/tags/index.php similarity index 100% rename from planetlab/slices/tags.php rename to planetlab/tags/index.php diff --git a/planetlab/nodes/node_groups.php b/planetlab/tags/nodegroups.php similarity index 100% rename from planetlab/nodes/node_groups.php rename to planetlab/tags/nodegroups.php diff --git a/planetlab/slices/tag_action.php b/planetlab/tags/tag_action.php similarity index 100% rename from planetlab/slices/tag_action.php rename to planetlab/tags/tag_action.php -- 2.47.0