aboutsummaryrefslogtreecommitdiffstats
path: root/charms/trusty/keepalived/hooks/services.py
blob: bc456aaa4100e300f948a64dfae1834d06c642fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/python

import os

from charmhelpers.core import host
from charmhelpers.core import hookenv
from charmhelpers.core.services.base import ServiceManager
from charmhelpers.core.services import helpers

import actions

SYSCTL_FILE = os.path.join(os.sep, 'etc', 'sysctl.d', '50-keepalived.conf')
KEEPALIVED_CONFIG_FILE = os.path.join(os.sep, 'etc', 'keepalived',
                                      'keepalived.conf')
config = hookenv.config()


def manage():
    manager = ServiceManager([
        {
            'service': 'keepalived',
            'required_data': [
                helpers.RequiredConfig('virtual-ip',
                                       'router-id'),
                {'is_leader': hookenv.is_leader()}
            ],
            'data_ready': [
                actions.log_start,
                helpers.template(
                    source='keepalived.conf',
                    target=KEEPALIVED_CONFIG_FILE,
                    perms=0o644
                )
            ],
            # keepalived has no "status" command
            'stop': [
                lambda arg: host.service_stop('keepalived')
            ],
            'start': [
                lambda arg: host.service_restart('keepalived')
            ],
        },
        {
            'service': 'procps',
            'required_data': [
                {'sysctl': {'net.ipv4.ip_nonlocal_bind': 1}},
            ],
            'data_ready': [
                helpers.template(
                    source='50-keepalived.conf',
                    target=SYSCTL_FILE,
                    perms=0o644
                )
            ],
        }
    ])
    manager.manage()