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 "gs@suse.com"
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 - gs@suse.de
+
+- 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 "
@@ -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 "
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 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 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: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org