timezone = node.metadata.get('timezone', 'UTC')

actions['systemd-reload'] = {
    'command': 'systemctl daemon-reload',
    'cascade_skip': False,
    'triggered': True,
    'needed_by': {
        'svc_systemd:',
    },
}

actions['systemd-hostname'] = {
    'command': 'hostnamectl set-hostname {}'.format(node.metadata['hostname']),
    'unless': '[ "$(hostnamectl --static)" = "{}" ]'.format(node.metadata['hostname']),
    # Provided by bundle:basic
    'needs': {
        'file:/etc/hosts',
    },
}

directories['/usr/local/lib/systemd/system'] = {
    'purge': True,
    'triggers': {
        'action:systemd-reload',
    },
}


# journal settings
files['/etc/systemd/journald.conf'] = {
    'content_type': 'mako',
    'context': {
        'journal': node.metadata.get('systemd/journal', {}),
    },
    'triggers': {
        'svc_systemd:systemd-journald:restart',
    },
}

svc_systemd['systemd-journald'] = {
    'needs': {
        'file:/etc/systemd/journald.conf',
    },
}

# NTP
files['/etc/systemd/timesyncd.conf'] = {
    'triggers': {
        'svc_systemd:systemd-timesyncd:restart',
    },
}

actions['systemd-timezone'] = {
    'command': 'timedatectl set-timezone {}'.format(timezone),
    'unless': 'timedatectl status | grep -Fi \'time zone\' | grep -i \'{}\''.format(timezone.lower()),
    'after': {
        'svc_systemd:systemd-timesyncd',
    },
}

actions['systemd-enable-ntp'] = {
    'command': 'timedatectl set-ntp true',
    'unless': 'timedatectl status | grep -Fi \'ntp service\' | grep -i \'active\'',
    'after': {
        'svc_systemd:systemd-timesyncd',
    },
}

svc_systemd['systemd-timesyncd'] = {
    'needs': {
        'file:/etc/systemd/timesyncd.conf',
    },
}

# monitoring
files['/usr/local/share/icinga/plugins/check_timesyncd_sync'] = {
    'mode': '0755',
}
