Add support for 'tag-created-vm-with' feature

When a VM with 'tag-created-vm-with' feature set creates a VM (using
Admin API), that VM will get all the tags listed in the feature.
Multiple tags can be separated with spaces.

This will be useful to tag VMs created during paranoid mode backup
restore.

QubesOS/qubes-issues#5310
This commit is contained in:
Marek Marczykowski-Górecki 2019-09-15 03:38:37 +02:00
parent 4acf69e8ec
commit 6f87f310db
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -142,3 +142,12 @@ class AdminExtension(qubes.ext.Extension):
if hasattr(self, 'policy_cache'): if hasattr(self, 'policy_cache'):
self.policy_cache.cleanup() self.policy_cache.cleanup()
del self.policy_cache del self.policy_cache
@qubes.ext.handler('domain-tag-add:created-by-*')
def on_tag_add(self, vm, event, tag, **kwargs):
'''Add extra tags based on creators 'tag-created-vm-with' feature'''
# pylint: disable=unused-argument,no-self-use
created_by = vm.app.domains[tag.partition('created-by-')[2]]
tag_with = created_by.features.get('tag-created-vm-with', '')
for tag_with_single in tag_with.split():
vm.tags.add(tag_with_single)