app: add option to ignore select volumes on app.clone_vm()

QubesOS/qubes-issues#3793
This commit is contained in:
Marek Marczykowski-Górecki 2018-10-18 02:43:09 +02:00
parent 4cd513757b
commit 4ca6c32e6c
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -285,7 +285,7 @@ class QubesBase(qubesadmin.base.PropertyHolder):
return self.domains[name]
def clone_vm(self, src_vm, new_name, new_cls=None,
pool=None, pools=None, ignore_errors=False):
pool=None, pools=None, ignore_errors=False, ignore_volumes=None):
'''Clone Virtual Machine
Example usage with custom storage pools:
@ -304,6 +304,8 @@ class QubesBase(qubesadmin.base.PropertyHolder):
:param dict pools: storage pool for specific volumes
:param bool ignore_errors: should errors on meta-data setting be only
logged, or abort the whole operation?
:param list ignore_volumes: do not clone volumes on this list,
like 'private' or 'root'
:return new VM object
'''
@ -393,6 +395,8 @@ class QubesBase(qubesadmin.base.PropertyHolder):
if not dst_volume.save_on_stop:
# clone only persistent volumes
continue
if ignore_volumes and dst_volume.name in ignore_volumes:
continue
src_volume = src_vm.volumes[dst_volume.name]
dst_vm.log.info('Cloning {} volume'.format(dst_volume.name))
dst_volume.clone(src_volume)