Skip to content

Commit dd7882b

Browse files
committed
q-dev: update and fix tests for qvm-start
1 parent 1ec3549 commit dd7882b

File tree

2 files changed

+49
-37
lines changed

2 files changed

+49
-37
lines changed

qubesadmin/tests/tools/qvm_start.py

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,17 @@ def test_010_drive_cdrom(self):
7878
self.app.expected_calls[
7979
('some-vm', 'admin.vm.CurrentState', None, None)] = \
8080
b'0\x00power_state=Halted'
81-
self.app.expected_calls[
82-
('dom0', 'admin.vm.device.block.Available', None, None)] = \
83-
b'0\x00sr0\n'
8481
self.app.expected_calls[
8582
('some-vm', 'admin.vm.Start', None, None)] = b'0\x00'
8683
self.app.expected_calls[
87-
('some-vm', 'admin.vm.device.block.Attach', 'dom0+sr0',
88-
b'devtype=cdrom required=True read-only=True')] = b'0\x00'
84+
('some-vm', 'admin.vm.device.block.Assign', 'dom0+sr0',
85+
b"required='yes' attach_automatically='yes' ident='sr0' "
86+
b"devclass='block' backend_domain='dom0' "
87+
b"frontend_domain='some-vm' _devtype='cdrom' "
88+
b"_read-only='True'")] = b'0\x00'
8989
self.app.expected_calls[
90-
('some-vm', 'admin.vm.device.block.Set.assignment', 'dom0+sr0',
91-
b'False')] = b'0\x00'
90+
('some-vm', 'admin.vm.device.block.Unassign', 'dom0+sr0', None)] = \
91+
b'0\x00'
9292
qubesadmin.tools.qvm_start.main(['--cdrom=dom0:sr0', 'some-vm'],
9393
app=self.app)
9494
self.assertAllCalled()
@@ -101,17 +101,17 @@ def test_011_drive_disk(self):
101101
self.app.expected_calls[
102102
('some-vm', 'admin.vm.CurrentState', None, None)] = \
103103
b'0\x00power_state=Halted'
104-
self.app.expected_calls[
105-
('dom0', 'admin.vm.device.block.Available', None, None)] = \
106-
b'0\x00sdb1\n'
107104
self.app.expected_calls[
108105
('some-vm', 'admin.vm.Start', None, None)] = b'0\x00'
109106
self.app.expected_calls[
110-
('some-vm', 'admin.vm.device.block.Attach', 'dom0+sdb1',
111-
b'devtype=disk required=True read-only=False')] = b'0\x00'
107+
('some-vm', 'admin.vm.device.block.Assign', 'dom0+sdb1',
108+
b"required='yes' attach_automatically='yes' ident='sdb1' "
109+
b"devclass='block' backend_domain='dom0' "
110+
b"frontend_domain='some-vm' _devtype='disk' "
111+
b"_read-only='False'")] = b'0\x00'
112112
self.app.expected_calls[
113-
('some-vm', 'admin.vm.device.block.Set.assignment', 'dom0+sdb1',
114-
b'False')] = b'0\x00'
113+
('some-vm', 'admin.vm.device.block.Unassign', 'dom0+sdb1',
114+
None)] = b'0\x00'
115115
qubesadmin.tools.qvm_start.main(['--hd=dom0:sdb1', 'some-vm'],
116116
app=self.app)
117117
self.assertAllCalled()
@@ -124,17 +124,17 @@ def test_012_drive_disk(self):
124124
self.app.expected_calls[
125125
('some-vm', 'admin.vm.CurrentState', None, None)] = \
126126
b'0\x00power_state=Halted'
127-
self.app.expected_calls[
128-
('dom0', 'admin.vm.device.block.Available', None, None)] = \
129-
b'0\x00sdb1\n'
130127
self.app.expected_calls[
131128
('some-vm', 'admin.vm.Start', None, None)] = b'0\x00'
132129
self.app.expected_calls[
133-
('some-vm', 'admin.vm.device.block.Attach', 'dom0+sdb1',
134-
b'devtype=disk required=True read-only=False')] = b'0\x00'
130+
('some-vm', 'admin.vm.device.block.Assign', 'dom0+sdb1',
131+
b"required='yes' attach_automatically='yes' ident='sdb1' "
132+
b"devclass='block' backend_domain='dom0' "
133+
b"frontend_domain='some-vm' _devtype='disk' "
134+
b"_read-only='False'")] = b'0\x00'
135135
self.app.expected_calls[
136-
('some-vm', 'admin.vm.device.block.Set.assignment', 'dom0+sdb1',
137-
b'False')] = b'0\x00'
136+
('some-vm', 'admin.vm.device.block.Unassign', 'dom0+sdb1',
137+
None)] = b'0\x00'
138138
qubesadmin.tools.qvm_start.main(['--drive=hd:dom0:sdb1', 'some-vm'],
139139
app=self.app)
140140
self.assertAllCalled()
@@ -154,12 +154,15 @@ def test_013_drive_loop_local(self, mock_subprocess):
154154
self.app.expected_calls[
155155
('some-vm', 'admin.vm.Start', None, None)] = b'0\x00'
156156
self.app.expected_calls[
157-
('some-vm', 'admin.vm.device.block.Attach', 'dom0+loop12',
158-
b'devtype=cdrom required=True read-only=True')] = b'0\x00'
157+
('some-vm', 'admin.vm.device.block.Assign', 'dom0+loop12',
158+
b"required='yes' attach_automatically='yes' ident='loop12' "
159+
b"devclass='block' backend_domain='dom0' "
160+
b"frontend_domain='some-vm' _devtype='cdrom' "
161+
b"_read-only='True'")] = b'0\x00'
159162
self.app.expected_calls[
160-
('some-vm', 'admin.vm.device.block.Set.assignment', 'dom0+loop12',
161-
b'False')] = b'0\x00'
162-
mock_subprocess.return_value = b'/dev/loop12'
163+
('some-vm', 'admin.vm.device.block.Unassign', 'dom0+loop12', None
164+
)] = b'0\x00loop12\n'
165+
mock_subprocess.return_value = b"/dev/loop12"
163166
qubesadmin.tools.qvm_start.main([
164167
'--cdrom=dom0:/home/some/image.iso',
165168
'some-vm'],
@@ -183,12 +186,14 @@ def test_014_drive_loop_remote(self):
183186
self.app.expected_calls[
184187
('some-vm', 'admin.vm.Start', None, None)] = b'0\x00'
185188
self.app.expected_calls[
186-
('some-vm', 'admin.vm.device.block.Attach', 'other-vm+loop7',
187-
b'devtype=cdrom required=True read-only=True')] = b'0\x00'
189+
('some-vm', 'admin.vm.device.block.Assign', 'other-vm+loop7',
190+
b"required='yes' attach_automatically='yes' ident='loop7' "
191+
b"devclass='block' backend_domain='other-vm' "
192+
b"frontend_domain='some-vm' _devtype='cdrom' "
193+
b"_read-only='True'")] = b'0\x00'
188194
self.app.expected_calls[
189-
('some-vm', 'admin.vm.device.block.Set.assignment',
190-
'other-vm+loop7',
191-
b'False')] = b'0\x00'
195+
('some-vm', 'admin.vm.device.block.Unassign', 'other-vm+loop7',
196+
None)] = b'0\x00'
192197
self.app.expected_calls[
193198
('other-vm', 'admin.vm.feature.CheckWithTemplate', 'vmexec',
194199
None)] = b'2\x00QubesFeatureNotFoundError\x00\x00Feature \'vmexec\' not set\x00'
@@ -215,8 +220,11 @@ def test_015_drive_failed_start(self):
215220
('some-vm', 'admin.vm.CurrentState', None, None)] = \
216221
b'0\x00power_state=Halted'
217222
self.app.expected_calls[
218-
('some-vm', 'admin.vm.device.block.Attach', 'other-vm+loop7',
219-
b'devtype=cdrom required=True read-only=True')] = b'0\x00'
223+
('some-vm', 'admin.vm.device.block.Assign', 'other-vm+loop7',
224+
b"required='yes' attach_automatically='yes' ident='loop7' "
225+
b"devclass='block' backend_domain='other-vm' "
226+
b"frontend_domain='some-vm' _devtype='cdrom' "
227+
b"_read-only='True'")] = b'0\x00'
220228
self.app.expected_calls[
221229
('some-vm', 'admin.vm.Start', None, None)] = \
222230
b'2\x00QubesException\x00\x00An error occurred\x00'
@@ -239,8 +247,11 @@ def test_016_drive_failed_attach(self):
239247
('some-vm', 'admin.vm.CurrentState', None, None)] = \
240248
b'0\x00power_state=Halted'
241249
self.app.expected_calls[
242-
('some-vm', 'admin.vm.device.block.Attach', 'other-vm+loop7',
243-
b'devtype=cdrom required=True read-only=True')] = \
250+
('some-vm', 'admin.vm.device.block.Assign', 'other-vm+loop7',
251+
b"required='yes' attach_automatically='yes' ident='loop7' "
252+
b"devclass='block' backend_domain='other-vm' "
253+
b"frontend_domain='some-vm' _devtype='cdrom' "
254+
b"_read-only='True'")] = \
244255
b'2\x00QubesException\x00\x00An error occurred\x00'
245256
retcode = qubesadmin.tools.qvm_start.main([
246257
'--cdrom=other-vm:loop7',

qubesadmin/tools/qvm_start.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,9 @@ def get_drive_assignment(app, drive_str):
157157
'read-only': devtype == 'cdrom'
158158
}
159159
assignment = qubesadmin.device_protocol.DeviceAssignment(
160-
backend_domain,
161-
ident,
160+
backend_domain=backend_domain,
161+
ident=ident,
162+
devclass='block',
162163
options=options,
163164
attach_automatically=True,
164165
required=True)

0 commit comments

Comments
 (0)