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_vm_options.ycp < prev    next >
Text File  |  2006-11-29  |  7KB  |  212 lines

  1. /**
  2.  * Module:    inst_vm_options.ycp
  3.  *
  4.  * Authors:    Ladislav Slezak <lslezak@suse.cz>
  5.  *        Michael G. Fritch <mgfritch@novell.com>
  6.  *
  7.  * Purpose:    Ask the user for various options for the virtual machine.
  8.  *
  9.  * $Id: inst_vm_options.ycp 30722 2006-05-05 22:59:43Z mgfritch $
  10.  *
  11.  */
  12.  
  13. {
  14.     textdomain "vm";
  15.  
  16.     import "VM";
  17.     import "VM_Common";
  18.     import "Wizard";
  19.     import "Popup";
  20.     import "String";
  21.     import "Report";
  22.  
  23.     // screen title for virtual machine options
  24.     string title = _("VM Properties");
  25.  
  26.     list<term> event_options = [
  27.     // combobox item
  28.     `item(`id("destroy"), _("Destroy")),
  29.     // combobox item
  30.     `item(`id("restart"), _("Restart")),
  31.     // combobox item
  32.     `item(`id("preserve"), _("Preserve")),
  33.     // combobox item
  34.     `item(`id("rename-restart"), _("Rename and restart")),
  35.     ];
  36.  
  37.     // build and show dialog
  38.  
  39.     Wizard::OpenAcceptDialog ();
  40.  
  41.     term contents = `MarginBox(15, 1,
  42.             `HBox(
  43.                 `VBox(
  44.                     // textbox label
  45.                     `TextEntry(`id(`vmname), `opt(`hstretch), _("&Name of Virtual Machine"), VM::GetConfigName()),
  46.                     (VM_Common::proposal_type != "install") ?
  47.                         `VBox(
  48.                             `VSpacing(0.5),
  49.                             `ComboBox(`id(`startmode), `opt(`hstretch),
  50.                                 // combobox label
  51.                                 _("Start the VM"),
  52.                                 [
  53.                                     // combobox item
  54.                                     `item(`id("manual"), _("Manually")),
  55.                                     // combobox item
  56.                                     `item(`id("onboot"), _("Automatically")),
  57.                                 ]
  58.                             ),
  59.                             `VSpacing(0.5),
  60.                             `ComboBox(`id(`on_poweroff), `opt(`hstretch),
  61.                                 // combobox label
  62.                                 _("When the VM is Powered Off"),
  63.                                 event_options
  64.                             ),
  65.                             `VSpacing(0.5),
  66.                             `ComboBox(`id(`on_reboot), `opt(`hstretch),
  67.                                 // combobox label
  68.                                 _("When the VM is Rebooted"),
  69.                                 event_options
  70.                             ),
  71.                             `VSpacing(0.5),
  72.                             `ComboBox(`id(`on_crash), `opt(`hstretch),
  73.                                 // combobox label
  74.                                 _("When the VM Crashes"),
  75.                                 event_options
  76.                             )
  77.                         )
  78.                     :
  79.                         `Empty()
  80.                 )
  81.             )
  82.         );
  83.  
  84.  
  85.     // virtual machine options - help text title
  86.     string help_text = sformat(_("<p><b><big>%1</big></b></p>"), title);
  87.     if (VM_Common::proposal_type != "boot")
  88.     // virtual machine options (boot) - help text 1/1
  89.     help_text = help_text + _("<p>Each virtual machine must have a unique name. The <b>name of virtual machine</b> entered here will be used as the name of the VM configuration file.</p>");
  90.     if (VM_Common::proposal_type != "install") {
  91.     help_text = help_text
  92.     // virtual machine options (install) - help text 1/8
  93.     + _("<p>The VM can be started <b>automatically</b> when the VM Server starts, or <b>manually</b> via YaST or the command line.</p>")
  94.     // virtual machine options (install) - help text 2/8
  95.     + _("<p>When various lifecycle events occur (<b>power off</b>, <b>reboot</b>, or <b>crash</b> of the VM), an action can automatically be taken. These actions are:</p>")
  96.     // virtual machine options (install) - help text 3/8
  97.     + _("<ul>")
  98.     + sformat("<li><p><b>%1</b>: %2</p></li>", 
  99.         _("Destroy"), 
  100.         // virtual machine options (install) - help text 4/8
  101.         _("The VM is cleaned up as normal."))
  102.     + sformat("<li><p><b>%1</b>: %2</p></li>", 
  103.         _("Restart"), 
  104.         // virtual machine options (install) - help text 5/8
  105.         _("A new VM is started in place of the old one."))
  106.     + sformat("<li><p><b>%1</b>: %2</p></li>", 
  107.         _("Preserve"), 
  108.         // virtual machine options (install) - help text 6/8
  109.         _("The VM will remain in memory until it is destroyed manually."))
  110.     + sformat("<li><p><b>%1</b>: %2</p></li>", 
  111.         _("Rename and restart"), 
  112.         // virtual machine options (install) - help text 7/8
  113.         _("The VM is renamed and will remain in memory until it is destroyed manually, and a new VM is started."))
  114.     // virtual machine options (install) - help text 8/8
  115.     + _("</ul>");
  116.     }
  117.  
  118.     Wizard::SetContents (title, contents, help_text, (boolean) WFM::Args(0),
  119.              (boolean) WFM::Args(1));
  120.  
  121.     if (VM_Common::proposal_type == "boot") 
  122.     UI::ChangeWidget(`id(`vmname), `Enabled, false);
  123.     else {
  124.     // allow only 0-9, a-z, A-Z, and the characters _-.:+ in domain name
  125.     UI::ChangeWidget (`id(`vmname), `ValidChars, String::CAlnum() + "_-:+");
  126.     // only allow string length of 255 chars max
  127.     UI::ChangeWidget (`id(`vmname), `InputMaxLength, 255);
  128.     }
  129.  
  130.     if (VM_Common::proposal_type != "install") {
  131.     UI::ChangeWidget(`id(`startmode), `Value, VM::GetStartMode());
  132.     UI::ChangeWidget(`id(`on_poweroff), `Value, VM::GetOnPowerOff());
  133.     UI::ChangeWidget(`id(`on_reboot), `Value, VM::GetOnReboot());
  134.     UI::ChangeWidget(`id(`on_crash), `Value, VM::GetOnCrash());
  135.     }
  136.  
  137.     any ret = nil;
  138.     while (true) {
  139.  
  140.     ret = Wizard::UserInput ();
  141.  
  142.     if (ret == `abort || ret == `cancel) {
  143.         if (Popup::ReallyAbort(true))
  144.             break;
  145.     }
  146.     else if (ret == `back) {
  147.         break;
  148.     }
  149.     if (ret == `next) {
  150.  
  151.         if (VM_Common::proposal_type != "boot") {
  152.             string vmname = (string) UI::QueryWidget (`id(`vmname), `Value);
  153.             if (vmname == nil || vmname == "") {
  154.             // error message: do not allow empty name of virtual machine
  155.             Report::Error(_("Name of Virtual Machine cannot be left empty.
  156. Please, specify a Name of Virtual Machine."));
  157.             continue;
  158.             }
  159.  
  160.             if ( VM::ValidateConfigName(vmname) == false ) {
  161.             // error message: name of virtual machine must be unique, entered name is already in use
  162.             Report::Error(_("Name of Virtual Machine is already used.
  163. Enter another name.
  164. "));
  165.             continue;
  166.                 }
  167.             // do not allow machine names of '.' or '..'
  168.             if (vmname == "." || vmname == "..") {
  169.             // popup error message
  170.             Report::Error(_("Name of Virtual Machine cannot be exactly '.' or '..'"));
  171.             continue;
  172.             }
  173.             // do not allow the vmname to start with a number
  174.             if (findfirstof(vmname, String::CDigit()) == 0) {
  175.             // popup error message
  176.             Report::Error(_("Name of Virtual Machine cannot begin with a number."));
  177.             continue;
  178.             }
  179.  
  180.             VM::SetConfigName(vmname);
  181.         }
  182.  
  183.         if (VM_Common::proposal_type != "install") {
  184.             string startmode = (string) UI::QueryWidget (`id(`startmode), `Value);
  185.             y2milestone("startmode: %1", startmode);
  186.             VM::SetStartMode(startmode);
  187.             string on_poweroff = (string) UI::QueryWidget (`id(`on_poweroff), `Value);
  188.             y2milestone("on_poweroff: %1", on_poweroff);
  189.             VM::SetOnPowerOff(on_poweroff);
  190.             string on_reboot = (string) UI::QueryWidget (`id(`on_reboot), `Value);
  191.             y2milestone("on_reboot: %1", on_reboot);
  192.             VM::SetOnReboot(on_reboot);
  193.             string on_crash = (string) UI::QueryWidget (`id(`on_crash), `Value);
  194.             y2milestone("on_crash: %1", on_crash);
  195.             VM::SetOnCrash(on_crash);
  196.         }
  197.  
  198.         break;
  199.     }
  200.     else {
  201.         y2error("unexpected retcode: %1", ret);
  202.         continue;
  203.     }
  204.     }
  205.  
  206.     Wizard::CloseDialog ();
  207.     return ret;
  208.  
  209.  
  210. /* EOF */
  211. }
  212.