about summary refs log tree commit diff
path: root/bundles/svtree/items.py
blob: de7e7dbf2b3ebddc5ea01acd69fbcb922826191e (plain) (blame)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
if node.os != "alpine":
    raise BundleError(f"{node.name}: OS {node.os} is not supported.")

git_deploy = {
    "/opt/svtree": {
        "repo": "https://git.sr.ht/~robertgzr/svtree",
        "rev": "master",
    },
}

symlinks = {
    "/etc/init.d/svtree": {
        "target": "/opt/svtree/openrc.service",
        "needs": {"git_deploy:/opt/svtree"},
    },
    "/etc/s6-rc/templates/service": {
        "target": "/opt/svtree/templates/service",
        "needs": {"git_deploy:/opt/svtree"},
    },
    "/usr/bin/sv": {
        "target": "/opt/svtree/bin/sv",
        "needs": {"git_deploy:/opt/svtree"},
    },
}

directories = {
    # svtree dist
    "/opt/svtree": {},
    # svtree-related directories
    "/etc/s6-rc/src": {"purge": True},
    "/etc/s6-rc/templates": {"purge": True},
    "/etc/s6-rc/generate": {},
    # directory for bundles started by default
    "/etc/s6-rc/src/default/contents.d": {"purge": True},
    # service templates
    "/etc/s6-rc/src/services/contents.d": {},
    "/etc/s6-rc/services": {"purge": True},
}

files = {
    "/etc/s6-rc/src/default/type": {
        "content_type": "text",
        "content": "bundle",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    },
    "/etc/s6-rc/src/services/type": {
        "content_type": "text",
        "content": "bundle",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    },
    "/etc/s6-rc/src/default/contents.d/services": {
        "content_type": "text",
        "content": "",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    },
}

svc_openrc = {
    "svtree": {
        "enabled": True,
        "running": True,
        "needs": {"symlink:/etc/init.d/svtree"},
    },
}

for service, _ in node.metadata.get("services", {}).items():
    svc_s6rc[service] = {
        "runlevel": "default",
        "bundle": "services",
        "generate": "service",
    }