directories = {
    '/etc/mosquitto': {},
    '/etc/mosquitto/conf.d': {
        'purge': True,
    },
}

files = {
    '/etc/mosquitto/conf.d/managed.conf': {
        'content_type': 'mako',
        'context': {
            'hostname': node.metadata.get('mosquitto/hostname'),
        },
        'needs': [
            'pkg_apt:mosquitto',
        ],
        'needed_by': [
            'svc_systemd:mosquitto'
        ],
        'triggers': [
            'svc_systemd:mosquitto:restart'
        ],
    },
    '/etc/mosquitto/password_file': {
        'content': '\n'.join(
            conf['password_file'] for conf in node.metadata.get('mosquitto/users').values()
        ) + '\n',
        'needs': [
            'pkg_apt:mosquitto',
        ],
        'needed_by': [
            'svc_systemd:mosquitto'
        ],
        'triggers': [
            'svc_systemd:mosquitto:restart'
        ],
    },
}

svc_systemd = {
    'mosquitto': {
        'needs': [
            'pkg_apt:mosquitto',
            'action:moquitto-generate-dhparam',
        ],
    },
}

actions = {
    'moquitto-generate-dhparam': {
        'command': 'openssl dhparam -out /etc/mosquitto/dhparam.pem 2048',
        'unless': 'test -f /etc/mosquitto/dhparam.pem',
        'needs': [
            'pkg_apt:mosquitto',
        ],
        'triggers': [
            'svc_systemd:mosquitto:restart'
        ],
    },
}