85 lines
3.0 KiB
Ruby
85 lines
3.0 KiB
Ruby
# ------------------------------------------------------------------------------
|
|
# Copyright (c) 2013 Novell, Inc. All Rights Reserved.
|
|
#
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify it under
|
|
# the terms of version 2 of the GNU General Public License as published by the
|
|
# Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along with
|
|
# this program; if not, contact Novell, Inc.
|
|
#
|
|
# To contact Novell about this file by physical or electronic mail, you may find
|
|
# current contact information at www.novell.com.
|
|
# ------------------------------------------------------------------------------
|
|
#
|
|
|
|
#
|
|
# File: clients/virt-install.ycp
|
|
# Package: Installation of a virtual machine
|
|
# Summary: Main VM installation YaST frontend for python based virt-install
|
|
# Authors: Charles E. Arnold <carnold@suse.com>
|
|
#
|
|
# $Id$
|
|
|
|
module Yast
|
|
class VirtinstallClient < Client
|
|
def main
|
|
textdomain "virt-install"
|
|
|
|
Yast.import "UI"
|
|
Yast.import "Popup"
|
|
Yast.import "String"
|
|
Yast.import "Arch"
|
|
|
|
#===================================================================
|
|
# Start virt-install (GUI) or vm-install if Text mode (commandline)
|
|
#-------------------------------------------------------------------
|
|
status = 0
|
|
@details = {}
|
|
|
|
Builtins.y2milestone("START HERE.")
|
|
if WFM.Args == ["help"]
|
|
# Ignore yast help request
|
|
return :next
|
|
end
|
|
|
|
if UI.TextMode()
|
|
if File.file?("/usr/bin/vm-install")
|
|
Builtins.y2milestone("Running virt-install in text mode is not supported. Running vm-install instead in command line mode.")
|
|
status = UI.RunInTerminal("/usr/bin/vm-install")
|
|
else
|
|
Popup.Error(_("Please use the command line to execute virt-install with the appropriate options for creating a VM."))
|
|
end
|
|
else
|
|
Builtins.y2milestone("Launching virt-manager to run virt-install in GUI mode.")
|
|
if Arch.is_xen0 == false
|
|
details = Convert.to_map(SCR.Execute(path(".target.bash_output"), "/usr/bin/virt-manager --connect=qemu:///system --show-domain-creator"))
|
|
else
|
|
details = Convert.to_map(SCR.Execute(path(".target.bash_output"), "/usr/bin/virt-manager --connect=xen:/// --show-domain-creator"))
|
|
end
|
|
status = Ops.get_integer(details, "exit", 0)
|
|
end
|
|
|
|
Builtins.y2milestone("virt-install finished with exit code: <%1>", status)
|
|
if status == 0
|
|
return :next
|
|
else
|
|
if Builtins.size(Ops.get_string(details, "stderr", "")) > 0
|
|
Popup.ErrorDetails(_("Failed to start virt-install"), Convert.to_string(details, "stderr", ""))
|
|
else
|
|
Popup.Error(_("Failed to start virt-install"))
|
|
end
|
|
end
|
|
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
|
|
Yast::VirtinstallClient.new.main
|