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 / dom0_setup.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  149 lines

  1. /**
  2.  * Module:    dom0_setup.ycp
  3.  *
  4.  * Authors:    Ladislav Slezak <lslezak@suse.cz>
  5.  *
  6.  * Purpose:    Configure domain0 (Xen management domain)
  7.  *
  8.  * $Id: dom0_setup.ycp 31030 2006-05-18 21:59:22Z mgfritch $
  9.  */
  10. {
  11.  
  12.     import "Package";
  13.     import "Progress";
  14.     import "Report";
  15.     import "Popup";
  16.     import "Wizard";
  17.     import "VM_XEN";
  18.  
  19.     textdomain "vm";
  20.  
  21.     list <string> progress_stages = [
  22.                      // progress stage
  23.                      _("Install Packages"),
  24.                      // progress stage
  25.                      _("Firewall Configuration")
  26.     ];
  27.  
  28.     list progress_descriptions = [];
  29.  
  30.     integer progress_length = size(progress_stages);
  31.  
  32.     // Headline for management domain installation
  33.     string headline = _("Configuring the VM Server (domain 0)");
  34.  
  35.     // xen domain0 installation help text - 1/4
  36.     string help_text = _("<p><big><b>VM Server Configuration</b></big></p><p>Configuration
  37. of the VM Server (domain 0) has two parts.</p>
  38. ") +
  39.  
  40.     // xen domain0 installation help text - 2/4
  41.     _("<p>The required packages are installed into the system first. Then the
  42. boot loader is switched to GRUB if it is not already used and the Xen section is
  43. added to the boot loader menu if it is missing.</p>
  44. ") +
  45.  
  46.     // xen domain0 installation help text - 3/4
  47. _("<p>GRUB is needed because it supports the multiboot standard required
  48. to boot Xen and Linux kernel.</p>
  49. ") +
  50.  
  51.     // xen domain0 installation help text - 4/4
  52. _("<p>When the configuration is successfully finished, it is possible to boot the VM Server from the boot loader menu.</p>");
  53.  
  54.     // error popup
  55.     string error = _("An error occurred during installation.");
  56.     // error popup
  57.     string abortmsg = _("The installation will be aborted.");
  58.  
  59.     Wizard::OpenNextBackDialog();
  60.  
  61.     // enable progress
  62.     boolean progress = Progress::set(true);
  63.  
  64.     // Headline for virtual machine installation
  65.     Progress::New(headline, "", progress_length,
  66.            progress_stages, progress_descriptions, help_text);
  67.  
  68.     // package stage
  69.     Progress::NextStage();
  70.  
  71.     // Decide if dom0 should use the pae kernel (#175117)
  72.     string kernel_pkg = "kernel-xen";
  73.     if (VM_XEN::isPAEKernel())
  74.     kernel_pkg = "kernel-xenpae";
  75.  
  76.     list<string> packages = ["xen", "xen-libs", "xen-tools", "xen-tools-ioemu"];
  77.     packages = add(packages, kernel_pkg);
  78.     boolean success = true;
  79.     boolean bootloader_modified = false;
  80.  
  81.  
  82.     // progressbar title - check whether Xen packages are installed
  83.     Progress::Title(_("Checking packages..."));
  84.     if (!Package::InstalledAll(packages))
  85.     {
  86.     // progressbar title - install the required packages
  87.     Progress::Title(_("Installing packages..."));
  88.     success = Package::InstallAll(packages);
  89.     }
  90.  
  91.     if (!success)
  92.     {
  93.     // error popup
  94.     Report::Error(_("Cannot install required packages.") + "\n" + abortmsg);
  95.     return `abort;
  96.     }
  97.  
  98.     // firewall stage - modify the firewall setting, add the xen bridge to FW_FORWARD_ALWAYS_INOUT_DEV
  99.     Progress::NextStage();
  100.  
  101.     // check whether the firewall option exists
  102.     if (contains(SCR::Dir(.sysconfig.SuSEfirewall2), "FW_FORWARD_ALWAYS_INOUT_DEV"))
  103.     {
  104.     string xen_bridge = "xenbr0";
  105.     // read the current value
  106.     string forward = (string) SCR::Read(.sysconfig.SuSEfirewall2.FW_FORWARD_ALWAYS_INOUT_DEV);
  107.  
  108.     // add xenbr0 if it's not already there
  109.     if (!contains(splitstring(forward, " "), xen_bridge))
  110.     {
  111.         if (size(forward) > 0)
  112.         {
  113.         // add a space
  114.         forward = forward + " ";
  115.         }
  116.  
  117.         forward = forward + xen_bridge;
  118.  
  119.         // write the new value
  120.         SCR::Write(.sysconfig.SuSEfirewall2.FW_FORWARD_ALWAYS_INOUT_DEV, forward);
  121.  
  122.         // flush the cache
  123.         SCR::Write(.sysconfig.SuSEfirewall2, nil);
  124.  
  125.         y2milestone("Modified firewall option FW_FORWARD_ALWAYS_INOUT_DEV: '%1'", forward);
  126.     }
  127.     else
  128.     {
  129.         y2milestone("FW_FORWARD_ALWAYS_INOUT_DEV: '%1', not modified", forward);
  130.     }
  131.     }
  132.     else
  133.     {
  134.     y2milestone("Firewall option FW_FORWARD_ALWAYS_INOUT_DEV is not defined, firewall is not modified.");
  135.     }
  136.  
  137.     Progress::Finish();
  138.  
  139.     // popup message - ask user to reboot the machine into Xen kernel
  140.     Popup::LongMessage(_("The machine is ready to start the VM Server.
  141.  
  142. Reboot the machine and select the Xen section in the boot loader menu to start it.
  143. "));
  144.  
  145.     Wizard::CloseDialog();
  146.  
  147.     return `next;
  148. }
  149.