X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fnodes%2Finterface.php;h=a2d13c25f2cb77265e2027477c3b0864f9a69c40;hb=e1d9d4cacba4aa044d9c7d6f53407e8e43964c74;hp=e927594e0744c2918fa9285fa218e49777b59ca4;hpb=86e79674275169c962e48b353d58a4b2976e7cc7;p=plewww.git diff --git a/planetlab/nodes/interface.php b/planetlab/nodes/interface.php index e927594..a2d13c2 100644 --- a/planetlab/nodes/interface.php +++ b/planetlab/nodes/interface.php @@ -1,5 +1,7 @@ 'Back to node', 'url'=>l_node($node_id), +$tabs[] = array('label'=>'Back to node', 'url'=>l_node($node_id), + 'values' => array('show_details'=>False,'show_interfaces'=>True), 'bubble'=>'Cancel pending changes'); plekit_linetabs($tabs); @@ -54,7 +58,8 @@ $fields=array( 'method', 'type', 'ip', 'gateway', 'network', 'broadcast', 'netma 'dns1', 'dns2', 'hostname', 'mac', 'bwlimit', 'node_id' ); ////////////////////////////// -$nodes= $api->GetNodes( array( intval($node_id) ), array( 'node_id', 'hostname', 'site_id' ) ); +$node_columns = array( 'node_id', 'hostname', 'site_id', 'interface_ids' ); +$nodes= $api->GetNodes( array( intval($node_id) ), $node_columns); $node= $nodes[0]; $site_id=$node['site_id']; @@ -68,17 +73,28 @@ drupal_set_html_head (' '); +$nifty_id = ($mode == 'add' ) ? 'add-interface' : 'interface'; +$toggle = new PlekitToggle ($nifty_id,"Details", + array('bubble'=>'Display and modify details for that interface', + 'visible'=>get_arg('show_details',true))); +$toggle->start(); + $details=new PlekitDetails($can_update); // xxx hardwire network type for now $form_variables = array('node_id'=>$node_id,'type'=>"ipv4"); if ($mode == "update") $form_variables['interface_id']=$interface_id; -$form=$details->form_start(l_actions(),$form_variables); +$form=$details->form_start(l_actions(),$form_variables, + array('onSubmit'=>'return interfaceSubmit()')); $details->start(); +if ($mode == 'add') + $method_default = 'dhcp'; +else + $method_default = $interface['method']; $method_select = $form->select_html ("method", - interface_method_selectors($api,$interface['method'],false), + interface_method_selectors($api,$method_default,false), array('id'=>'method','onChange'=>'updateMethodFields()')); $details->th_td("Method",$method_select,"method",array('input_type'=>'select','value'=>$interface['method'])); @@ -103,17 +119,25 @@ $details->th_td("DNS 2",$interface['dns2'],"dns2",array('width'=>15, $details->space(); $details->th_td("BW limit (bps)",$interface['bwlimit'],"bwlimit",array('width'=>11)); $details->th_td("Hostname",$interface['hostname'],"hostname"); -# xxx should the user be allowed to change this ? -$mac=$interface['mac']; -if ($mac) $details->th_td("MAC address",$mac); +$details->th_td("Mac address",$interface['mac'],"mac", array('onChange'=>'macChecker("mac", true)')); // the buttons -$update_button = $form->submit_html ("update-interface","Update", - array('onSubmit'=>'interfaceSubmit()')); +$update_button = $form->submit_html ("update-interface","Update"); $add_button = $form->submit_html ("add-interface","Add as new", array('onSubmit'=>'interfaceSubmit()')); switch ($mode) { case 'add': + // primary interfaces can't be virtual + $is_primary = (count($node['interface_ids']) == 0); + if ( ! $is_primary) { + // default is to create virtual interfaces + $details->th_th("Virtual Interface", + $form->checkbox_html('is-virtual','yes',array('id'=>'virtual', + 'checked'=>'checked', + 'onChange'=>'updateVirtualArea()'))); + $details->th_td("Interface name","eth0",'ifname'); + $details->th_td("alias (leave empty if unsure)","",'alias'); + } $details->tr($add_button,"right"); break; case 'update': @@ -123,19 +147,21 @@ switch ($mode) { $details->end(); $form->end(); +$toggle->end(); // no tags if the interface has not been created yet if ($mode == 'add') return; //////////////////////////////////////// tags -$toggle=new PlekitToggle ('tags','Tags'); +$tags=$api->GetInterfaceTags (array('interface_id'=>$interface_id)); +$toggle=new PlekitToggle ('tags',count_english($tags,'tag'), + array('visible'=>get_arg('show_tags',true))); $toggle->start(); $form = new PlekitForm (l_actions(),array('interface_id'=>$interface_id)); $form->start(); -$tags=$api->GetInterfaceTags (array('interface_id'=>$interface_id)); function get_tagname ($tag) { return $tag['tagname'];} $tagnames = array_map ("get_tagname",$tags); @@ -164,7 +190,7 @@ if ($can_update) { $table->row_start(); $table->cell($form->submit_html("delete-interface-tags","Remove Tags"), // use the whole columns and right adjust - $table->columns(), "right"); + array('hfill'=>true,'align'=>'right')); $table->row_end(); // set tag area @@ -176,6 +202,7 @@ if ($can_update) { $selector=array_map("tag_selector",$all_tags); $table->cell($form->select_html("tag_type_id",$selector,array('label'=>"Choose"))); $table->cell($form->text_html("value","",array('width'=>8))); + //cell-xxx $table->cell($form->submit_html("set-tag-on-interface","Set Tag"),2,"left"); $table->row_end(); }