IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
Basically, drop usage of nested main loops. As has been documented in
other commit messages, we use nested main loops in ways they aren't
supposed to be used. They gave us async behavior that would block
callers, but had weird behavior in some edge cases.
Switch to having async dialogs be 100% async, requiring the user to
pass in a completion callback which is triggered after the async
action is complete.
Connect to remote URI, connect to VNC guest with password auth. Don't
enter password, just close the details window. Reopen the window,
password UI is still there, but it's no longer hooked up behind the
scenes. Fix it.
Spice opens many FDs to handle different channels (display, usb, sound,
etc.). For remote SSH URIs, this means we launch multiple SSH proceses.
We do so by forking off the process, and when SSH has successfully
authenticated, the data starts flowing.
If using spice + remote SSH w/o SSH keys, you need to put your data
into ssh askpass. askpass wants to own the display for security reasons.
When all the channel requests start coming in, we were launching multiple
ssh processes one after another. This upset askpass and generally
caused havoc in the app.
Add some infrastructure to serialize launching ssh processes. We only
launch the next ssh process if spice/vnc have conclusively connected
or errored out the connection. This makes connection a bit slower
for the non-askpass ssh case (about 1.5 seconds), but will ignore
avoid this oft reported problem.
- Drop SDL, it doesn't mesh with modern libvirt
- Drop keymap, modern qemu/virt-manager handle this automagically
- Drop big text fields
- Misc other cleanups and simplifications
There's no need to be resetting row keys like VM name, state, on every
'resources-sampled' signals, since we have had finer grained status-changed
and config-changed signals for a while. This seems to reduce the memory
leak on F19 as well.
Our search dialog isn't as full featured as packagekits, so just call
out to that. This was originally avoided because it doesn't full
provide the semantics we want, but it's close enough and saves us
from duplicating all their work.
It fixes this exception while removing a VM:
Traceback (most recent call last):
File "virt-manager/virtManager/details.py", line 1438, in refresh_vm_state
self.change_run_text(vm.hasSavedImage())
File "virt-manager/virtManager/domain.py", line 1238, in hasSavedImage
return self._backend.hasManagedSaveImage(0)
File "/usr/local/lib/python2.7/site-packages/libvirt.py", line 852, in hasManagedSaveImage
if ret == -1: raise libvirtError ('virDomainHasManagedSaveImage() failed', dom=self)
libvirt.libvirtError: Domain not found: no domain with matching uuid
'7c3eebec-9b22-48ea-b9a2-3341840d0476' (test)
Traceback (most recent call last):
File "virt-manager/virtManager/manager.py", line 885, in vm_status_changed
self.vm_selected()
File "virt-manager/virtManager/manager.py", line 1009, in vm_selected
self.change_run_text(vm.hasSavedImage())
File "virt-manager/virtManager/domain.py", line 1238, in hasSavedImage
return self._backend.hasManagedSaveImage(0)
File "/usr/local/lib/python2.7/site-packages/libvirt.py", line 852, in hasManagedSaveImage
if ret == -1: raise libvirtError ('virDomainHasManagedSaveImage() failed', dom=self)
libvirt.libvirtError: Domain not found: no domain with matching uuid
'7c3eebec-9b22-48ea-b9a2-3341840d0476' (test)
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This adds initial UI for managing snapshots: list, run/revert, delete,
add, and redefining (for changing <description>) supported, but currently
only for internal snapshots. The UI is mostly in its final form except for
some bells and whistles.
The real remaining question is what do we want to advertise and support.
Internal (qcow2) snapshots are by far the simplest to manage, very
mature, and already have the semantics we want.
However most recent libvirt and qemu work has been to facilitate
external snapshots, which are more extensible and can be performed
live, and with qemu-ga coordination for extra safety. However
they make things much harder for virt-manager at the moment.
Until we have a plan, this work should be considered experimental
and not be relied upon.
This simple patch fixes three issues:
1) We used only one list of storage formats. However, we are able to
use some formats which we cannot create. This patch adds a list
called 'no_create_formats' and moves such formats (currently only
one) into it and uses new parameter 'create' which describes
whether such formats should be removed or not.
2) When creating new storage with the above fixed, we need to set the
combobox's text to "" in order not to change it to "raw". This
was already done in reset_state(), but we need it also when
toggle_storage_select() happens and it doesn't hurt in
set_initial_state(), so I abstracted the implementation into
populate_disk_format_combo().
3) It's a bit unrelated, but when bus of a domain disk gets changed
(in details.py), the address was not cleaned up properly ('target'
attribute was still kept), so I fixed up the VirtualDeviceAddress
as well.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=907289
Some ARM bits we are about to add would substantially complicate the
current setup, so move all the logic into guest.py where we can be
more flexible. I think this is closer to what libosinfo will give us
as well.
Some callbacks could try to access a domain that was just deleted and
not accessible anymore. Detect these cases and don't propagate the
exception.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
When a new volume is created for a storage, automatically select it;
most likely it is what the user will choose to use.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
(crobinso: util is gone now, replace with uihelpers)
It fixes this error:
Traceback (most recent call last):
File "virt-manager/virtManager/host.py", line 973, in copy_vol_path
clipboard.set_text(target_path)
File "/usr/lib/python2.7/site-packages/gi/types.py", line 113, in function
return info.invoke(*args, **kwargs)
TypeError: set_text() takes exactly 3 arguments (2 given)
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
It fixes this error:
Traceback (most recent call last):
File "virt-manager/virtManager/storagebrowse.py", line 271, in pool_selected
pool = self.current_pool()
File "virt-manager/virtManager/storagebrowse.py", line 238, in current_pool
return self.conn.get_pool(row[0])
File "virt-manager/virtManager/connection.py", line 645, in get_pool
return self.pools[uuid]
KeyError: 'bd9fd5ec-a35c-d84a-b9b2-2aca98f733c3'
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Set the connection used by vmmCreateVolume everytime the window is made
visible. This fixes a case where volumes could be added to the wrong
pool if the same vmmCreateVolume window was already used on a different
connection.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
The commit b044dd renamed vmmStoragePool.uuid to vmmStoragePool._uuid,
causing this error:
Traceback (most recent call last):
File "virtManager/storagebrowse.py", line 280, in refresh_current_pool
self.refresh_storage_pool(None, cp.get_uuid())
File "virtManager/storagebrowse.py", line 243, in refresh_storage_pool
if curpool.uuid != uuid:
AttributeError: 'vmmStoragePool' object has no attribute 'uuid'
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
_close_serial_tab triggers the switch-page event and that can provoke a
refresh of the window. This causes an error everytime the details window
is pointing to a domain that was just deleted.
Solves: https://bugzilla.redhat.com/show_bug.cgi?id=985291
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
In case of connection failure, the user can either maintain the connection
or modify it.
Split up `add_connection_to_ui' into `make_conn' and `register_conn'
to handle separately the object creation and its registration in the
list of connections (ui and conf).
Solves: https://bugzilla.redhat.com/show_bug.cgi?id=617386
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Now when a password is used a check box must be explicitely selected.
This enable the possibility to set an empty password "".
Solves: https://bugzilla.redhat.com/show_bug.cgi?id=749718
Signed-off-by: Giuseppe Scrivano <gscrivano@gnu.org>
(crobinso: fix minor pylint violation)