X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fslices%2Fslice.php;h=e0868b7361e61aa48bf5519205121ee208b31ea5;hb=e417acbe5b45f14f5f7b0f297a327d2aa18c7038;hp=d4bdc76442bcc20858d613b89eca52c30649229d;hpb=f67658afd159c12165a0ca7375399c5a035ac931;p=plewww.git diff --git a/planetlab/slices/slice.php b/planetlab/slices/slice.php index d4bdc76..e0868b7 100644 --- a/planetlab/slices/slice.php +++ b/planetlab/slices/slice.php @@ -29,91 +29,112 @@ drupal_set_html_head(' '); +$profiling = false; +if (get_array($_GET, 'profiling')) { + $profiling = true; +} -$profiling=false; -if (get_array($_GET, 'profiling')) $profiling=true; - -if ($profiling) plc_debug_prof_start(); +if ($profiling) { + plc_debug_prof_start(); +} // -------------------- // recognized URL arguments -$slice_id=intval($get_array($_GET, 'id')); -if ( ! $slice_id ) { plc_error('Malformed URL - id not set'); return; } +$slice_id = intval(get_array($_GET, 'id')); +if (!$slice_id) { + plc_error('Malformed URL - id not set'); + return; +} //////////////////// // have to name columns b/c we need the non-native 'omf_control' column -$slice_columns=array('slice_id','name','peer_id','site_id','person_ids','node_ids','expires', - 'url','description','instantiation','omf_control'); -$slices= $api->GetSlices( array($slice_id), $slice_columns); +$slice_columns = array('slice_id', 'name', 'peer_id', 'site_id', 'person_ids', 'node_ids', 'expires', + 'url', 'description', 'instantiation', 'omf_control'); +$slices = $api->GetSlices(array($slice_id), $slice_columns); if (empty($slices)) { - drupal_set_message ("Slice " . $slice_id . " not found"); - return; - } + drupal_set_message("Slice " . $slice_id . " not found"); + return; +} -$slice=$slices[0]; +$slice = $slices[0]; + +if ($profiling) { + plc_debug_prof('01: slice', count($slices)); +} -if ($profiling) plc_debug_prof('01: slice',count($slices)); // pull all node info to vars -$name= $slice['name']; -$expires = date( "d/m/Y", $slice['expires'] ); -$site_id= $slice['site_id']; +$name = $slice['name']; +$expires = date("d/m/Y", $slice['expires']); +$site_id = $slice['site_id']; -$person_ids=$slice['person_ids']; +$person_ids = $slice['person_ids']; // get peers -$peer_id= $slice['peer_id']; -$peers=new Peers ($api); -$local_peer = ! $peer_id; +$peer_id = $slice['peer_id']; +$peers = new Peers($api); +$local_peer = !$peer_id; -if ($profiling) plc_debug_prof('02: peers',count($peers)); +if ($profiling) { + plc_debug_prof('02: peers', count($peers)); +} // gets site info -$sites= $api->GetSites( array( $site_id ) ); -$site=$sites[0]; -$site_name= $site['name']; +$sites = $api->GetSites(array($site_id)); +$site = $sites[0]; +$site_name = $site['name']; $max_slices = $site['max_slices']; -if ($profiling) plc_debug_prof('03: sites',count($sites)); +if ($profiling) { + plc_debug_prof('03: sites', count($sites)); +} + //////////////////////////////////////// building blocks for the renew area // Constants -global $DAY; $DAY = 24*60*60; -global $WEEK; $WEEK = 7 * $DAY; -global $MAX_WEEKS; $MAX_WEEKS= 8; // weeks from today -global $GRACE_DAYS; $GRACE_DAYS=10; // days for renewal promoted on top -global $NOW; $NOW=time(); +global $DAY; +$DAY = 24 * 60 * 60; +global $WEEK; +$WEEK = 7 * $DAY; +global $MAX_WEEKS; +$MAX_WEEKS = 8; // weeks from today +global $GRACE_DAYS; +$GRACE_DAYS = 10; // days for renewal promoted on top +global $NOW; +$NOW = time(); //////////////////////////////////////////////////////////// utility for the renew tab // make the renew area on top and open if the expiration time is less than 10 days from now -function renew_needed ($slice) { - global $DAY, $NOW, $GRACE_DAYS; - $current_exp=$slice['expires']; +function renew_needed($slice) +{ + global $DAY, $NOW, $GRACE_DAYS; + $current_exp = $slice['expires']; - $time_left = $current_exp - $NOW; - $visible = $time_left/$DAY <= $GRACE_DAYS; - return $visible; + $time_left = $current_exp - $NOW; + $visible = $time_left / $DAY <= $GRACE_DAYS; + return $visible; } -function renew_area ($slice,$site,$visible) { - global $DAY, $WEEK, $MAX_WEEKS, $GRACE_DAYS, $NOW; - - $current_exp=$slice['expires']; - $current_text = gmstrftime("%A %b-%d-%y %T %Z", $current_exp); - $max_exp= $NOW + ($MAX_WEEKS * $WEEK); // seconds since epoch - $max_text = gmstrftime("%A %b-%d-%y %T %Z", $max_exp); - - // xxx some extra code needed to enable this area only if the slice description is OK: - // description and url must be non void - $toggle= - new PlekitToggle('renew',"Expires $current_text - Renew this slice", - array("bubble"=> - "Enter this zone if you wish to renew your slice", - 'visible'=>$visible)); - $toggle->start(); - - // xxx message could take roles into account - if ($site['max_slices']<=0) { - $message= <<< EOF +function renew_area($slice, $site, $visible) +{ + global $DAY, $WEEK, $MAX_WEEKS, $GRACE_DAYS, $NOW; + + $current_exp = $slice['expires']; + $current_text = gmstrftime("%A %b-%d-%y %T %Z", $current_exp); + $max_exp = $NOW + ($MAX_WEEKS * $WEEK); // seconds since epoch + $max_text = gmstrftime("%A %b-%d-%y %T %Z", $max_exp); + + // xxx some extra code needed to enable this area only if the slice description is OK: + // description and url must be non void + $toggle = + new PlekitToggle('renew', "Expires $current_text - Renew this slice", + array("bubble" => + "Enter this zone if you wish to renew your slice", + 'visible' => $visible)); + $toggle->start(); + + // xxx message could take roles into account + if ($site['max_slices'] <= 0) { + $message = <<< EOF
Slice creation and renewal have been temporarily disabled for your
@@ -162,54 +183,54 @@ The PlanetLab Operations Centres regularly respond to concerns raised by third p
EOF; - $form = new PlekitForm (l_actions(), - array('action'=>'renew-slice', - 'slice_id'=>$slice['slice_id'])); - $form->start(); - print $form->label_html('expires','Duration: '); - print $form->select_html('expires',$selectors,array('label'=>'Pick one')); - print $form->submit_html('renew-button','Renew'); - $form->end(); - -print("NOTE: Slices cannot be renewed beyond another $max_renewal_weeks week(s) ($max_renewal_date).
"); -print ("NOTE: Slices cannot be renewed beyond another $max_renewal_weeks week(s) ($max_renewal_date).
"); + print(""); + } } - } - $toggle->end(); + $toggle->end(); } //////////////////////////////////////////////////////////// -$am_in_slice = in_array(plc_my_person_id(),$person_ids); +$am_in_slice = in_array(plc_my_person_id(), $person_ids); if ($am_in_slice) { - drupal_set_title("My slice " . $name); - } else { - drupal_set_title("Slice " . $name); + drupal_set_title("My slice " . $name); +} else { + drupal_set_title("Slice " . $name); } -$privileges = ( $local_peer && (plc_is_admin() || plc_is_pi() || $am_in_slice)); +$privileges = ($local_peer && (plc_is_admin() || plc_is_pi() || $am_in_slice)); $tags_privileges = $privileges || plc_is_admin(); -$tabs=array(); -$tabs [] = tab_nodes_slice($slice_id); -$tabs [] = tab_site($site); +$tabs = array(); +$tabs[] = tab_nodes_slice($slice_id); +$tabs[] = tab_site($site); // are these the right privileges for deletion ? if ($privileges) { - $tabs ['Delete']= array('url'=>l_actions(), - 'method'=>'post', - 'values'=>array('action'=>'delete-slice','slice_id'=>$slice_id), - 'bubble'=>"Delete slice $name", - 'confirm'=>"Are you sure to delete slice $name"); - - $tabs["Events"]=array_merge(tablook_event(), - array('url'=>l_event("Slice","slice",$slice_id), - 'bubble'=>"Events for slice $name")); - $tabs["Comon"]=array_merge(tablook_comon(), - array('url'=>l_comon("slice_id",$slice_id), - 'bubble'=>"Comon page about slice $name")); + $tabs['Delete'] = array('url' => l_actions(), + 'method' => 'post', + 'values' => array('action' => 'delete-slice', 'slice_id' => $slice_id), + 'bubble' => "Delete slice $name", + 'confirm' => "Are you sure to delete slice $name"); + + $tabs["Events"] = array_merge(tablook_event(), + array('url' => l_event("Slice", "slice", $slice_id), + 'bubble' => "Events for slice $name")); + $tabs["Comon"] = array_merge(tablook_comon(), + array('url' => l_comon("slice_id", $slice_id), + 'bubble' => "Comon page about slice $name")); } plekit_linetabs($tabs); @@ -220,42 +241,43 @@ $peers->block_start($peer_id); //////////////////////////////////////// renewal area // (1) close to expiration : show on top and open -if ($local_peer ) { - $renew_visible = renew_needed ($slice); - if ($renew_visible) renew_area ($slice,$site,true); - } +if ($local_peer) { + $renew_visible = renew_needed($slice); + if ($renew_visible) { + renew_area($slice, $site, true); + } +} //////////////////////////////////////////////////////////// tab:details $toggle = - new PlekitToggle ('my-slice-details',"Details", - array('bubble'=> - 'Display and modify details for that slice', - 'visible'=>get_arg('show_details'))); +new PlekitToggle('my-slice-details', "Details", + array('bubble' => + 'Display and modify details for that slice', + 'visible' => get_arg('show_details'))); $toggle->start(); -$details=new PlekitDetails($privileges); -$details->form_start(l_actions(),array('action'=>'update-slice', - 'slice_id'=>$slice_id, - 'name'=>$name)); +$details = new PlekitDetails($privileges); +$details->form_start(l_actions(), array('action' => 'update-slice', + 'slice_id' => $slice_id, + 'name' => $name)); $details->start(); -if (! $local_peer) { - $details->th_td("Peer",$peers->peer_link($peer_id)); - $details->space(); - } - - -$details->th_td('Name',$slice['name']); -$details->th_td('Description',$slice['description'],'description', - array('input_type'=>'textarea', - 'width'=>50,'height'=>5)); -$details->th_td('URL',$slice['url'],'url',array('width'=>50)); -$details->tr_submit("submit","Update Slice"); -$details->th_td('Expires',$expires); -$details->th_td('Instantiation',$slice['instantiation']); +if (!$local_peer) { + $details->th_td("Peer", $peers->peer_link($peer_id)); + $details->space(); +} + +$details->th_td('Name', $slice['name']); +$details->th_td('Description', $slice['description'], 'description', + array('input_type' => 'textarea', + 'width' => 50, 'height' => 5)); +$details->th_td('URL', $slice['url'], 'url', array('width' => 50)); +$details->tr_submit("submit", "Update Slice"); +$details->th_td('Expires', $expires); +$details->th_td('Instantiation', $slice['instantiation']); $details->th_td("OMF-friendly", ($slice['omf_control'] ? 'Yes' : 'No') . " [to change: see 'omf_control' in the tags section below]"); -$details->th_td('Site',l_site_obj($site)); +$details->th_td('Site', l_site_obj($site)); // xxx show the PIs here //$details->th_td('PIs',...); $details->end(); @@ -264,26 +286,33 @@ $details->form_end(); $toggle->end(); //////////////////////////////////////////////////////////// tab:persons -$person_columns = array('email','person_id','first_name','last_name','roles'); +$person_columns = array('email', 'person_id', 'first_name', 'last_name', 'roles'); // get persons in slice -if (!empty($person_ids)) - $persons=$api->GetPersons(array('person_id'=>$slice['person_ids']),$person_columns); +if (!empty($person_ids)) { + $persons = $api->GetPersons(array('person_id' => $slice['person_ids']), $person_columns); +} else { + $persons = []; +} + // just propose to add everyone else // xxx this is maybe too much for admins as it slows stuff down // as regular persons can see only a fraction of the db anyway -$potential_persons= - $api->GetPersons(array('~person_id'=>$slice['person_ids'], - 'peer_id'=>NULL, - 'enabled'=>true), - $person_columns); -$count=count($persons); - -if ($profiling) plc_debug_prof('04: persons',count($persons)); -$toggle= - new PlekitToggle ('my-slice-persons',"$count users", - array('bubble'=> - 'Manage accounts attached to this slice', - 'visible'=>get_arg('show_persons'))); +$potential_persons = +$api->GetPersons(array('~person_id' => $slice['person_ids'], + 'peer_id' => null, + 'enabled' => true), + $person_columns); +$count = count($persons); + +if ($profiling) { + plc_debug_prof('04: persons', count($persons)); +} + +$toggle = +new PlekitToggle('my-slice-persons', "$count users", + array('bubble' => + 'Manage accounts attached to this slice', + 'visible' => get_arg('show_persons'))); $toggle->start(); ////////// people currently in @@ -291,91 +320,105 @@ $toggle->start(); // hide if both current+add are included // so user can chose which section is of interest // show otherwise -$toggle_persons = new PlekitToggle ('my-slice-persons-current', - "$count people currently in $name", - array('visible'=>get_arg('show_persons_current'))); +$toggle_persons = new PlekitToggle('my-slice-persons-current', + "$count people currently in $name", + array('visible' => get_arg('show_persons_current'))); $toggle_persons->start(); -$headers=array(); -$headers['email']='string'; -$headers['first']='string'; -$headers['last']='string'; -$headers['R']='string'; -if ($privileges) $headers[plc_delete_icon()]="none"; -$table=new PlekitTable('persons',$headers,'0', - array('notes_area'=>false)); -$form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id'])); +$headers = array(); +$headers['email'] = 'string'; +$headers['first'] = 'string'; +$headers['last'] = 'string'; +$headers['R'] = 'string'; +if ($privileges) { + $headers[plc_delete_icon()] = "none"; +} + +$table = new PlekitTable('persons', $headers, '0', + array('notes_area' => false)); +$form = new PlekitForm(l_actions(), array('slice_id' => $slice['slice_id'])); $form->start(); $table->start(); -if ($persons) foreach ($persons as $person) { - $table->row_start(); - $table->cell(l_person_obj($person)); - $table->cell($person['first_name']); - $table->cell($person['last_name']); - $table->cell(plc_vertical_table ($person['roles'])); - if ($privileges) $table->cell ($form->checkbox_html('person_ids[]',$person['person_id'])); - $table->row_end(); +if ($persons) { + foreach ($persons as $person) { + $table->row_start(); + $table->cell(l_person_obj($person)); + $table->cell($person['first_name']); + $table->cell($person['last_name']); + $table->cell(plc_vertical_table($person['roles'])); + if ($privileges) { + $table->cell($form->checkbox_html('person_ids[]', $person['person_id'])); + } + + $table->row_end(); + } } + // actions area if ($privileges) { - // remove persons - $table->tfoot_start(); + // remove persons + $table->tfoot_start(); - $table->row_start(); - $table->cell($form->submit_html ("remove-persons-from-slice","Remove selected"), - array('hfill'=>true,'align'=>'right')); - $table->row_end(); - } + $table->row_start(); + $table->cell($form->submit_html("remove-persons-from-slice", "Remove selected"), + array('hfill' => true, 'align' => 'right')); + $table->row_end(); +} $table->end(); $toggle_persons->end(); ////////// people to add if ($privileges) { - $count=count($potential_persons); - $toggle_persons = new PlekitToggle ('my-slice-persons-add', - "$count people may be added to $name", - array('visible'=>get_arg('show_persons_add'))); - $toggle_persons->start(); - if ( ! $potential_persons ) { - // xxx improve style - echo "No person to add
"; - } else { - $headers=array(); - $headers['email']='string'; - $headers['first']='string'; - $headers['last']='string'; - $headers['R']='string'; - $headers['+']="none"; - $options = array('notes_area'=>false, - 'search_width'=>15, - 'pagesize'=>8); - // show search for admins only as other people won't get that many names to add - if ( ! plc_is_admin() ) $options['search_area']=false; - - $table=new PlekitTable('add_persons',$headers,'0',$options); - $form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id'])); - $form->start(); - $table->start(); - if ($potential_persons) foreach ($potential_persons as $person) { - $table->row_start(); - $table->cell(l_person_obj($person)); - $table->cell($person['first_name']); - $table->cell($person['last_name']); - $table->cell(plc_vertical_table ($person['roles'])); - $table->cell ($form->checkbox_html('person_ids[]',$person['person_id'])); - $table->row_end(); - } - // add users - $table->tfoot_start(); - $table->row_start(); - $table->cell($form->submit_html ("add-persons-in-slice","Add selected"), - array('hfill'=>true,'align'=>'right')); - $table->row_end(); - $table->end(); - $form->end(); - } - $toggle_persons->end(); + $count = count($potential_persons); + $toggle_persons = new PlekitToggle('my-slice-persons-add', + "$count people may be added to $name", + array('visible' => get_arg('show_persons_add'))); + $toggle_persons->start(); + if (!$potential_persons) { + // xxx improve style + echo "No person to add
"; + } else { + $headers = array(); + $headers['email'] = 'string'; + $headers['first'] = 'string'; + $headers['last'] = 'string'; + $headers['R'] = 'string'; + $headers['+'] = "none"; + $options = array('notes_area' => false, + 'search_width' => 15, + 'pagesize' => 8); + // show search for admins only as other people won't get that many names to add + if (!plc_is_admin()) { + $options['search_area'] = false; + } + + $table = new PlekitTable('add_persons', $headers, '0', $options); + $form = new PlekitForm(l_actions(), array('slice_id' => $slice['slice_id'])); + $form->start(); + $table->start(); + if ($potential_persons) { + foreach ($potential_persons as $person) { + $table->row_start(); + $table->cell(l_person_obj($person)); + $table->cell($person['first_name']); + $table->cell($person['last_name']); + $table->cell(plc_vertical_table($person['roles'])); + $table->cell($form->checkbox_html('person_ids[]', $person['person_id'])); + $table->row_end(); + } + } + + // add users + $table->tfoot_start(); + $table->row_start(); + $table->cell($form->submit_html("add-persons-in-slice", "Add selected"), + array('hfill' => true, 'align' => 'right')); + $table->row_end(); + $table->end(); + $form->end(); + } + $toggle_persons->end(); } $toggle->end(); @@ -390,8 +433,8 @@ $toggle->end(); // (.) type is passed to the javascript table, for sorting (default is 'string') // minimal list as a start -$node_fixed_columns = array('hostname','node_id','peer_id','slice_ids_whitelist', 'site_id', - 'run_level','boot_state','last_contact','node_type'); +$node_fixed_columns = array('hostname', 'node_id', 'peer_id', 'slice_ids_whitelist', 'site_id', + 'run_level', 'boot_state', 'last_contact', 'node_type'); // create a VisibleTags object : basically the list of tag columns to show //$visibletags = new VisibleTags ($api, 'node'); //$visiblecolumns = $visibletags->column_names(); @@ -401,69 +444,64 @@ $node_fixed_columns = array('hostname','node_id','peer_id','slice_ids_whitelist' //$slice_nodes=$api->GetNodes(array('node_id'=>$slice['node_ids']),$node_columns); //$potential_nodes=$api->GetNodes(array('~node_id'=>$slice['node_ids']),$node_columns); - //NEW CODE FOR ENABLING COLUMN CONFIGURATION //prepare fix and configurable columns $fix_columns = array(); -$fix_columns[]=array('tagname'=>'hostname', 'header'=>'hostname', 'type'=>'string', 'title'=>'The name of the node'); -$fix_columns[]=array('tagname'=>'peer_id', 'header'=>'AU', 'type'=>'string', 'title'=>'Authority'); -$fix_columns[]=array('tagname'=>'run_level', 'header'=>'ST', 'type'=>'string', 'title'=>'Status'); -$fix_columns[]=array('tagname'=>'node_type', 'header'=>'RES', 'type'=>'string', 'title'=>'Reservable'); +$fix_columns[] = array('tagname' => 'hostname', 'header' => 'hostname', 'type' => 'string', 'title' => 'The name of the node'); +$fix_columns[] = array('tagname' => 'peer_id', 'header' => 'AU', 'type' => 'string', 'title' => 'Authority'); +$fix_columns[] = array('tagname' => 'run_level', 'header' => 'ST', 'type' => 'string', 'title' => 'Status'); +$fix_columns[] = array('tagname' => 'node_type', 'header' => 'RES', 'type' => 'string', 'title' => 'Reservable'); // columns that correspond to the visible tags for nodes (*node/ui*) -$visibletags = new VisibleTags ($api, 'node'); +$visibletags = new VisibleTags($api, 'node'); $visibletags->columns(); $tag_columns = $visibletags->headers(); //columns that are not defined as extra myslice tags $extra_columns = array(); //MyPLC columns -$extra_columns[]=array('tagname'=>'sitename', 'header'=>'SN', 'type'=>'string', 'title'=>'Site name', 'fetched'=>true, 'source'=>'myplc'); -$extra_columns[]=array('tagname'=>'domain', 'header'=>'DN', 'type'=>'string', 'title'=>'Toplevel domain name', 'fetched'=>true, 'source'=>'myplc'); -$extra_columns[]=array('tagname'=>'ipaddress', 'header'=>'IP', 'type'=>'string', 'title'=>'IP Address', 'fetched'=>true, 'source'=>'myplc'); -$extra_columns[]=array('tagname'=>'fcdistro', 'header'=>'OS', 'type'=>'string', 'title'=>'Operating system', 'fetched'=>false, 'source'=>'myplc'); -$extra_columns[]=array('tagname'=>'date_created', 'header'=>'DA', 'source'=>'myplc', 'type'=>'date', 'title'=>'Date added', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'arch', 'header'=>'A', 'source'=>'myplc', 'type'=>'string', 'title'=>'Architecture', 'fetched'=>false); +$extra_columns[] = array('tagname' => 'sitename', 'header' => 'SN', 'type' => 'string', 'title' => 'Site name', 'fetched' => true, 'source' => 'myplc'); +$extra_columns[] = array('tagname' => 'domain', 'header' => 'DN', 'type' => 'string', 'title' => 'Toplevel domain name', 'fetched' => true, 'source' => 'myplc'); +$extra_columns[] = array('tagname' => 'ipaddress', 'header' => 'IP', 'type' => 'string', 'title' => 'IP Address', 'fetched' => true, 'source' => 'myplc'); +$extra_columns[] = array('tagname' => 'fcdistro', 'header' => 'OS', 'type' => 'string', 'title' => 'Operating system', 'fetched' => false, 'source' => 'myplc'); +$extra_columns[] = array('tagname' => 'date_created', 'header' => 'DA', 'source' => 'myplc', 'type' => 'date', 'title' => 'Date added', 'fetched' => false); +$extra_columns[] = array('tagname' => 'arch', 'header' => 'A', 'source' => 'myplc', 'type' => 'string', 'title' => 'Architecture', 'fetched' => false); if (plc_is_admin()) { -$extra_columns[]=array('tagname'=>'deployment', 'header'=>'DL', 'source'=>'myplc', 'type'=>'string', 'title'=>'Deployment', 'fetched'=>false); + $extra_columns[] = array('tagname' => 'deployment', 'header' => 'DL', 'source' => 'myplc', 'type' => 'string', 'title' => 'Deployment', 'fetched' => false); } //CoMon Live data -if (MYSLICE_COMON_AVAILABLE) -{ -$extra_columns[]=array('tagname'=>'bwlimit', 'header'=>'BW', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Bandwidth limit', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'numcores', 'header'=>'CC', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Number of CPU Cores', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'cpuspeed', 'header'=>'CR', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'CPU clock rate', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'disksize', 'header'=>'DS', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Disk size', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'gbfree', 'header'=>'DF', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Currently available disk space', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'memsize', 'header'=>'MS', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Memory size', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'numslices', 'header'=>'SM', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Number of slices in memory', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'uptime', 'header'=>'UT', 'source'=>'comon', 'type'=>'sortAlphaNumericTop', 'title'=>'Continuous uptime until now', 'fetched'=>false); +if (MYSLICE_COMON_AVAILABLE) { + $extra_columns[] = array('tagname' => 'bwlimit', 'header' => 'BW', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Bandwidth limit', 'fetched' => false); + $extra_columns[] = array('tagname' => 'numcores', 'header' => 'CC', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Number of CPU Cores', 'fetched' => false); + $extra_columns[] = array('tagname' => 'cpuspeed', 'header' => 'CR', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'CPU clock rate', 'fetched' => false); + $extra_columns[] = array('tagname' => 'disksize', 'header' => 'DS', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Disk size', 'fetched' => false); + $extra_columns[] = array('tagname' => 'gbfree', 'header' => 'DF', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Currently available disk space', 'fetched' => false); + $extra_columns[] = array('tagname' => 'memsize', 'header' => 'MS', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Memory size', 'fetched' => false); + $extra_columns[] = array('tagname' => 'numslices', 'header' => 'SM', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Number of slices in memory', 'fetched' => false); + $extra_columns[] = array('tagname' => 'uptime', 'header' => 'UT', 'source' => 'comon', 'type' => 'sortAlphaNumericTop', 'title' => 'Continuous uptime until now', 'fetched' => false); } //TopHat Live data -if (MYSLICE_TOPHAT_AVAILABLE) -{ -$extra_columns[]=array('tagname'=>'asn', 'header'=>'AS', 'source'=>'tophat', 'type'=>'string', 'title'=>'AS Number', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'city', 'header'=>'LCY', 'source'=>'tophat', 'type'=>'string', 'title'=>'City', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'region', 'header'=>'LRN', 'source'=>'tophat', 'type'=>'string', 'title'=>'Region', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'country', 'header'=>'LCN', 'source'=>'tophat', 'type'=>'string', 'title'=>'Country', 'fetched'=>false); -$extra_columns[]=array('tagname'=>'continent', 'header'=>'LCT', 'source'=>'tophat', 'type'=>'string', 'title'=>'Continent', 'fetched'=>false); +if (MYSLICE_TOPHAT_AVAILABLE) { + $extra_columns[] = array('tagname' => 'asn', 'header' => 'AS', 'source' => 'tophat', 'type' => 'string', 'title' => 'AS Number', 'fetched' => false); + $extra_columns[] = array('tagname' => 'city', 'header' => 'LCY', 'source' => 'tophat', 'type' => 'string', 'title' => 'City', 'fetched' => false); + $extra_columns[] = array('tagname' => 'region', 'header' => 'LRN', 'source' => 'tophat', 'type' => 'string', 'title' => 'Region', 'fetched' => false); + $extra_columns[] = array('tagname' => 'country', 'header' => 'LCN', 'source' => 'tophat', 'type' => 'string', 'title' => 'Country', 'fetched' => false); + $extra_columns[] = array('tagname' => 'continent', 'header' => 'LCT', 'source' => 'tophat', 'type' => 'string', 'title' => 'Continent', 'fetched' => false); //$extra_columns[]=array('tagname'=>'hopcount', 'header'=>'HC', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Hop count from reference node', 'fetched'=>false); -////$extra_columns[]=array('tagname'=>'rtt', 'header'=>'RTT', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Round trip time from reference node', 'fetched'=>false); -//////$extra_columns[]=array('tagname'=>'agents', 'header'=>'MA', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located measurement agents', 'fetched'=>true); -////$extra_columns[]=array('tagname'=>'agents_sonoma', 'header'=>'MAS', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located SONoMA agents', 'fetched'=>true); -////$extra_columns[]=array('tagname'=>'agents_etomic', 'header'=>'MAE', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located ETOMIC agents', 'fetched'=>true); -////$extra_columns[]=array('tagname'=>'agents_tdmi', 'header'=>'MAT', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located TDMI agents', 'fetched'=>true); -////$extra_columns[]=array('tagname'=>'agents_dimes', 'header'=>'MAD', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located DIMES agents', 'fetched'=>true); + ////$extra_columns[]=array('tagname'=>'rtt', 'header'=>'RTT', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Round trip time from reference node', 'fetched'=>false); + //////$extra_columns[]=array('tagname'=>'agents', 'header'=>'MA', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located measurement agents', 'fetched'=>true); + ////$extra_columns[]=array('tagname'=>'agents_sonoma', 'header'=>'MAS', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located SONoMA agents', 'fetched'=>true); + ////$extra_columns[]=array('tagname'=>'agents_etomic', 'header'=>'MAE', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located ETOMIC agents', 'fetched'=>true); + ////$extra_columns[]=array('tagname'=>'agents_tdmi', 'header'=>'MAT', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located TDMI agents', 'fetched'=>true); + ////$extra_columns[]=array('tagname'=>'agents_dimes', 'header'=>'MAD', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Co-located DIMES agents', 'fetched'=>true); } - - //Get user's column configuration $first_time_configuration = false; @@ -474,92 +512,103 @@ $slice_column_configuration = ""; $show_configuration = ""; -$PersonTags=$api->GetPersonTags (array('person_id'=>$plc->person['person_id'])); +$PersonTags = $api->GetPersonTags(array('person_id' => $plc->person['person_id'])); //plc_debug('ptags',$PersonTags); foreach ($PersonTags as $ptag) { - if ($ptag['tagname'] == 'columnconf') { - $column_configuration = $ptag['value']; - $conf_tag_id = $ptag['person_tag_id']; - } else if ($ptag['tagname'] == 'showconf') { - $show_configuration = $ptag['value']; - $show_tag_id = $ptag['person_tag_id']; - } + if ($ptag['tagname'] == 'columnconf') { + $column_configuration = $ptag['value']; + $conf_tag_id = $ptag['person_tag_id']; + } else if ($ptag['tagname'] == 'showconf') { + $show_configuration = $ptag['value']; + $show_tag_id = $ptag['person_tag_id']; + } } $sliceconf_exists = false; if ($column_configuration == "") { - $first_time_configuration = true; - $column_configuration = $slice_id.";default"; - $sliceconf_exists = true; + $first_time_configuration = true; + $column_configuration = $slice_id . ";default"; + $sliceconf_exists = true; } else { - $slice_conf = explode(";",$column_configuration); - for ($i=0; $iHEADERS
"); //print_r($headers); -$table_options = array('notes'=>$notes, - 'search_width'=>15, - 'pagesize'=>20, - 'configurable'=>true); +$table_options = array('notes' => $notes, + 'search_width' => 15, + 'pagesize' => 20, + 'configurable' => true); -$table=new PlekitTable('nodes',$headers,NULL,$table_options); +$table = new PlekitTable('nodes', $headers, null, $table_options); -$form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id'])); +$form = new PlekitForm(l_actions(), array('slice_id' => $slice['slice_id'])); $form->start(); $table->start(); -if ($slice_nodes) foreach ($slice_nodes as $node) { - $table->row_start(); +if ($slice_nodes) { + foreach ($slice_nodes as $node) { + $table->row_start(); - $table->cell($node['node_id'], array('display'=>'none')); + $table->cell($node['node_id'], array('display' => 'none')); - $table->cell(l_node_obj($node)); - $peers->cell($table,$node['peer_id']); - $run_level=$node['run_level']; - list($label,$class) = Node::status_label_class_($node); - $table->cell ($label,array('class'=>$class)); - $table->cell( ($node['node_type']=='reservable')?reservable_mark():"" ); + $table->cell(l_node_obj($node)); + $peers->cell($table, $node['peer_id']); + $run_level = $node['run_level']; + list($label, $class) = Node::status_label_class_($node); + $table->cell($label, array('class' => $class)); + $table->cell(($node['node_type'] == 'reservable') ? reservable_mark() : ""); - $hostname=$node['hostname']; - $ip=$interface_hash[$node['node_id']]['ip']; - $interface_id=$interface_hash[$node['node_id']]['interface_id']; + $hostname = $node['hostname']; + $ip = $interface_hash[$node['node_id']]['ip']; + $interface_id = $interface_hash[$node['node_id']]['interface_id']; //extra columns -$node['domain'] = topdomain($hostname); -$node['sitename'] = l_site_t($node['site_id'],$site_hash[$node['site_id']]); -if ($interface_id) - $node['ipaddress'] = l_interface_t($interface_id,$ip); - else - $node['ipaddress'] = "n/a"; - - //foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); - $ConfigureColumns->cells($table, $node); - - if ($privileges) $table->cell ($form->checkbox_html('node_ids[]',$node['node_id'])); - $table->row_end(); + $node['domain'] = topdomain($hostname); + $node['sitename'] = l_site_t($node['site_id'], $site_hash[$node['site_id']]); + if ($interface_id) { + $node['ipaddress'] = l_interface_t($interface_id, $ip); + } else { + $node['ipaddress'] = "n/a"; + } + + //foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); + $ConfigureColumns->cells($table, $node); + + if ($privileges) { + $table->cell($form->checkbox_html('node_ids[]', $node['node_id'])); + } + + $table->row_end(); + } } + // actions area if ($privileges) { - // remove nodes - $table->tfoot_start(); + // remove nodes + $table->tfoot_start(); - $table->row_start(); - $table->cell($form->submit_html ("remove-nodes-from-slice","Remove selected"), - array('hfill'=>true,'align'=>'right')); - $table->row_end(); - } + $table->row_start(); + $table->cell($form->submit_html("remove-nodes-from-slice", "Remove selected"), + array('hfill' => true, 'align' => 'right')); + $table->row_end(); +} $table->end(); $toggle_nodes->end(); -if ($profiling) plc_debug_prof('11: nodes in',count($slice_nodes)); +if ($profiling) { + plc_debug_prof('11: nodes in', count($slice_nodes)); +} //////////////////// nodes to add if ($privileges) { - $new_potential_nodes = array(); - if ($potential_nodes) foreach ($potential_nodes as $node) { - $emptywl=empty($node['slice_ids_whitelist']); - $inwl = (!emptywl) and in_array($slice['slice_id'],$node['slice_ids_whitelist']); - if ($emptywl or $inwl) - $new_potential_nodes[]=$node; - } - $potential_nodes=$new_potential_nodes; - - $count=count($potential_nodes); - $toggle_nodes=new PlekitToggle('my-slice-nodes-add', - count_english($potential_nodes,"more node") . " available", - array('visible'=>get_arg('show_nodes_add'))); - $toggle_nodes->start(); - - if ( $potential_nodes ) { - $headers=array(); - $notes=array(); + $new_potential_nodes = array(); + if ($potential_nodes) { + foreach ($potential_nodes as $node) { + $emptywl = empty($node['slice_ids_whitelist']); + $inwl = (!$emptywl) and in_array($slice['slice_id'], $node['slice_ids_whitelist']); + if ($emptywl or $inwl) { + $new_potential_nodes[] = $node; + } + + } + } + + $potential_nodes = $new_potential_nodes; + + $count = count($potential_nodes); + $toggle_nodes = new PlekitToggle('my-slice-nodes-add', + count_english($potential_nodes, "more node") . " available", + array('visible' => get_arg('show_nodes_add'))); + $toggle_nodes->start(); + if ($potential_nodes) { + $headers = array(); + $notes = array(); /* - $headers['peer']='string'; - $headers['hostname']='string'; - $short="-S-"; $long=Node::status_footnote(); $type='string'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; - $short=reservable_mark(); $long=reservable_legend(); $type='string'; - $headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; - // the extra tags, configured for the UI - $headers=array_merge($headers,$visibletags->headers()); - $headers['+']="none"; -*/ - - $add_header = array(); - $add_header['+']="none"; - $headers = array_merge($ConfigureColumns->get_headers(),$add_header); - - //$notes=array_merge($notes,$visibletags->notes()); -$notes [] = "For information about the different columns please see the node table layout tab above or mouse over the column headers"; - - $table=new PlekitTable('add_nodes',$headers,NULL, $table_options); - $form=new PlekitForm(l_actions(), - array('slice_id'=>$slice['slice_id'])); - $form->start(); - $table->start(); - if ($potential_nodes) foreach ($potential_nodes as $node) { - $table->row_start(); - - $table->cell($node['node_id'], array('display'=>'none')); - - $table->cell(l_node_obj($node)); - $peers->cell($table,$node['peer_id']); - list($label,$class) = Node::status_label_class_($node); - $table->cell ($label,array('class'=>$class)); - $table->cell( ($node['node_type']=='reservable')?reservable_mark():"" ); - - //extra columns - $hostname=$node['hostname']; - $ip=$interface_hash[$node['node_id']]['ip']; - $interface_id=$interface_hash[$node['node_id']]['interface_id']; - $node['domain'] = topdomain($hostname); - $node['sitename'] = l_site_t($node['site_id'],$site_hash[$node['site_id']]); - $node['ipaddress'] = l_interface_t($interface_id,$ip); - - //foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); - $ConfigureColumns->cells($table, $node); - - $table->cell ($form->checkbox_html('node_ids[]',$node['node_id'])); - $table->row_end(); - } - // add nodes - $table->tfoot_start(); - $table->row_start(); - $table->cell($form->submit_html ("add-nodes-in-slice","Add selected"), - array('hfill'=>true,'align'=>'right')); - $table->row_end(); - $table->end(); - $form->end(); - } - $toggle_nodes->end(); +$headers['peer']='string'; +$headers['hostname']='string'; +$short="-S-"; $long=Node::status_footnote(); $type='string'; +$headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; +$short=reservable_mark(); $long=reservable_legend(); $type='string'; +$headers[$short]=array('type'=>$type,'title'=>$long); $notes []= "$short = $long"; +// the extra tags, configured for the UI +$headers=array_merge($headers,$visibletags->headers()); +$headers['+']="none"; + */ + + $add_header = array(); + $add_header['+'] = "none"; + $headers = array_merge($ConfigureColumns->get_headers(), $add_header); + + //$notes=array_merge($notes,$visibletags->notes()); + $notes[] = "For information about the different columns please see the node table layout tab above or mouse over the column headers"; + + $table = new PlekitTable('add_nodes', $headers, null, $table_options); + $form = new PlekitForm(l_actions(), + array('slice_id' => $slice['slice_id'])); + $form->start(); + $table->start(); + if ($potential_nodes) { + foreach ($potential_nodes as $node) { + $table->row_start(); + + $table->cell($node['node_id'], array('display' => 'none')); + + $table->cell(l_node_obj($node)); + $peers->cell($table, $node['peer_id']); + list($label, $class) = Node::status_label_class_($node); + $table->cell($label, array('class' => $class)); + $table->cell(($node['node_type'] == 'reservable') ? reservable_mark() : ""); + + //extra columns + $hostname = $node['hostname']; + $ip = $interface_hash[$node['node_id']]['ip']; + $interface_id = $interface_hash[$node['node_id']]['interface_id']; + $node['domain'] = topdomain($hostname); + $node['sitename'] = l_site_t($node['site_id'], $site_hash[$node['site_id']]); + $node['ipaddress'] = l_interface_t($interface_id, $ip); + + //foreach ($visiblecolumns as $tagname) $table->cell($node[$tagname]); + $ConfigureColumns->cells($table, $node); + + $table->cell($form->checkbox_html('node_ids[]', $node['node_id'])); + $table->row_end(); + } + } + + // add nodes + $table->tfoot_start(); + $table->row_start(); + $table->cell($form->submit_html("add-nodes-in-slice", "Add selected"), + array('hfill' => true, 'align' => 'right')); + $table->row_end(); + $table->end(); + $form->end(); + } + $toggle_nodes->end(); } $toggle->end(); -if ($profiling) plc_debug_prof('12: nodes to add',count($potential_nodes)); +if ($profiling) { + plc_debug_prof('12: nodes to add', count($potential_nodes)); +} //////////////////////////////////////// retrieve all slice tags -$tags=$api->GetSliceTags (array('slice_id'=>$slice_id)); +$tags = $api->GetSliceTags(array('slice_id' => $slice_id)); //////////////////////////////////////////////////////////// tab:initscripts // xxx fixme // * add a message on how to use this: @@ -873,7 +970,7 @@ $tags=$api->GetSliceTags (array('slice_id'=>$slice_id)); // * explain the interface : initscript start|stop|restart slicename // xxx fixme -$initscript_info=" +$initscript_info = " There are two ways to attach an initscript to a slice: