Skip to content

Commit f4893d7

Browse files
committed
Merge remote-tracking branch 'origin/pr/335'
* origin/pr/335: Revert to red label while restoring on missing labels
2 parents 53e58c6 + c4940be commit f4893d7

3 files changed

Lines changed: 36 additions & 3 deletions

File tree

qubesadmin/backup/restore.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2029,6 +2029,14 @@ def _restore_vms_metadata(self, restore_info):
20292029
label=vm.label,
20302030
pool=self.options.override_pool,
20312031
**kwargs)
2032+
except qubesadmin.exc.QubesLabelNotFoundError:
2033+
# do not fail if label is not present. revert to red label
2034+
new_vm = self.app.add_new_vm(
2035+
vm.klass,
2036+
name=vm_name,
2037+
label='red',
2038+
pool=self.options.override_pool,
2039+
**kwargs)
20322040
except Exception as err: # pylint: disable=broad-except
20332041
self.log.error('Error restoring VM %s, skipping: %s',
20342042
vm.name, err)

qubesadmin/tests/backup/backupcompatibility.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@
695695
},
696696
'test-net': {
697697
'klass': 'AppVM',
698-
'label': 'red',
698+
'label': 'scarlet',
699699
'properties': {
700700
'maxmem': '300',
701701
'memory': '300',
@@ -1357,7 +1357,31 @@ def setup_expected_calls(self, parsed_qubes_xml, templates_map=None):
13571357
if name == 'dom0':
13581358
continue
13591359

1360-
if self.storage_pool:
1360+
if self.storage_pool and vm['label'] == 'scarlet':
1361+
self.app.expected_calls[
1362+
('dom0', 'admin.vm.CreateInPool.' + vm['klass'],
1363+
templates_map.get(vm['template'], vm['template']),
1364+
'name={} label={} pool={}'.format(
1365+
name, 'scarlet', self.storage_pool).encode())] = \
1366+
b'2\0QubesLabelNotFoundError\0\0No such label\0'
1367+
self.app.expected_calls[
1368+
('dom0', 'admin.vm.CreateInPool.' + vm['klass'],
1369+
templates_map.get(vm['template'], vm['template']),
1370+
'name={} label={} pool={}'.format(
1371+
name, 'red', self.storage_pool).encode())] = \
1372+
b'0\0'
1373+
elif vm['label'] == 'scarlet':
1374+
self.app.expected_calls[
1375+
('dom0', 'admin.vm.Create.' + vm['klass'],
1376+
templates_map.get(vm['template'], vm['template']),
1377+
'name={} label={}'.format(name, 'scarlet').encode())] =\
1378+
b'2\0QubesLabelNotFoundError\0\0No such label\0'
1379+
self.app.expected_calls[
1380+
('dom0', 'admin.vm.Create.' + vm['klass'],
1381+
templates_map.get(vm['template'], vm['template']),
1382+
'name={} label={}'.format(name, 'red').encode())] =\
1383+
b'0\0'
1384+
elif self.storage_pool:
13611385
self.app.expected_calls[
13621386
('dom0', 'admin.vm.CreateInPool.' + vm['klass'],
13631387
templates_map.get(vm['template'], vm['template']),

qubesadmin/tests/backup/v4-qubes.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<label color="0x3465a4" id="label-6">blue</label>
99
<label color="0x75507b" id="label-7">purple</label>
1010
<label color="0x000000" id="label-8">black</label>
11+
<label color="0xff2400" id="label-9">scarlet</label>
1112
</labels>
1213
<pools>
1314
<pool driver="lvm_thin" name="lvm" thin_pool="pool3" volume_group="core3"/>
@@ -392,7 +393,7 @@
392393
</domain>
393394
<domain id="domain-6" class="AppVM">
394395
<properties>
395-
<property name="label">label-1</property>
396+
<property name="label">label-9</property>
396397
<property name="maxmem">300</property>
397398
<property name="name">test-net</property>
398399
<property name="netvm"></property>

0 commit comments

Comments
 (0)