home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / inst_disks_activate.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  170 lines

  1. /**
  2.  * File:    clients/inst_disk_activate.ycp
  3.  * Package:    Activation of disks (DASD, zFCP, iSCSI) during installation
  4.  * Summary:    Main file
  5.  * Authors:    Jiri Srain <jsrain@suse.cz>
  6.  *
  7.  * $Id: inst_disks_activate.ycp 30257 2006-04-19 17:54:27Z jsrain $
  8.  *
  9.  */
  10.  
  11. {
  12.  
  13. /***
  14.  * <h3>Initialization of the disks</h3>
  15.  */
  16.  
  17. textdomain "installation";
  18.  
  19. /* The main () */
  20. y2milestone ("----------------------------------------");
  21. y2milestone ("Disk activation module started");
  22.  
  23. import "Arch";
  24. import "GetInstArgs";
  25. import "Label";
  26. import "Popup";
  27. import "Storage";
  28. import "Wizard";
  29.  
  30. // all the arguments
  31. map argmap = GetInstArgs::argmap();
  32.  
  33. boolean have_dasd = false;
  34. boolean have_zfcp = false;
  35.  
  36. void RestoreButtons (boolean enable_back, boolean enable_next) {
  37.     Wizard::RestoreAbortButton();
  38.     Wizard::RestoreNextButton();
  39.     Wizard::RestoreBackButton();
  40.     if (enable_back)
  41.     Wizard::EnableBackButton();
  42.     else
  43.     Wizard::DisableBackButton();
  44.     if (enable_next)
  45.     Wizard::EnableNextButton();
  46.     else
  47.     Wizard::DisableNextButton();
  48. }
  49.  
  50. if (Arch::s390())
  51. {
  52.     // popup label
  53.     UI::OpenDialog (`Label (_("Detecting Available Controllers")));
  54.  
  55.     // detect DASD disks
  56.     list<map<string,any> > disks = (list<map<string,any> >)
  57.     SCR::Read (.probe.disk);
  58.  
  59.     disks = filter (map<string,any> d, disks, ``(
  60.     tolower (d["device"]:"") == "dasd"
  61.     ));
  62.     have_dasd = size(disks) > 0;
  63.  
  64.     // detect zFCP disks
  65.     list<map<string,any> > controllers = (list<map<string,any> >)
  66.     SCR::Read (.probe.storage);
  67.     controllers = filter (map<string,any> c, controllers, {
  68.     return c["device"]:"" == "zFCP controller";
  69.     });
  70.     have_zfcp = size(controllers) > 0;
  71.  
  72.     UI::CloseDialog ();
  73. }
  74.  
  75. if (have_dasd || have_zfcp)
  76. {
  77.     // dialog caption
  78.     string caption = _("Disk Activation");
  79.  
  80.     string help = "";
  81.  
  82.     term contents = `HBox (`HWeight (999, `HStretch ()), `VBox (
  83.         `VStretch (),
  84.         have_dasd
  85.         ?`HWeight (1, `PushButton (`id (`dasd), `opt (`hstretch),
  86.         // push button
  87.         _("Configure &DASD Disks")))
  88.         : `VSpacing (0),
  89.     `VSpacing (have_dasd ? 2 : 0),
  90.     have_zfcp
  91.         ? `HWeight (1, `PushButton (`id (`zfcp), `opt (`hstretch),
  92.         // push button
  93.         _("Configure &ZFCP Disks")))
  94.         : `VSpacing (0),
  95.     `VSpacing (have_zfcp ? 2 : 0),
  96.     `HWeight (1, `PushButton (`id (`iscsi), `opt (`hstretch),
  97.         // push button
  98.         _("Configure &iSCSI Disks"))),
  99.     `VStretch ()
  100.     ), `HWeight (999, `HStretch ()));
  101.  
  102.     Wizard::SetContents(caption, contents, help,
  103.     GetInstArgs::enable_back(), GetInstArgs::enable_next());
  104.     Wizard::SetTitleIcon("disk");
  105.     Wizard::SetFocusToNextButton();
  106.  
  107.     any ret = nil;
  108.     boolean disks_changed = false;
  109.     while (ret == nil)
  110.     {
  111.     ret = UI::UserInput ();
  112.     if (ret == `dasd)
  113.     {
  114.         ret = WFM::call ("inst_dasd");
  115.         ret = `redraw;
  116.     }
  117.     else if (ret == `zfcp)
  118.     {
  119.         ret = WFM::call ("inst_zfcp");
  120.         ret = `redraw;
  121.     }
  122.     else if (ret == `iscsi)
  123.     {
  124.         ret = WFM::call ("inst_iscsi-client");
  125.         ret = `redraw;
  126.     }
  127.     if (ret == `redraw)
  128.     {
  129.         disks_changed = true;
  130.         Wizard::SetContents(caption, contents, help,
  131.         GetInstArgs::enable_back(), GetInstArgs::enable_next());
  132.         Wizard::SetTitleIcon("disk");
  133.         Wizard::SetFocusToNextButton();
  134.         ret = nil;
  135.     }
  136.     RestoreButtons (GetInstArgs::enable_back(), GetInstArgs::enable_next());
  137.     }
  138.  
  139.     if (have_dasd && ret == `next)
  140.     {
  141.     string cmd = "/sbin/dasd_reload";
  142.     y2milestone( "Initialize cmd %1 ret %2", cmd,
  143.         SCR::Execute( .target.bash_output, cmd ));
  144.     }
  145.  
  146.     if (disks_changed)
  147.     {
  148.     Storage::ReReadTargetMap();
  149.     }
  150.  
  151.     y2debug("ret=%1", ret);
  152.  
  153.     /* Finish */
  154.     y2milestone("Disk activation module finished");
  155.     y2milestone("----------------------------------------");
  156.  
  157.     return ret;
  158. }
  159. else
  160. {
  161.     y2milestone ("Redirecting disk activation module to iSCSI module");
  162.     any ret = WFM::call ("inst_iscsi-client", [argmap]);
  163.     Storage::ReReadTargetMap();
  164.     return (symbol)ret;
  165. }
  166.  
  167.  
  168. /* EOF */
  169. }
  170.