diff --git a/bundles/element-web/metadata.py b/bundles/element-web/metadata.py index 4276549..0ce259a 100644 --- a/bundles/element-web/metadata.py +++ b/bundles/element-web/metadata.py @@ -3,6 +3,9 @@ defaults = { 'datasets': { 'tank/element-web': { 'mountpoint': '/opt/element-web', + 'needed_by': { + 'directory:/opt/element-web', + }, }, }, }, diff --git a/bundles/gitea/metadata.py b/bundles/gitea/metadata.py index d34fa7a..06556a9 100644 --- a/bundles/gitea/metadata.py +++ b/bundles/gitea/metadata.py @@ -50,9 +50,15 @@ defaults = { 'tank/gitea': {}, 'tank/gitea/home': { 'mountpoint': '/home/git', + 'needed_by': { + 'directory:/home/git', + }, }, 'tank/gitea/var': { 'mountpoint': '/var/lib/gitea', + 'needed_by': { + 'directory:/var/lib/gitea', + }, }, }, }, diff --git a/bundles/matrix-media-repo/metadata.py b/bundles/matrix-media-repo/metadata.py index 835abe5..0b753db 100644 --- a/bundles/matrix-media-repo/metadata.py +++ b/bundles/matrix-media-repo/metadata.py @@ -60,10 +60,16 @@ defaults = { 'tank/matrix-media-repo': {}, 'tank/matrix-media-repo/install': { 'mountpoint': '/opt/matrix-media-repo', + 'needed_by': { + 'directory:/opt/matrix-media-repo', + }, }, 'tank/matrix-media-repo/media': { 'mountpoint': '/var/matrix/media', 'compression': 'on', + 'needed_by': { + 'directory:/var/matrix/media', + }, }, }, }, diff --git a/bundles/mautrix-telegram/metadata.py b/bundles/mautrix-telegram/metadata.py index 2ba91fb..bf2cf22 100644 --- a/bundles/mautrix-telegram/metadata.py +++ b/bundles/mautrix-telegram/metadata.py @@ -44,6 +44,9 @@ defaults = { 'datasets': { 'tank/mautrix-telegram': { 'mountpoint': '/opt/mautrix-telegram', + 'needed_by': { + 'directory:/opt/mautrix-telegram', + }, }, }, }, diff --git a/bundles/mautrix-whatsapp/metadata.py b/bundles/mautrix-whatsapp/metadata.py index 708fa81..f559a65 100644 --- a/bundles/mautrix-whatsapp/metadata.py +++ b/bundles/mautrix-whatsapp/metadata.py @@ -51,6 +51,9 @@ defaults = { 'datasets': { 'tank/mautrix-whatsapp': { 'mountpoint': '/opt/mautrix-whatsapp', + 'needed_by': { + 'directory:/opt/mautrix-whatsapp', + }, }, }, }, diff --git a/bundles/mx-puppet-discord/metadata.py b/bundles/mx-puppet-discord/metadata.py index 30e27bd..b2590e0 100644 --- a/bundles/mx-puppet-discord/metadata.py +++ b/bundles/mx-puppet-discord/metadata.py @@ -39,6 +39,9 @@ defaults = { 'datasets': { 'tank/mx-puppet-discord': { 'mountpoint': '/opt/mx-puppet-discord', + 'needed_by': { + 'directory:/opt/mx-puppet-discord', + }, }, }, }, diff --git a/bundles/pleroma/metadata.py b/bundles/pleroma/metadata.py index 056b72d..44e7a3b 100644 --- a/bundles/pleroma/metadata.py +++ b/bundles/pleroma/metadata.py @@ -15,6 +15,9 @@ defaults = { 'datasets': { 'tank/pleroma-data': { 'mountpoint': '/var/pleroma', + 'needed_by': { + 'directory:/var/pleroma', + }, }, }, }, diff --git a/bundles/postfixadmin/metadata.py b/bundles/postfixadmin/metadata.py index ead4bd4..f808e57 100644 --- a/bundles/postfixadmin/metadata.py +++ b/bundles/postfixadmin/metadata.py @@ -27,10 +27,16 @@ defaults = { 'zfs': { 'datasets': { 'tank/mail': { - 'mountpoint': '/var/mail', + 'mountpoint': '/var/mail/vmail', + 'needed_by': { + 'directory:/var/mail/vmail', + }, }, 'tank/postfixadmin': { 'mountpoint': '/opt/postfixadmin', + 'needed_by': { + 'directory:/opt/postfixadmin', + }, }, }, }, diff --git a/items/zfs_dataset.py b/items/zfs_dataset.py index 4adce84..6c38538 100644 --- a/items/zfs_dataset.py +++ b/items/zfs_dataset.py @@ -119,13 +119,16 @@ class ZFSDataset(Item): # XXX Could be optimized by finding the "largest" # parent only. yield item.id - elif self.attributes.get('mountpoint'): - for item_type in ['directory', 'file', 'git_deploy']: - if ( - item.ITEM_TYPE_NAME == item_type and - item.name.startswith('{}:{}'.format(item_type, self.attributes['mountpoint'])) - ): - yield item.id + + # XXX This populates 'needs', not 'needed_by'. We have opened + # an issue: https://github.com/bundlewrap/bundlewrap/issues/648 +# elif self.attributes.get('mountpoint'): +# for item_type in ['directory', 'file', 'git_deploy']: +# if ( +# item.ITEM_TYPE_NAME == item_type and +# item.name.startswith('{}:{}'.format(item_type, self.attributes['mountpoint'])) +# ): +# yield item.id if not pool_item_found: diff --git a/nodes/htz-cloud/luther.py b/nodes/htz-cloud/luther.py index e20b33b..7bc79fd 100644 --- a/nodes/htz-cloud/luther.py +++ b/nodes/htz-cloud/luther.py @@ -87,6 +87,9 @@ nodes['htz-cloud.luther'] = { 'datasets': { 'tank/luther-website': { 'mountpoint': '/var/www/luther-ps', + 'needed_by': { + 'directory:/var/www/luther-ps', + }, }, }, }, diff --git a/nodes/htz-cloud/sewfile.py b/nodes/htz-cloud/sewfile.py index 4ae4b4f..b187d1b 100644 --- a/nodes/htz-cloud/sewfile.py +++ b/nodes/htz-cloud/sewfile.py @@ -79,6 +79,9 @@ nodes['htz-cloud.sewfile'] = { }, 'tank/seafile-data': { 'mountpoint': '/mnt/seafile-data', + 'needed_by': { + 'bundle:seafile', + }, }, }, }, diff --git a/nodes/rx300.py b/nodes/rx300.py index 8960afe..f3b2995 100644 --- a/nodes/rx300.py +++ b/nodes/rx300.py @@ -324,9 +324,15 @@ nodes['rx300'] = { 'tank/libvirt': { 'mountpoint': '/var/lib/libvirt', 'compression': 'on', + 'needed_by': { + 'bundle:vmhost', + }, }, 'tank/home-kunsi': { 'mountpoint': '/home/kunsi', + 'needed_by': { + 'directory:/home/kunsi', + }, }, }, },