mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-11 07:55:52 -06:00
New 'Create VM' wizard.
This commit is contained in:
parent
a650c6c6ec
commit
f9dfe4acab
@ -251,6 +251,9 @@ class vmmConnection(gobject.GObject):
|
||||
def is_read_only(self):
|
||||
return self.readOnly
|
||||
|
||||
def is_active(self):
|
||||
return self.state == self.STATE_ACTIVE
|
||||
|
||||
def get_type(self):
|
||||
if self.vmm is None:
|
||||
return None
|
||||
@ -275,16 +278,56 @@ class vmmConnection(gobject.GObject):
|
||||
def get_capabilities(self):
|
||||
return virtinst.CapabilitiesParser.parse(self.vmm.getCapabilities())
|
||||
|
||||
def is_kvm_supported(self):
|
||||
if self.is_qemu_session():
|
||||
return False
|
||||
|
||||
caps = self.get_capabilities()
|
||||
for guest in caps.guests:
|
||||
for dom in guest.domains:
|
||||
if dom.hypervisor_type == "kvm":
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_remote(self):
|
||||
return virtinst.util.is_uri_remote(self.uri)
|
||||
|
||||
def is_storage_capable(self):
|
||||
return virtinst.util.is_storage_capable(self.vmm)
|
||||
|
||||
def is_qemu_session(self):
|
||||
(scheme, ignore, ignore, \
|
||||
(scheme, ignore, ignore,
|
||||
path, ignore, ignore) = virtinst.util.uri_split(self.uri)
|
||||
if path == "/session" and scheme.startswith("qemu"):
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_test_conn(self):
|
||||
(scheme, ignore, ignore,
|
||||
ignore, ignore, ignore) = virtinst.util.uri_split(self.uri)
|
||||
if scheme.startswith("test"):
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_pretty_desc(self):
|
||||
(scheme, ignore, hostname,
|
||||
path, ignore, ignore) = virtinst.util.uri_split(self.uri)
|
||||
|
||||
scheme = scheme.split("+")[0]
|
||||
|
||||
if scheme == "qemu":
|
||||
desc = "QEMU"
|
||||
if self.is_kvm_supported():
|
||||
desc += "/KVM"
|
||||
else:
|
||||
desc = scheme.capitalize()
|
||||
|
||||
if path == "/session":
|
||||
desc += " Usermode"
|
||||
if hostname:
|
||||
desc += " (%s)" % hostname
|
||||
return desc
|
||||
|
||||
def get_uri(self):
|
||||
return self.uri
|
||||
|
||||
@ -326,6 +369,12 @@ class vmmConnection(gobject.GObject):
|
||||
return True
|
||||
|
||||
|
||||
def get_pool_by_path(self, path):
|
||||
for pool in self.pools.values():
|
||||
if pool.get_target_path() == path:
|
||||
return pool
|
||||
return None
|
||||
|
||||
def open(self):
|
||||
if self.state != self.STATE_DISCONNECTED:
|
||||
return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -125,9 +125,9 @@ class vmmEngine(gobject.GObject):
|
||||
if self.connections[hvuri]["windowHost"] is not None:
|
||||
self.connections[hvuri]["windowHost"].close()
|
||||
self.connections[hvuri]["windowHost"] = None
|
||||
if self.connections[hvuri]["windowCreate"] is not None:
|
||||
self.connections[hvuri]["windowCreate"].close()
|
||||
self.connections[hvuri]["windowCreate"] = None
|
||||
if (self.windowCreate and self.windowCreate.conn and
|
||||
self.windowCreate.conn.get_uri() == hvuri):
|
||||
self.windowCreate.close()
|
||||
|
||||
def reschedule_timer(self, ignore1,ignore2,ignore3,ignore4):
|
||||
self.schedule_timer()
|
||||
@ -342,21 +342,18 @@ class vmmEngine(gobject.GObject):
|
||||
return True
|
||||
|
||||
def show_create(self, uri):
|
||||
con = self.get_connection(uri)
|
||||
|
||||
if self.connections[uri]["windowCreate"] == None:
|
||||
create = vmmCreate(self.get_config(), con)
|
||||
if self.windowCreate == None:
|
||||
create = vmmCreate(self.get_config(), self)
|
||||
create.connect("action-show-console", self._do_show_console)
|
||||
create.connect("action-show-help", self._do_show_help)
|
||||
self.connections[uri]["windowCreate"] = create
|
||||
self.connections[uri]["windowCreate"].show()
|
||||
self.windowCreate = create
|
||||
self.windowCreate.show(uri)
|
||||
|
||||
def add_connection(self, uri, readOnly=None, autoconnect=False):
|
||||
conn = vmmConnection(self.get_config(), uri, readOnly)
|
||||
self.connections[uri] = {
|
||||
"connection": conn,
|
||||
"windowHost": None,
|
||||
"windowCreate": None,
|
||||
"windowDetails": {},
|
||||
"windowConsole": {},
|
||||
}
|
||||
|
@ -695,7 +695,6 @@ class vmmManager(gobject.GObject):
|
||||
# Nothing is selected
|
||||
self.window.get_widget("vm-open").set_sensitive(False)
|
||||
self.window.get_widget("vm-delete").set_sensitive(False)
|
||||
self.window.get_widget("vm-new").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_details").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_delete").set_sensitive(False)
|
||||
self.window.get_widget("menu_host_details").set_sensitive(False)
|
||||
@ -710,7 +709,6 @@ class vmmManager(gobject.GObject):
|
||||
self.window.get_widget("vm-delete").set_sensitive(True)
|
||||
else:
|
||||
self.window.get_widget("vm-delete").set_sensitive(False)
|
||||
self.window.get_widget("vm-new").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_details").set_sensitive(True)
|
||||
self.window.get_widget("menu_edit_delete").set_sensitive(True)
|
||||
self.window.get_widget("menu_host_details").set_sensitive(True)
|
||||
@ -723,10 +721,8 @@ class vmmManager(gobject.GObject):
|
||||
else:
|
||||
self.window.get_widget("vm-delete").set_sensitive(False)
|
||||
if conn.get_state() == vmmConnection.STATE_ACTIVE:
|
||||
self.window.get_widget("vm-new").set_sensitive(True)
|
||||
self.window.get_widget("menu_file_restore_saved").set_sensitive(True)
|
||||
else:
|
||||
self.window.get_widget("vm-new").set_sensitive(False)
|
||||
self.window.get_widget("menu_file_restore_saved").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_details").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_delete").set_sensitive(False)
|
||||
@ -794,8 +790,7 @@ class vmmManager(gobject.GObject):
|
||||
return False
|
||||
|
||||
def new_vm(self, ignore=None):
|
||||
conn = self.current_connection()
|
||||
self.emit("action-show-create", conn.get_uri())
|
||||
self.emit("action-show-create", self.current_connection_uri())
|
||||
|
||||
def delete_vm(self, ignore=None):
|
||||
conn = self.current_connection()
|
||||
|
5182
src/vmm-create.glade
5182
src/vmm-create.glade
File diff suppressed because it is too large
Load Diff
@ -344,7 +344,6 @@ Inactive virtual machines</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="vm-new">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="label">gtk-new</property>
|
||||
|
Loading…
Reference in New Issue
Block a user