fix comment
[plewww.git] / planetlab / slices / slice.php
index d162442..f4de029 100644 (file)
@@ -152,36 +152,32 @@ EOF;
     if ( empty( $selectors ) ) {
       print <<< EOF
 <div class='my-slice-renewal'>
-Slices annot be renewed more than $MAX_WEEKS weeks from now, i.e. not beyond $max_text. 
+Slices cannot be renewed more than $MAX_WEEKS weeks from now, i.e. not beyond $max_text. 
 For this reason, the current slice cannot be renewed any further into the future, try again closer to expiration date.
 </div>
 EOF;
      } else {
       print <<< EOF
 <div class='my-slice-renewal'>
-<p>You <span class='bold'>must</span> provide a short description, 
-as well as a link to a project website, before renewing it.
-
-<br/> Please make sure to provide reasonable details on <span class='bold'>
-the kind of traffic</span>, and <span class='bold'>copyrights</span> if relevant. 
-Do <span class='bold'>not</span> provide bogus information; if a complaint is lodged against 
-your slice  and your PlanetLab Operations Center is unable to determine what the normal behavior 
-of your slice is, your slice may be deleted to resolve the complaint.</p>
-
-<p><span class='bold'>NOTE:</span> 
-Slices cannot be renewed beyond another $max_renewal_weeks week(s) ($max_renewal_date).
+<span class='bold'>Important:</span> Please take this opportunity to review and update your slice information in the Details tab.
+<p>
+PlanetLab's security model requires that anyone who is concerned about a slice's activity be able to immediately learn about that slice. The details that you provide are your public explanation about why the slice behaves as it does. Be sure to describe the <span class='bold'>kind of traffic</span> that your slice generates, and how it handles material that is under <span class='bold'>copyright</span>, if relevant.
+</p><p>
+The PlanetLab Operations Centres regularly respond to concerns raised by third parties about site behaviour. Most incidents are resolved rapidly based upon the publicly posted slice details. However, when these details are not sufficiently clear or accurate, and we cannot immediately reach the slice owner, we must delete the slice. 
 </p>
-</div>
 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->label_html('expires','Duration:&nbsp;');
       print $form->select_html('expires',$selectors,array('label'=>'Pick one'));
       print $form->submit_html('renew-button','Renew');
       $form->end();
+
+print("<p><i>NOTE: Slices cannot be renewed beyond another $max_renewal_weeks week(s) ($max_renewal_date).</i>  </p>");
+print ("</div>");
     }
   }
  
@@ -207,18 +203,18 @@ $tabs [] = tab_site($site);
 
 // are these the right privileges for deletion ?
 if ($privileges) {
-  $tabs["Events"]=array_merge(tablook_event(),
-                             array('url'=>l_event("Slice","slice",$slice_id),
-                                   'bubble'=>"Events for 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["Comon"]=array_merge(tablook_comon(),
-                            //array('url'=>l_comon("slice_id",$slice_id),
-                                  //'bubble'=>"Comon page about 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);
@@ -433,23 +429,44 @@ $visibletags = new VisibleTags ($api, 'node');
 $visibletags->columns();
 $tag_columns = $visibletags->headers();
 
-// extra columns that are not tags (for the moment not sorted correctly)
-
+//columns that are not defined as extra myslice tags
 $extra_columns = array();
-$extra_columns[]=array('tagname'=>'sitename', 'header'=>'SN', 'type'=>'string', 'title'=>'Site name', 'fetched'=>true);
-$extra_columns[]=array('tagname'=>'domain', 'header'=>'DN', 'type'=>'string', 'title'=>'Toplevel domain name', 'fetched'=>true);
-$extra_columns[]=array('tagname'=>'ipaddress', 'header'=>'IP', 'type'=>'string', 'title'=>'IP Address', 'fetched'=>true);
-$extra_columns[]=array('tagname'=>'fcdistro', 'header'=>'OS', 'type'=>'string', 'title'=>'Operating system', 'fetched'=>false);
+//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);
+if (plc_is_admin()) {
+$extra_columns[]=array('tagname'=>'deployment', 'header'=>'DL', 'source'=>'myplc', 'type'=>'string', 'title'=>'Deployment', 'fetched'=>false);
+}
+
+//CoMon Live data
+$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
+//$extra_columns[]=array('tagname'=>'hopcount', 'header'=>'HC', 'source'=>'tophat', 'type'=>'sortAlphaNumericTop', 'title'=>'Hop count from reference node', 'fetched'=>false);
+
 
 //Get user's column configuration
 
-$default_configuration = "hostname:f|ST:f|AU:f|RES:f|R|L|OS|MS";
+$first_time_configuration = false;
+$default_configuration = "hostname:f|ST:f|AU:f|RES:f";
+//$extra_default = "";
 $column_configuration = "";
 $slice_column_configuration = "";
 
 $show_configuration = "";
 $show_reservable_message = '1';
-$show_columns_message = true;
+$show_columns_message = '1';
 
 
 //$PersonTags=$api->GetPersonTags (array('person_id'=>$plc->person['person_id']));
@@ -474,6 +491,7 @@ foreach ($PersonTags as $ptag) {
 $sliceconf_exists = false;
 if ($column_configuration == "")
 {
+       $first_time_configuration = true;
        $column_configuration = $slice_id.";default";
        $sliceconf_exists = true;
 }
@@ -516,6 +534,8 @@ $node_columns=array_merge($node_fixed_columns,$visiblecolumns);
 //print_r($node_columns);
 $all_nodes=$api->GetNodes(NULL,$node_columns);
 
+$ConfigureColumns->fetch_live_data($all_nodes);
+
 //print("<br>person show configuration = ".$show_configuration);
 
 $show_conf = explode(";",$show_configuration);
@@ -523,7 +543,7 @@ foreach ($show_conf as $ss) {
        if ($ss =="reservable")
                $show_reservable_message = '0';
        if ($ss =="columns")
-               $show_columns_message = false;
+               $show_columns_message = '0';
 }        
 
 //print("res:".$show_reservable_message." - cols:".$show_columns_message);
@@ -573,10 +593,10 @@ if (count($reservable_nodes) && $privileges) {
 <br>
 <div id='note_reservable_div' style="align:center; background-color:#CAE8EA; padding:4px; width:800px; $note_display">
 <table align=center><tr><td valign=top>
-You have attached one or more <span class='bold'>reservable nodes</span> to your slice. 
+You have attached one or more reservable nodes to your slice. 
 Reservable nodes show up with the '$mark' mark. 
-Your slivers will be available <span class='bold'>only during timeslots
-where you have obtained leases</span>
+Your slivers will be available only during timeslots
+where you have obtained leases. 
 You can manage your leases in the tab below.
 <br>
 Please note that as of August 2010 this feature is experimental. 
@@ -593,10 +613,9 @@ EOF;
   $resa_offset=$_GET['resa_offset'];
   if ( ! $resa_offset ) $resa_offset=0;
   $rough_start=time()+$resa_offset*3600;
-  // xxx should be configurable
+  // show the next 36 grains 
   $resa_slots=$_GET['resa_slots'];
   if ( ! $resa_slots ) $resa_slots = 36;
-  // for now, show the next 72 hours, or 72 grains, which ever is smaller
   $duration=$resa_slots*$grain;
   $steps=$duration/$grain;
   $start=intval($rough_start/$grain)*$grain;
@@ -675,7 +694,7 @@ EOF;
 
 //////////////////// node configuration panel
 
-if ($show_columns_message
+if ($first_time_configuration
 $column_conf_visible = '1';
 else
 $column_conf_visible = '0';
@@ -702,15 +721,15 @@ print("<input type='hidden' id='previousConf' value='".$slice_column_configurati
 print("<input type='hidden' id='defaultConf' value='".$default_configuration."'></input>");
 
 //print ("showing column message = ".$show_columns_message);
-if ($show_columns_message) 
-$note_display = "";
-else
+if ($show_columns_message == '0') 
 $note_display = "display:none;";
+else
+$note_display = "";
 
   print <<<EOF
 <div id='note_columns_div' style="align:center; background-color:#CAE8EA; padding:4px; width:800px; $note_display">
 <table align=center><tr><td valign=top>
-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 <a href="mailto:devel@planet-lab.org">devel@planet-lab.org</a>
+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 <a href="mailto:support@myslice.info">support@myslice.info</a>. You can find more information about the MySlice project at <a href="http://trac.myslice.info">http://trac.myslice.info</a>.
 </td><td valign=top><span onClick=closeMessage('columns')><img class='reset' src="/planetlab/icons/clear.png" alt="hide message permanently"></span>
 </td></tr></table>
 </div>
@@ -798,8 +817,10 @@ $table->cell($node['node_id'], array('display'=>'none'));
 //extra columns
 $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);
-
+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);
@@ -934,15 +955,24 @@ $tag_value_threshold=24;
   $form->start();
   $table->start();
   if ($tags) {
+    // Get hostnames for nodes in a single pass
+    $_node_ids = array();
+    foreach ($tags as $tag) {
+      if ($tag['node_id']) {
+        array_push($_node_ids, $tag['node_id']);
+      }
+    }
+    $_nodes = $api->GetNodes(array('node_id' => $_node_ids), array('node_id', 'hostname'));
+    $_hostnames = array();
+    foreach ($_nodes as $_node) {
+      $_hostnames[$_node['node_id']] = $_node['hostname'];
+    }
+
+    // Loop through tags again to display
     foreach ($tags as $tag) {
       $node_name = "ALL";
       if ($tag['node_id']) {
-        $tag_nodes = $api->GetNodes(array('node_id'=>$tag['node_id']));
-       if ($profiling) plc_debug_prof('9 node for slice tag',count($tag_nodes));
-        if($tag_nodes) {
-          $node = $tag_nodes[0];
-          $node_name = $node['hostname'];
-        }
+        $node_name = $_hostnames[$tag['node_id']];
       }
       $nodegroup_name="n/a";
       if ($tag['nodegroup_id']) {