Hello community, here is the log from the commit of package yast2-fcoe-client for openSUSE:Factory checked in at Thu Jun 9 09:37:52 CEST 2011.
-------- --- yast2-fcoe-client/yast2-fcoe-client.changes 2011-05-19 11:39:21.000000000 +0200 +++ /mounts/work_src_done/STABLE/yast2-fcoe-client/yast2-fcoe-client.changes 2011-06-07 13:33:21.000000000 +0200 @@ -1,0 +2,10 @@ +Thu May 26 14:24:19 CEST 2011 - [email protected] + +- Create VLAN interface and start FCoE during installation, only + start FCoE in installed system (if VLAN interface exists) +- 'DCB capable' is last column in table of interfaces +- inst_fcoe-client.ycp and fcoe-client_finish.ycp added (needed + for installation workflow) +- V 2.21.2 + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- yast2-fcoe-client-2.21.1.tar.bz2 New: ---- yast2-fcoe-client-2.21.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-fcoe-client.spec ++++++ --- /var/tmp/diff_new_pack.fj4HOl/_old 2011-06-09 09:35:35.000000000 +0200 +++ /var/tmp/diff_new_pack.fj4HOl/_new 2011-06-09 09:35:35.000000000 +0200 @@ -19,12 +19,12 @@ Name: yast2-fcoe-client -Version: 2.21.1 +Version: 2.21.2 Release: 1 License: GPL Group: System/YaST BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: yast2-fcoe-client-2.21.1.tar.bz2 +Source0: yast2-fcoe-client-2.21.2.tar.bz2 Prefix: /usr @@ -40,7 +40,7 @@ Ethernet (FCoE) configuration. %prep -%setup -n yast2-fcoe-client-2.21.1 +%setup -n yast2-fcoe-client-2.21.2 %build %{prefix}/bin/y2tool y2autoconf @@ -73,10 +73,10 @@ /usr/share/YaST2/include/fcoe-client/* /usr/share/YaST2/clients/fcoe-client.ycp /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 %dir /usr/share/YaST2/scrconf /usr/share/YaST2/scrconf/*.scr %doc %{prefix}/share/doc/packages/yast2-fcoe-client - %changelog ++++++ yast2-fcoe-client-2.21.1.tar.bz2 -> yast2-fcoe-client-2.21.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/VERSION new/yast2-fcoe-client-2.21.2/VERSION --- old/yast2-fcoe-client-2.21.1/VERSION 2011-05-18 14:07:44.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/VERSION 2011-05-31 12:24:12.000000000 +0200 @@ -1 +1 @@ -2.21.1 +2.21.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/configure new/yast2-fcoe-client-2.21.2/configure --- old/yast2-fcoe-client-2.21.1/configure 2011-05-19 11:31:41.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/configure 2011-05-31 12:25:13.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.1. +# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.21.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.21.1' -PACKAGE_STRING='yast2-fcoe-client 2.21.1' +PACKAGE_VERSION='2.21.2' +PACKAGE_STRING='yast2-fcoe-client 2.21.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.21.1 to adapt to many kinds of systems. +\`configure' configures yast2-fcoe-client 2.21.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.21.1:";; + short | recursive ) echo "Configuration of yast2-fcoe-client 2.21.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.21.1 +yast2-fcoe-client configure 2.21.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.21.1, which was +It was created by yast2-fcoe-client $as_me 2.21.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.21.1' + VERSION='2.21.2' cat >>confdefs.h <<_ACEOF @@ -2450,7 +2450,7 @@ -VERSION="2.21.1" +VERSION="2.21.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.21.1, which was +This file was extended by yast2-fcoe-client $as_me 2.21.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.21.1 +yast2-fcoe-client config.status 2.21.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.21.1/configure.in new/yast2-fcoe-client-2.21.2/configure.in --- old/yast2-fcoe-client-2.21.1/configure.in 2011-05-19 11:31:39.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/configure.in 2011-05-31 12:25:11.000000000 +0200 @@ -3,7 +3,7 @@ dnl -- This file is generated by y2autoconf 2.18.11 - DO NOT EDIT! -- dnl (edit configure.in.in instead) -AC_INIT(yast2-fcoe-client, 2.21.1, http://bugs.opensuse.org/, yast2-fcoe-client) +AC_INIT(yast2-fcoe-client, 2.21.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.21.1" +VERSION="2.21.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.21.1/src/FcoeClient.ycp new/yast2-fcoe-client-2.21.2/src/FcoeClient.ycp --- old/yast2-fcoe-client-2.21.1/src/FcoeClient.ycp 2011-05-19 10:32:52.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/FcoeClient.ycp 2011-05-31 11:00:29.000000000 +0200 @@ -272,8 +272,11 @@ y2milestone( "Output: %1", output ); // read stdout (remove \n and white spaces) vlan_device_name = deletechars( output["stdout"]:"", " \n\t" ); - - y2milestone( "Returning: %1", vlan_device_name ); + + if ( vlan_device_name != "" ) + { + y2milestone( "Returning: %1", vlan_device_name ); + } return vlan_device_name; } @@ -287,36 +290,30 @@ if ( vlan_device_name != "") { + // fcoemon reads values from /etc/fcoe/cfg-<vlan-interface> string file_name = sformat( "/etc/fcoe/cfg-%1", vlan_device_name ); y2milestone( "VLAN channel %1 found, reading %2", vlan_device_name, file_name ); content = (string)SCR::Read(.target.string, file_name); if ( content == "" || content == nil ) { - // remove '-fcoe' and try again - file_name = substring( file_name, 0, size(file_name)-5 ); - y2milestone( "Reading %1", file_name ); - content = (string)SCR::Read(.target.string, file_name ); - } - if ( content == "" || content == nil ) - { - string create_file_name = sformat( "/etc/fcoe/cfg-%1", vlan_device_name ); y2milestone( "Cannot read cfg-file creating %1 with default values from /etc/fcoe/cfg-ethx", - create_file_name ); + file_name ); string def_values = (string)SCR::Read( .target.string, "/etc/fcoe/cfg-ethx" ); if ( def_values != "" && def_values != nil ) { - boolean ret = SCR::Write( .target.string, create_file_name, def_values ); + boolean ret = SCR::Write( .target.string, file_name, def_values ); if ( ret == true ) { status_map = add( status_map, "FCOE_ENABLE", "yes"); status_map = add( status_map, "DCB_REQUIRED", "yes"); - status_map = add( status_map, "Filename", create_file_name ); + status_map = add( status_map, "Filename", file_name ); + status_map = add( status_map, "Created", "yes" ); } else { - y2error( "Cannot create %1", create_file_name ); + y2error( "Cannot create %1", file_name ); } } else @@ -331,7 +328,7 @@ } list <string> lines = splitstring( content, "\n" ); - // TODO: better/more elegant way of reading values (use SysConfig agent?) + foreach( string line, (list<string>)lines, { if ( regexpmatch( line, "^FCOE_ENABLE" ) ) { @@ -427,13 +424,12 @@ boolean status = false; status = Service::Enabled( "fcoe" ); - y2milestone( "Status of fcoe: %1", status ); + y2milestone( "Start status of fcoe: %1", status ); service_start = add( service_start, "fcoe", status ); status = Service::Enabled( "lldpad" ); - y2milestone( "Status of lldpad: %1", status ); + y2milestone( "Start status of lldpad: %1", status ); service_start = add( service_start, "lldpad", status ); - } global map<string, boolean> GetStartStatus() @@ -444,7 +440,7 @@ global boolean ServiceStatus() { // TODO - check whether loading any modules in Stage::initial() is required - // (like in IsciClientLib.ycp, line 469 ) + // (like in IsciClientLib.ycp, line 523 ) // probably NOT -> see /etc/init.d/fcoe, line 85 (modprobe fcoe > /dev/null 2>&1) boolean ret = true; @@ -491,12 +487,12 @@ } // -// dev_name device fcoe_vlan dcb_capable fcoe_enable dcb_required vlan_interface modified cfg_file +// dev_name device fcoe_vlan fcoe_enable dcb_required dcb_capable vlan_interface modified cfg_file // eth3 Ethernet card ... eth3.200 yes/no yes/no yes/no 200 yes/no /etc/fcoe/cfg-eth3.200 // // Detect network interface cards (hardware probe) and get status // -boolean DetectNetworkCards() +global boolean DetectNetworkCards() { string vlan_interface = ""; string fcoe_vlan_interface = ""; @@ -517,6 +513,9 @@ if ( vlan_interface == "" ) { // FCoE isn't enabled on the switch - we can't do anything here + // TODO - check link map from .probe.network and distinguish between + // no cable attached and interface not up, Steffen: cannot be used, "no" + // can stand for 'noe cable' or 'not up' fcoe_vlan_interface = NOT_AVAILABLE; } else @@ -538,11 +537,11 @@ info_map = add( info_map, "dev_name", card["dev_name"]:""); // network card, e.g. eth3 info_map = add( info_map, "device", card["device"]:""); // description info_map = add( info_map, "fcoe_vlan", fcoe_vlan_interface ); // FCoE VLAN interface, e.g. eth3.200 - info_map = add( info_map, "dcb_capable", dcb_capable ); // DCB capable info_map = add( info_map, "fcoe_enable", status_map["FCOE_ENABLE"]:""); // FCOE_ENABLE info_map = add( info_map, "dcb_required", status_map["DCB_REQUIRED"]:""); // DCB_REQUIRED + 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, "modified", "no" ); // data not modified + info_map = add( info_map, "modified", status_map["Created"]:"no" ); // data not modified info_map = add( info_map, "cfg_file", status_map["Filename"]:"" ); // cfg file name, e.g. /etc/fcoe/cfg-eth3.200 network_interfaces = add( network_interfaces, info_map ); @@ -576,7 +575,7 @@ // // Read /etc/fcoe/config // -boolean ReadFcoeConfig() +global boolean ReadFcoeConfig() { list <string> options = (list<string>) SCR::Dir(.fcoe); y2milestone( "List of options: %1", options ); @@ -626,7 +625,7 @@ return redo_list; } -boolean WriteFcoeConfig() +global boolean WriteFcoeConfig() { boolean ret = true; @@ -644,7 +643,7 @@ return ret; } -boolean WriteCfgFiles() +global boolean WriteCfgFiles() { list <map> netcards = GetNetworkCards(); boolean success = true; @@ -689,10 +688,15 @@ return success; } -boolean RestartServiceFcoe() +global boolean RestartServiceFcoe() { - y2milestone( "Restarting fcoe"); - return Service::Restart("fcoe"); + boolean ret = true; + if ( FcoeClient::Modified() ) + { + y2milestone( "Restarting fcoe"); + ret = Service::Restart("fcoe"); + } + return ret; } /** @@ -772,11 +776,10 @@ if( !success ) Report::Warning(_("Cannot detect devices.")); sleep(sl); - // read general FCoE settings if(PollAbort()) return false; Progress::NextStage(); - // check daemon fcoemon and lldpad + // read general FCoE settings success = ReadFcoeConfig(); /* Error message */ @@ -827,6 +830,10 @@ ], "" ); + // TODO things to do in case of Mode::autoinst()/autoupgrade() ??? + // see IscsiClient.ycp, line 236, 241 + + // TODO is_running - used or obsolete ??? boolean is_running = Progress::IsRunning(); y2milestone( "**** Progress still running: %1", is_running ); @@ -858,10 +865,8 @@ // adjust start status of services lldpad and fcoe AdjustStartStatus(); - - /* Error message */ - /* TODO - SuSEConfig required ???? */ - if(false) Report::Error (Message::SuSEConfigFailed()); + + // TODO - add additional package ??? like in IscsiClient.ycp, line 257 sleep(sl); if(PollAbort()) return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/Makefile.am new/yast2-fcoe-client-2.21.2/src/Makefile.am --- old/yast2-fcoe-client-2.21.1/src/Makefile.am 2011-04-20 11:45:19.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/Makefile.am 2011-05-30 14:08:20.000000000 +0200 @@ -5,7 +5,9 @@ client_DATA = \ fcoe-client.ycp \ fcoe-client_auto.ycp \ - fcoe-client_proposal.ycp + fcoe-client_proposal.ycp \ + fcoe-client_finish.ycp \ + inst_fcoe-client.ycp ynclude_DATA = \ helps.ycp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/Makefile.in new/yast2-fcoe-client-2.21.2/src/Makefile.in --- old/yast2-fcoe-client-2.21.1/src/Makefile.in 2011-05-19 11:31:42.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/Makefile.in 2011-05-31 12:25:14.000000000 +0200 @@ -199,7 +199,9 @@ client_DATA = \ fcoe-client.ycp \ fcoe-client_auto.ycp \ - fcoe-client_proposal.ycp + fcoe-client_proposal.ycp \ + fcoe-client_finish.ycp \ + inst_fcoe-client.ycp ynclude_DATA = \ helps.ycp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/complex.ycp new/yast2-fcoe-client-2.21.2/src/complex.ycp --- old/yast2-fcoe-client-2.21.1/src/complex.ycp 2011-05-18 14:03:25.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/complex.ycp 2011-05-30 12:38:16.000000000 +0200 @@ -37,19 +37,17 @@ import "Confirm"; import "FcoeClient"; import "Service"; - +import "Stage"; +import "FileUtils"; include "fcoe-client/helps.ycp"; include "fcoe-client/dialogs.ycp"; /** - * Return a modification status - * @return true if data was modified + * Show a popup on abort if data are modified and + * check redo list/execute redo commands. + * @return true if users aborts installation */ -boolean Modified() { - return FcoeClient::Modified(); -} - boolean ReallyAbort() { if ( !FcoeClient::Modified() ) return true; @@ -77,18 +75,13 @@ return abort; } -boolean PollAbort() { - return UI::PollInput() == `abort; -} - /** * Read settings dialog * @return `abort if aborted and `next otherwise */ symbol ReadDialog() { Wizard::RestoreHelp(HELPS["read"]:""); - // TODO - check this - doesn't help to set it here but call PollAbort in FcoeClient directly ??? - //FcoeClient::SetAbortFunction(PollAbort); + if (!Confirm::MustBeRoot()) return `abort; boolean ret = FcoeClient::Read(); return ret ? `next : `abort; @@ -101,7 +94,7 @@ symbol WriteDialog() { Wizard::RestoreHelp(HELPS["write"]:""); y2milestone( "Writing configuration" ); - // FcoeClient::SetAbortFunction(PollAbort); + boolean ret = FcoeClient::Write(); return ret ? `next : `abort; } @@ -178,7 +171,7 @@ foreach ( map card, (list<map>)netcards, { table_items = add( table_items, `item(`id(row), card["dev_name"]:"", card["device"]:"", card["fcoe_vlan"]:"", - card["dcb_capable"]:"", card["fcoe_enable"]:"", card["dcb_required"]:"" ) + card["fcoe_enable"]:"", card["dcb_required"]:"", card["dcb_capable"]:"" ) ); row = row + 1; }); @@ -240,93 +233,170 @@ symbol HandleInterfacesDialog( string id, map event ) { - any action = event["ID"]:nil; - - y2milestone( "Event: %1", event ); + any action = event["ID"]:nil; + + y2milestone( "Event: %1", event ); - if ( action == `edit ) - { - y2milestone( "Action: %1, returning %1", action); - return `edit; - } - else if ( action == `interfaces ) - { - FcoeClient::current_card = (integer)UI::QueryWidget( `id(`interfaces), `CurrentItem ); - AdjustButtons(); - } - else if ( action == `create ) - { - map card = FcoeClient::GetCurrentNetworkCard(); - string dev_name = card["dev_name"]:""; - boolean ret = Popup::YesNoHeadline( _("Creating and starting FCoE on detected VLAN device"), - sformat( _("Do you really want to create a FCoE network + if ( action == `edit ) + { + y2milestone( "Action: %1, returning %1", action); + return `edit; + } + else if ( action == `interfaces ) + { + FcoeClient::current_card = (integer)UI::QueryWidget( `id(`interfaces), `CurrentItem ); + AdjustButtons(); + } + else if ( action == `create ) + { + map card = FcoeClient::GetCurrentNetworkCard(); + string dev_name = card["dev_name"]:""; + + string command = ""; + map output = $[]; + string vlan_interface = ""; + string fcoe_vlan_interface = ""; + map status_map = $[]; + boolean create_ifcfg = false; + string ifcfg_file = ""; + + if ( Stage::initial() ) // first stage - 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 interface for discovered FCoE VLAN interface on %1 and start the FCoE initiator?"), dev_name ) ); - if ( ret == true ) - { - string vlan_interface = ""; - string fcoe_vlan_interface = ""; - map status_map = $[]; - // create and start FCoE with 'fipvlan -c -s eth3' - // revert this (in case of 'Abort') with 'vconfig rem eth3.200' - string command = sformat( "fipvlan -c -s %1", dev_name ); - y2milestone( "Executing command: %1", command ); - map output = (map)SCR::Execute( .target.bash_output, command ); - y2milestone( "Output: %1", output ); - - if ( output["exit"]:255 == 0 ) - { - // Get new status and exchange list (table) entry - vlan_interface = FcoeClient::GetVlanInterface( card["dev_name"]:"" ); - if ( vlan_interface == "" ) - { - fcoe_vlan_interface = FcoeClient::NOT_AVAILABLE; - } - else - { - fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( card["dev_name"]:"", vlan_interface ); - - if ( fcoe_vlan_interface != "" ) - status_map = FcoeClient::GetFCoEStatus( fcoe_vlan_interface ); - else - fcoe_vlan_interface = FcoeClient::NOT_CONFIGURED; - } - y2milestone( "FCoE VLAN interface: %1", fcoe_vlan_interface ); - // set new value in global map network_interfaces - card["fcoe_vlan"] = fcoe_vlan_interface; - card["fcoe_enable"] = status_map["FCOE_ENABLE"]:""; - card["dcb_required"] = status_map["DCB_REQUIRED"]:""; - card["cfg_file"] = status_map["Filename"]:""; - card["modified"] = "yes"; - FcoeClient::SetModified( true ); - - FcoeClient::SetNetworkCardsValue( FcoeClient::current_card, card ); - y2milestone( "Current network interfaces: %1", FcoeClient::GetNetworkCards() ); - - // replace value in table - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 2), fcoe_vlan_interface ); - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 4), status_map["FCOE_ENABLE"]:"" ); - UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 5), status_map["DCB_REQUIRED"]:"" ); - AdjustButtons(); - if ( fcoe_vlan_interface != "" ) - { - // store command to be able to redo the creation of FCoE VLAN interface - // in case of abort - FcoeClient::AddRedoCommand( sformat("vconfig rem %1", fcoe_vlan_interface ) ); - } - } - else - { - Popup::Error( sformat( _("Cannot create and start FCoE on %1"), dev_name ) ); - } - } - else - { - y2milestone( "Creating VLAN interface canceled" ); - } - } + if ( ret == true ) + { + // create and start FCoE e.g. with 'fipvlan -c -s eth3' + // revert this (in case of 'Abort') with 'vconfig rem eth3.200' + command = sformat( "fipvlan -c -s %1", dev_name ); + y2milestone( "Executing command: %1", command ); + 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 create and start FCoE on %1"), dev_name ) ); + 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 ) + { + ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1\.%2", 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", dev_name, card["vlan_interface"]:"" ); + y2milestone( "Executing command: %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); - return nil; + if ( output["exit"]:255 == 0 ) + { + // start FCoE + command = sformat( "fipvlan -s %1", dev_name ); + } + else + { + command = sformat( "fipvlan -c -s %1", dev_name ); // create and start FCoE + create_ifcfg = true; + } + } + else + { + command = sformat( "fipvlan -c -s %1", dev_name ); + create_ifcfg = true; + } + + y2milestone( "Executing command: %1", command ); + output = (map)SCR::Execute( .target.bash_output, command ); + y2milestone( "Output: %1", output ); + if ( output["exit"]:255 != 0 ) + { + // text of an error popup: command failed on the network interface + Popup::Error( sformat( _("Command \"%1\" on %2 failed."), command, dev_name ) ); + return nil; + } + } + else + { + y2milestone( "Starting FCoE canceled" ); + return nil; + } + } + + // Get new status and exchange list (table) entry + vlan_interface = FcoeClient::GetVlanInterface( card["dev_name"]:"" ); + if ( vlan_interface == "" ) + { + fcoe_vlan_interface = FcoeClient::NOT_AVAILABLE; + } + 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 ); + status_map = FcoeClient::GetFCoEStatus( fcoe_vlan_interface ); + + // store command to be able to redo the creation of FCoE VLAN interface in case of abort + // TODO: is this also OK if only 'fipvlan -s <interface>' is called? + FcoeClient::AddRedoCommand( sformat("vconfig rem %1", fcoe_vlan_interface ) ); + if ( create_ifcfg ) + { + string config = sformat( "BOOTPROTO=\"static\"\nSTARTMODE=\"onboot\" +ETHERDEVICE=\"%1\"\nUSERCONTROL=\"no\"\nINTERFACETYPE=\"vlan\"\n", dev_name ); + ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1", fcoe_vlan_interface ); + SCR::Write(.target.string, ifcfg_file, config); + y2milestone( "Writing config: %1 to %2", config, ifcfg_file ); + FcoeClient::AddRedoCommand( sformat( "rm %1", ifcfg_file ) ); + } + } + else + { + fcoe_vlan_interface = FcoeClient::NOT_CONFIGURED; + } + } + + // set new values in global map network_interfaces + card["fcoe_vlan"] = fcoe_vlan_interface; + card["fcoe_enable"] = status_map["FCOE_ENABLE"]:""; + card["dcb_required"] = status_map["DCB_REQUIRED"]:""; + card["cfg_file"] = status_map["Filename"]:""; + card["modified"] = "yes"; + FcoeClient::SetModified( true ); + + 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), fcoe_vlan_interface ); + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 3), status_map["FCOE_ENABLE"]:"" ); + UI::ChangeWidget( `id( `interfaces), `Cell( FcoeClient::current_card, 4), status_map["DCB_REQUIRED"]:"" ); + AdjustButtons(); + } + + return nil; } symbol HandleConfigurationDialog( string id, map event ) @@ -373,12 +443,22 @@ void StoreConfigurationDialog (string id, map event) { y2milestone( "Store configuration dialog" ); + + map config = FcoeClient::GetFcoeConfig(); + string debug_val = (string)UI::QueryWidget( `id("debug"), `Value ); + if ( config["DEBUG"]:"" != debug_val) + { + FcoeClient::SetFcoeConfigValue( "DEBUG", debug_val ); + FcoeClient::SetModified( true ); + } string syslog_val = (string)UI::QueryWidget( `id("syslog"), `Value ); - FcoeClient::SetFcoeConfigValue( "DEBUG", debug_val ); - FcoeClient::SetFcoeConfigValue( "USE_SYSLOG", syslog_val ); - FcoeClient::SetModified( true ); + if ( config["USE_SYSLOG"]:"" != syslog_val ) + { + FcoeClient::SetFcoeConfigValue( "USE_SYSLOG", syslog_val ); + FcoeClient::SetModified( true ); + } } void StoreEditDialog (string id, map event) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/dialogs.ycp new/yast2-fcoe-client-2.21.2/src/dialogs.ycp --- old/yast2-fcoe-client-2.21.1/src/dialogs.ycp 2011-05-18 11:47:53.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/dialogs.ycp 2011-05-26 13:04:25.000000000 +0200 @@ -119,8 +119,8 @@ return `MarginBox( mbox_x, mbox_y, `VBox( `Table(`id(`interfaces), `opt(`notify, `immediate, `keepSorting ), - `header(_("Device Name"), _("Model"), _("FCoE VLAN Interface"), _("DCB capable"), - _("FCoE Enable"), _("DCB Required")), + `header(_("Device Name"), _("Model"), _("FCoE VLAN Interface"), + _("FCoE Enable"), _("DCB Required"), _("DCB capable") ), [] ), `Left(`HBox( `PushButton(`id(`edit), _("Change &Settings") ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/fcoe-client.desktop new/yast2-fcoe-client-2.21.2/src/fcoe-client.desktop --- old/yast2-fcoe-client-2.21.1/src/fcoe-client.desktop 2011-05-19 10:37:37.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/fcoe-client.desktop 2011-05-30 10:58:42.000000000 +0200 @@ -16,7 +16,7 @@ X-SuSE-YaST-SortKey= X-SuSE-YaST-AutoInstResource=fcoe-client -Icon=yast-fcoe-client +Icon=fcoe Exec=/sbin/yast2 fcoe-client Name=FCoE Client Configuration diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/fcoe-client_finish.ycp new/yast2-fcoe-client-2.21.2/src/fcoe-client_finish.ycp --- old/yast2-fcoe-client-2.21.1/src/fcoe-client_finish.ycp 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-fcoe-client-2.21.2/src/fcoe-client_finish.ycp 2011-05-31 10:39:23.000000000 +0200 @@ -0,0 +1,69 @@ +/** + * File: + * fcoe-client_finish.ycp + * + * Module: + * Step of base installation finish + * + * Authors: + * Gabriele Mohr <[email protected]> + * + */ + +{ + +textdomain "fcoe-client"; + +import "Directory"; +import "String"; +import "FcoeClient"; +import "Service"; +include "installation/misc.ycp"; + +any ret = nil; +string func = ""; +map param = $[]; + +/* Check arguments */ +if(size(WFM::Args()) > 0 && is(WFM::Args(0), string)) { + func = (string)WFM::Args(0); + if(size(WFM::Args()) > 1 && is(WFM::Args(1), map)) + param = (map)WFM::Args(1); +} + +y2milestone ("starting fcoe-client_finish"); +y2debug("func=%1", func); +y2debug("param=%1", param); + +if (func == "Info") +{ + return (any)$[ + "steps" : 1, + // progress step title + "title" : _("Saving fcoe configuration..."), + "when" : [ `installation, `update, `autoinst ], + ]; +} +else if (func == "Write") +{ + // 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/'"); + + // TODO: only enable if any FCoE VLAN interface was enabled + Service::Enable("fcoe"); + Service::Enable("lldpad"); + y2milestone("fcoe and lldpad services enabled"); + +} +else +{ + y2error ("unknown function: %1", func); + ret = nil; +} + +y2debug("ret=%1", ret); +y2milestone("fcoe-client_finish finished"); +return ret; + + +} /* EOF */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/inst_fcoe-client.ycp new/yast2-fcoe-client-2.21.2/src/inst_fcoe-client.ycp --- old/yast2-fcoe-client-2.21.1/src/inst_fcoe-client.ycp 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-fcoe-client-2.21.2/src/inst_fcoe-client.ycp 2011-05-31 11:03:39.000000000 +0200 @@ -0,0 +1,105 @@ +/** + * File: clients/inst_fcoe-client.ycp + * Package: Configuration of fcoe-client + * Summary: Main file + * Authors: Gabriele Mohr <[email protected]> + * + * + * File called in installation workflow for fcoe-client configuration. + */ + +{ + +/*** + * <h3>Configuration of fcoe-client</h3> + */ + +textdomain "fcoe-client"; + +/* The main () */ +y2milestone ("----------------------------------------"); +y2milestone ("FCoEClient module started"); + +import "Progress"; +import "Report"; +import "Summary"; +import "ModuleLoading"; +import "Packages"; +import "Installation"; +import "String"; +import "FcoeClient"; +import "NetworkService"; + +include "fcoe-client/wizards.ycp"; + +/* main ui function */ +any ret = nil; +boolean success = false; + +y2milestone("fcoe-client module started during installation"); + +// create /etc/fcoe +SCR::Execute(.target.bash, "mkdir -p /etc/fcoe" ); + + +// TODO: check what is additional needed +// - load any modules ? +// +// FcoeClient::CheckInstalledPackages() not needed in inst-sys +// FcoeClient::DetectStartStatus() doesn't make sense in inst-sys + +// TODO: check for running network - makes sense here ??? +if( !NetworkService::RunningNetworkPopup() ) +{ + y2error( "Network NOT set up" ); + return nil; +} + +// start services fcoe and lldpad +success = FcoeClient::ServiceStatus(); +if ( !success ) +{ + y2error( "Starting of services FAILED" ); + return nil; +} + +// detect netcards +success = FcoeClient::DetectNetworkCards(); +if ( !success ) +{ + y2error( "Detecting netcards FAILED" ); + return nil; +} + +// read general FCoE settings +success = FcoeClient::ReadFcoeConfig(); +if ( !success ) +{ + y2error( "Reading /etc/fcoe/config FAILED" ); + return nil; +} + +// run dialog +ret = MainSequence(); +y2milestone("MainSequence ret=%1", ret); + +// add package open-fcoe to installed system +Packages::addAdditionalPackage("open-fcoe"); + +// workflow not aborted +if ( ret == `next ) +{ + // write changes to config files + FcoeClient::WriteFcoeConfig(); + FcoeClient::WriteCfgFiles(); + FcoeClient::RestartServiceFcoe(); +} + +/* Finish */ +y2milestone("fcoe-client module finished"); +y2milestone("----------------------------------------"); + +return ret; + +/* EOF */ +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fcoe-client-2.21.1/src/wizards.ycp new/yast2-fcoe-client-2.21.2/src/wizards.ycp --- old/yast2-fcoe-client-2.21.1/src/wizards.ycp 2011-05-18 14:14:19.000000000 +0200 +++ new/yast2-fcoe-client-2.21.2/src/wizards.ycp 2011-05-31 10:56:36.000000000 +0200 @@ -194,7 +194,7 @@ Wizard::CreateDialog(); any ret = Sequencer::Run(aliases, sequence); - + y2milestone( "**** RETURN of MainSequence ****: %1", ret ); UI::CloseDialog(); return ret; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
