X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fnodes%2Fnodes.php;h=b2c51a75480e238af60c161fb4a7a4cefe24c9d6;hb=ddc6c66e6235c054f80ec258b1d9aee9668aecad;hp=951e98508ab3a32093fedc6095b6687357e8e72e;hpb=ab7d755720166fb4ce7acaf629463dc7f0a00ffe;p=plewww.git diff --git a/planetlab/nodes/nodes.php b/planetlab/nodes/nodes.php index 951e985..b2c51a7 100644 --- a/planetlab/nodes/nodes.php +++ b/planetlab/nodes/nodes.php @@ -1,7 +1,5 @@ +'); + ini_set("memory_limit","64M"); +//error_reporting(0); // -------------------- // recognized URL arguments @@ -49,25 +57,162 @@ $node_filter=array(); // performs sanity check and summarize the result in a single column function node_status ($node) { - // do all this stuff on local nodes only - if ( $node['peer_id'] ) - return "n/a"; - $messages=array(); - // check that the node has interfaces - if (count($node['interface_ids']) == 0) { - $messages [] = "No interface"; + if ($node['node_type'] != 'regular' && $node['node_type'] != 'reservable' ) + $messages []= $node['node_type']; + + // checks on local nodes only + if ( ( ! $node['peer_id']) ) { + // has it got interfaces + if (count($node['interface_ids']) == 0) + $messages []= "No interface"; } return plc_vertical_table($messages,'plc-warning'); } + +if (plc_is_admin()) + $default_configuration = "ID:f|hostname:f|ST:f|AU:f|RES:f"; +else + $default_configuration = "hostname:f|ST:f|AU:f|RES:f"; + +//$extra_default = "LCN|DN|R|L|OS|MS|SN"; +$column_configuration = ""; +$slice_column_configuration = ""; +$show_configuration = ""; + + +$PersonTags=$api->GetPersonTags (array('person_id'=>$plc->person['person_id'])); +//print_r($PersonTags); +foreach ($PersonTags as $ptag) { + if ($ptag['tagname'] == 'columnconf') + { + $column_configuration = $ptag['value']; + $conf_tag_id = $ptag['person_tag_id']; + } + if ($ptag['tagname'] == 'showconf') + { + $show_configuration = $ptag['value']; + $show_tag_id = $ptag['person_tag_id']; + } +} + +//print("column configuration = ".$column_configuration); + +$nodesconf_exists = false; +if ($column_configuration == "") +{ + $column_configuration = "nodes;default"; + $nodesconf_exists = true; +} +else { + $slice_conf = explode(";",$column_configuration); + for ($i=0; $iOLD"); +//print_r($visiblecolumns); +//$node_columns=array_merge($node_fixed_columns,$visiblecolumns); + + // server-side filtering - set pattern in $_GET for filtering on hostname if ($pattern) { $node_filter['hostname']=$pattern; @@ -117,8 +262,24 @@ if ($person_id) { } // go +//print("getting nodes ".$node_columns); +//print_r($node_columns); $nodes=$api->GetNodes($node_filter,$node_columns); +//print("

GOT NODES

"); +//print_r($nodes); + +$ConfigureColumns->fetch_live_data($nodes); + +$show_columns_message = TRUE; +$show_conf = explode(";",$show_configuration); +foreach ($show_conf as $ss) { + if ($ss =="columns") + $show_columns_message = FALSE; +} + + + // build site_ids - interface_ids $site_ids=array(); $interface_ids=array(); @@ -155,40 +316,63 @@ if ( ! $nodes ) { $nifty=new PlekitNifty ('','objects-list','big'); $nifty->start(); -$headers = array (); $offset=0; +$headers = array (); $notes=array(); - -// fixed columns -if (plc_is_admin()) { - $short="I"; $long="node_id"; $type='int'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; - $offset=1; - } -$short="P"; $long="Peer"; $type='string'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; -$short="D"; $long="toplevel domain name"; $type='string'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; -$headers["Site"]="string"; -$headers["State"]="string"; - $notes []= "state* = node doesn't have an observed state, preferred state is displayed"; -$headers["Hostname"]="string"; -$headers["Type"]="string"; -$short="IP"; $long="IP Address"; $type='sortIPAddress'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; -$short="SL"; $long="Number of slivers"; $type='int'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; - -$headers=array_merge($headers,$visibletags->headers()); -$notes=array_merge($notes,$visibletags->notes()); -$headers["?"]="string"; $notes []= "? = extra status info"; +$notes [] = "For information about the different columns please see the node table layout tab above or mouse over the column headers"; + +$info_header = array(); +$short="?"; $long="extra status info"; $type='string'; +$info_header[$short]=array('type'=>$type,'title'=>$long, 'label'=>'?', 'header'=>'?', 'visible'=>true); +//$notes []= "$short = $long"; +//$info_header["?"] = "none"; +$headers = array_merge($ConfigureColumns->get_headers(),$info_header); + +$layout_help=' +This tab allows you to customize the columns in the node tables, +below. Information on the nodes comes from a variety of monitoring +sources. If you, as either a user or a provider of monitoring data, +would like to see additional columns made available, please send us +your request in mail to support@myslice.info. You can +find more information about the MySlice project at http://trac.myslice.info. +'; +$toggle_nodes=new PlekitToggle('nodes-layout', + "Node table layout", + array('visible'=>NULL, + 'info-text'=>$layout_help, + 'info-visible'=>$show_columns_message)); +$toggle_nodes->start(); +print("
"); +print(""); +print(""); +print(""); +print(""); +print(""); +print(""); +print("
"); +print(""); + +////////// end + +$ConfigureColumns->configuration_panel_html(true); +$ConfigureColumns->javascript_init(); +$toggle_nodes->end(); + +$table_options = array('notes'=>$notes, + 'search_width'=>15, + 'pagesize'=>20, + 'configurable'=>true); # initial sort on hostnames -$table=new PlekitTable ("nodes",$headers,4+$offset); +$table=new PlekitTable ("nodes",$headers,2, $table_options); $table->start(); $peers = new Peers ($api); // write rows foreach ($nodes as $node) { + //$node_obj = new Node ($node); + $hostname=$node['hostname']; $node_id=$node['node_id']; $site_id=$node['site_id']; @@ -197,34 +381,40 @@ foreach ($nodes as $node) { $ip=$interface_hash[$node['node_id']]['ip']; $interface_id=$interface_hash[$node['node_id']]['interface_id']; $peer_id=$node['peer_id']; - $node_type = $node['node_type']; $table->row_start(); + $table->cell($node['node_id'], array('display'=>'none')); if (plc_is_admin()) $table->cell(l_node_t($node_id,$node_id)); - $peers->cell ($table,$peer_id); - $table->cell (topdomain($hostname)); - $table->cell (l_site_t($site_id,$login_base)); - if ($node['run_level']) { - $table->cell($node['run_level']); - } else { - $table->cell ($node['boot_state'] . '*'); - } $table->cell (l_node_t($node_id,$hostname)); - $table->cell ($node_type); - $table->cell (l_interface_t($interface_id,$ip),array('only-if'=> !$peer_id)); - $table->cell (count($node['slice_ids'])); - foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); + $peers->cell ($table,$peer_id); + + //prefetch some columns + $node['domain'] = topdomain($hostname); + $node['sitename'] = l_site_t($site_id,$login_base); + if ($interface_id) + $node['ipaddress'] = l_interface_t($interface_id,$ip); + else + $node['ipaddress'] = "n/a"; + + list($label,$class) = Node::status_label_class_($node); + $table->cell ($label,array('class'=>$class)); + $table->cell( ($node['node_type']=='reservable')?reservable_mark():"" ); + //$table->cell (count($node['slice_ids'])); + //foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); + $ConfigureColumns->cells($table, $node); $table->cell (node_status($node)); $table->row_end(); } -$table->end(array('notes'=>$notes)); +$table->end(); $nifty->end(); + //plekit_linetabs ($tabs,"bottom"); // Print footer include 'plc_footer.php'; ?> +