Hello community, here is the log from the commit of package yast2-fcoe-client for openSUSE:Factory checked in at 2012-01-25 11:09:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-fcoe-client (Old) and /work/SRC/openSUSE:Factory/.yast2-fcoe-client.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-fcoe-client", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-fcoe-client/yast2-fcoe-client.changes 2012-01-09 21:44:30.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-fcoe-client.new/yast2-fcoe-client.changes 2012-01-25 11:09:42.000000000 +0100 @@ -1,0 +2,11 @@ +Thu Jan 19 09:35:06 CET 2012 - [email protected] + +- Merge SP2 branch to trunk: use improved 'fipvlan' (bnc #728103), + set DCB_REQUIRED to "no" for Broadcom devices (bnc #728658), + enable service start of 'lldpad' before enabling 'fcoe', + don't overwrite BOOTPROTO for underlying interface, + set default for AUTO_VLAN to "yes" (bnc #724563), + Call 'fipvlan' with option --link-up (bnc #737683) +- V 2.22.2 + +------------------------------------------------------------------- Old: ---- yast2-fcoe-client-2.22.1.tar.bz2 New: ---- yast2-fcoe-client-2.22.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-fcoe-client.spec ++++++ --- /var/tmp/diff_new_pack.fiqXYQ/_old 2012-01-25 11:09:44.000000000 +0100 +++ /var/tmp/diff_new_pack.fiqXYQ/_new 2012-01-25 11:09:44.000000000 +0100 @@ -15,25 +15,23 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + + Name: yast2-fcoe-client -Version: 2.22.1 +Version: 2.22.2 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: yast2-fcoe-client-%{version}.tar.bz2 +Group: System/YaST +License: GPL-2.0 Requires: yast2 >= 2.21.22 -BuildRequires: perl-XML-Writer -BuildRequires: update-desktop-files -BuildRequires: yast2 -BuildRequires: yast2-devtools -BuildRequires: yast2-testsuite +BuildRequires: perl-XML-Writer update-desktop-files yast2 yast2-devtools yast2-testsuite BuildArch: noarch Summary: YaST2 - Configuration of Fibre Channel over Ethernet -License: GPL-2.0 -Group: System/YaST %description This package contains the YaST2 component for the Fibre Channel over ++++++ yast2-fcoe-client-2.22.1.tar.bz2 -> yast2-fcoe-client-2.22.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/VERSION new/yast2-fcoe-client-2.22.2/VERSION --- old/yast2-fcoe-client-2.22.1/VERSION 2011-12-21 14:34:52.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/VERSION 2012-01-19 09:49:35.000000000 +0100 @@ -1 +1 @@ -2.22.1 +2.22.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/configure new/yast2-fcoe-client-2.22.2/configure --- old/yast2-fcoe-client-2.22.1/configure 2011-12-21 14:35:45.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/configure 2012-01-24 11:55:03.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.22.1. +# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.22.2. # # Report bugs to <http://bugs.opensuse.org/>. # @@ -559,8 +559,8 @@ # Identity of this package. PACKAGE_NAME='yast2-fcoe-client' PACKAGE_TARNAME='yast2-fcoe-client' -PACKAGE_VERSION='2.22.1' -PACKAGE_STRING='yast2-fcoe-client 2.22.1' +PACKAGE_VERSION='2.22.2' +PACKAGE_STRING='yast2-fcoe-client 2.22.2' PACKAGE_BUGREPORT='http://bugs.opensuse.org/' PACKAGE_URL='' @@ -1229,7 +1229,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures yast2-fcoe-client 2.22.1 to adapt to many kinds of systems. +\`configure' configures yast2-fcoe-client 2.22.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1301,7 +1301,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of yast2-fcoe-client 2.22.1:";; + short | recursive ) echo "Configuration of yast2-fcoe-client 2.22.2:";; esac cat <<\_ACEOF @@ -1381,7 +1381,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -yast2-fcoe-client configure 2.22.1 +yast2-fcoe-client configure 2.22.2 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1398,7 +1398,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by yast2-fcoe-client $as_me 2.22.1, which was +It was created by yast2-fcoe-client $as_me 2.22.2, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2328,7 +2328,7 @@ # Define the identity of the package. PACKAGE='yast2-fcoe-client' - VERSION='2.22.1' + VERSION='2.22.2' cat >>confdefs.h <<_ACEOF @@ -2450,7 +2450,7 @@ -VERSION="2.22.1" +VERSION="2.22.2" RPMNAME="yast2-fcoe-client" MAINTAINER="Gabriele Mohr <[email protected]>" @@ -3380,7 +3380,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by yast2-fcoe-client $as_me 2.22.1, which was +This file was extended by yast2-fcoe-client $as_me 2.22.2, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3433,7 +3433,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -yast2-fcoe-client config.status 2.22.1 +yast2-fcoe-client config.status 2.22.2 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/configure.in new/yast2-fcoe-client-2.22.2/configure.in --- old/yast2-fcoe-client-2.22.1/configure.in 2011-12-21 14:35:42.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/configure.in 2012-01-24 11:54:58.000000000 +0100 @@ -3,7 +3,7 @@ dnl -- This file is generated by y2autoconf 2.21.2 - DO NOT EDIT! -- dnl (edit configure.in.in instead) -AC_INIT(yast2-fcoe-client, 2.22.1, http://bugs.opensuse.org/, yast2-fcoe-client) +AC_INIT(yast2-fcoe-client, 2.22.2, http://bugs.opensuse.org/, yast2-fcoe-client) dnl Check for presence of file 'RPMNAME' AC_CONFIG_SRCDIR([RPMNAME]) @@ -18,7 +18,7 @@ AM_INIT_AUTOMAKE(tar-ustar -Wno-portability) dnl Important YaST2 variables -VERSION="2.22.1" +VERSION="2.22.2" RPMNAME="yast2-fcoe-client" MAINTAINER="Gabriele Mohr <[email protected]>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/FcoeClient.ycp new/yast2-fcoe-client-2.22.2/src/FcoeClient.ycp --- old/yast2-fcoe-client-2.22.1/src/FcoeClient.ycp 2011-11-23 11:40:47.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/src/FcoeClient.ycp 2012-01-18 14:04:19.000000000 +0100 @@ -272,45 +272,55 @@ } // -// Check whether a VLAN interface is configured for FCoE on the switch (for given interface) +// Check whether VLAN interfaces are configured for FCoE on the switch // // Params: // string interface network interface card, e.g. eth3 // Return: // string Vlan interface number, e.g. 200 // Example: -// # fipvlan eth3 +// # fipvlan eth0 eth1 eth2 eth3 //Fibre Channel Forwarders Discovered //interface | VLAN | FCF MAC //------------------------------------------ -//eth3 | 200 | 00:0d:ec:a2:ef:00 +//eth0 | 200 | 00:0d:ec:a2:ef:00 +//eth3 | 200 | 00:0d:ec:a2:ef:01 // -global string GetVlanInterface( string interface ) +global map GetVlanInterfaces( list net_devices ) { - string vlan_interface = ""; - map output = $[]; + // Add option -u (or --link_up): don't shut down interfaces + // to be able to detect DCB state afterwards (see bnc #737683) + string vlan_cmd = "LANG=POSIX fipvlan -u"; + map vlan_info = $[]; - // check whether there is a VLAN interface which is configured for FCoE - string cmd_fcoe = sformat( "LANG=POSIX fipvlan %1", interface ); - y2milestone( "Executing command: %1", cmd_fcoe ); - output = (map)SCR::Execute( .target.bash_output, cmd_fcoe ); + foreach ( string dev, (list<string>)net_devices, { + vlan_cmd = vlan_cmd + " " + dev; + } ); + + // call fipvlan command for all interfaces (saves time because is executed in parallel) + y2milestone( "Executing command: %1", vlan_cmd ); + map output = (map)SCR::Execute( .target.bash_output, vlan_cmd ); y2milestone( "Output: %1", output ); - + list <string> lines = splitstring( output["stdout"]:"", "\n" ); - foreach( string line, (list<string>)lines, { - // check whether there is a line for the given interface, e.g. - // eth3 | 200 | 00:0d:ec:a2:ef:00\n - // and extract name/number of VLAN channel. - if ( String::StartsWith( line, interface ) ) - { - line = deletechars( line, " \t" ); - vlan_interface = substring( line, findfirstof( line, "|" )+1, - findlastof( line, "|" )-findfirstof( line, "|")-1 ); - y2milestone( "VLAN: %1", vlan_interface ); - } + + foreach ( string dev, (list<string>)net_devices, { + foreach( string line, (list<string>)lines, { + // check whether there is a line for the given interface, e.g. + // eth3 | 200 | 00:0d:ec:a2:ef:00\n + // and extract name/number of VLAN channel. + if ( String::StartsWith( line, dev ) ) + { + line = deletechars( line, " \t" ); + string vlan_interface = substring( line, findfirstof( line, "|" )+1, + findlastof( line, "|" )-findfirstof( line, "|")-1 ); + y2milestone( "Interface: %1 VLAN: %2", dev, vlan_interface ); + vlan_info = add( vlan_info, dev, vlan_interface ); + } + } ); } ); - - return vlan_interface; + y2milestone( "VLAN info: %1", vlan_info ); + return vlan_info; } // @@ -443,7 +453,7 @@ if ( !FileUtils::Exists( file_name ) ) { y2warning( "Cannot read config file for %1 in /etc/fcoe", vlan_device_name ); - Popup::Warning( sformat(_("Cannot read config file for %1. + Report::Warning( sformat(_("Cannot read config file for %1. You may edit the settings and recreate the FCoE VLAN interface to get a valid configuration."), vlan_device_name) ); return status_map; @@ -517,20 +527,32 @@ // global void AdjustStartStatus( ) { - y2milestone( "Setting start of /etc/init.d/boot.fcoe to %1", service_start["fcoe"]:false ); - if ( service_start["fcoe"]:false == true ) - Service::Enable("boot.fcoe"); - else - Service::Disable("boot.fcoe"); + boolean fcoe_start = service_start["fcoe"]:false; + boolean lldpad_start = service_start["lldpad"]:false; + y2milestone( "Setting start of /etc/init.d/boot.fcoe to %1", fcoe_start ); + y2milestone( "Setting start of /etc/init.d/lldpad to %1", lldpad_start ); - y2milestone( "Setting start of /etc/init.d/lldpad to %1", service_start["lldpad"]:false ); - if ( service_start["lldpad"]:false == true ) - Service::Enable("boot.lldpad"); - else + if ( fcoe_start && lldpad_start ) + { + Service::Enable("boot.lldpad"); // enable 'lldpad' first + Service::Enable("boot.fcoe"); + } + else if ( !fcoe_start && lldpad_start ) + { + Service::Disable("boot.fcoe"); + Service::Enable("boot.lldpad" ); + } + else if ( !fcoe_start && !lldpad_start ) + { + Service::Disable("boot.fcoe"); // disable 'fcoe' first Service::Disable("boot.lldpad"); - + } + // fcoe_start && !lldpad_start isn't possible -> see complex.ycp StoreServicesDialog } +// +// Set status of services +// global void SetStartStatus( string service, boolean status ) { y2milestone( "Starting service %1 on boot: %2", service, status ); @@ -563,51 +585,56 @@ // global boolean ServiceStatus() { + boolean success = true; + // Loading of modules in Stage::initial() is not required (like in IsciClientLib.ycp, line 523 ) // see /etc/init.d/fcoe, line 85 (modprobe fcoe > /dev/null 2>&1) boolean ret = true; - - if ( Service::Status( "boot.fcoe" ) != 0 ) + + // first start lldpad + if ( Service::Status( "boot.lldpad" ) != 0 ) { - boolean success = Service::Start( "boot.fcoe" ); + success = Service::Start( "boot.lldpad" ); if ( success ) { - y2milestone( "FCoE started (/etc/init.d/boot.fcoe start)"); - fcoe_started = true;; + y2milestone( "Lldpad started (/etc/init.d/boot.lldpad start)"); + lldpad_started = true; } else { - y2error( "Cannot start FCoE service - '/etc/init.d/boot.fcoe start' failed" ); - Popup::Error( "Cannot start FCoE service. -'/etc/init.d/boot.fcoe start' failed" ); + y2error( "Cannot start service lldpad - '/etc/init.d/boot.lldpad start' failed" ); + Report::Error( "Cannot start service lldpad. +'/etc/init.d/boot.lldpad start' failed" ); ret = false; } } else { - y2milestone( "FCoE service is running"); + y2milestone( "Lldpad service is running"); } - if ( Service::Status( "boot.lldpad" ) != 0 ) + if ( Service::Status( "boot.fcoe" ) != 0 ) { - boolean success = Service::Start( "boot.lldpad" ); + success = Service::Start( "boot.fcoe" ); + if ( success ) { - y2milestone( "Lldpad started (/etc/init.d/boot.lldpad start)"); - lldpad_started = true; + y2milestone( "FCoE started (/etc/init.d/boot.fcoe start)"); + fcoe_started = true;; } else { - y2error( "Cannot start service lldpad - '/etc/init.d/boot.lldpad start' failed" ); - Popup::Error( "Cannot start service lldpad. -'/etc/init.d/boot.lldpad start' failed" ); + y2error( "Cannot start FCoE service - '/etc/init.d/boot.fcoe start' failed" ); + Report::Error( "Cannot start FCoE service. +'/etc/init.d/boot.fcoe start' failed" ); ret = false; } } else { - y2milestone( "Lldpad service is running"); + y2milestone( "FCoE service is running"); } + return ret; } @@ -625,46 +652,31 @@ if ( netcards == [] || netcards == nil ) return false; + list net_devices = []; + foreach ( map card, netcards, { - // get first state map from link list in resource map - map state_map = card["resource", "link", 0 ]:$[]; + net_devices = add( net_devices, card["dev_name"]:"" ); + }); - if ( state_map["state"]:false == false ) - { - // call 'ifconfig <interface> up' here because it's not yet - // clear who configures the interfaces (fipvlan command itself?) - // -> see bnc #705171 (this applies also to installed system) - string cmd_ifup = sformat( "ifconfig %1 up", card["dev_name"]:"" ); - y2milestone( "Executing command: %1", cmd_ifup ); - SCR::Execute( .target.bash_output, cmd_ifup ); - - // ifconfig up always returns 0 -> no error message can be made - } - } ); - // call .probe.netcard again - netcards = (list<map>)SCR::Read(.probe.netcard); + // The 'fipvlan' command which is called in GetVlanInterfaces configures the interfaces itself, + // therefore it's not needed any longer to call 'ifconfig <if> up' here. + map vlan_info = GetVlanInterfaces( net_devices ); foreach ( map card, netcards, { - map state_map = card["resource", "link", 0]:$[]; map info_map = $[]; map <string, string> status_map = $[]; - string vlan_interface = ""; string fcoe_vlan_interface = ""; string dcb_capable = ""; + string dcb_default = ""; - // only call 'fipvlan <interface>' for configured interfaces - if ( state_map["state"]:false == true ) - { - vlan_interface = GetVlanInterface( card["dev_name"]:"" ); - } - if ( vlan_interface == "" ) + if ( vlan_info[card["dev_name"]:""]:"" == "" ) { // Interface down or FCoE not enabled on the switch - we can't do anything here. fcoe_vlan_interface = NOT_AVAILABLE; } else { - fcoe_vlan_interface = GetFcoeVlanInterface( card["dev_name"]:"", vlan_interface ); + fcoe_vlan_interface = GetFcoeVlanInterface( card["dev_name"]:"", vlan_info[card["dev_name"]:""]:"" ); if ( fcoe_vlan_interface != "" ) { @@ -682,7 +694,7 @@ } } dcb_capable = DCBCapable( card["dev_name"]:"" ); - + info_map = add( info_map, "dev_name", card["dev_name"]:""); // network card, e.g. eth3 if ( card["device"]:"" != "" ) { @@ -699,22 +711,34 @@ { // default for FCoE enable is yes info_map = add( info_map, "fcoe_enable", status_map["FCOE_ENABLE"]:"yes" ); // FCOE_ENABLE - // default for DCB required is yes unless the interface is not dcb capable - info_map = add( info_map, "dcb_required", status_map["DCB_REQUIRED"]:( (dcb_capable=="yes")?"yes":"no" ) ); - // default is to create /etc/fcoe/cfg-ethx file with VLAN device in name - // (e.g. cfg-eth3.200), set AUTO_VLAN to "no" then (see bnc #692403) - info_map = add( info_map, "auto_vlan", status_map["AUTO_VLAN"]:"no"); // AUTO_VLAN + + // exception for Broadcom cards: DCB_REQUIRED should be set to "no" (bnc #728658) + if ( (card["driver"]:"" != "bnx2x") && (dcb_capable == "yes") ) + { + dcb_default = "yes"; + } + else + { + dcb_default = "no"; + } + info_map = add( info_map, "dcb_required", status_map["DCB_REQUIRED"]:dcb_default ); + + // default is AUTO_VLAN="yes", create /etc/fcoe/cfg-ethx file without VLAN device in name + // (e.g. /etc/fcoe/cfg-eth3), see bnc #724563 + info_map = add( info_map, "auto_vlan", status_map["AUTO_VLAN"]:"yes"); // AUTO_VLAN } info_map = add( info_map, "dcb_capable", dcb_capable ); // DCB capable - info_map = add( info_map, "vlan_interface", vlan_interface ); // VLAN interface, e.g. 200 + info_map = add( info_map, "vlan_interface", vlan_info[card["dev_name"]:""]:"" ); // VLAN interface, e.g. 200 info_map = add( info_map, "cfg_file", status_map["cfg_device"]:"" ); // part of cfg-file name, e.g. eth3.200 network_interfaces = add( network_interfaces, info_map ); } ); + // sort the list of interfaces (eth0, eth1, eth2...) network_interfaces = sort( map a, map b, network_interfaces, { return ( a["dev_name"]:"" < b["dev_name"]:"" ); - } ); + } ); + return true; } @@ -769,7 +793,7 @@ boolean success = true; foreach ( map card, (list<map>)netcards, { - if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE && // FCoE VLAN is configured + if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE && // FCoE VLAN is configured card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED ) { y2milestone( "Writing /etc/sysconfig/network/ifcfg-%1", card["fcoe_vlan"]:"" ); @@ -778,18 +802,29 @@ SCR::Write(.network.value + card["fcoe_vlan"]:"" + "STARTMODE", "nfsroot" ); SCR::Write(.network.value + card["fcoe_vlan"]:"" + "ETHERDEVICE", card["dev_name"]:"" ); SCR::Write(.network.value + card["fcoe_vlan"]:"" + "USERCONTROL", "no" ); - y2milestone( "Writing /etc/sysconfig/network/ifcfg-%1", card["dev_name"]:"" ); + + string ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1", card["dev_name"]:"" ); + y2milestone( "Writing %1", ifcfg_file ); + // write /etc/sysconfig/network/ifcfg-<interface> (underlying interface), e.g. ifcfg-eth3 - SCR::Write(.network.value + card["dev_name"]:"" + "BOOTPROTO", "static" ); - SCR::Write(.network.value + card["dev_name"]:"" + "STARTMODE", "nfsroot" ); - SCR::Write(.network.value + card["dev_name"]:"" + "NAME", card["device"]:"" ); + if ( !FileUtils::Exists(ifcfg_file) ) + { + SCR::Write(.network.value + card["dev_name"]:"" + "BOOTPROTO", "static" ); + SCR::Write(.network.value + card["dev_name"]:"" + "STARTMODE", "nfsroot" ); + SCR::Write(.network.value + card["dev_name"]:"" + "NAME", card["device"]:"" ); + } + else + { + // don't overwrite BOOTPROTO !!! + SCR::Write(.network.value + card["dev_name"]:"" + "STARTMODE", "nfsroot" ); + } } } ); // This is very important- it flushes the cache, and stores the configuration on the disk success = SCR::Write( .network, nil ); if ( !success ) { - y2error( "Error writing /etc/sysconfig/network/ifcfg-<fcoe-interface>" ); + y2error( "Error writing /etc/sysconfig/network/ifcfg-files" ); } return success; } @@ -894,7 +929,7 @@ /* Progress stage 3/3 */ _("Detect network cards"), /* Progress stage 4/4 */ - _("Read /etc/fcoe/config") + _("Read /etc/fcoe/config" ) ], [ /* Progress step 1/3 */ _("Checking for installed packages..."), @@ -903,7 +938,7 @@ /* Progress step 3/3 */ _("Detecting network cards..."), /* Progress step 4/4 */ - _("Reading /etc/fcoe/config"), + _("Reading /etc/fcoe/config" ), /* Progress finished */ _("Finished") ], @@ -1020,8 +1055,7 @@ success = WriteCfgFiles(); if( !success ) Report::Error (_("Cannot write settings for FCoE interfaces. -For details, see /var/log/YaST2/y2log. -") ); +For details, see /var/log/YaST2/y2log.") ); if(PollAbort()) return false; Progress::NextStage(); @@ -1038,7 +1072,6 @@ if( !success ) Report::Error (_("Cannot write /etc/sysconfig/network/ifcfg-files.")); sleep(sl); - // adjust service start of lldpad and fcoe if(PollAbort()) return false; Progress::NextStage (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/complex.ycp new/yast2-fcoe-client-2.22.2/src/complex.ycp --- old/yast2-fcoe-client-2.22.1/src/complex.ycp 2011-11-23 11:40:47.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/src/complex.ycp 2012-01-18 14:03:58.000000000 +0100 @@ -54,11 +54,11 @@ y2milestone( "Aborting FCoE configuration" ); // revert start of 'fcoe' or 'lldpad' - if ( FcoeClient::fcoe_started ) + if ( FcoeClient::fcoe_started && !Service::Enabled( "boot.fcoe" ) ) { Service::Stop( "boot.fcoe" ); } - if ( FcoeClient::lldpad_started ) + if ( FcoeClient::lldpad_started && !Service::Enabled( "boot.lldpad" ) ) { Service::Stop( "boot.lldpad" ); } @@ -82,7 +82,12 @@ y2milestone( "Calling %1", command ); map output = (map)SCR::Execute( .target.bash_output, command ); y2milestone( "Output: %1", output ); - + if ( output["exit"]:255 != 0 ) + { + // text of an error popup + Popup::Error( sformat( _("Cannot remove the FCoE interface. +Command %1 failed."), command ) ); + } } ); FcoeClient::ResetRevertCommands(); // important during installation } @@ -236,6 +241,12 @@ UI::ChangeWidget( `id(`fcoe), `Value, card["fcoe_enable"]:"" ); UI::ChangeWidget( `id(`dcb), `Value, card["dcb_required"]:"" ); UI::ChangeWidget( `id(`auto), `Value, card["auto_vlan"]:"" ); + if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED ) + { + // don't allow to change AUTO_VLAN for a configured interface + // (would require new /etc/fcoe/cfg-file) + UI::ChangeWidget( `id(`auto), `Enabled, false ); + } // headline of the edit dialog - configuration of values for a certain network interface UI::ChangeWidget( `id(`heading), `Value, sformat( _("Configuration of Interface %1"), card["fcoe_vlan"]:"" ) ); } @@ -280,7 +291,6 @@ string command = ""; map output = $[]; - string vlan_interface = ""; string fcoe_vlan_interface = ""; map status_map = $[]; @@ -346,8 +356,8 @@ y2milestone( "Starting FCoE canceled" ); return nil; } - - // Get values and exchange list (table) entry + + // Get values and exchange list (table) entries fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", card["vlan_interface"]:"" ); if ( fcoe_vlan_interface != "" ) @@ -358,7 +368,10 @@ status_map = FcoeClient::GetFcoeStatus ( fcoe_vlan_interface, card["dev_name"]:"" ); // command to be able to revert the creation of FCoE VLAN interface in case of 'Cancel' - FcoeClient::AddRevertCommand( sformat("fcoeadm -d %1 && vconfig rem %1", fcoe_vlan_interface ) ); + // FcoeClient::AddRevertCommand( sformat("fcoeadm -d %1 && vconfig rem %2", status_map["cfg_device"]:"", fcoe_vlan_interface ) ); + // 'fcoeadm -d <if>/<if>.<vlan>' fails here, 'vconfig rem <if>.<vlan>' succeeds + // and removes the interface properly (tested on RC1) + FcoeClient::AddRevertCommand( sformat("vconfig rem %1", fcoe_vlan_interface ) ); } else { @@ -389,25 +402,35 @@ map output = $[]; string command = ""; // popup text: really remove FCoE VLAN interface - string popup_text = sformat( _("Do you really want to remove the FCoE VLAN device %1?"), + string popup_text = sformat( _("Do you really want to remove the FCoE interface %1?"), card["fcoe_vlan"]:"" ); if ( !Stage::initial() ) { // popup text continues - popup_text = popup_text + "\n" + _("Please note: The device won't be restored on 'Cancel'."); + popup_text = popup_text + "\n" + _("Attention: +Make sure the interface is not essential for a used device. +Removing it may result in an unusable system."); + } + else + { + // popup text continues + popup_text = popup_text + "\n" + _("Don't remove the interface if it's related +to an already activated multipath device."); } - // headline of a popup - boolean ret = Popup::YesNoHeadline( _("Removing FCoE VLAN Device"), - popup_text ); + boolean ret = Popup::AnyQuestion( Label::WarningMsg(), + popup_text, + Label::ContinueButton(), + Label::CancelButton(), + `focus_no ); // default: Cancel if ( ret == true ) { y2milestone( "Removing %1", card["fcoe_vlan"]:"" ); // call fcoeadm -d <fcoe_vlan> first (bnc #719443) - command = sformat( "fcoeadm -d %1", card["fcoe_vlan"]:"") ; + command = sformat( "fcoeadm -d %1", card["cfg_file"]:"") ; y2milestone( "Calling %1", command ); output = (map)SCR::Execute( .target.bash_output, command ); y2milestone( "Output: %1", output ); @@ -433,8 +456,9 @@ // set new values in global map network_interfaces card["fcoe_vlan"] = FcoeClient::NOT_CONFIGURED; card["fcoe_enable"] = "yes"; - card["dcb_required"] = (card["dcb_capable"]:""=="yes")?"yes":"no"; - card["auto_vlan"] = "no"; + // exception for Broadcom cards: DCB_REQUIRED should be set to "no" (bnc #728658) + card["dcb_required"] = ((card["driver"]:"" != "bnx2x") && (card["dcb_capable"]:""=="yes"))?"yes":"no"; + card["auto_vlan"] = "yes"; // default is "yes" (bnc #724563) card["cfg_file"] = ""; FcoeClient::SetModified( true ); @@ -450,7 +474,7 @@ } else { - Popup::Error( sformat( _("Removing of interface %1 failed."), card["fcoe_vlan"]:"") ); + Popup::Error( sformat( _("Removing of interface %1 failed"), card["fcoe_vlan"]:"") ); y2error( "Removing of interface %1 failed", card["fcoe_vlan"]:"" ); } } @@ -483,8 +507,7 @@ { // text of a warning popup Popup::Warning( _("DCB Required is set to \"yes\" but the -interface isn't DCB capable. -") ); +interface isn't DCB capable.") ); y2warning( "DCB_REQUIRED is set to yes but the interface isn't DCB capable" ); } } @@ -505,6 +528,14 @@ boolean lldpad_auto = (boolean)UI::QueryWidget( `id ("lldpad_startup_auto"), `Value ); + if ( fcoe_auto && !lldpad_auto ) + { + // text of an information (notify) popup + Popup::Notify( _( "Service 'fcoe' requires enabled service 'lldpad'. +Enabling start on boot of service 'lldpad'." ) ); + lldpad_auto = true; + } + FcoeClient::SetStartStatus( "lldpad", lldpad_auto ); y2milestone( "Setting auto start of service 'lldpad' to: %1", lldpad_auto ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/fcoe-client_finish.ycp new/yast2-fcoe-client-2.22.2/src/fcoe-client_finish.ycp --- old/yast2-fcoe-client-2.22.1/src/fcoe-client_finish.ycp 2011-12-21 14:32:54.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/src/fcoe-client_finish.ycp 2012-01-18 14:04:08.000000000 +0100 @@ -109,8 +109,9 @@ if ( start_services ) { y2milestone( "Enabling service start of fcoe and lldpad" ); - Service::Enable("boot.fcoe"); + // service lldpad has to be enabled first Service::Enable("boot.lldpad"); + Service::Enable("boot.fcoe"); } } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/inst_fcoe-client.ycp new/yast2-fcoe-client-2.22.2/src/inst_fcoe-client.ycp --- old/yast2-fcoe-client-2.22.1/src/inst_fcoe-client.ycp 2011-12-21 14:32:42.000000000 +0100 +++ new/yast2-fcoe-client-2.22.2/src/inst_fcoe-client.ycp 2012-01-18 14:04:29.000000000 +0100 @@ -101,9 +101,10 @@ // workflow not aborted if ( ret == `next ) { - // add package open-fcoe to the pool that is used by software proposal - y2milestone( "Adding package open-fcoe to pool" ); - PackagesProposal::AddResolvables( "fcoe", `package, ["open-fcoe"] ); + // add packages open-fcoe (requires lldpad) and yast2-fcoe-client + // to the pool that is used by software proposal + y2milestone( "Adding packages open-fcoe and yast2-fcoe-client to pool" ); + PackagesProposal::AddResolvables( "fcoe", `package, ["open-fcoe", "yast2-fcoe-client"] ); // write changes to config files y2milestone( "Writing FCoE config files"); FcoeClient::WriteFcoeConfig(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/wizards.ycp new/yast2-fcoe-client-2.22.2/src/wizards.ycp --- old/yast2-fcoe-client-2.22.1/src/wizards.ycp 2011-10-12 11:04:48.000000000 +0200 +++ new/yast2-fcoe-client-2.22.2/src/wizards.ycp 2012-01-18 14:02:58.000000000 +0100 @@ -172,7 +172,7 @@ Wizard::SetAbortButton(`abort, Label::CancelButton()); Wizard::HideBackButton(); - // TODO: rename icon to yast2-fcoe-client (yast2-theme package) + // TODO: rename icon to yast-fcoe (yast2-theme package) if (Mode::normal ()) Wizard::SetDesktopTitleAndIcon("fcoe-client"); else -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
