Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.2:Update
yast2-multipath
use-storage-activatemultipath.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File use-storage-activatemultipath.diff of Package yast2-multipath
Index: yast2-multipath-2.17.1/src/complex.ycp =================================================================== --- yast2-multipath-2.17.1.orig/src/complex.ycp 2008-09-27 14:18:03.000000000 +0800 +++ yast2-multipath-2.17.1/src/complex.ycp 2008-12-03 13:55:41.000000000 +0800 @@ -33,6 +33,7 @@ textdomain "multipath"; import "Service"; +import "Storage"; integer service_status = 0; boolean has_dumbtab = false; @@ -2659,8 +2660,12 @@ void Update_Service_Status() { - integer ret = Service::Status("multipathd"); -// integer ret = (integer) SCR::Execute(.target.bash, "/etc/init.d/multipathd status"); + integer ret = 0; + if (Mode::normal() && Stage::normal()) { + ret = Service::Status("multipathd"); + } else { + ret = (integer)SCR::Execute(.target.bash, "/bin/ps -A -o comm | grep -q multipathd"); + } if (ret == 0) { UI::ChangeWidget(`id(`stop_multipath), `Value, false); UI::ChangeWidget(`id(`start_multipath), `Value, true); @@ -2691,37 +2696,61 @@ UI::ChangeWidget(`id(`status_summary_id), `Value, info); } +void CallInsserv( boolean on, string name ) +{ + y2milestone( "CallInsserv on:%1 name:%2", on, name ); + string scrname = "/etc/init.d/" + name; + if( SCR::Read( .target.size, scrname )>0 ) + { + string cmd = "cd / && /sbin/insserv "; + if( !on ) + cmd = cmd + "-r "; + cmd = cmd + scrname; + y2milestone( "CallInsserv cmd %1", cmd ); + map bo = (map)SCR::Execute (.target.bash_output, cmd ); + y2milestone( "CallInsserv bo %1", bo ); + } +} + void Start_Service() { if (service_status == 1) return; string prop_info = _("Use multipath failed:") + "\n"; - boolean ret = Service::Enable("boot.multipath"); - if (ret == false) - { - prop_info = prop_info + _("* Can not enable boot.multipath") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } - ret = Service::Enable("multipathd"); - if (ret == false) - { - prop_info = prop_info + _("* Can not enable multipathd") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } - /* do not check result for starting boot.multipath */ - ret = Service::Start("boot.multipath"); - ret = Service::Start("multipathd"); - if (ret == false) - { - prop_info = prop_info + _("* Can not start multipathd") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } + if (Mode::normal() && Stage::normal()) { + boolean ret = Service::Enable("boot.multipath"); + if (ret == false) + { + prop_info = prop_info + _("* Can not enable boot.multipath") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + ret = Service::Enable("multipathd"); + if (ret == false) + { + prop_info = prop_info + _("* Can not enable multipathd") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + /* do not check result for starting boot.multipath */ + ret = Service::Start("boot.multipath"); + ret = Service::Start("multipathd"); + if (ret == false) + { + prop_info = prop_info + _("* Can not start multipathd") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + + } else { +// CallInsserv(true, "boot.multipath"); +// CallInsserv(true, "multipathd"); + Storage::ActivateMultipath(true); + } + service_status = 1; Update_Service_Status(); } @@ -2731,32 +2760,40 @@ return; string prop_info = _("Do not use multipath failed:") + "\n"; - boolean ret = Service::Stop("multipathd"); - if (ret == false) - { - prop_info = prop_info + _("* Can not stop multipath") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } - /* do not check result of stopping boot.multipath */ - ret = Service::Stop("boot.multipath"); - ret = Service::Disable("multipathd"); - if (ret == false) - { - prop_info = prop_info + _("* Can not disable multipathd") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } - ret = Service::Disable("boot.multipath"); - if (ret == false) - { - prop_info = prop_info + _("* Can not disable boot.multipath") + "\n"; - Popup::Message(prop_info); - Update_Service_Status(); - return; - } + if (Mode::normal() && Stage::normal()) { + boolean ret = Service::Stop("multipathd"); + if (ret == false) + { + prop_info = prop_info + _("* Can not stop multipath") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + /* do not check result of stopping boot.multipath */ + ret = Service::Stop("boot.multipath"); + ret = Service::Disable("multipathd"); + if (ret == false) + { + prop_info = prop_info + _("* Can not disable multipathd") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + ret = Service::Disable("boot.multipath"); + if (ret == false) + { + prop_info = prop_info + _("* Can not disable boot.multipath") + "\n"; + Popup::Message(prop_info); + Update_Service_Status(); + return; + } + + } else { + Storage::ActivateMultipath(false); +// CallInsserv(false, "multipathd"); +// CallInsserv(false, "boot.multipath"); + } + service_status = 0; Update_Service_Status(); } Index: yast2-multipath-2.17.1/src/Multipath.ycp =================================================================== --- yast2-multipath-2.17.1.orig/src/Multipath.ycp 2008-12-03 13:55:41.000000000 +0800 +++ yast2-multipath-2.17.1/src/Multipath.ycp 2008-12-03 14:56:56.000000000 +0800 @@ -46,6 +46,7 @@ import "PackageSystem"; import "Mode"; import "Stage"; +import "Storage"; global boolean config_modified = false; @@ -81,7 +82,7 @@ /** * work around a bug in compiling ybc with UI as Y2Namespace - * #299258 + * #299258 */ any dummy = UI::GetDisplayInfo(); @@ -92,14 +93,14 @@ boolean Read_Configures() { boolean ret = false; - + config_modified = false; defaults_items = $[]; devices_items = []; multipaths_items = []; blacklist_items = []; blacklist_exception_items = []; - + /* prepare for loading built-in configurations */ SCR::Execute(.target.bash, "/sbin/multipath -t > " + builtin_multipath_conf_path); @@ -175,14 +176,17 @@ // BNC #418703 // Checking and Installing packages only if needed (possible) - if (Mode::normal() && Stage::normal()) { list<string> required_pack_list = ["multipath-tools", "device-mapper"]; + if (Mode::normal() && Stage::normal()) { ret = PackageSystem::CheckAndInstallPackagesInteractive (required_pack_list); if (ret == false) { Report::Error(_("Cannot install required packages")); return false; } } else { + import "PackagesProposal"; + string proposal_ID = "multipath_proposal"; + PackagesProposal::SetResolvables(proposal_ID, `package, required_pack_list); y2milestone ("Not checking installed packages"); } @@ -194,9 +198,15 @@ sleep(sl); /* read multipath service status */ - service_status = (integer) SCR::Execute(.target.bash, "/etc/init.d/multipathd status"); - if(service_status > 0) - service_status = 1; + if (Mode::normal() && Stage::normal()) { + service_status = (integer) SCR::Execute(.target.bash, "/etc/init.d/multipathd status"); + if(service_status > 0) + service_status = 1; + } else { + service_status = (integer) SCR::Execute(.target.bash, "/bin/ps -A -o comm | grep -q multipathd"); + if (service_status != 0) + service_status = 1; + } Progress::NextStep(); sleep(sl); @@ -266,13 +276,19 @@ /* restart multipathd */ Progress::NextStage (); + if(service_status == 1) { - if( 0 != SCR::Execute(.target.bash, "/etc/init.d/multipathd restart")) { - Report::Error(_("Restart multipathd failed.")); - return false; + if (Mode::normal() && Stage::normal()) { + if( 0 != SCR::Execute(.target.bash, "/etc/init.d/multipathd restart")) { + Report::Error(_("Restart multipathd failed.")); + return false; + } + } else { + Storage::ActivateMultipath(false); + Storage::ActivateMultipath(true); + } + sleep(sl); } - sleep(sl); - } /* Progress finished */ Progress::NextStage(); @@ -330,6 +346,12 @@ symbol current_tab = `status; integer interval_millisec = 50; + // Disable configure tab during installation + if (!(Mode::normal() && Stage::normal())) { + if (!has_dumbtab) + UI::ChangeWidget(`id(_("Configure")), `Enabled, false); + } + while(true) { ret = UI::TimeoutUserInput(interval_millisec); interval_millisec = 5000; @@ -356,6 +378,12 @@ current_tab = `status; continue; } else if (ret == _("Configure")) { + if (!(Mode::normal() && Stage::normal())) { + Popup::Message("Can't change configuration of multipath during installation"); + if (has_dumbtab) + UI::ChangeWidget(`id(`tabs), `CurrentItem, _("Status")); + continue; + } Wizard::SetContentsButtons(caption, contents, HELPS["Configure_help"]:"", Label::BackButton(), Label::FinishButton()); Wizard::HideBackButton();
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor