bundlewrap/bundles/systemd-mount/metadata.py
2021-11-02 23:37:07 +01:00

72 lines
1.8 KiB
Python

defaults = {
'apt': {
'packages': {
'bindfs': {},
},
},
'systemd-mount': {},
}
@metadata_reactor.provides(
'systemd/units',
'systemd/services',
)
def units(metadata):
units = {}
services = {}
for mountpoint, conf in metadata.get('systemd-mount').items():
formatted_name = mountpoint[1:].replace('-', '\\x2d').replace('/', '-') + '.mount'
units[formatted_name] = {
'Unit': {
'Description': f"Mount {conf['source']} -> {mountpoint}",
'DefaultDependencies': 'no',
'Conflicts': 'umount.target',
'Before': 'umount.target',
},
'Mount': {
'What': conf['source'],
'Where': mountpoint,
'Type': 'fuse.bindfs',
'Options': f"nonempty",
},
'Install': {
'WantedBy': {
'local-fs.target',
},
},
}
if conf.get('user'):
units[formatted_name]['Mount']['Options'] += f",force-user={conf.get('user')}"
services[formatted_name] = {}
return {
'systemd': {
'units': units,
'services': services,
}
}
@metadata_reactor.provides(
'systemd/units',
)
def zfs(metadata):
return {
'systemd': {
'units': {
name: {
'Unit': {
'After': 'zfs-mount.service',
'Requires': 'zfs-mount.service',
},
}
for name in metadata.get('systemd/units')
if name.endswith('.mount')
},
}
}