X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fslices%2Fslice.php;h=c58fdc22d1def88f903d1a53db0251016477f4c8;hb=2137901e32fc859958fa5fa4885cf52968a0b7ac;hp=82e48c6a3f179e7460708252460f0199af1163c1;hpb=232e3e3ce1e8f07de912ba0d5302b03bfe71f283;p=plewww.git diff --git a/planetlab/slices/slice.php b/planetlab/slices/slice.php index 82e48c6..c58fdc2 100644 --- a/planetlab/slices/slice.php +++ b/planetlab/slices/slice.php @@ -129,7 +129,7 @@ EOF; $selectors = array(); foreach ( array ( 1 => "One more week", 2 => "Two more weeks", - 3 => "Two more weeks", + 3 => "Three more weeks", 4 => "One more month" ) as $weeks => $text ) { $candidate_exp = $current_exp + $weeks*$WEEK; if ( $candidate_exp < $max_exp) { @@ -183,7 +183,7 @@ if ($am_in_slice) { drupal_set_title("Slice " . $name); } -$privileges = ( $local_peer && (plc_is_admin() || $am_in_slice)); +$privileges = ( $local_peer && (plc_is_admin() || plc_is_pi() || $am_in_slice)); $tabs=array(); $tabs [] = tab_nodes_slice($slice_id); @@ -195,7 +195,7 @@ if ($privileges) { 'method'=>'post', 'values'=>array('action'=>'delete-slice','slice_id'=>$slice_id), 'bubble'=>"Delete slice $name", - 'confirm'=>'Are you sure to delete $name'); + 'confirm'=>"Are you sure to delete slice $name"); $tabs["Events"]=array_merge(tablook_event(), array('url'=>l_event("Slice","slice",$slice_id), @@ -267,7 +267,9 @@ $persons=$api->GetPersons(array('person_id'=>$slice['person_ids'])); // just propose to add everyone else, // as regular persons can see only a fraction of the db anyway if (empty($persons)) - $potential_persons=$api->GetPersons(); + $potential_persons=$api->GetPersons( + array(), + array('email','person_id','first_name','last_name','roles')); else $potential_persons= $api->GetPersons(array('~person_id'=>$slice['person_ids'],'peer_id'=>NULL), @@ -341,7 +343,7 @@ if ($privileges) { $headers['first']='string'; $headers['last']='string'; $headers['R']='string'; - $headers['Add']="none"; + $headers['+']="none"; $options = array('notes_area'=>false, 'search_width'=>15, 'pagesize'=>8); @@ -379,7 +381,8 @@ $toggle->end(); $node_columns = array('hostname','node_id','arch'); $nodes=$api->GetNodes(array('node_id'=>$slice['node_ids']),$node_columns); if (empty($nodes)) - $potential_nodes=$api->GetNodes(); + $potential_nodes=$api->GetNodes(array(), + $node_columns); else $potential_nodes=$api->GetNodes(array('~node_id'=>$slice['node_ids']),$node_columns); $count=count($nodes); @@ -398,16 +401,22 @@ $toggle_nodes=new PlekitToggle('my-slice-nodes-current', $toggle_nodes->start(); $headers=array(); +$headers['peer']='string'; $headers['hostname']='string'; $headers['arch']='string'; if ($privileges) $headers[plc_delete_icon()]="none"; -$table=new PlekitTable('nodes',$headers,'0', - array('notes_area'=>false)); + +$table_options = array('notes_area'=>false, + 'search_width'=>15, + 'pagesize'=>20); +$table=new PlekitTable('nodes',$headers,'0',$table_options); + $form=new PlekitForm(l_actions(),array('slice_id'=>$slice['slice_id'])); $form->start(); $table->start(); if ($nodes) foreach ($nodes as $node) { $table->row_start(); + $peers->cell($table,$node['peer_id']); $table->cell(l_node_obj($node)); $table->cell($node['arch']); if ($privileges) $table->cell ($form->checkbox_html('node_ids[]',$node['node_id'])); @@ -440,20 +449,19 @@ if ($privileges) { echo "

No node to add

"; } else { $headers=array(); + $headers['peer']='string'; $headers['hostname']='string'; $headers['arch']='string'; - $headers['Add']="none"; - $options = array('notes_area'=>false, - 'search_width'=>15, - 'pagesize'=>20); + $headers['+']="none"; - $table=new PlekitTable('add_nodes',$headers,'1',$options); + $table=new PlekitTable('add_nodes',$headers,'1', $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(); + $peers->cell($table,$node['peer_id']); $table->cell(l_node_obj($node)); $table->cell($node['arch']); $table->cell ($form->checkbox_html('node_ids[]',$node['node_id'])); @@ -472,8 +480,98 @@ if ($privileges) { } $toggle->end(); -//////////////////// tags +//////////////////////////////////////////////////////////// Tags +if ( $local_peer ) { + $tags=$api->GetSliceTags (array('slice_id'=>$slice_id)); + function get_tagname ($tag) { return $tag['tagname'];} + $tagnames = array_map ("get_tagname",$tags); + + $toggle = new PlekitToggle ('slice-tags',count_english_warning($tags,'tag'), + array('bubble'=>'Inspect and set tags on tat slice', + 'visible'=>get_arg('show_tags',false))); + $toggle->start(); + + $headers=array( + "Name"=>"string", + "Value"=>"string", + "Node"=>"string", + "NodeGroup"=>"string"); + if ($privileges) $headers[plc_delete_icon()]="none"; + + $table_options=array("notes_area"=>false,"pagesize_area"=>false,"search_width"=>10); + $table=new PlekitTable("slice_tags",$headers,'0',$table_options); + $form=new PlekitForm(l_actions(), + array('slice_id'=>$slice['slice_id'])); + $form->start(); + $table->start(); + if ($tags) { + foreach ($tags as $tag) { + $node_name = "ALL"; + if ($tag['node_id']) { + $nodes = $api->GetNodes(array('node_id'=>$tag['node_id'])); + if($nodes) { + $node = $nodes[0]; + $node_name = $node['hostname']; + } + } + $nodegroup_name="n/a"; + if ($tag['nodegroup_id']) { + $nodegroup=$api->GetNodeGroups(array('nodegroup_id'=>$tag['nodegroup_id'])); + if ($nodegroup) { + $nodegroup = $nodegroup[0]; + $nodegroup_name = $nodegroup['groupname']; + } + } + $table->row_start(); + $table->cell(l_tag_obj($tag)); + $table->cell($tag['value']); + $table->cell($node_name); + $table->cell($nodegroup_name); + if ($privileges) $table->cell ($form->checkbox_html('slice_tag_ids[]',$tag['slice_tag_id'])); + $table->row_end(); + } + } + if ($privileges) { + $table->tfoot_start(); + $table->row_start(); + $table->cell($form->submit_html ("delete-slice-tags","Remove selected"), + array('hfill'=>true,'align'=>'right')); + $table->row_end(); + + $table->row_start(); + function tag_selector ($tag) { + return array("display"=>$tag['tagname'],"value"=>$tag['tag_type_id']); + } + $all_tags= $api->GetTagTypes( array ("category"=>"slice*"), array("tagname","tag_type_id")); + $selector_tag=array_map("tag_selector",$all_tags); + + function node_selector($node) { + return array("display"=>$node["hostname"],"value"=>$node['node_id']); + } + $all_nodes = $api->GetNodes( array ("node_id" => $slice['node_ids']), array("hostname","node_id")); + $selector_node=array_map("node_selector",$all_nodes); + + function nodegroup_selector($ng) { + return array("display"=>$ng["groupname"],"value"=>$ng['nodegroup_id']); + } + $all_nodegroups = $api->GetNodeGroups( array("groupname"=>"*"), array("groupname","nodegroup_id")); + $selector_nodegroup=array_map("nodegroup_selector",$all_nodegroups); + + $table->cell($form->select_html("tag_type_id",$selector_tag,array('label'=>"Choose Tag"))); + $table->cell($form->text_html("value","",array('width'=>8))); + $table->cell($form->select_html("node_id",$selector_node,array('label'=>"All Nodes"))); + $table->cell($form->select_html("nodegroup_id",$selector_nodegroup,array('label'=>"No Nodegroup"))); + $table->cell($form->submit_html("add-slice-tag","Set Tag"),array('columns'=>2,'align'=>'left')); + $table->row_end(); + } + + $form->end(); + $table->end(); + $toggle->end(); +} + +//////////////////////// renew slice if ($local_peer ) { if ( ! $renew_visible) renew_area ($slice,$site,false); }