X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fnodes%2Finterface.php;h=744ce3f69a834f5c6696d0cb8998f582fe31a7ca;hb=1ce86fd37ce8da9b475847a59394c0241a8dbbff;hp=471d8d36a965445f95fc53a98bbb1026d4675eb0;hpb=1a945dad628b43d3e7cb63eaec7593e8c2c548fa;p=plewww.git diff --git a/planetlab/nodes/interface.php b/planetlab/nodes/interface.php index 471d8d3..744ce3f 100644 --- a/planetlab/nodes/interface.php +++ b/planetlab/nodes/interface.php @@ -15,6 +15,7 @@ require_once 'linetabs.php'; require_once 'details.php'; require_once 'table.php'; require_once 'toggle.php'; +require_once 'prototype.php'; require_once 'plc_drupal.php'; include 'plc_header.php'; @@ -48,7 +49,8 @@ if ( ! $node_id) { } $tabs=array(); -$tabs[] = array('label'=>'Back to node', 'url'=>l_node($node_id), +$tabs[] = array('label'=>'Back to node', 'url'=>l_node($node_id), + 'values' => array('show_interfaces'=>True), 'bubble'=>'Cancel pending changes'); plekit_linetabs($tabs); @@ -56,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']; @@ -70,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'))); +$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'])); @@ -105,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': @@ -125,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'))); $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); @@ -166,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 @@ -178,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(); }