bundlewrap/bundles/samba/metadata.py

68 lines
1.4 KiB
Python

from importlib.metadata import metadata
defaults = {
'apt': {
'packages': {
'samba': {},
},
},
'nftables': {
'input': {
'tcp dport 445 accept',
},
},
'samba': {
'shares': {},
},
}
@metadata_reactor.provides(
'zfs/datasets',
)
def zfs(metadata):
return {
'zfs': {
'datasets': {
f"{metadata.get('zfs/storage_classes/hdd')}/samba": {
'mountpoint': '/var/lib/samba',
},
**{
f"{metadata.get('zfs/storage_classes/hdd')}/samba/{name}": {
'mountpoint': f'/var/lib/samba/usershares/{name}',
}
for name in metadata.get('samba/shares')
},
},
},
}
@metadata_reactor.provides(
'samba/shares',
)
def passwords(metadata):
return {
'samba': {
'shares': {
name: {
'password': repo.vault.password_for(f'samba {name}'),
}
for name, conf in metadata.get('samba/shares').items()
if not conf.get('password', None)
},
},
}
@metadata_reactor.provides(
'users',
)
def users(metadata):
return {
'users': {
name: {}
for name in metadata.get('samba/shares')
},
}