Finished help document, along with help buttons on all the create wizard screens, and a few bug fixes in the create wizard.

This commit is contained in:
Hugh O. Brock 2007-03-19 20:17:30 -04:00
parent 6bc35bd215
commit 821c283db1
8 changed files with 381 additions and 149 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -819,7 +819,10 @@
<sect1 id="virt-manager-create-wizard">
<title>The Create Wizard</title>
<para>You create new virtual machines here</para>
<para>The Create Wizard helps you gather the information necessary to create
new virtual machines. All the information in each screen is retained and can
be backed-up-to and modified until you click <guibutton>Finish</guibutton>
on the last screen.</para>
<sect2 id="virt-manager-system-name">
<title>The System Name screen</title>
<para>Choose a name for your virtual system. The name must be non-blank,
@ -829,29 +832,206 @@
<sect2 id="virt-manager-virt-method">
<title>The Virtualization Method screen</title>
<para>Choose a virtualization method for your new system.</para>
<para>Choose a virtualization method for your new system. The choices
are:</para>
<variablelist>
<varlistentry><term>Paravirtualized</term> <listitem><para>A
paravirtualized system typically performs better than a fully virtualized
system because certain operations &mdash; disk and network access, for
example &mdash; have direct access to the hardware. However a
paravirtualized VM requires a specially modified kernel. If you
choose paravirtualized, you must make sure this specially modified kernel
is available for the operating system you wish to install.</para>
</listitem>
</varlistentry>
<varlistentry><term>Fully Virtualized</term>
<listitem>
<para>A fully virtualized system simulates all the hardware for the VM,
permitting no direct access. It allows for a greater range of operating
systems, but generally will not perform as well as a paravirtualized
system. Note that for some hypervisor types, full virtualization requires
hardware support. In addition if your hardware allows it, you can
enable hardware acceleration for your fully virtualized guest (this
item will be grayed out unless your hardware is acceleration-capable).</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="virt-manager-installation-media">
<title>The Installation Media screens</title>
<para>Choose installation media for your new system.</para>
<para>The Installation Media screens let you specify where the physical or
virtual install media for your VM are located, so that the installer can
find them. There are two screens, one for each type of virtual
machine.</para>
<sect3 id="virt-manager-installation-media-paravirt">
<title>Paravirtualized installation media</title>
<figure id="virt-manager-FIG-paravirt-media">
<title>Choose Install Media for Paravirtualized VMs</title>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="figures/vm-paravirt-media.png" format="PNG"/>
</imageobject>
<textobject> <phrase>Shows the paravirtualized VM media choice window.</phrase>
</textobject>
</mediaobject>
</screenshot>
</figure>
<para>A paravirtualized VM requires an install tree that follows the
pattern of the Fedora install tree (e.g. <ulink type="http"
url="http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/">
this tree</ulink>). The <guilabel>Install Media URL</guilabel> box lets
you enter a URL for a tree like this. When you then go to install the
guest, the installer will check to see if the URL you entered is
readable, and if so download the paravirtualized install kernel and
initrd that it will need to start the install. You can use the following
URL types:</para>
<variablelist>
<varlistentry><term>http:</term>
<listitem><para>e.g. <userinput>http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/</userinput></para>
</listitem>
</varlistentry>
<varlistentry><term>ftp:</term>
<listitem><para>e.g. <userinput>ftp://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/</userinput></para>
</listitem>
</varlistentry>
<varlistentry><term>nfs:</term>
<listitem><para>e.g. <userinput>nfs:myfileserver:/images/linux/core/6/i386/os/</userinput></para>
</listitem>
</varlistentry>
<varlistentry><term>local file:</term>
<listitem><para>e.g. <userinput>/tmp/paravirttrees/fedora/os</userinput>
</para>
</listitem>
</varlistentry>
</variablelist>
<para>You can specify a kickstart URL for your paravirtualized VM in
exactly the same way as the install tree described
above. <application>&app;</application> will remember the last 5 URLs you
enter in these windows, so if you are installing multiple VMs you will
not have to type the URLs more than once.
</para>
</sect3>
<sect3 id="virt-manager-installation-media-full-virt">
<title>Fully Virtualized Installation Media</title>
<figure id="virt-manager-FIG-full-virt-media">
<title>Choose Install Media for Fully Virtualized VMs</title>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="figures/vm-full-virt-media.png" format="PNG"/>
</imageobject>
<textobject> <phrase>Shows the fully virtualized VM media choice window.</phrase>
</textobject>
</mediaobject>
</screenshot>
</figure>
<para>A fully virtualized VM requires the standard installation media that
the same non-virtualized OS would require: either an actual CD or DVD, or
a corresponding ISO image. On the Installation Media screen for a fully
virtualized VM, you can therefore choose the path to your CD or DVD from
the pull-down list, or you can enter or browse to the path of the ISO
image you have saved in your local filesystem.</para>
<para>For fully virtualized VMs, <application>&app;</application> also
asks for the operating system type and variant you are installing. The
installer uses this to set the <parameter>acpi</parameter> and
<parameter>apic</parameter> flags according to the OS type (other
parameters may be added to this list in the future).</para>
</sect3>
</sect2>
<sect2 id="virt-manager-storage-space">
<title>The Storage Space screen</title>
<para>Assign storage space for your new system.</para>
<title>Assigning Storage Space</title>
<figure id="virt-manager-FIG-assign-storage">
<title>Assign Storage</title>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="figures/vm-assign-storage.png" format="PNG"/>
</imageobject>
<textobject> <phrase>Shows the Assigning Storage window.</phrase>
</textobject>
</mediaobject>
</screenshot>
</figure>
<para>Designate the primary storage device for your VM. You may choose an
existing physical or LVM partition in the <guilabel>Partition</guilabel>
box; or, you may choose to use a file on the local filesystem. If you
choose to use a file that does not already exist, you may specify the size
of the file in megabytes. If you choose an existing file, that file's size
will not change. If you use a file for your primary storage device, you
may also choose whether to allocate the entire file
at creation time, or whether to allow it to grow to its maximum over
time.</para>
<warning>
<title>Sparse files can be dangerous</title>
<para>You may be tempted not to allocate your entire file when your VM is
created; filling a 5- to 10-GB file with 0s can take quite a while, and
you will avoid this wait by not allocating the entire file and instead using a
"sparse" file. However, be aware that this will slow down your VM's disk
performance significantly, as the underlying OS must keep allocating more
storage space as your VM runs. In addition, if the disk your sparse file
is on runs out of space, your VM may crash and lose data. You may
therefore only want to use a sparse file when testing, where guest
creation speed could be at a premium.</para>
</warning>
</sect2>
<sect2 id="virt-manager-memory-and-cpu">
<title>The Memory And CPU screen</title>
<para>Choose memory and cpu for your new system</para>
<title>Allocate Memory And CPU</title>
<figure id="virt-manager-FIG-mem-cpu">
<title>Set Memory and CPU</title>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="figures/vm-create-mem-cpu.png" format="PNG"/>
</imageobject>
<textobject> <phrase>Shows the VM Memory and CPU choice window.</phrase>
</textobject>
</mediaobject>
</screenshot>
</figure>
<para>The <guilabel>Memory</guilabel> section of this screen lets you set
two parameters, <guilabel>VM Max Memory</guilabel> and <guilabel>VM
Startup Memory</guilabel>. These settings work as follows:</para>
<variablelist>
<varlistentry><term>VM Max Memory</term> <listitem><para><guilabel>VM Max
Memory</guilabel> sets the maximum memory your VM can have unless you
reboot it with a higher setting. For paravirtualized VMs, the maximum
memory is a boot-time kernel setting; for fully virtualized VMs, the
maximum memory appears to the VM to be the amount of physical memory
available.</para>
</listitem>
</varlistentry>
<varlistentry><term>VM Startup Memory</term>
<listitem><para>For paravirtualized VMs, <guilabel>VM Startup
Memory</guilabel> sets the amount of memory to start the VM with. The
VM's available memory can then be changed from <application>&app;</application>
while the VM is running. For fully virtualized guests, this setting has
no effect.</para>
</listitem>
</varlistentry>
</variablelist>
<para>The virtual CPU section of this screen lets you set the number of
vCPUs your VM starts up with. For paravirtualized guests, this number can
be changed while the guest is running (although never to more than the VM
started with). For fully virtualized guests, this number can only be
changed while the guest is not running.</para>
</sect2>
<sect2 id="virt-manager-begin-installation">
<title>The Validation screen</title>
<para>Verify the setup for your new system. If you need to, back up and
<sect2 id="virt-manager-validation">
<title>Validation</title>
<para>The Validation screen lets you erify the setup for your new
system. If you need to, you can back up and
make changes. Clicking &quot;Finish&quot; will begin creating your virtual
machine.</para>
machine. If you have the <application>&app;</application> preferences set
to automatically open consoles, a <link
linkend="virt-manager-console-window">Console window</link> will pop up
as soon as the installer has downloaded the necessary images and booted
the VM's installer.
</para>
</sect2>
</sect1>

View File

@ -97,6 +97,8 @@ class vmmCreate(gobject.GObject):
gobject.TYPE_NONE, (str,str)),
"action-show-terminal": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, (str,str)),
"action-show-help": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, [str]),
}
def __init__(self, config, connection):
self.__gobject_init__()
@ -119,11 +121,10 @@ class vmmCreate(gobject.GObject):
"on_storage_file_address_changed": self.toggle_storage_size,
"on_storage_toggled" : self.change_storage_type,
"on_media_toggled" : self.change_media_type,
"on_pv_media_url_changed" : self.change_combo_box,
"on_pv_ks_url_changed" : self.change_combo_box,
"on_os_type_changed" : self.change_os_type,
"on_cpu_architecture_changed": self.change_cpu_arch,
"on_virt_method_toggled": self.change_virt_method,
"on_create_help_clicked": self.show_help,
})
self.set_initial_state()
@ -819,11 +820,6 @@ class vmmCreate(gobject.GObject):
for url in urls:
model.append([url])
def change_combo_box(self, box):
model = box.get_model()
box.child.set_text(model.get_value(box.get_active_iter(), 0))
return
def populate_os_model(self, model, oses):
model.clear()
for os in oses:
@ -892,3 +888,26 @@ class vmmCreate(gobject.GObject):
else:
return "xen"
def show_help(self, src):
# help to show depends on the notebook page, yahoo
page = self.window.get_widget("create-pages").get_current_page()
if page == 0:
self.emit("action-show-help", "virt-manager-create-wizard")
elif page == 1:
self.emit("action-show-help", "virt-manager-system-name")
elif page == 2:
self.emit("action-show-help", "virt-manager-virt-method")
elif page == 3:
self.emit("action-show-help", "virt-manager-installation-media-full-virt")
elif page == 4:
self.emit("action-show-help", "virt-manager-installation-media-paravirt")
elif page == 5:
self.emit("action-show-help", "virt-manager-storage-space")
elif page == 6:
self.emit("action-show-help", "virt-manager-memory-and-cpu")
elif page == 7:
self.emit("action-show-help", "virt-manager-validation")

View File

@ -270,6 +270,7 @@ class vmmEngine:
self.windowCreate = vmmCreate(self.get_config(), self.get_connection(uri, False))
self.windowCreate.connect("action-show-console", self._do_show_console)
self.windowCreate.connect("action-show-terminal", self._do_show_terminal)
self.windowCreate.connect("action-show-help", self._do_show_help)
self.windowCreate.reset_state()
self.windowCreate.show()

View File

@ -2200,7 +2200,6 @@ mipsel</property>
<property name="add_tearoffs">False</property>
<property name="has_frame">True</property>
<property name="focus_on_click">True</property>
<signal name="changed" handler="on_pv_media_url_changed" last_modification_time="Wed, 11 Oct 2006 10:31:09 GMT"/>
</widget>
</child>
</widget>
@ -2232,7 +2231,6 @@ mipsel</property>
<property name="add_tearoffs">False</property>
<property name="has_frame">True</property>
<property name="focus_on_click">True</property>
<signal name="changed" handler="on_pv_ks_url_changed" last_modification_time="Wed, 11 Oct 2006 10:31:19 GMT"/>
</widget>
</child>
</widget>
@ -4389,7 +4387,7 @@ mipsel</property>
<widget class="GtkLabel" id="label331">
<property name="visible">True</property>
<property name="label" translatable="yes">Press finish to create a new virtual machine with
this configuration &amp; display the virtual console.</property>
this configuration.</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@ -4457,154 +4455,187 @@ this configuration &amp; display the virtual console.</property>
</child>
<child>
<widget class="GtkHBox" id="hbox25">
<widget class="GtkHBox" id="hbox51">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">10</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label281">
<widget class="GtkAlignment" id="alignment135">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-cancel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_cancel_clicked" last_modification_time="Wed, 09 Aug 2006 17:55:38 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-back">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-go-back</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_back_clicked" last_modification_time="Wed, 09 Aug 2006 17:54:59 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-forward">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-go-forward</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_forward_clicked" last_modification_time="Wed, 09 Aug 2006 17:55:24 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-finish">
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_finish_clicked" last_modification_time="Wed, 09 Aug 2006 18:56:13 GMT"/>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">0</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkAlignment" id="alignment119">
<widget class="GtkButton" id="create-help">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">0</property>
<property name="right_padding">0</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_help_clicked" last_modification_time="Mon, 19 Mar 2007 23:31:32 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment134">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">0</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkHBox" id="hbox25">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">10</property>
<child>
<widget class="GtkHBox" id="hbox45">
<widget class="GtkButton" id="create-cancel">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">2</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_cancel_clicked" last_modification_time="Wed, 09 Aug 2006 17:55:38 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-back">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-go-back</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_back_clicked" last_modification_time="Wed, 09 Aug 2006 17:54:59 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-forward">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-go-forward</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_forward_clicked" last_modification_time="Wed, 09 Aug 2006 17:55:24 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="create-finish">
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_create_finish_clicked" last_modification_time="Wed, 09 Aug 2006 18:56:13 GMT"/>
<child>
<widget class="GtkImage" id="image95">
<widget class="GtkAlignment" id="alignment119">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<property name="xscale">0</property>
<property name="yscale">0</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">0</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkLabel" id="label305">
<property name="visible">True</property>
<property name="label" translatable="yes">_Finish</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
<child>
<widget class="GtkHBox" id="hbox45">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">2</property>
<child>
<widget class="GtkImage" id="image95">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label305">
<property name="visible">True</property>
<property name="label" translatable="yes">_Finish</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
</child>
@ -4613,13 +4644,14 @@ this configuration &amp; display the virtual console.</property>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="fill">False</property>
</packing>
</child>
</widget>