Hello community, here is the log from the commit of package yast2-fcoe-client for openSUSE:Factory checked in at Tue Oct 11 17:07:44 CEST 2011.
-------- --- openSUSE:Factory/yast2-fcoe-client/yast2-fcoe-client.changes 2011-10-04 18:00:52.000000000 +0200 +++ /mounts/work_src_done/STABLE/yast2-fcoe-client/yast2-fcoe-client.changes 2011-10-11 13:14:49.000000000 +0200 @@ -1,0 +2,9 @@ +Tue Oct 11 13:04:16 CEST 2011 - [email protected] + +- Use ini agent to write /etc/fcoe/cfg-ethx files, + write /etc/sysconfig/network/ifcfg-file for underlying interface + (bnc #705610), + destroy FCoE interface before removing it (bnc #719443) +- V 2.21.9 + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- yast2-fcoe-client-2.21.8.tar.bz2 New: ---- yast2-fcoe-client-2.21.9.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-fcoe-client.spec ++++++ --- /var/tmp/diff_new_pack.PqcxCL/_old 2011-10-11 17:07:39.000000000 +0200 +++ /var/tmp/diff_new_pack.PqcxCL/_new 2011-10-11 17:07:39.000000000 +0200 @@ -19,22 +19,21 @@ Name: yast2-fcoe-client -Version: 2.21.8 +Version: 2.21.9 Release: 0 -License: GPL -Group: System/YaST BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: yast2-fcoe-client-%{version}.tar.bz2 -Prefix: /usr +Group: System/YaST +License: GPL-2.0 Requires: yast2 >= 2.21.22 BuildRequires: perl-XML-Writer update-desktop-files yast2 yast2-devtools yast2-testsuite -BuildArch: noarch +BuildArchitectures: noarch -Summary: Configuration of fcoe-client +Summary: YaST2 - Configuration of Fibre Channel over Ethernet %description This package contains the YaST2 component for the Fibre Channel over @@ -44,27 +43,28 @@ %setup -n yast2-fcoe-client-%{version} %build -%{prefix}/bin/y2tool y2autoconf -%{prefix}/bin/y2tool y2automake +%{_prefix}/bin/y2tool y2autoconf +%{_prefix}/bin/y2tool y2automake autoreconf --force --install export CFLAGS="$RPM_OPT_FLAGS -DNDEBUG" export CXXFLAGS="$RPM_OPT_FLAGS -DNDEBUG" %{?suse_update_config:%{suse_update_config -f}} -./configure --libdir=%{_libdir} --prefix=%{prefix} --mandir=%{_mandir} +./configure --libdir=%{_libdir} --prefix=%{_prefix} --mandir=%{_mandir} # V=1: verbose build in case we used AM_SILENT_RULES(yes) # so that RPM_OPT_FLAGS check works make %{?jobs:-j%jobs} V=1 %install make install DESTDIR="$RPM_BUILD_ROOT" -[ -e "%{prefix}/share/YaST2/data/devtools/NO_MAKE_CHECK" ] || Y2DIR="$RPM_BUILD_ROOT/usr/share/YaST2" make check DESTDIR="$RPM_BUILD_ROOT" -for f in `find $RPM_BUILD_ROOT/%{prefix}/share/applications/YaST2/ -name "*.desktop"` ; do +[ -e "%{_prefix}/share/YaST2/data/devtools/NO_MAKE_CHECK" ] || Y2DIR="$RPM_BUILD_ROOT/usr/share/YaST2" make check DESTDIR="$RPM_BUILD_ROOT" +for f in `find $RPM_BUILD_ROOT/%{_prefix}/share/applications/YaST2/ -name "*.desktop"` ; do d=${f##*/} %suse_update_desktop_file -d ycc_${d%.desktop} ${d%.desktop} done + %clean rm -rf "$RPM_BUILD_ROOT" @@ -76,9 +76,7 @@ /usr/share/YaST2/clients/fcoe-client_*.ycp /usr/share/YaST2/clients/inst_fcoe-client.ycp /usr/share/YaST2/modules/FcoeClient.* -%{prefix}/share/applications/YaST2/fcoe-client.desktop +%{_prefix}/share/applications/YaST2/fcoe-client.desktop %dir /usr/share/YaST2/scrconf /usr/share/YaST2/scrconf/*.scr -%doc %{prefix}/share/doc/packages/yast2-fcoe-client - -%changelog +%doc %{_prefix}/share/doc/packages/yast2-fcoe-client ++++++ yast2-fcoe-client-2.21.8.tar.bz2 -> yast2-fcoe-client-2.21.9.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/VERSION new/yast2-fcoe-client-2.21.9/VERSION --- old/yast2-fcoe-client-2.21.8/VERSION 2011-09-29 10:13:17.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/VERSION 2011-10-11 13:09:06.000000000 +0200 @@ -1 +1 @@ -2.21.8 +2.21.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/agents/fcoe_cfg-ethx.scr new/yast2-fcoe-client-2.21.9/agents/fcoe_cfg-ethx.scr --- old/yast2-fcoe-client-2.21.8/agents/fcoe_cfg-ethx.scr 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-fcoe-client-2.21.9/agents/fcoe_cfg-ethx.scr 2011-10-11 13:01:12.000000000 +0200 @@ -0,0 +1,39 @@ +/** + * File: fcoe_cfg-ethx.scr + * Summary: Agent for /etc/fcoe/cfg-* + * Access: read / write + * See: sysconfig.rpm + * + * General syntax: + * # comment0 + * VAR1=val1 # comment1 + * VAR2="val 2 #blah" # comment2 + * VAR3='val3 x #blah2' # comment3 + * + * + * <p>Reads/writes <tt>/etc/fcoe/cfg-*</tt>. + */ +.fcoe.cfg-ethx + +`ag_ini( + `IniAgent( [ "/etc/fcoe/cfg-*" ], + $[ + /* values at the top level, allow comments after value */ + "options" : [ "global_values", "comments_last" ], + /* empty lines, comments after value and whole-line comments */ + "comments" : [ "^[ \t]*$", "[ \t]*#.*$", "^[ \t]*#.*$" ], + /* matching rules */ + "params" : [ + /* VAR1="val1 'bal x" */ + $[ "match" : [ "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*)=\"([^\"`\\$]*)\"", "%s='%s'" ] ], + /* VAR1='val1 xxx" xx' */ + $[ "match" : [ "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*)='([^']*)'", "%s='%s'" ] ], + /* VAR1=val1 */ + $[ "match" : [ "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*)=([^ \t\"$`'\\#]*)", "%s='%s'" ] ], + ], + /* matching rules */ + "rewrite" : [ + [ "/etc/fcoe/cfg-(.*)", "/etc/fcoe/cfg-%s" ], + ], + ] +)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/agents/fcoe_config.scr new/yast2-fcoe-client-2.21.9/agents/fcoe_config.scr --- old/yast2-fcoe-client-2.21.8/agents/fcoe_config.scr 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/agents/fcoe_config.scr 2011-10-11 13:01:12.000000000 +0200 @@ -3,26 +3,23 @@ * fcoe_config.scr * Summary: * SCR Agent for reading/writing /etc/fcoe/config - * using the ini-agent + * using the sysconfig agent * Access: * read/write * Authors: * Gabriele Mohr <[email protected]> - * See: - * yast2-agent-ini/ini.html - * libscr * Example: * Read(.fcoe.config.USE_SYSLOG) * ("yes") ** - * Write(.fcoe.cfg-ethx.USE_SYSLOG, "no") + * Write(.fcoe.config.USE_SYSLOG, "no") * (true) * * * Read/Sets the values defined in <tt>/etc/fcoe/config</tt> * in an easy manner. */ -.fcoe +.fcoe.config `ag_ini( `SysConfigFile("/etc/fcoe/config") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/configure new/yast2-fcoe-client-2.21.9/configure --- old/yast2-fcoe-client-2.21.8/configure 2011-09-29 10:13:42.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/configure 2011-10-11 13:10:08.000000000 +0200 @@ -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.21.8. +# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.21.9. # # 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.21.8' -PACKAGE_STRING='yast2-fcoe-client 2.21.8' +PACKAGE_VERSION='2.21.9' +PACKAGE_STRING='yast2-fcoe-client 2.21.9' 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.21.8 to adapt to many kinds of systems. +\`configure' configures yast2-fcoe-client 2.21.9 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.21.8:";; + short | recursive ) echo "Configuration of yast2-fcoe-client 2.21.9:";; 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.21.8 +yast2-fcoe-client configure 2.21.9 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.21.8, which was +It was created by yast2-fcoe-client $as_me 2.21.9, 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.21.8' + VERSION='2.21.9' cat >>confdefs.h <<_ACEOF @@ -2450,7 +2450,7 @@ -VERSION="2.21.8" +VERSION="2.21.9" 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.21.8, which was +This file was extended by yast2-fcoe-client $as_me 2.21.9, 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.21.8 +yast2-fcoe-client config.status 2.21.9 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.21.8/configure.in new/yast2-fcoe-client-2.21.9/configure.in --- old/yast2-fcoe-client-2.21.8/configure.in 2011-09-29 10:13:39.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/configure.in 2011-10-11 13:10:05.000000000 +0200 @@ -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.21.8, http://bugs.opensuse.org/, yast2-fcoe-client) +AC_INIT(yast2-fcoe-client, 2.21.9, 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.21.8" +VERSION="2.21.9" RPMNAME="yast2-fcoe-client" MAINTAINER="Gabriele Mohr <[email protected]>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/FcoeClient.ycp new/yast2-fcoe-client-2.21.9/src/FcoeClient.ycp --- old/yast2-fcoe-client-2.21.8/src/FcoeClient.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/FcoeClient.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -45,6 +45,7 @@ import "Service"; import "NetworkService"; import "String"; +import "FileUtils"; /** * Prototypes @@ -117,7 +118,7 @@ } /** - * Set write_only flag (for autoinstalation). + * Set write_only flag (for autoinstallation). */ global void SetWriteOnly(boolean value) { write_only = value; @@ -167,7 +168,6 @@ global boolean lldpad_started = false; // service fcoe was started global boolean fcoe_started = false; // service lldpad was started -global string ifcfg_file = ""; // Settings: Define all variables needed for configuration of fcoe-client @@ -359,12 +359,12 @@ // if AUTO_VLAN is set to "yes" if ( netcard["auto_vlan"]:"no" == "yes" ) { - // set file name to cfg-<interface>, e.g. /etc/fcoe/eth3 + // set file name to cfg-<interface>, e.g. /etc/fcoe/cfg-eth3 file_name = sformat( "/etc/fcoe/cfg-%1", netcard["dev_name"]:"" ); } else { - // set file name to cfg-<vlan_device_name>, e.g. /etc/fcoe/eth3.200 + // set file name to cfg-<vlan_device_name>, e.g. /etc/fcoe/cfg-eth3.200 file_name = sformat( "/etc/fcoe/cfg-%1", vlan_device_name ); } @@ -396,7 +396,7 @@ } }); content = mergestring( lines, "\n" ); - y2milestone( "Writing content: %1", content ); + y2milestone( "Writing content: %1 to %2", content, file_name ); file_exists = SCR::Write( .target.string, file_name, content ); @@ -418,14 +418,15 @@ // // Get status of FCoE config from /etc/fcoe/cfg-<if>.<vlan> or /etc/fcoe/cfg-<if> // -global map <string, string> GetFcoeStatus( string vlan_device_name, map netcard ) +global map <string, string> GetFcoeStatus( string vlan_device_name, string device_name ) { map <string, string> status_map = $[]; string content = ""; boolean file_exists = false; string file_name = ""; + string device = vlan_device_name; - if ( vlan_device_name == "" ) + if ( vlan_device_name == "" || device_name == "" ) { y2error( "Interface not valid" ); return $[]; @@ -434,39 +435,36 @@ y2milestone( "VLAN channel %1 found", vlan_device_name ); file_name = sformat( "/etc/fcoe/cfg-%1", vlan_device_name ); - y2milestone( "Reading %1", file_name ); - content = (string)SCR::Read(.target.string, file_name); - if ( content == "" || content == nil ) + if ( !FileUtils::Exists( file_name ) ) { - // try to read /etc/fcoe/cfg-<interface> (interface was automatically created) - file_name = sformat( "/etc/fcoe/cfg-%1", netcard["dev_name"]:"" ); - y2milestone( "Reading %1", file_name ); - content = (string)SCR::Read(.target.string, file_name); + file_name = sformat( "/etc/fcoe/cfg-%1", device_name ); + + 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"), vlan_device_name) ); + return status_map; + } + device = device_name; } + // for debugging purpose, read only needed values later + list values = SCR::Dir( .fcoe.cfg-ethx.value + device ); + y2milestone( "Available values in %1: %2", file_name, values ); + + foreach( string var, ["FCOE_ENABLE", "DCB_REQUIRED", "AUTO_VLAN"], { + string value = (string)SCR::Read(.fcoe.cfg-ethx.value + device + var); + if ( value == nil ) + { + y2warning( "Cannot read %1", var ); + continue; + } + status_map = add( status_map, var, value ); + }); - if ( content != "" ) - { - list <string> lines = splitstring( content, "\n" ); - foreach( string line, (list<string>)lines, { - line = deletechars( line, " \t" ); - foreach( string var, ["FCOE_ENABLE", "DCB_REQUIRED", "AUTO_VLAN"], { - if ( String::StartsWith(line, var) ) - { - status_map = add( status_map, var, - deletechars( substring(line, size(var) + 1), "\"") ); - } - }); + status_map = add( status_map, "cfg_device", device ); - }); - status_map = add( status_map, "Filename", file_name ); - y2milestone( "Returning: %1", status_map ); - } - else - { - y2warning( "Cannot read /etc/fcoe/%1", file_name ); - Popup::Warning( sformat(_("Cannot read /etc/fcoe/cfg-file for %1"), vlan_device_name) ); - } + y2milestone( "Returning: %1", status_map ); return status_map; } @@ -613,16 +611,12 @@ // // dev_name device fcoe_vlan fcoe_enable dcb_required auto_vlan dcb_capable vlan_interface cfg_file -// eth3 Ethernet card ... eth3.200 yes/no yes/no yes/no yes/no 200 /etc/fcoe/cfg-eth3.200 +// eth3 Ethernet card ... eth3.200 yes/no yes/no yes/no yes/no 200 eth3.200 // // Detect network interface cards (hardware probe) and get status // global boolean DetectNetworkCards() { - string vlan_interface = ""; - string fcoe_vlan_interface = ""; - string dcb_capable = ""; - list <map> netcards = (list<map>)SCR::Read(.probe.netcard); y2milestone( "Detected netcards: %1", netcards ); @@ -652,8 +646,11 @@ map state_map = card["resource", "link", 0]:$[]; map info_map = $[]; map <string, string> status_map = $[]; - - // only call fipvlan <interface> for configured interfaces + string vlan_interface = ""; + string fcoe_vlan_interface = ""; + string dcb_capable = ""; + + // only call 'fipvlan <interface>' for configured interfaces if ( state_map["state"]:false == true ) { vlan_interface = GetVlanInterface( card["dev_name"]:"" ); @@ -669,7 +666,7 @@ if ( fcoe_vlan_interface != "" ) { - status_map = GetFcoeStatus( fcoe_vlan_interface, card ); + status_map = GetFcoeStatus( fcoe_vlan_interface, card["dev_name"]:"" ); } else { @@ -703,7 +700,7 @@ } 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, "cfg_file", status_map["Filename"]:"" ); // cfg file name, e.g. /etc/fcoe/cfg-eth3.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 ); } ); @@ -719,16 +716,16 @@ // global boolean ReadFcoeConfig() { - list <string> options = (list<string>) SCR::Dir(.fcoe); + list <string> options = (list<string>) SCR::Dir(.fcoe.config); y2milestone( "List of options in /etc/fcoe/config: %1", options ); if ( options == [] || options == nil ) return false; - string debug_val = (string)SCR::Read(add(.fcoe, "DEBUG")); + string debug_val = (string)SCR::Read(add(.fcoe.config, "DEBUG")); fcoe_general_config = add( fcoe_general_config, "DEBUG", debug_val ); - string syslog_val = (string)SCR::Read(add(.fcoe, "USE_SYSLOG")); + string syslog_val = (string)SCR::Read(add(.fcoe.config, "USE_SYSLOG")); fcoe_general_config = add( fcoe_general_config, "USE_SYSLOG", syslog_val ); y2milestone( "/etc/fcoe/config read: DEBUG: %1, USE_SYSLOG: %2", debug_val, syslog_val ); @@ -737,82 +734,104 @@ } // -// Write /etc/fcoe/config using SCR agent +// Write /etc/fcoe/config using fcoe_config.scr // global boolean WriteFcoeConfig() { - boolean ret = true; - - boolean success = (boolean)SCR::Write(add(.fcoe, "DEBUG"), GetFcoeConfig()["DEBUG"]:"" ); + boolean success = (boolean)SCR::Write(add(.fcoe.config, "DEBUG"), GetFcoeConfig()["DEBUG"]:"" ); if ( !success ) - ret = false; + return false; - success = (boolean)SCR::Write(add(.fcoe, "USE_SYSLOG"), GetFcoeConfig()["USE_SYSLOG"]:"" ); + success = (boolean)SCR::Write(add(.fcoe.config, "USE_SYSLOG"), GetFcoeConfig()["USE_SYSLOG"]:"" ); if ( !success ) - ret = false; + return false; // This is very important- it flushes the cache, and stores the configuration on the disk - SCR::Write(.fcoe, nil); + success = SCR::Write(.fcoe.config, nil); - return ret; + return success; } // -// Write /etc/fcoe/cfg-ethx files +// Write ifcfg-files in /etc/sysconfig/network (for FCoE VLAN interface and underlying interface) +// using network.scr from yast2/library/network // -global boolean WriteCfgFiles() +global boolean WriteSysconfigFiles( ) { list <map> netcards = GetNetworkCards(); boolean success = true; - string command = ""; - map output = $[]; - - y2milestone( "Writing /etc/fcoe/cfg-ethx files" ); + + foreach ( map card, (list<map>)netcards, { + 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"]:"" ); + // write /etc/sysconfig/network/ifcfg-<fcoe-vlan-interface>, e.g. ifcfg-eth3.200 + SCR::Write(.network.value + card["fcoe_vlan"]:"" + "BOOTPROTO", "static" ); + 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"]:"" ); + // 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"]:"" ); + } + } ); + // 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>" ); + } + return success; +} + +// +// Write /etc/fcoe/cfg-ethx files using fcoe_cfg-ethx.scr +// +global boolean WriteCfgFiles() +{ + list <map> netcards = GetNetworkCards(); + + boolean success = false; foreach ( map card, (list<map>)netcards, { if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE && // FCoE VLAN is configured - card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED && Modified() ) // and data are modified + card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED ) { - string content = (string)SCR::Read( .target.string, card["cfg_file"]:"" ); - y2debug( "Original content of %1: %2", card["cfg_file"]:"", content ); - - list <string> lines = (list<string>)splitstring( content, "\n" ); - lines = maplist( string line, lines, { - if ( !String::StartsWith( line, "#" ) ) line = deletechars( line, " \t" ); - - if ( String::StartsWith( line, "FCOE_ENABLE" ) ) - { - return sformat( "FCOE_ENABLE=\"%1\"", card["fcoe_enable"]:"no" ); - } - else if ( String::StartsWith( line, "DCB_REQUIRED" ) ) - { - return sformat( "DCB_REQUIRED=\"%1\"", card["dcb_required"]:"no" ); - } - else if ( String::StartsWith( line, "AUTO_VLAN" ) ) - { - return sformat( "AUTO_VLAN=\"%1\"", card["auto_vlan"]:"no" ); - } - else - { - return line; - } - }); - content = mergestring( lines, "\n" ); - y2milestone( "Writing content: %1", content ); + string command = ""; + map output = $[]; - boolean ret = SCR::Write( .target.string, card["cfg_file"]:"", content ); - if ( !ret ) + y2milestone( "Writing /etc/fcoe/cfg-%1", card["cfg_file"]:"" ); + success = SCR::Write(.fcoe.cfg-ethx.value + card["cfg_file"]:"" + "FCOE_ENABLE", card[ "fcoe_enable"]:"no" ); + if ( !success ) { - success = ret; - y2error( "Cannot write %1", card["cfg_file"]:"" ); + y2error( "Writing FCOE_ENABLE=%1 failed", card[ "fcoe_enable"]:"no" ); } - else + success = SCR::Write(.fcoe.cfg-ethx.value + card["cfg_file"]:"" + "DCB_REQUIRED", card["dcb_required"]:"no" ); + if ( !success ) + { + y2error( "Writing DCB_REQUIRED=%1 failed", card["dcb_required"]:"no" ); + } + success = SCR::Write(.fcoe.cfg-ethx.value + card["cfg_file"]:"" + "AUTO_VLAN", card["auto_vlan"]:"no" ); + if ( !success ) { - y2milestone( "%1 written", card["cfg_file"]:"" ); + y2error( "Writing AUTO_VLAN=%1 failed", card["auto_vlan"]:"no" ); } - // enable DCB app fcoe (app:0) - if ( card["dcb_required"]:"no" == "yes" ) + if ( card["dcb_required"]:"no" == "yes" ) { + // enable DCB on the interface + command = sformat( "dcbtool sc %1 dcb on", card["dev_name"]:"" ); + y2milestone( "Executing command: %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); + if ( output["exit"]:255 != 0 ) + { + Popup::Error( sformat( _("Command: %1 failed"), command ) ); + y2error( "Command: %1 failed", command); + } + // enable App:FCoE on the interface command = sformat( "dcbtool sc %1 app:0 e:1 a:1 w:1", card["dev_name"]:"" ); y2milestone( "Executing command: %1", command ); @@ -826,18 +845,20 @@ } } } ); + // This is very important- it flushes the cache, and stores the configuration on the disk + success = SCR::Write( .fcoe.cfg-ethx, nil ); return success; } +// restart service fcoe global boolean RestartServiceFcoe() { boolean ret = true; - if ( FcoeClient::Modified() ) - { - y2milestone( "Restarting fcoe"); - ret = Service::Restart("boot.fcoe"); - } + + y2milestone( "Restarting fcoe"); + ret = Service::Restart("boot.fcoe"); + return ret; } @@ -994,13 +1015,19 @@ if( !success ) Report::Error (_("Cannot write settings for FCoE interfaces. For details see /var/log/YaST2/y2log") ); - // restart fcoe to enable changes if(PollAbort()) return false; Progress::NextStage(); + // restart fcoe to enable changes success = RestartServiceFcoe(); /* Error message */ - if( !success ) Report::Error (_("/etc/init.d/fcoe restart failed.")); + if( !success ) Report::Error (_("Restarting of service fcoe failed.")); + sleep(sl); + + // write ifcfg-files in /etc/sysconfig/network + success = WriteSysconfigFiles(); + /* Error message */ + if( !success ) Report::Error (_("Cannot write /etc/sysconfig/network/ifcfg-files.")); sleep(sl); // adjust service start of lldpad and fcoe diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/complex.ycp new/yast2-fcoe-client-2.21.9/src/complex.ycp --- old/yast2-fcoe-client-2.21.8/src/complex.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/complex.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -33,6 +33,7 @@ import "Label"; import "Popup"; import "Wizard"; +import "Wizard_hw"; import "Confirm"; import "FcoeClient"; import "Service"; @@ -283,22 +284,20 @@ string vlan_interface = ""; string fcoe_vlan_interface = ""; map status_map = $[]; - boolean create_ifcfg = true; - FcoeClient::ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1\.%2", dev_name, card["vlan_interface"]:"" ); - - if ( Stage::initial() ) // first stage of installation - create and start FCoE VLAN interface - { - // headline of a popup: creating and starting Fibre Channel over Ethernet - boolean ret = Popup::YesNoHeadline( _("Creating and starting FCoE on detected VLAN device"), - // question to the user: really create and start FCoE - sformat( _("Do you really want to create a FCoE network + string ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1\.%2", dev_name, card["vlan_interface"]:"" ); + + // headline of a popup: creating and starting Fibre Channel over Ethernet + boolean ret = Popup::YesNoHeadline( _("Creating and starting FCoE on detected VLAN device"), + // question to the user: really create and start FCoE + sformat( _("Do you really want to create a FCoE network interface for discovered FCoE VLAN interface on %1 and start the FCoE initiator?"), dev_name ) ); - if ( ret == true ) + if ( ret == true ) + { + if ( Stage::initial() ) // first stage of installation - create and start FCoE VLAN interface { - // create and start FCoE e.g. with 'fipvlan -c -s eth3' - // revert this (in case of 'Abort') with 'vconfig rem eth3.200' + // create and start FCoE e.g. 'fipvlan -c -s eth3' command = sformat( "fipvlan -c -s %1", dev_name ); y2milestone( "Executing command: %1", command ); output = (map)SCR::Execute( .target.bash_output, command ); @@ -311,43 +310,25 @@ return nil; } } - else - { - y2milestone( "Creating FCoE VLAN interface canceled" ); - return nil; - } - } - else // installed system - if VLAN already exists only start FCoE - { - // headline of a popup: starting Fibre Channel over Ethernet - boolean ret = Popup::YesNoHeadline( _("Starting FCoE on detected VLAN device"), - // question to the user: really start FCoE - sformat( _("Do you really want to start FCoE initiator -on discovered FCoE VLAN interface on %1?"), dev_name ) ); - if ( ret == true ) + else // installed system - if VLAN already exists only start FCoE { - // if /etc/sysconfig/network/ifcfg-<vlan-interface> already exists - // call 'ifup' for the interface (creates /proc/net/vlan/<vlan-interface>) - if ( FileUtils::Exists( FcoeClient::ifcfg_file ) ) + // create and start FCoE + command = sformat( "fipvlan -c -s %1", dev_name ); + + // if /etc/sysconfig/network/ifcfg-<if>.<vlan> already exists + // call 'ifup' for the interface (creates /proc/net/vlan/<if>.<vlan>) + if ( FileUtils::Exists( ifcfg_file ) ) { - command = sformat( "ifup %1\.%2", dev_name, card["vlan_interface"]:"" ); - y2milestone( "Executing command: %1", command ); - output = (map)SCR::Execute( .target.bash_output, command ); + string cmd_ifup = sformat( "ifup %1\.%2", dev_name, card["vlan_interface"]:"" ); + y2milestone( "Executing command: %1", cmd_ifup ); + output = (map)SCR::Execute( .target.bash_output, cmd_ifup ); y2milestone( "Output: %1", output ); if ( output["exit"]:255 == 0 ) { - // start FCoE + // only start FCoE command = sformat( "fipvlan -s %1", dev_name ); } - else - { - command = sformat( "fipvlan -c -s %1", dev_name ); // create and start FCoE - } - } - else - { - command = sformat( "fipvlan -c -s %1", dev_name ); } y2milestone( "Executing command: %1", command ); @@ -360,45 +341,29 @@ return nil; } } - else - { - y2milestone( "Starting FCoE canceled" ); - return nil; - } } + else + { + y2milestone( "Starting FCoE canceled" ); + return nil; + } + + // Get values and exchange list (table) entry + fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", card["vlan_interface"]:"" ); - // Get new status and exchange list (table) entry - vlan_interface = FcoeClient::GetVlanInterface( card["dev_name"]:"" ); - if ( vlan_interface == "" ) + if ( fcoe_vlan_interface != "" ) { - fcoe_vlan_interface = FcoeClient::NOT_AVAILABLE; + y2milestone( "FCoE VLAN interface %1 created/started", fcoe_vlan_interface ); + // write config for FCoE VLAN interface + FcoeClient::CreateFcoeConfig( fcoe_vlan_interface, card ); + 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 ) ); } else { - fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", vlan_interface ); - - if ( fcoe_vlan_interface != "" ) - { - y2milestone( "FCoE VLAN interface %1 created/started", fcoe_vlan_interface ); - FcoeClient::CreateFcoeConfig( fcoe_vlan_interface, card ); - status_map = FcoeClient::GetFcoeStatus ( fcoe_vlan_interface, card ); - // store command to be able to revert the creation of FCoE VLAN interface in case of 'Abort' - // (also if only 'fipvlan -s <interface>' is called) - FcoeClient::AddRevertCommand( sformat("vconfig rem %1", fcoe_vlan_interface ) ); - if ( create_ifcfg ) - { - string config = sformat( "BOOTPROTO=\"static\"\nSTARTMODE=\"nfsroot\" -ETHERDEVICE=\"%1\"\nUSERCONTROL=\"no\"\n", dev_name ); - FcoeClient::ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1", fcoe_vlan_interface ); - SCR::Write(.target.string, FcoeClient::ifcfg_file, config); - y2milestone( "Writing config: %1 to %2", config, FcoeClient::ifcfg_file ); - FcoeClient::AddRevertCommand( sformat( "rm %1", FcoeClient::ifcfg_file ) ); - } - } - else - { - fcoe_vlan_interface = FcoeClient::NOT_CONFIGURED; - } + fcoe_vlan_interface = FcoeClient::NOT_CONFIGURED; } // set new values in global map network_interfaces @@ -406,7 +371,7 @@ card["fcoe_enable"] = status_map["FCOE_ENABLE"]:""; card["dcb_required"] = status_map["DCB_REQUIRED"]:""; card["auto_vlan"] = status_map["AUTO_VLAN"]:""; - card["cfg_file"] = status_map["Filename"]:""; + card["cfg_file"] = status_map["cfg_device"]:""; FcoeClient::SetModified( true ); FcoeClient::SetNetworkCardsValue( FcoeClient::current_card, card ); @@ -441,45 +406,59 @@ if ( ret == true ) { y2milestone( "Removing %1", card["fcoe_vlan"]:"" ); - - command = sformat( "vconfig rem %1", card["fcoe_vlan"]:"") ; + + // call fcoeadm -d <fcoe_vlan> first (bnc #719443) + command = sformat( "fcoeadm -d %1", card["fcoe_vlan"]:"") ; y2milestone( "Calling %1", command ); output = (map)SCR::Execute( .target.bash_output, command ); y2milestone( "Output: %1", output ); if ( output["exit"]:255 == 0 ) { - command = sformat( "rm %1", card["cfg_file"]:"" ); - y2milestone( "Calling %1", command ); - output = (map)SCR::Execute( .target.bash_output, command ); - y2milestone( "Output: %1", output ); - command = sformat( "rm /etc/sysconfig/network/ifcfg-%1", card["fcoe_vlan"]:"" ); + command = sformat( "vconfig rem %1", card["fcoe_vlan"]:"") ; y2milestone( "Calling %1", command ); output = (map)SCR::Execute( .target.bash_output, command ); y2milestone( "Output: %1", output ); + + if ( output["exit"]:255 == 0 ) + { + command = sformat( "rm /etc/fcoe/cfg-%1", card["cfg_file"]:"" ); + y2milestone( "Calling %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); + command = sformat( "rm /etc/sysconfig/network/ifcfg-%1", card["fcoe_vlan"]:"" ); + y2milestone( "Calling %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); - // set new values in global map network_interfaces - card["fcoe_vlan"] = FcoeClient::NOT_CONFIGURED; - card["fcoe_enable"] = ""; - card["dcb_required"] = ""; - card["auto_vlan"] = ""; - card["cfg_file"] = ""; - FcoeClient::SetModified( true ); + // set new values in global map network_interfaces + card["fcoe_vlan"] = FcoeClient::NOT_CONFIGURED; + card["fcoe_enable"] = ""; + card["dcb_required"] = ""; + card["auto_vlan"] = ""; + card["cfg_file"] = ""; + FcoeClient::SetModified( true ); - FcoeClient::SetNetworkCardsValue( FcoeClient::current_card, card ); - y2milestone( "Current network interfaces: %1", FcoeClient::GetNetworkCards() ); + FcoeClient::SetNetworkCardsValue( FcoeClient::current_card, card ); + y2milestone( "Current network interfaces: %1", FcoeClient::GetNetworkCards() ); - // replace values in table - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 2), card["fcoe_vlan"]:"" ); - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 3), card["fcoe_enable"]:"" ); - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 4), card["dcb_required"]:"" ); - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 5), card["auto_vlan"]:"" ); - AdjustButtons(); + // replace values in table + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 2), card["fcoe_vlan"]:"" ); + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 3), card["fcoe_enable"]:"" ); + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 4), card["dcb_required"]:"" ); + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 5), card["auto_vlan"]:"" ); + AdjustButtons(); + } + else + { + Popup::Error( sformat( _("Removing of interface %1 failed"), card["fcoe_vlan"]:"") ); + y2error( "Removing of interface %1 failed", card["fcoe_vlan"]:"" ); + } } else { - Popup::Error( sformat( _("Removing of interface %1 failed"), card["fcoe_vlan"]:"") ); - y2error( "Removing of interface %1 failed", card["fcoe_vlan"]:"" ); + Popup::Error( sformat( _("Destroying interface %1 failed."), card["fcoe_vlan"]:"") ); + y2error( "Destroying interface %1 failed", card["fcoe_vlan"]:"" ); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/dialogs.ycp new/yast2-fcoe-client-2.21.9/src/dialogs.ycp --- old/yast2-fcoe-client-2.21.8/src/dialogs.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/dialogs.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -42,9 +42,11 @@ term items_fcoe = `VBox( `VSpacing (0.4), `Left (`RadioButton (`id ("fcoe_startup_auto"), `opt (`notify), - "When Booting")), + // radio button: start service on boot + _("When Booting"))), `Left (`RadioButton (`id ("fcoe_startup_manual"), `opt (`notify), - "Manually") + // radio button: start service manually + _("Manually")) ), `VSpacing (0.4) ); @@ -52,9 +54,11 @@ term items_lldpad = `VBox( `VSpacing (0.4), `Left (`RadioButton (`id ("lldpad_startup_auto"), `opt (`notify), - "When Booting")), + // radio button: start service on boot + _("When Booting"))), `Left (`RadioButton (`id ("lldpad_startup_manual"), `opt (`notify), - "Manually") + // radio button: start service manually + _("Manually")) ), `VSpacing (0.4) ); @@ -71,17 +75,20 @@ `Frame( (""), `MarginBox( 10, 2, `VBox( - `ComboBox( `id(`fcoe), _("FCoE Enable"), + // combo box label: enable FCoE (yes/no) + `ComboBox( `id(`fcoe), _("&FCoE Enable"), [`item(`id("yes"), "yes" ), `item(`id("no"), "no", true ) ] ), `VSpacing (1), - `ComboBox( `id(`dcb), `opt (`notify, `immediate), _("DCB Required"), + // combo box label: require DCB (yes/no) + `ComboBox( `id(`dcb), `opt (`notify), _("&DCB Required"), [`item(`id("yes"), "yes" ), `item(`id("no"), "no", true ) ] ), `VSpacing (1), - `ComboBox( `id(`auto), _("AUTO_VLAN"), + // combo box label: AUTO_VLAN setting (yes/no) + `ComboBox( `id(`auto), _("&AUTO_VLAN"), [`item(`id("yes"), "yes" ), `item(`id("no"), "no", true ) ] ) @@ -150,16 +157,16 @@ `VBox( `VSpacing(2.0), `Frame ( - // Frame label - configuration settings of FCoE + // frame label - configuration settings of FCoE _("Configuration Settings"), `VBox ( - // ComboBox label + // combo box label `Left(`ComboBox(`id("debug"), _("&Debug"), [`item(`id("yes"), "yes" ), `item(`id("no"), "no", true ) ]) ), - // ComboBox label + // combo box label `Left(`ComboBox(`id("syslog"), _("&Use syslog"), [`item(`id("yes"), "yes", true ), `item(`id("no"), "no" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/fcoe-client_auto.ycp new/yast2-fcoe-client-2.21.9/src/fcoe-client_auto.ycp --- old/yast2-fcoe-client-2.21.8/src/fcoe-client_auto.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/fcoe-client_auto.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -160,15 +160,16 @@ if ( card["fcoe_vlan"]:"" == FcoeClient::NOT_CONFIGURED ) { + command = sformat( "fipvlan -c -s %1", card["dev_name"]:"" ); ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1\.%2", card["dev_name"]:"", card["vlan_interface"]:"" ); // if /etc/sysconfig/network/ifcfg-<vlan-interface> already exists // call 'ifup' for the interface (creates /proc/net/vlan/<vlan-interface>) if ( FileUtils::Exists( ifcfg_file ) ) { - command = sformat( "ifup %1\.%2", card["dev_name"]:"", card["vlan_interface"]:"" ); - y2milestone( "Executing command: %1", command ); - output = (map)SCR::Execute( .target.bash_output, command ); + string cmd_ifup = sformat( "ifup %1\.%2", card["dev_name"]:"", card["vlan_interface"]:"" ); + y2milestone( "Executing command: %1", cmd_ifup ); + output = (map)SCR::Execute( .target.bash_output, cmd_ifup ); y2milestone( "Output: %1", output ); if ( output["exit"]:255 == 0 ) @@ -177,13 +178,10 @@ command = sformat( "fipvlan -s %1", card["dev_name"]:"" ); } } - else // create VLAN interface and start FCoE - { - command = sformat( "fipvlan -c -s %1", card["dev_name"]:"" ); - y2milestone( "Executing command: %1", command ); - output = (map)SCR::Execute( .target.bash_output, command ); - y2milestone( "Output: %1", output ); - } + + y2milestone( "Executing command: %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); if ( output["exit"]:255 != 0 ) { @@ -191,32 +189,25 @@ } else // get FCoE VLAN interface { - vlan_interface = FcoeClient::GetVlanInterface( card["dev_name"]:"" ); - if ( vlan_interface == "" ) + fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", + card["vlan_interface"]:"" ); + if ( fcoe_vlan_interface != "" ) { - y2error( "VLAN interface not available for %1.", card["dev_name"]:"" ); + y2milestone( "FCoE VLAN interface %1 created/started", fcoe_vlan_interface ); + // create /etc/fcoe/ethx file and get values + FcoeClient::CreateFcoeConfig( fcoe_vlan_interface, card ); + status_map = FcoeClient::GetFcoeStatus( fcoe_vlan_interface, card["dev_name"]:"" ); + // apply modified data + detected_netcards[ index, "fcoe_vlan"] = fcoe_vlan_interface; + detected_netcards[ index, "cfg_file"] = status_map["cfg_device"]:""; + detected_netcards[ index, "fcoe_enable"] = status_map["FCOE_ENABLE"]:""; + detected_netcards[ index, "dcb_required"] = status_map["DCB_REQUIRED"]:""; } else - { - fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", - vlan_interface ); - if ( fcoe_vlan_interface != "" ) - { - y2milestone( "FCoE VLAN interface %1 created/started", fcoe_vlan_interface ); - // create /etc/fcoe/ethx file and get values - FcoeClient::CreateFcoeConfig( fcoe_vlan_interface, card ); - status_map = FcoeClient::GetFcoeStatus( fcoe_vlan_interface, card ); - // apply modified data - detected_netcards[ index, "fcoe_vlan"] = fcoe_vlan_interface; - detected_netcards[ index, "cfg_file"] = status_map["Filename"]:""; - detected_netcards[ index, "fcoe_enable"] = status_map["FCOE_ENABLE"]:""; - detected_netcards[ index, "dcb_required"] = status_map["DCB_REQUIRED"]:""; - } - else - { - y2error( "FCoE VLAN interface not configured for %1", card["dev_name"]:"" ); - } + { + y2error( "FCoE VLAN interface not configured for %1", card["dev_name"]:"" ); } + } } index = index + 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/fcoe-client_finish.ycp new/yast2-fcoe-client-2.21.9/src/fcoe-client_finish.ycp --- old/yast2-fcoe-client-2.21.8/src/fcoe-client_finish.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/fcoe-client_finish.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -48,27 +48,41 @@ { boolean start_services = false; string command = ""; - y2milestone( "Copying files /etc/fcoe/* to destination" ); - - // copy fcoe config files to destdir - WFM::Execute (.local.bash,"test -d /etc/fcoe/ && mkdir -p '" + String::Quote(Installation::destdir) + "/etc/fcoe' && cp -a /etc/fcoe/* '" + String::Quote(Installation::destdir) + "/etc/fcoe/'"); - - // copy sysconfig file - command = sformat ( "cp -a %1 '%2/etc/sysconfig/network'", FcoeClient::ifcfg_file, - String::Quote(Installation::destdir) ); - y2milestone( "Executing command: %1", command ); - - WFM::Execute (.local.bash, command ); - - // only enable services if any FCoE VLAN interface is enabled list <map> netcards = FcoeClient::GetNetworkCards(); + if ( netcards != [] ) + { + y2milestone( "Copying files /etc/fcoe/* to destination" ); + // copy fcoe config files to destdir + WFM::Execute (.local.bash,"test -d /etc/fcoe/ && mkdir -p '" + String::Quote(Installation::destdir) + "/etc/fcoe' && cp -a /etc/fcoe/* '" + String::Quote(Installation::destdir) + "/etc/fcoe/'"); + } + else + { + y2milestone( "Nothing to do" ); + } + foreach ( map card, netcards, { + string command = ""; + string file_name = ""; if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE && card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED ) { // FCoE VLAN interface is configured -> start services start_services = true; + + // copy sysconfig files + file_name = sformat( "/etc/sysconfig/network/ifcfg-%1\.%2", + card["dev_name"]:"", card["vlan_interface"]:"" ); + command = sformat ( "cp -a %1 '%2/etc/sysconfig/network'", file_name, + String::Quote(Installation::destdir) ); + y2milestone( "Executing command: %1", command ); + WFM::Execute (.local.bash, command ); + + file_name = sformat( "/etc/sysconfig/network/ifcfg-%1", card["dev_name"]:"" ); + command = sformat ( "cp -a %1 '%2/etc/sysconfig/network'", file_name, + String::Quote(Installation::destdir) ); + y2milestone( "Executing command: %1", command ); + WFM::Execute (.local.bash, command ); } } ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/inst_fcoe-client.ycp new/yast2-fcoe-client-2.21.9/src/inst_fcoe-client.ycp --- old/yast2-fcoe-client-2.21.8/src/inst_fcoe-client.ycp 2011-09-29 10:11:07.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/inst_fcoe-client.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -85,12 +85,14 @@ y2milestone( "Adding package open-fcoe to pool" ); PackagesProposal::AddResolvables( "fcoe", `package, ["open-fcoe"] ); // write changes to config files - y2milestone( "Writing config files"); + y2milestone( "Writing FCoE config files"); FcoeClient::WriteFcoeConfig(); FcoeClient::WriteCfgFiles(); // restart fcoemon y2milestone( "Restarting FCoE" ); FcoeClient::RestartServiceFcoe(); + y2milestone( "Writing sysconfig files" ); + FcoeClient::WriteSysconfigFiles(); // enable start of services y2milestone( "Enabling service start of fcoe and lldpad" ); FcoeClient::SetStartStatus( "fcoe", true ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.8/src/wizards.ycp new/yast2-fcoe-client-2.21.9/src/wizards.ycp --- old/yast2-fcoe-client-2.21.8/src/wizards.ycp 2011-09-29 10:19:22.000000000 +0200 +++ new/yast2-fcoe-client-2.21.9/src/wizards.ycp 2011-10-11 13:02:24.000000000 +0200 @@ -30,7 +30,6 @@ textdomain "fcoe-client"; - import "Mode"; import "Sequencer"; import "Wizard"; import "CWM"; @@ -173,10 +172,7 @@ Wizard::HideBackButton(); // TODO: rename icon to yast2-fcoe-client (yast2-theme package) - if (Mode::normal ()) - Wizard::SetDesktopTitleAndIcon("fcoe-client"); - else - Wizard::SetTitleIcon("fcoe"); + Wizard::SetTitleIcon("fcoe"); return CWM::Run (w, $[`abort : ReallyAbort]); } @@ -235,10 +231,6 @@ ]; Wizard::CreateDialog(); - if (Mode::normal ()) - Wizard::SetDesktopTitleAndIcon("fcoe-client"); - else - Wizard::SetTitleIcon("fcoe"); any ret = Sequencer::Run(aliases, sequence); @@ -275,10 +267,6 @@ ]; Wizard::CreateDialog(); - if (Mode::normal ()) - Wizard::SetDesktopTitleAndIcon("fcoe-client"); - else - Wizard::SetTitleIcon("fcoe"); any ret = Sequencer::Run(aliases, sequence); continue with "q"... Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
