create: Add kernel/initrd install option for arm
Basically just show kernel/initrd options for the 'import' install method on non-x86.
This commit is contained in:
parent
89ba152f00
commit
d6f96f72d5
340
ui/create.ui
340
ui/create.ui
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- Generated with glade 3.16.0 on Tue Oct 1 17:54:45 2013 -->
|
<!-- Generated with glade 3.16.0 on Wed Oct 2 10:09:09 2013 -->
|
||||||
<interface>
|
<interface>
|
||||||
<!-- interface-requires gtk+ 3.0 -->
|
<!-- interface-requires gtk+ 3.0 -->
|
||||||
<object class="GtkAdjustment" id="adjustment1">
|
<object class="GtkAdjustment" id="adjustment1">
|
||||||
|
@ -293,10 +293,11 @@
|
||||||
<property name="spacing">3</property>
|
<property name="spacing">3</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkRadioButton" id="method-container-app">
|
<object class="GtkRadioButton" id="method-container-app">
|
||||||
<property name="label" translatable="yes">Application container</property>
|
<property name="label" translatable="yes">_Application container</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="active">True</property>
|
<property name="active">True</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
|
@ -310,10 +311,11 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkRadioButton" id="method-container-os">
|
<object class="GtkRadioButton" id="method-container-os">
|
||||||
<property name="label" translatable="yes">Operating system container</property>
|
<property name="label" translatable="yes">O_perating system container</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
<property name="group">method-container-app</property>
|
<property name="group">method-container-app</property>
|
||||||
|
@ -497,7 +499,9 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="label" translatable="yes">Machine Type:</property>
|
<property name="label" translatable="yes">_Machine Type:</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="mnemonic_widget">config-machine</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
|
@ -510,6 +514,7 @@
|
||||||
<object class="GtkComboBox" id="config-machine">
|
<object class="GtkComboBox" id="config-machine">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<signal name="changed" handler="on_config_machine_changed" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -616,7 +621,7 @@ bar</property>
|
||||||
<object class="GtkVBox" id="vbox7">
|
<object class="GtkVBox" id="vbox7">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="spacing">10</property>
|
<property name="spacing">24</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkNotebook" id="install-method-pages">
|
<object class="GtkNotebook" id="install-method-pages">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -1046,16 +1051,75 @@ User shouldn't see this.</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkVBox" id="vbox20">
|
<object class="GtkBox" id="box2">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="spacing">6</property>
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">24</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label41">
|
<object class="GtkVBox" id="vbox20">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="xalign">0</property>
|
<property name="spacing">6</property>
|
||||||
<property name="label" translatable="yes">Provide the existing storage path:</property>
|
<child>
|
||||||
|
<object class="GtkLabel" id="label41">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Provide the existing storage path:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAlignment" id="alignment22">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="left_padding">15</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHBox" id="hbox1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="install-import-entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="invisible_char">●</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="install-import-browse">
|
||||||
|
<property name="label" translatable="yes">B_rowse...</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="clicked" handler="on_install_import_browse_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -1064,43 +1128,245 @@ User shouldn't see this.</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkAlignment" id="alignment22">
|
<object class="GtkBox" id="config-kernel-box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="left_padding">12</property>
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkHBox" id="hbox1">
|
<object class="GtkLabel" id="label11">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="spacing">6</property>
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Direct kernel boot:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAlignment" id="alignment19">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="left_padding">15</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="install-import-entry">
|
<object class="GtkGrid" id="grid1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="invisible_char">●</property>
|
<property name="row_spacing">6</property>
|
||||||
|
<property name="column_spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label38">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">_Kernel path:</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="mnemonic_widget">config-kernel</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label48">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">_Initrd path:</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="mnemonic_widget">config-initrd</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">2</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label49">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">_DTB path:</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="mnemonic_widget">config-dtb</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">3</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="config-kernel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="config-initrd">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">2</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="config-dtb">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">3</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="config-kernel-browse">
|
||||||
|
<property name="label" translatable="yes">Br_owse...</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="clicked" handler="on_config_kernel_browse_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">2</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="config-initrd-browse">
|
||||||
|
<property name="label" translatable="yes">Bro_wse...</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="clicked" handler="on_config_initrd_browse_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">2</property>
|
||||||
|
<property name="top_attach">2</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="config-dtb-browse">
|
||||||
|
<property name="label" translatable="yes">Brow_se...</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="clicked" handler="on_config_dtb_browse_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">2</property>
|
||||||
|
<property name="top_attach">3</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="config-dtb-warn-virtio">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="image6">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="stock">gtk-dialog-warning</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label50">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes"><span size='small'>Specifying a DTB allows use of virtio for improved performance</span></property>
|
||||||
|
<property name="use_markup">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">3</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label51">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Kerne_l args:</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="mnemonic_widget">config-kernel-args</property>
|
||||||
|
<property name="ellipsize">end</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">4</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="config-kernel-args">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">4</property>
|
||||||
|
<property name="width">2</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="install-import-browse">
|
|
||||||
<property name="label" translatable="yes">B_rowse...</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<signal name="clicked" handler="on_install_import_browse_clicked" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|
|
@ -112,6 +112,7 @@ class vmmCreate(vmmGObjectUI):
|
||||||
"on_create_vm_name_activate": self.forward,
|
"on_create_vm_name_activate": self.forward,
|
||||||
"on_create_conn_changed": self.conn_changed,
|
"on_create_conn_changed": self.conn_changed,
|
||||||
"on_method_changed": self.method_changed,
|
"on_method_changed": self.method_changed,
|
||||||
|
"on_config_machine_changed": self.machine_changed,
|
||||||
|
|
||||||
"on_install_url_box_changed": self.url_box_changed,
|
"on_install_url_box_changed": self.url_box_changed,
|
||||||
"on_install_local_cdrom_toggled": self.toggle_local_cdrom,
|
"on_install_local_cdrom_toggled": self.toggle_local_cdrom,
|
||||||
|
@ -129,6 +130,10 @@ class vmmCreate(vmmGObjectUI):
|
||||||
"on_install_detect_os_box_show": self.detect_visibility_changed,
|
"on_install_detect_os_box_show": self.detect_visibility_changed,
|
||||||
"on_install_detect_os_box_hide": self.detect_visibility_changed,
|
"on_install_detect_os_box_hide": self.detect_visibility_changed,
|
||||||
|
|
||||||
|
"on_config_kernel_browse_clicked": self.browse_kernel,
|
||||||
|
"on_config_initrd_browse_clicked": self.browse_initrd,
|
||||||
|
"on_config_dtb_browse_clicked": self.browse_dtb,
|
||||||
|
|
||||||
"on_enable_storage_toggled": self.toggle_enable_storage,
|
"on_enable_storage_toggled": self.toggle_enable_storage,
|
||||||
"on_config_storage_browse_clicked": self.browse_storage,
|
"on_config_storage_browse_clicked": self.browse_storage,
|
||||||
"on_config_storage_select_toggled": self.toggle_storage_select,
|
"on_config_storage_select_toggled": self.toggle_storage_select,
|
||||||
|
@ -364,6 +369,9 @@ class vmmCreate(vmmGObjectUI):
|
||||||
|
|
||||||
# Install import
|
# Install import
|
||||||
self.widget("install-import-entry").set_text("")
|
self.widget("install-import-entry").set_text("")
|
||||||
|
self.widget("config-kernel").set_text("")
|
||||||
|
self.widget("config-initrd").set_text("")
|
||||||
|
self.widget("config-dtb").set_text("")
|
||||||
|
|
||||||
# Install container app
|
# Install container app
|
||||||
self.widget("install-app-entry").set_text("/bin/sh")
|
self.widget("install-app-entry").set_text("/bin/sh")
|
||||||
|
@ -391,7 +399,9 @@ class vmmCreate(vmmGObjectUI):
|
||||||
# Make sure window is a sane size
|
# Make sure window is a sane size
|
||||||
self.topwin.resize(1, 1)
|
self.topwin.resize(1, 1)
|
||||||
|
|
||||||
def _change_install_options_from_arch(self):
|
def set_caps_state(self):
|
||||||
|
# State that is dependent on when capsguest changes
|
||||||
|
|
||||||
# Helper state
|
# Helper state
|
||||||
is_local = not self.conn.is_remote()
|
is_local = not self.conn.is_remote()
|
||||||
is_storage_capable = self.conn.is_storage_capable()
|
is_storage_capable = self.conn.is_storage_capable()
|
||||||
|
@ -401,6 +411,9 @@ class vmmCreate(vmmGObjectUI):
|
||||||
can_remote_url = self.conn.check_stream_support(
|
can_remote_url = self.conn.check_stream_support(
|
||||||
self.conn.SUPPORT_STREAM_UPLOAD)
|
self.conn.SUPPORT_STREAM_UPLOAD)
|
||||||
|
|
||||||
|
installable_arch = (self.capsguest.arch in
|
||||||
|
["i686", "x86_64", "ppc64", "ia64"])
|
||||||
|
|
||||||
# Install Options
|
# Install Options
|
||||||
method_tree = self.widget("method-tree")
|
method_tree = self.widget("method-tree")
|
||||||
method_pxe = self.widget("method-pxe")
|
method_pxe = self.widget("method-pxe")
|
||||||
|
@ -408,9 +421,11 @@ class vmmCreate(vmmGObjectUI):
|
||||||
method_import = self.widget("method-import")
|
method_import = self.widget("method-import")
|
||||||
method_container_app = self.widget("method-container-app")
|
method_container_app = self.widget("method-container-app")
|
||||||
|
|
||||||
method_tree.set_sensitive(is_local or can_remote_url)
|
method_tree.set_sensitive((is_local or can_remote_url) and
|
||||||
method_local.set_sensitive(not is_pv and can_storage)
|
installable_arch)
|
||||||
method_pxe.set_sensitive(not is_pv)
|
method_local.set_sensitive(not is_pv and can_storage and
|
||||||
|
installable_arch)
|
||||||
|
method_pxe.set_sensitive(not is_pv and installable_arch)
|
||||||
method_import.set_sensitive(can_storage)
|
method_import.set_sensitive(can_storage)
|
||||||
virt_methods = [method_local, method_tree, method_pxe, method_import]
|
virt_methods = [method_local, method_tree, method_pxe, method_import]
|
||||||
|
|
||||||
|
@ -432,6 +447,13 @@ class vmmCreate(vmmGObjectUI):
|
||||||
pxe_tt = base % "PXE"
|
pxe_tt = base % "PXE"
|
||||||
local_tt = base % "CDROM/ISO"
|
local_tt = base % "CDROM/ISO"
|
||||||
|
|
||||||
|
if not installable_arch:
|
||||||
|
msg = (_("Architecture '%s' is not installable") %
|
||||||
|
self.capsguest.arch)
|
||||||
|
tree_tt = msg
|
||||||
|
local_tt = msg
|
||||||
|
pxe_tt = msg
|
||||||
|
|
||||||
for w in virt_methods:
|
for w in virt_methods:
|
||||||
if w.get_sensitive():
|
if w.get_sensitive():
|
||||||
w.set_active(True)
|
w.set_active(True)
|
||||||
|
@ -453,6 +475,13 @@ class vmmCreate(vmmGObjectUI):
|
||||||
self.widget("virt-install-box").set_visible(not is_container)
|
self.widget("virt-install-box").set_visible(not is_container)
|
||||||
self.widget("container-install-box").set_visible(is_container)
|
self.widget("container-install-box").set_visible(is_container)
|
||||||
|
|
||||||
|
show_kernel = (self.capsguest.arch not in ["x86_64", "i686"])
|
||||||
|
show_dtb = ("arm" in self.capsguest.arch or
|
||||||
|
"microblaze" in self.capsguest.arch or
|
||||||
|
"ppc" in self.capsguest.arch)
|
||||||
|
self.widget("config-kernel-box").set_visible(show_kernel)
|
||||||
|
uihelpers.set_grid_row_visible(self.widget("config-dtb"), show_dtb)
|
||||||
|
|
||||||
def set_conn_state(self):
|
def set_conn_state(self):
|
||||||
# Update all state that has some dependency on the current connection
|
# Update all state that has some dependency on the current connection
|
||||||
self.conn.schedule_priority_tick(pollnet=True,
|
self.conn.schedule_priority_tick(pollnet=True,
|
||||||
|
@ -508,9 +537,6 @@ class vmmCreate(vmmGObjectUI):
|
||||||
"are not loaded. Your virtual machines may perform poorly.")
|
"are not loaded. Your virtual machines may perform poorly.")
|
||||||
self.startup_warning(error)
|
self.startup_warning(error)
|
||||||
|
|
||||||
# Set install options
|
|
||||||
self._change_install_options_from_arch()
|
|
||||||
|
|
||||||
# Install local
|
# Install local
|
||||||
iso_option = self.widget("install-local-iso")
|
iso_option = self.widget("install-local-iso")
|
||||||
cdrom_option = self.widget("install-local-cdrom")
|
cdrom_option = self.widget("install-local-cdrom")
|
||||||
|
@ -705,6 +731,8 @@ class vmmCreate(vmmGObjectUI):
|
||||||
uihelpers.set_grid_row_visible(lst, show)
|
uihelpers.set_grid_row_visible(lst, show)
|
||||||
if show:
|
if show:
|
||||||
lst.set_active(default)
|
lst.set_active(default)
|
||||||
|
else:
|
||||||
|
lst.emit("changed")
|
||||||
|
|
||||||
def populate_conn_list(self, urihint=None):
|
def populate_conn_list(self, urihint=None):
|
||||||
conn_list = self.widget("create-conn")
|
conn_list = self.widget("create-conn")
|
||||||
|
@ -856,7 +884,7 @@ class vmmCreate(vmmGObjectUI):
|
||||||
self.capsguest.arch,
|
self.capsguest.arch,
|
||||||
self.capsdomain.hypervisor_type)
|
self.capsdomain.hypervisor_type)
|
||||||
self.populate_machine()
|
self.populate_machine()
|
||||||
self._change_install_options_from_arch()
|
self.set_caps_state()
|
||||||
|
|
||||||
def populate_summary(self):
|
def populate_summary(self):
|
||||||
distro, version, dlabel, vlabel = self.get_config_os_info()
|
distro, version, dlabel, vlabel = self.get_config_os_info()
|
||||||
|
@ -916,6 +944,13 @@ class vmmCreate(vmmGObjectUI):
|
||||||
def get_config_name(self):
|
def get_config_name(self):
|
||||||
return self.widget("create-vm-name").get_text()
|
return self.widget("create-vm-name").get_text()
|
||||||
|
|
||||||
|
def get_config_machine(self):
|
||||||
|
lst = self.widget("config-machine")
|
||||||
|
idx = lst.get_active()
|
||||||
|
if not lst.get_visible() or idx == -1:
|
||||||
|
return None
|
||||||
|
return lst.get_model()[idx][0]
|
||||||
|
|
||||||
def is_install_page(self):
|
def is_install_page(self):
|
||||||
notebook = self.widget("create-pages")
|
notebook = self.widget("create-pages")
|
||||||
curpage = notebook.get_current_page()
|
curpage = notebook.get_current_page()
|
||||||
|
@ -1082,6 +1117,14 @@ class vmmCreate(vmmGObjectUI):
|
||||||
ignore = src
|
ignore = src
|
||||||
self.set_page_num_text(0)
|
self.set_page_num_text(0)
|
||||||
|
|
||||||
|
def machine_changed(self, ignore):
|
||||||
|
machine = self.get_config_machine()
|
||||||
|
show_dtb_virtio = (self.capsguest.arch == "armv7l" and
|
||||||
|
machine in ["vexpress-a9", "vexpress-15"])
|
||||||
|
print machine, show_dtb_virtio
|
||||||
|
uihelpers.set_grid_row_visible(
|
||||||
|
self.widget("config-dtb-warn-virtio"), show_dtb_virtio)
|
||||||
|
|
||||||
def netdev_changed(self, ignore):
|
def netdev_changed(self, ignore):
|
||||||
self.check_network_selection()
|
self.check_network_selection()
|
||||||
|
|
||||||
|
@ -1240,31 +1283,25 @@ class vmmCreate(vmmGObjectUI):
|
||||||
else:
|
else:
|
||||||
nodetect_label.show()
|
nodetect_label.show()
|
||||||
|
|
||||||
def browse_oscontainer(self, ignore1=None, ignore2=None):
|
def browse_oscontainer(self, ignore):
|
||||||
def set_path(ignore, path):
|
self._browse_file("install-oscontainer-fs", is_dir=True)
|
||||||
self.widget("install-oscontainer-fs").set_text(path)
|
def browse_app(self, ignore):
|
||||||
self._browse_file(set_path, is_media=False, is_dir=True)
|
self._browse_file("install-app-entry")
|
||||||
|
def browse_import(self, ignore):
|
||||||
def browse_app(self, ignore1=None, ignore2=None):
|
self._browse_file("install-import-entry")
|
||||||
def set_path(ignore, path):
|
def browse_iso(self, ignore):
|
||||||
self.widget("install-app-entry").set_text(path)
|
|
||||||
self._browse_file(set_path, is_media=False)
|
|
||||||
|
|
||||||
def browse_import(self, ignore1=None, ignore2=None):
|
|
||||||
def set_path(ignore, path):
|
|
||||||
self.widget("install-import-entry").set_text(path)
|
|
||||||
self._browse_file(set_path, is_media=False)
|
|
||||||
|
|
||||||
def browse_iso(self, ignore1=None, ignore2=None):
|
|
||||||
def set_path(ignore, path):
|
def set_path(ignore, path):
|
||||||
self.widget("install-local-box").get_child().set_text(path)
|
self.widget("install-local-box").get_child().set_text(path)
|
||||||
self._browse_file(set_path, is_media=True)
|
self._browse_file(None, cb=set_path, is_media=True)
|
||||||
self.widget("install-local-box").activate()
|
self.widget("install-local-box").activate()
|
||||||
|
def browse_storage(self, ignore):
|
||||||
def browse_storage(self, ignore1):
|
self._browse_file("config-storage-entry")
|
||||||
def set_path(ignore, path):
|
def browse_kernel(self, ignore):
|
||||||
self.widget("config-storage-entry").set_text(path)
|
self._browse_file("config-kernel")
|
||||||
self._browse_file(set_path, is_media=False)
|
def browse_initrd(self, ignore):
|
||||||
|
self._browse_file("config-initrd")
|
||||||
|
def browse_dtb(self, ignore):
|
||||||
|
self._browse_file("config-dtb")
|
||||||
|
|
||||||
def toggle_enable_storage(self, src):
|
def toggle_enable_storage(self, src):
|
||||||
self.widget("config-storage-box").set_sensitive(src.get_active())
|
self.widget("config-storage-box").set_sensitive(src.get_active())
|
||||||
|
@ -1429,15 +1466,10 @@ class vmmCreate(vmmGObjectUI):
|
||||||
gdev.type = gtype
|
gdev.type = gtype
|
||||||
return gdev
|
return gdev
|
||||||
|
|
||||||
|
def build_guest(self):
|
||||||
def build_guest_stub(self):
|
guest = self.conn.caps.build_virtinst_guest(
|
||||||
return self.conn.caps.build_virtinst_guest(self.conn.get_backend(),
|
self.conn.get_backend(), self.capsguest, self.capsdomain)
|
||||||
self.capsguest,
|
guest.os.machine = self.get_config_machine()
|
||||||
self.capsdomain)
|
|
||||||
|
|
||||||
def build_guest(self, installer):
|
|
||||||
guest = self.build_guest_stub()
|
|
||||||
guest.installer = installer
|
|
||||||
|
|
||||||
# Generate UUID (makes customize dialog happy)
|
# Generate UUID (makes customize dialog happy)
|
||||||
try:
|
try:
|
||||||
|
@ -1482,7 +1514,13 @@ class vmmCreate(vmmGObjectUI):
|
||||||
return
|
return
|
||||||
|
|
||||||
def validate_name_page(self):
|
def validate_name_page(self):
|
||||||
self.build_guest_stub()
|
# We just set this here because it's needed soon after for distro
|
||||||
|
# detction. But the 'real' self.guest is created in validate_install,
|
||||||
|
# and it just uses build_guest, so don't ever add any other guest
|
||||||
|
# altering here.
|
||||||
|
self.guest = self.build_guest()
|
||||||
|
if not self.guest:
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _generate_default_name(self, distro, variant):
|
def _generate_default_name(self, distro, variant):
|
||||||
|
@ -1564,10 +1602,12 @@ class vmmCreate(vmmGObjectUI):
|
||||||
|
|
||||||
# Build the installer and Guest instance
|
# Build the installer and Guest instance
|
||||||
try:
|
try:
|
||||||
|
# Overwrite the guest
|
||||||
installer = instclass(self.conn.get_backend())
|
installer = instclass(self.conn.get_backend())
|
||||||
self.guest = self.build_guest(installer)
|
self.guest = self.build_guest()
|
||||||
if not self.guest:
|
if not self.guest:
|
||||||
return False
|
return False
|
||||||
|
self.guest.installer = installer
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
return self.err.val_err(
|
return self.err.val_err(
|
||||||
_("Error setting installer parameters."), e)
|
_("Error setting installer parameters."), e)
|
||||||
|
@ -1608,6 +1648,31 @@ class vmmCreate(vmmGObjectUI):
|
||||||
except ValueError, e:
|
except ValueError, e:
|
||||||
return self.err.val_err(_("Error setting OS information."), e)
|
return self.err.val_err(_("Error setting OS information."), e)
|
||||||
|
|
||||||
|
# Setting kernel
|
||||||
|
if instmethod == INSTALL_PAGE_IMPORT:
|
||||||
|
kernel = self.widget("config-kernel").get_text() or None
|
||||||
|
kargs = self.widget("config-kernel-args").get_text() or None
|
||||||
|
initrd = self.widget("config-initrd").get_text() or None
|
||||||
|
dtb = self.widget("config-dtb").get_text() or None
|
||||||
|
|
||||||
|
if not self.widget("config-dtb").get_visible():
|
||||||
|
dtb = None
|
||||||
|
if not self.widget("config-kernel").get_visible():
|
||||||
|
kernel = None
|
||||||
|
initrd = None
|
||||||
|
kargs = None
|
||||||
|
|
||||||
|
self.guest.os.kernel = kernel
|
||||||
|
self.guest.os.initrd = initrd
|
||||||
|
self.guest.os.dtb = dtb
|
||||||
|
self.guest.os.kernel_args = kargs
|
||||||
|
|
||||||
|
require_kernel = ("arm" in self.capsguest.arch)
|
||||||
|
if require_kernel and not kernel:
|
||||||
|
return self.err.val_err(
|
||||||
|
_("A kernel is required for %s guests.") %
|
||||||
|
self.capsguest.arch)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
name = self._generate_default_name(distro, variant)
|
name = self._generate_default_name(distro, variant)
|
||||||
self.widget("create-vm-name").set_text(name)
|
self.widget("create-vm-name").set_text(name)
|
||||||
|
@ -2069,9 +2134,8 @@ class vmmCreate(vmmGObjectUI):
|
||||||
try:
|
try:
|
||||||
installer = virtinst.DistroInstaller(self.conn)
|
installer = virtinst.DistroInstaller(self.conn)
|
||||||
installer.location = media
|
installer.location = media
|
||||||
guest = self.guest or self.build_guest_stub()
|
|
||||||
|
|
||||||
self.detectedDistro = installer.detect_distro(guest)
|
self.detectedDistro = installer.detect_distro(self.guest)
|
||||||
except:
|
except:
|
||||||
logging.exception("Error detecting distro.")
|
logging.exception("Error detecting distro.")
|
||||||
self.detectedDistro = -1
|
self.detectedDistro = -1
|
||||||
|
@ -2086,7 +2150,7 @@ class vmmCreate(vmmGObjectUI):
|
||||||
ret = self.conn.rhel6_defaults(emu)
|
ret = self.conn.rhel6_defaults(emu)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def _browse_file(self, callback, is_media=False, is_dir=False):
|
def _browse_file(self, cbwidget, cb=None, is_media=False, is_dir=False):
|
||||||
if is_media:
|
if is_media:
|
||||||
reason = self.config.CONFIG_DIR_ISO_MEDIA
|
reason = self.config.CONFIG_DIR_ISO_MEDIA
|
||||||
elif is_dir:
|
elif is_dir:
|
||||||
|
@ -2094,6 +2158,12 @@ class vmmCreate(vmmGObjectUI):
|
||||||
else:
|
else:
|
||||||
reason = self.config.CONFIG_DIR_IMAGE
|
reason = self.config.CONFIG_DIR_IMAGE
|
||||||
|
|
||||||
|
if cb:
|
||||||
|
callback = cb
|
||||||
|
else:
|
||||||
|
def callback(ignore, text):
|
||||||
|
self.widget(cbwidget).set_text(text)
|
||||||
|
|
||||||
if self.storage_browser is None:
|
if self.storage_browser is None:
|
||||||
self.storage_browser = vmmStorageBrowser(self.conn)
|
self.storage_browser = vmmStorageBrowser(self.conn)
|
||||||
|
|
||||||
|
|
|
@ -215,7 +215,10 @@ class vmmStorageBrowser(vmmGObjectUI):
|
||||||
row = uihelpers.get_list_selection(self.widget("pool-list"))
|
row = uihelpers.get_list_selection(self.widget("pool-list"))
|
||||||
if not row:
|
if not row:
|
||||||
return
|
return
|
||||||
return self.conn.get_pool(row[0])
|
try:
|
||||||
|
return self.conn.get_pool(row[0])
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
def current_vol_row(self):
|
def current_vol_row(self):
|
||||||
if not self.current_pool():
|
if not self.current_pool():
|
||||||
|
|
Loading…
Reference in New Issue