mesh/delivery-group group feat/774-l3-reland rejected: composed together: the checker's verdict at the members' heads (b48c90fea31f): integration: mesh-self-ch…
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: integration: mesh-self-check/cmd/mesh-self-check.TestTheSelfCheckWholeRunsOnTheBus: the run answered {Run:doctor-1793351737-1 At:20…
One commit with exactly the tree of the reviewed head35b4509c0a, on main12c2574c9d, so two compiled programs added and removed on the branch leave no trace in history (issue 1577).
206 lines
5.7 KiB
JSON
206 lines
5.7 KiB
JSON
{
|
|
"module": "restic",
|
|
"version": "1",
|
|
"moved": true,
|
|
"claims": [
|
|
{
|
|
"name": "node-backup",
|
|
"scope": "node",
|
|
"serves": [
|
|
"backed-up",
|
|
"now",
|
|
"restore"
|
|
]
|
|
}
|
|
],
|
|
"emits": [
|
|
"backed-up"
|
|
],
|
|
"tools": [
|
|
"backup_health",
|
|
"backup_delete_retired",
|
|
"backup_deleted"
|
|
],
|
|
"own-secrets": {
|
|
"repository": "${dir:state}/repository.secret"
|
|
},
|
|
"data": {
|
|
"own": [
|
|
{
|
|
"id": "repository",
|
|
"path": "${dir:repository}",
|
|
"class": "rebuildable",
|
|
"backup": "none",
|
|
"why": "the restore points themselves: a copy of data kept elsewhere on this machine, never the only copy of anything; lost, the history goes and nothing live does"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"path": "${dir:state}",
|
|
"class": "cache",
|
|
"why": "what the last nights and measurements were; the next night writes it again"
|
|
}
|
|
]
|
|
},
|
|
"config": {
|
|
"keep-daily": {
|
|
"type": "number",
|
|
"description": "How many nightly restore points are kept, a count from 1 to 9999: two weeks undo a mistake noticed within a fortnight. Read by the night, which thins nothing while it does not read (novox/hq issue 416); lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.",
|
|
"minimum": 1,
|
|
"maximum": 9999,
|
|
"trusted": true,
|
|
"default": 14
|
|
},
|
|
"keep-weekly": {
|
|
"type": "number",
|
|
"description": "How many weekly restore points are kept behind the dailies, a count from 1 to 9999, refused by the night like keep-daily; lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.",
|
|
"minimum": 1,
|
|
"maximum": 9999,
|
|
"trusted": true,
|
|
"default": 8
|
|
},
|
|
"keep-monthly": {
|
|
"type": "number",
|
|
"description": "How many monthly restore points are kept behind the weeklies, a count from 1 to 9999, refused by the night like keep-daily; lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.",
|
|
"minimum": 1,
|
|
"maximum": 9999,
|
|
"trusted": true,
|
|
"default": 6
|
|
},
|
|
"keep-hand-taken-days": {
|
|
"type": "number",
|
|
"description": "How many days a restore point taken by hand (node-backup.now, or the mesh's before a module moves) is kept at least, a count from 1 to 9999; it is kept until a later good night of its module exists, and this many days in any case, so the next thinning never takes the one taken against a risky change (novox/hq issue 453). Lowering it lets go of the older ones taken by hand at the next thinning, and that cannot be undone.",
|
|
"minimum": 1,
|
|
"maximum": 9999,
|
|
"trusted": true,
|
|
"default": 7
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "repository",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "declared",
|
|
"type": "file",
|
|
"path": "${dir:state}/backups.conf",
|
|
"mode": "0600",
|
|
"template": "files/backups.conf"
|
|
},
|
|
{
|
|
"id": "data-declared",
|
|
"type": "file",
|
|
"path": "${dir:state}/data.conf",
|
|
"mode": "0600",
|
|
"template": "files/data.conf"
|
|
},
|
|
{
|
|
"id": "retention",
|
|
"type": "file",
|
|
"path": "${dir:state}/retention.conf",
|
|
"mode": "0644",
|
|
"trusted": true,
|
|
"template": "files/retention.conf"
|
|
},
|
|
{
|
|
"id": "tool",
|
|
"type": "package",
|
|
"package": "restic"
|
|
},
|
|
{
|
|
"id": "sqlite",
|
|
"type": "package",
|
|
"package": "sqlite"
|
|
},
|
|
{
|
|
"id": "night",
|
|
"type": "process",
|
|
"name": "restic-night",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./restic-backups",
|
|
"night"
|
|
],
|
|
"user": "${machine:account}",
|
|
"env": {
|
|
"MESH_BACKUP_DECLARED": "${dir:state}/backups.conf",
|
|
"MESH_BACKUP_REPOSITORY": "${dir:repository}",
|
|
"MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret",
|
|
"MESH_BACKUP_STATE": "${dir:state}",
|
|
"MESH_BACKUP_DATA": "${dir:state}/data.conf"
|
|
},
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "awake",
|
|
"type": "process",
|
|
"name": "restic-awake",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./restic-backups",
|
|
"awake"
|
|
],
|
|
"user": "${machine:account}",
|
|
"env": {
|
|
"MESH_BACKUP_DECLARED": "${dir:state}/backups.conf",
|
|
"MESH_BACKUP_REPOSITORY": "${dir:repository}",
|
|
"MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret",
|
|
"MESH_BACKUP_STATE": "${dir:state}",
|
|
"MESH_BACKUP_DATA": "${dir:state}/data.conf"
|
|
},
|
|
"health": {
|
|
"kind": "tool",
|
|
"tool": "backup_health",
|
|
"interval": "60s",
|
|
"timeout": "20s",
|
|
"looks": 2,
|
|
"grace": "60s"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/restic-backups",
|
|
"binary": "restic-backups",
|
|
"loads": [
|
|
"restic-backups"
|
|
],
|
|
"env": {
|
|
"MESH_BACKUP_DECLARED": "${dir:state}/backups.conf",
|
|
"MESH_BACKUP_REPOSITORY": "${dir:repository}",
|
|
"MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret",
|
|
"MESH_BACKUP_STATE": "${dir:state}",
|
|
"MESH_BACKUP_DATA": "${dir:state}/data.conf"
|
|
}
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
},
|
|
"reads": [
|
|
"disk-load.readings"
|
|
],
|
|
"state": [
|
|
"good"
|
|
]
|
|
}
|