'); // -------------------- // recognized URL arguments $peerscope = get_array($_GET, 'peerscope'); $pattern = get_array($_GET, 'pattern'); $site_id = intval(get_array($_GET, 'site_id')); $slice_id = intval(get_array($_GET, 'slice_id')); $person_id = intval(get_array($_GET, 'person_id')); // --- decoration $title="Nodes"; $tabs=array(); $tabs []= tab_nodes(); if (count (plc_my_site_ids()) == 1) { $tabs []= tab_nodes_mysite(); } else { $tabs []= tab_nodes_all_mysite(); } $tabs []= tab_nodes_local(); // -------------------- $node_filter=array(); ////////////////// // performs sanity check and summarize the result in a single column function node_status ($node) { $messages=array(); 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 = ""; $conf_tag_id = ""; $show_tag_id = ""; $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; $title .= " matching " . $pattern; } else { $node_filter['hostname']="*"; } // server-side selection on peerscope $peerscope=new PeerScope($api,get_array($_GET, 'peerscope')); $node_filter=array_merge($node_filter,$peerscope->filter()); $title .= ' - ' . $peerscope->label(); if ($site_id) { $sites=$api->GetSites(array($site_id)); $site=$sites[0]; $name=$site['name']; $login_base=$site['login_base']; $title .= t_site($site); $tabs []= tab_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 []= tab_slice($slice); $node_filter['node_id'] = $slice['node_ids']; } // person_id is set : this is mostly oriented towards people managing several sites if ($person_id) { // avoid doing a useless call to GetPersons if the person_id is already known though $plc, // as this is mostly done for the 'all my sites nodes' link if ($person_id == plc_my_person_id()) { $person=plc_my_person(); $site_ids = plc_my_site_ids(); } else { // fetch the person's site_ids $persons = $api->GetPersons(array('person_id'=>$person_id),array('person_id','email','site_ids')); $person=$persons[0]; $site_ids=$person['site_ids']; } $title .= t_person($person); $node_filter['site_id']=$site_ids; } // 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(); if ($nodes) foreach ($nodes as $node) { $site_ids []= $node['site_id']; $interface_ids = array_merge ($interface_ids,$node['interface_ids']); } // fetch related interfaces $interface_columns=array('ip','node_id','interface_id'); $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; // fetch related sites $site_columns=array('site_id','login_base'); $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; // -------------------- drupal_set_title($title); plekit_linetabs($tabs); if ( ! $nodes ) { drupal_set_message ('No node found'); return; } $nifty=new PlekitNifty ('','objects-list','big'); $nifty->start(); $headers = array (); $notes=array(); $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,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']; $site=$site_hash[$site_id]; $login_base = $site['login_base']; $ip=$interface_hash[$node['node_id']]['ip']; $interface_id=$interface_hash[$node['node_id']]['interface_id']; $peer_id=$node['peer_id']; $table->row_start(); $table->cell($node['node_id'], array('display'=>'none')); if (plc_is_admin()) $table->cell(l_node_t($node_id,$node_id)); $table->cell (l_node_t($node_id,$hostname)); $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(); $nifty->end(); //plekit_linetabs ($tabs,"bottom"); // Print footer include 'plc_footer.php'; ?>