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 / xen.ycp < prev    next >
Text File  |  2006-11-29  |  2KB  |  102 lines

  1. /**
  2.  * File:    clients/xen.ycp
  3.  * Module:    Installation/management in a virtual machine
  4.  * Summary:    Main virtual machine installation/management
  5.  * Authors:    Ladislav Slezak <lslezak@suse.cz>
  6.  *
  7.  * $Id$
  8.  */
  9.  
  10. {
  11.     textdomain "vm";
  12.  
  13.     import "Report";
  14.     import "Arch";
  15.     import "CommandLine";
  16.     import "Popup";
  17.     import "Label";
  18.     import "Package";
  19.     import "PackageLock";
  20.     import "Mode";
  21.  
  22.     include "vm/cmdline.ycp";
  23.  
  24.     /**
  25.      * Definition of command line mode options
  26.      */
  27.     map cmdline = $[
  28.     // help text
  29.     "id"        : "vm",
  30.     "guihandler": GUIhandler,
  31.     ];
  32.  
  33.     // check whether VM can be started
  34.     if (Arch::is_uml () == true)
  35.     {
  36.     // we are already in UML, nested virtual machine is not supported
  37.     Report::Error(_("Virtual machine installation cannot be started inside the UML machine.
  38. Start installation in the host system.
  39. "));
  40.  
  41.     return `abort;
  42.     }
  43.  
  44.     if (!Arch::is_xen() && !Mode::config())
  45.     {
  46.     // error - xen kernel must be running to start a new Xen domain,
  47.     // ask user to configure the first (management) Xen domain
  48.     if (Popup::YesNo(_("A Xen virtual machine can be started only
  49. from the VM Server (domain 0),
  50. which is not running now.
  51.  
  52. Configure the VM Server now?")))
  53.     {
  54.         y2milestone("Starting domain0 configuration...");
  55.         return (symbol) WFM::CallFunction("dom0_setup", []);
  56.     }
  57.     else
  58.     {
  59.         y2milestone("Skipping domain0 configuration");
  60.     }
  61.  
  62.     return `abort;
  63.     }
  64.  
  65.     // abort if the package manager is not available
  66.     // note: Check() displays an error popup
  67.     boolean manager_available = PackageLock::Check();
  68.     if (!manager_available)
  69.     {
  70.     return `abort;
  71.     }
  72.  
  73.     // initialize the target system
  74.     Pkg::TargetInit("/", true);
  75.  
  76.     // install required packages if they are missing
  77.     if (!Mode::config() && !Package::InstallAll(["xen-tools"]))
  78.     {
  79.     // installation failed
  80.     return `abort;
  81.     }
  82.  
  83.     // initialize the package manager library
  84.     list sources = Pkg::SourceStartCache(true);
  85.     y2milestone("Source init: %1", sources);
  86.  
  87.     // initialize to xen VM type
  88.     import "VM";
  89.     // set virtualization type here
  90.     VM::SetVMMtype("xen");
  91.  
  92.     // initialize ProductControl module (load custom control file)
  93.     import "VM_Common";
  94.     VM_Common::InitProductControl();
  95.  
  96.     Pkg::TargetFinish();
  97.  
  98.     any ret = CommandLine::Run(cmdline);
  99.  
  100.     return `next;
  101. }
  102.