Fix block attach/detach
This commit is contained in:
parent
9a22de3432
commit
8a91c90cf8
@ -122,6 +122,7 @@ class QubesBlockDevicesManager():
|
|||||||
def __make_entry__(self, k, dev, att):
|
def __make_entry__(self, k, dev, att):
|
||||||
size_str = qubesutils.bytes_to_kmg(dev['size'])
|
size_str = qubesutils.bytes_to_kmg(dev['size'])
|
||||||
entry = { 'dev': dev['device'],
|
entry = { 'dev': dev['device'],
|
||||||
|
'dev_obj': dev,
|
||||||
'backend_name': dev['vm'],
|
'backend_name': dev['vm'],
|
||||||
'desc': dev['desc'],
|
'desc': dev['desc'],
|
||||||
'mode': dev['mode'],
|
'mode': dev['mode'],
|
||||||
@ -130,14 +131,12 @@ class QubesBlockDevicesManager():
|
|||||||
return entry
|
return entry
|
||||||
|
|
||||||
def attach_device(self, vm, dev):
|
def attach_device(self, vm, dev):
|
||||||
backend_vm_name = self.free_devs[dev]['backend_name']
|
|
||||||
mode = self.free_devs[dev]['mode']
|
mode = self.free_devs[dev]['mode']
|
||||||
backend_vm = self.qvm_collection.get_vm_by_name(backend_vm_name)
|
|
||||||
if self.tray_message_func:
|
if self.tray_message_func:
|
||||||
self.tray_message_func("{0} - attaching {1}"
|
self.tray_message_func("{0} - attaching {1}"
|
||||||
.format(vm.name, dev), msecs=3000)
|
.format(vm.name, dev), msecs=3000)
|
||||||
qubesutils.block_attach(self.qvm_collection, vm, backend_vm,
|
qubesutils.block_attach(self.qvm_collection, vm,
|
||||||
self.free_devs[dev], mode=mode)
|
self.free_devs[dev]['dev_obj'], mode=mode)
|
||||||
|
|
||||||
def detach_device(self, vm, dev_name):
|
def detach_device(self, vm, dev_name):
|
||||||
frontend = self.attached_devs[dev_name]['attached_to']['frontend']
|
frontend = self.attached_devs[dev_name]['attached_to']['frontend']
|
||||||
|
@ -663,7 +663,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
|
|||||||
rows_with_blk = []
|
rows_with_blk = []
|
||||||
self.blk_manager.blk_lock.acquire()
|
self.blk_manager.blk_lock.acquire()
|
||||||
for d in self.blk_manager.attached_devs:
|
for d in self.blk_manager.attached_devs:
|
||||||
rows_with_blk.append( self.blk_manager.attached_devs[d]['attached_to']['vm'])
|
rows_with_blk.append(
|
||||||
|
self.blk_manager.attached_devs[d]['attached_to'][
|
||||||
|
'vm'].qid)
|
||||||
self.blk_manager.blk_lock.release()
|
self.blk_manager.blk_lock.release()
|
||||||
|
|
||||||
if (not self.table.isColumnHidden(self.columns_indices['Size']) ) and self.counter % 60 == 0 or out_of_schedule:
|
if (not self.table.isColumnHidden(self.columns_indices['Size']) ) and self.counter % 60 == 0 or out_of_schedule:
|
||||||
@ -683,7 +685,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
|
|||||||
cur_cpu_load = 0
|
cur_cpu_load = 0
|
||||||
|
|
||||||
if rows_with_blk != None:
|
if rows_with_blk != None:
|
||||||
if vm_row.vm.name in rows_with_blk:
|
if vm_row.vm.qid in rows_with_blk:
|
||||||
blk_visible = True
|
blk_visible = True
|
||||||
else:
|
else:
|
||||||
blk_visible = False
|
blk_visible = False
|
||||||
@ -1440,10 +1442,13 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
|
|||||||
self.blk_menu.setEnabled(True)
|
self.blk_menu.setEnabled(True)
|
||||||
|
|
||||||
self.blk_manager.blk_lock.acquire()
|
self.blk_manager.blk_lock.acquire()
|
||||||
if len(self.blk_manager.attached_devs) > 0 :
|
if len(self.blk_manager.attached_devs) > 0:
|
||||||
for d in self.blk_manager.attached_devs:
|
for d in self.blk_manager.attached_devs:
|
||||||
if self.blk_manager.attached_devs[d]['attached_to']['vm'] == vm.name:
|
if self.blk_manager.attached_devs[d]['attached_to'][
|
||||||
text = "Detach " + d + " " + unicode(self.blk_manager.attached_devs[d]['size']) + " " + self.blk_manager.attached_devs[d]['desc']
|
'vm'].qid == vm.qid:
|
||||||
|
text = "Detach " + d + " " + unicode(
|
||||||
|
self.blk_manager.attached_devs[d]['size']) + " " + \
|
||||||
|
self.blk_manager.attached_devs[d]['desc']
|
||||||
action = self.blk_menu.addAction(QIcon(":/remove.png"), text)
|
action = self.blk_menu.addAction(QIcon(":/remove.png"), text)
|
||||||
action.setData(QVariant(d))
|
action.setData(QVariant(d))
|
||||||
|
|
||||||
@ -1564,9 +1569,7 @@ class QubesTrayIcon(QSystemTrayIcon):
|
|||||||
self.blk_manager.blk_lock.acquire()
|
self.blk_manager.blk_lock.acquire()
|
||||||
if len(self.blk_manager.attached_devs) > 0 :
|
if len(self.blk_manager.attached_devs) > 0 :
|
||||||
for d in self.blk_manager.attached_devs:
|
for d in self.blk_manager.attached_devs:
|
||||||
vm = self.blk_manager.qvm_collection.get_vm_by_name(
|
vm = self.blk_manager.attached_devs[d]['attached_to']['vm']
|
||||||
self.blk_manager.attached_devs[d]['attached_to']['vm']
|
|
||||||
)
|
|
||||||
text = "Detach %s %s (%s) from %s" % (
|
text = "Detach %s %s (%s) from %s" % (
|
||||||
d,
|
d,
|
||||||
self.blk_manager.attached_devs[d]['desc'],
|
self.blk_manager.attached_devs[d]['desc'],
|
||||||
@ -1611,10 +1614,7 @@ class QubesTrayIcon(QSystemTrayIcon):
|
|||||||
@pyqtSlot('QAction *')
|
@pyqtSlot('QAction *')
|
||||||
def dettach_device_triggered(self, action):
|
def dettach_device_triggered(self, action):
|
||||||
dev = str(action.data().toString())
|
dev = str(action.data().toString())
|
||||||
vm = self.blk_manager.qvm_collection.get_vm_by_name(
|
vm = self.blk_manager.attached_devs[dev]['attached_to']['vm']
|
||||||
self.blk_manager.attached_devs[dev]['attached_to']['vm']
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
self.blk_manager.blk_lock.acquire()
|
self.blk_manager.blk_lock.acquire()
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user