trim-template: Fix handling long named templates

Trim template name to fit full VM name in 31 chars.
At the same time, check if the VM already exists - if so - remove it
first (or error out asking the user to remove it manually - if VM isn't
marked as internal).
Now that VM is created as internal, to skip appmenus creation.

QubesOS/qubes-issues#1910
Fixes QubesOS/qubes-issues#1655
This commit is contained in:
Marek Marczykowski-Górecki 2016-05-15 15:08:30 +02:00
parent 92b49fe9a4
commit 10f0716911
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -92,10 +92,21 @@ def main():
touch_dvm_savefile = is_dvm_up_to_date(tvm, dvm_tmpl) touch_dvm_savefile = is_dvm_up_to_date(tvm, dvm_tmpl)
print >> sys.stderr, "Creating temporary VM..." print >> sys.stderr, "Creating temporary VM..."
fstrim_vm = qvm_collection.add_new_vm("QubesAppVm", trim_vmname = "trim-{}".format(tvm_name[:31 - len('trim-')])
template=tvm, fstrim_vm = qvm_collection.get_vm_by_name(trim_vmname)
name="{}-fstrim".format(tvm_name), if fstrim_vm is not None:
netvm=None, if not fstrim_vm.internal:
print >>sys.stderr, \
"ERROR: VM '{}' already exists and is not marked as internal. " \
"Remove it manually."
fstrim_vm.remove_from_disk()
qvm_collection.pop(fstrim_vm.qid)
fstrim_vm = qvm_collection.add_new_vm(
"QubesAppVm",
template=tvm,
name=trim_vmname,
netvm=None,
internal=True,
) )
if not fstrim_vm: if not fstrim_vm:
print >> sys.stderr, "ERROR: Failed to create new VM" print >> sys.stderr, "ERROR: Failed to create new VM"