Author: mzugec
Date: Wed Nov 3 17:07:25 2010
New Revision: 62737
URL: http://svn.opensuse.org/viewcvs/yast?rev=62737&view=rev
Log:
support for ordering in bonding slaves (bnc#640611)
Modified:
trunk/network/VERSION
trunk/network/package/yast2-network.changes
trunk/network/src/lan/address.ycp
Modified: trunk/network/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/VERSION?rev=62737&r1=62736&r2=62737&view=diff
==============================================================================
--- trunk/network/VERSION (original)
+++ trunk/network/VERSION Wed Nov 3 17:07:25 2010
@@ -1 +1 @@
-2.19.41
+2.19.42
Modified: trunk/network/package/yast2-network.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/package/yast2-network.changes?rev=62737&r1=62736&r2=62737&view=diff
==============================================================================
--- trunk/network/package/yast2-network.changes (original)
+++ trunk/network/package/yast2-network.changes Wed Nov 3 17:07:25 2010
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Wed Nov 3 17:03:37 CET 2010 - mzugec@suse.cz
+
+- support for ordering in bonding slaves (bnc#640611)
+- 2.20.1
+
+-------------------------------------------------------------------
Wed Oct 27 13:53:54 CEST 2010 - mzugec@suse.cz
- AY: when no network profile, don't change network configuration
Modified: trunk/network/src/lan/address.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/address.ycp?rev=62737&r1=62736&r2=62737&view=diff
==============================================================================
--- trunk/network/src/lan/address.ycp (original)
+++ trunk/network/src/lan/address.ycp Wed Nov 3 17:07:25 2010
@@ -159,6 +159,27 @@
}
+integer getISlaveIndex(string slave){
+ list<term> items = (list<term>)UI::QueryWidget(`msbox_items, `Items);
+ integer index = -1;
+ integer pos=0;
+ foreach(term it, (list<term>)items, {
+ if(it[0, 0]:""==slave){
+ index = pos;
+ break;
+ }
+ pos=pos+1;
+ });
+ return index;
+}
+
+void enableSlaveButtons(){
+ list<term> items = (list<term>)UI::QueryWidget(`msbox_items, `Items);
+ string current = tostring(UI::QueryWidget(`msbox_items, `CurrentItem));
+ integer index = getISlaveIndex(current);
+ UI::ChangeWidget(`up, `Enabled, index>0);
+ UI::ChangeWidget(`down, `Enabled, index configurations = NetworkInterfaces::FilterDevices("netcard");
foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"), {
foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]), {
@@ -182,8 +203,72 @@
});
});
- UI::ChangeWidget(`id(key), `Items, items);
-y2internal("slaves %1", settings["SLAVES"]:[]);
+ // reorder the items
+ list l2=[];
+ list l1=[];
+ foreach(term t, (list<term>) items, {
+ if (contains(settings["SLAVES"]:[], t[0,0]:"")){
+ l1=add(l1, t);
+ } else {
+ l2=add(l2, t);
+ }
+ });
+
+ items=[];
+ foreach(string s, settings["SLAVES"]:[],{
+ foreach(term t, (list<term>) l1,{
+ if (t[0,0]:""==s) items=add(items, t);
+ });
+ });
+
+ items=union(items,l2);
+ UI::ChangeWidget(`msbox_items, `Items, items);
+ enableSlaveButtons();
+}
+
+symbol HandleSlave(string key, map event)
+{
+ if (event["EventReason"]:"" =="SelectionChanged"){
+ enableSlaveButtons();
+ } else if (event["EventReason"]:""=="Activated" && event["WidgetClass"]:nil==`PushButton){
+ list<term> items = (list<term>)UI::QueryWidget(`msbox_items, `Items);
+ string current = tostring(UI::QueryWidget(`msbox_items, `CurrentItem));
+ integer index = getISlaveIndex(current);
+ list<term> new_items=[];
+ integer pos=0;
+ switch(event["ID"]:`nil){
+ case `up:
+ while(index>pos+1){
+ new_items=add(new_items, items[pos]:nil);
+ pos=pos+1;
+ }
+ new_items=add(new_items, items[index]:nil);
+ new_items=add(new_items, items[index-1]:nil);
+ new_items=(list<term>)union(new_items, (list<term>)sublist(items, index));
+ break;
+ case `down:
+ while(index>pos){
+ new_items=add(new_items, items[pos]:nil);
+ pos=pos+1;
+ }
+ new_items=add(new_items, items[index+1]:nil);
+ new_items=add(new_items, items[index]:nil);
+ new_items=(list<term>)union(new_items, (list<term>)sublist(items, index+1));
+ break;
+ default:
+ y2warning("unknown action");
+ return nil;
+ }
+ items = new_items;
+ UI::ChangeWidget(`msbox_items, `Items, items);
+ enableSlaveButtons();
+
+ } else
+ {
+ y2debug("event:%1", event);
+ }
+
+ return nil;
}
/**
@@ -193,7 +278,7 @@
*/
void StoreSlave(string key, map event)
{
- settings["SLAVES"] = (list<string>)UI::QueryWidget (`id(key), `SelectedItems);
+ settings["SLAVES"] = (list<string>)UI::QueryWidget (`msbox_items, `SelectedItems);
settings["BONDOPTION"] = UI::QueryWidget (`id("BONDOPTION"), `Value);
LanItems::bond_slaves = settings["SLAVES"]:[];
LanItems::bond_option = settings["BONDOPTION"]:"";
@@ -656,11 +741,15 @@
"help": help["etherdevice"]:"",
],
"BONDSLAVE": $[
- "widget": `multi_selection_box,
+ "widget": `custom,
+ "custom_widget" : `Frame(_("Bond Slaves and Order"), `VBox(
+ `MultiSelectionBox(`id(`msbox_items), `opt(`notify), "", []),
+ `HBox(`PushButton(`id(`up), `opt(`disabled), _("Up") ), `PushButton(`id(`down), `opt(`disabled), _("Down") ) )
+ )),
"label": _("Bond &Slaves"),
- "opt": [`shrinkable],
- "items" : [ ],
+// "opt": [`shrinkable],
"init": InitSlave,
+ "handle": HandleSlave,
"store": StoreSlave,
"help": help["bondslave"]:"",
],
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org