sites almost there
[plewww.git] / planetlab / includes / plc_functions.php
index a25f747..2bcf31f 100644 (file)
@@ -57,13 +57,18 @@ function l_interface_t ($interface_id,$text) {
 function l_interface_add($node_id)     { return "/db/nodes/interfaces.php?node_id=$node_id"; }
 
 function l_sites ()                    { return "/db/sites/index.php"; }
+function l_sites_local ()              { return "/db/sites/index.php?peerscope=local"; }
 function l_site ($site_id)             { return "/db/sites/index.php?id=$site_id"; }
 function l_site_t ($site_id,$text)     { return href (l_site($site_id),$text); }
+function l_site_update($site_id)       { return "/xxx-undefined"; }
 
 function l_slices ()                   { return "/db/slices/index.php"; }
 function l_slice ($slice_id)           { return "/db/slices/index.php?id=$slice_id"; }
 function l_slice_t ($slice_id,$text)   { return href (l_slice($slice_id),$text); }
 function l_slice_add ()                        { return "/db/slices/add_slice.php"; }
+function l_slices_site($site_id)       { return "/db/slices/index.php?site_id=$site_id"; }
+// from an object
+function l_slice_text ($slice)         { return l_slice_t ($slice['slice_id'],$slice['name']); }
 
 function l_sliver ($node_id,$slice_id) { return "/db/nodes/slivers.php?node_id=$node_id&slice_id=$slice_id"; }
 function l_sliver_t ($node_id,$slice_id,$text) { 
@@ -79,8 +84,8 @@ function l_tag ($tag_type_id)         { return "/db/tags/index.php"; }
 function l_tag_add()                   { return "/db/tags/tag_form.php"; }
 function l_tag_update($id)             { return "/db/tags/tag_form.php&action=update-tag-type&id=$id"; }
 
-function l_nodegroups ()               { return "/db/tags/node_groups.php"; }
-function l_nodegroup ($nodegroup_id)   { return "/db/tags/node_groups.php?id=$nodegroup_id"; }
+function l_nodegroups ()               { return "/db/tags/nodegroups.php"; }
+function l_nodegroup ($nodegroup_id)   { return "/db/tags/nodegroups.php?id=$nodegroup_id"; }
 function l_nodegroup_t ($nodegroup_id,$text) { 
                                          return href(l_nodegroup($nodegroup_id),$text); }
 
@@ -102,7 +107,21 @@ function l_sulogout()                      { return "/planetlab/sulogout.php"; }
 function l_reset_password()            { return "/db/persons/reset_password.php"; }
 function l_person_register()           { return "/db/persons/register.php"; }
 function l_site_register()             { return "/db/sites/register.php"; }
-function l_site_pending()              { return "/db/sites/join_request.php"; }
+function l_sites_pending()             { return "/db/sites/join_request.php"; }
+
+// returns array ['url' => path, 'values' => hash (key=>value)* ]
+function split_url ($full_url) {
+  list($url,$args) = explode("?",$full_url);
+  $values=array();
+  if ($args) {
+    $pairs=explode("&",$args);
+    foreach ($pairs as $pair) {
+      list ($name,$value) = explode("=",$pair);
+      $values[$name]=$value;
+    }
+  }
+  return array("url"=>$url,"values"=>$values);
+}
 
 //////////////////////////////////////////////////////////// validation functions
 function topdomain ($hostname) {
@@ -216,6 +235,15 @@ function plc_peer_shortname ($peer_hash,$peer_id) {
   }
 }
 
+function plc_peer_label ($peer) { 
+  if (! $peer) {
+    return "Local object on " . PLC_NAME . " (" . PLC_SHORTNAME . ")";
+  }
+  $result= $peer['peername'] . " (" . $peer['shortname'] . ")";
+  $result= href(l_peer($peer['peer_id']),$result);
+  return plc_foreign_text($result);
+}
+
 // to set the background to grey on foreign objects
 // return true if the peer is local 
 function plc_peer_block_start ($peer_hash,$peer_id) {
@@ -269,6 +297,22 @@ function plc_peer_info ($api,$peerscope) {
   return array ($peer_filter,$peer_label);
 }
 
+//////////////////////////////////////////////////////////// nodegroups
+// hash by 'tagname=value'
+function plc_nodegroup_global_hash ($api,$tagnames=NULL) {
+  $filter=NULL;
+  // xxx somehow this does not work; I've checked that the feature is working from plcsh
+  // but I suspect the php marshalling or something; no time to fix, get all nodegroups for now
+  // if ($tagnames) $filter=array("tagname"=>$tagnames);
+  $nodegroups=$api->GetNodeGroups($filter);
+  $hash=array();
+  if ($nodegroups) foreach ($nodegroups as $nodegroup) {
+      $key=$nodegroup['tagname']."=".$nodegroup['value'];
+      $hash[$key]=$nodegroup;
+    }
+  return $hash;
+}
+  
 //////////////////////////////////////////////////////////// titles
 function t_site($site) { return " on site " . $site['name'] . " (" . $site['login_base'] .")"; }
 function t_slice ($slice) { return " running slice " . $slice['name'] . " (" . $slice['slice_id'] . ")"; }
@@ -315,8 +359,8 @@ function plc_vertical_table ($messages, $class="") {
   // pretty print the cell
   if ( empty( $messages) ) return "";
   $formatted = "";
-  $formatted .= "<table ";
-  if ($class) $formatted .= "class='" . $class . "'";
+  $formatted .= "<table";
+  if ($class) $formatted .= " class='" . $class . "'";
   $formatted .= ">";
   foreach ($messages as $message) {
     $formatted .= "<tr><td>" . $message . "</td></tr>";
@@ -326,9 +370,16 @@ function plc_vertical_table ($messages, $class="") {
 }
 
 //////////////////////////////////////////////////////////// various mappers
+// could not figure how to use anonymous lambdas..
 function get_site_id ($site) { return $site['site_id'];}
+function get_tagname ($tag) { return $tag['tagname'];}
 
 ////////////////////////////////////////////////////////////
+function plc_section ($text,$line=true) {
+  if ($line) { print "<hr/>";}
+  print "<h2 class=plc> $text </h2>\n";
+}
+
 function plc_error ($text) {
   // should use the same channel as the php errors..
   print "<div class='plc-error'> Error " . $text . "</div>";
@@ -344,12 +395,9 @@ function plc_errors ($list) {
   print( "</ul></div>\n" );
 }
 
-function plc_warning_div ($text) {
-  return "<div class='plc-warning'>" . $text . "</div>";
-}
-function plc_warning ($text) {
-  print plc_warning_div("Warning " . $text);
-}
+function plc_warning_text ($text)      { return "<div class='plc-warning'>" . $text . "</div>";}
+function plc_warning ($text)           { print plc_warning_text("Warning " . $text); }
+function plc_foreign_text($text)       { return "<div class=plc-foreign>$text</div>"; }
 
 // shows a php variable verbatim with a heading message
 function plc_debug ($message,$object) {
@@ -358,4 +406,5 @@ function plc_debug ($message,$object) {
   print "</pre>";
 }
 
+
 ?>