diff options
author | David Timber <dxdt@dev.snart.me> | 2022-05-13 14:45:59 +0800 |
---|---|---|
committer | David Timber <dxdt@dev.snart.me> | 2022-05-13 14:45:59 +0800 |
commit | 515bf01a057f0b40d89c6b7b247eb4e2fc19d1b7 (patch) | |
tree | 1a625d2a85b858227c3bd67955da3da90be49bda /src/conf/py-debug | |
parent | a01c87416b241315a9268bb4eb5206ade8328069 (diff) |
Impl ...
- launch.json: change debug cwd to the project root dir
- Add subcmd "mods"
- Docs
- Tidy up sample and debug config files
- Change core exec
- 'dnf-list-instaled' -> 'rpm-list-installed' as dnf does not work
on ro fs
- Accept the exit code 1 from tar(allow live fs change)
- Add the generic sample config
- Fix 'run' subcmd not accepting empty task-id
- Change module loading: modules are not required to have
the 'backup_backends' var
- Reduce required Python version by removing the use of match ... case
- Fix 'exec-append' not taking 'env' into account
- Remove use of exceptions from irrelevant packages
- Fix unimpl methods of NullBackupBackend
- Tidy up instantiation of raised exceptions
- Change "include" behaviour
- Relative config paths are now resolved like #include C preprocessor
- Fix bug where "include" circular ref checked is not done with absolute
paths of config files
- Add own exception hierachy
- aws-s3: change storage class only when "rot-storage-class" is
different from "sink-storage-class"
Diffstat (limited to 'src/conf/py-debug')
-rw-r--r-- | src/conf/py-debug/aws.jsonc (renamed from src/conf/py-debug/aws.sample.jsonc) | 4 | ||||
l--------- | src/conf/py-debug/conf.d | 1 | ||||
-rw-r--r-- | src/conf/py-debug/conf.d/core.jsonc | 44 | ||||
-rw-r--r-- | src/conf/py-debug/localfs.jsonc (renamed from src/conf/py-debug/localfs.sample.jsonc) | 6 | ||||
-rw-r--r-- | src/conf/py-debug/null.jsonc | 141 | ||||
-rw-r--r-- | src/conf/py-debug/null.sample.jsonc | 140 | ||||
l--------- | src/conf/py-debug/palhm.jsonc | 1 |
7 files changed, 148 insertions, 189 deletions
diff --git a/src/conf/py-debug/aws.sample.jsonc b/src/conf/py-debug/aws.jsonc index 46ad562..df9a63a 100644 --- a/src/conf/py-debug/aws.sample.jsonc +++ b/src/conf/py-debug/aws.jsonc @@ -1,6 +1,6 @@ // PALHM Instance Config { - "include": [ "conf/py-debug/conf.d/core.jsonc" ], + "include": [ "conf.d/core.json" ], "modules": [ "aws" ], "nb-workers": 0, // assumed $(nproc) - default // "nb-workers": 1, // to disable concurrent task despatch @@ -48,7 +48,7 @@ "path": "pm-list.gz", "group": "pre-start", "pipeline": [ - { "type": "exec", "exec-id": "dnf-list-installed" }, + { "type": "exec", "exec-id": "rpm-list-installed" }, { "type": "exec", "exec-id": "filter-gzip-plain" } ] }, diff --git a/src/conf/py-debug/conf.d b/src/conf/py-debug/conf.d new file mode 120000 index 0000000..a32163d --- /dev/null +++ b/src/conf/py-debug/conf.d @@ -0,0 +1 @@ +../py-sample/conf.d
\ No newline at end of file diff --git a/src/conf/py-debug/conf.d/core.jsonc b/src/conf/py-debug/conf.d/core.jsonc deleted file mode 100644 index 4afe7f5..0000000 --- a/src/conf/py-debug/conf.d/core.jsonc +++ /dev/null @@ -1,44 +0,0 @@ -// PALHM Core Config -{ - "execs": [ - // { - // "id": "Exec ID", - // "argv": [ "cmd", "--option1=opt1_val", "-o", "opt2_val" ], - // "env": { "NAME": "VAL" }, - // "ec": "0", // this is assumed - // "ec": "0-127", // inclusive range (not terminated by a signal) - // "ec": "<1", // range (only 0) - // "ec": "<=1", // range (0 and 1) - // "ec": ">0", // range (always fail) - // "ec": ">=0", // range (only 0) - // "vl-stderr": 1 // verbosity level of stderr produced by this process - // verbosity level of stderr produced by this process. Ignored if used - // as part of pipeline - // "vl-stdout": 2 - // }, - { - "id": "tar", - "argv": [ "/usr/bin/tar", "--xattrs", "--selinux" ] - }, - { - "id": "filter-xz-parallel", - "argv": [ "/usr/bin/xz", "-T0" ] - }, - { - "id": "filter-gzip-plain", - "argv": [ "/usr/bin/gzip" ] - }, - { - "id": "filter-zstd-plain", - "argv": [ "/usr/bin/zstd" ] - }, - { - "id": "dnf-list-installed", - "argv": [ "/usr/bin/dnf", "-yq", "list", "installed" ] - }, - { - "id": "lsblk-all-json", - "argv": [ "/usr/bin/lsblk", "-JbOa" ] - } - ] -} diff --git a/src/conf/py-debug/localfs.sample.jsonc b/src/conf/py-debug/localfs.jsonc index ec12808..a33060d 100644 --- a/src/conf/py-debug/localfs.sample.jsonc +++ b/src/conf/py-debug/localfs.jsonc @@ -1,12 +1,12 @@ // PALHM Instance Config { - "include": [ "conf/py-debug/conf.d/core.jsonc" ], + "include": [ "conf.d/core.json" ], "nb-workers": 0, // assumed $(nproc) - default // "nb-workers": 1, // to disable concurrent task despatch // To unlimit the number of workers. // Does not fail on resource alloc failure. // "nb-workers": -1, - "vl": 4, + "vl": 3, "tasks": [ { "id": "backup", @@ -45,7 +45,7 @@ "path": "pm-list.gz", "group": "pre-start", "pipeline": [ - { "type": "exec", "exec-id": "dnf-list-installed" }, + { "type": "exec", "exec-id": "rpm-list-installed" }, { "type": "exec", "exec-id": "filter-gzip-plain" } ] }, diff --git a/src/conf/py-debug/null.jsonc b/src/conf/py-debug/null.jsonc new file mode 100644 index 0000000..b5ce9f8 --- /dev/null +++ b/src/conf/py-debug/null.jsonc @@ -0,0 +1,141 @@ +{ + "include": [ "conf.d/core.json" ], + "nb-workers": 0, // assumed $(nproc) + // "nb-workers": 1, // to disable concurrent task despatch + // "nb-workers": -1, // to unlimit the number of workers. + "vl": 3, + "tasks": [ + { + "id": "backup", + "type": "backup", + "backend": "null", + "object-groups": [ + { "id": "pre-start" }, + { + "id": "data-dump", + "depends": [ "pre-start" ] + }, + { + "id": "tar-0", + "depends": [ "data-dump" ] + }, + { + "id": "tar-1", + "depends": [ "data-dump" ] + } + ], + "objects": [ + { + "path": "pm-list.zstd", + "group": "pre-start", + "pipeline": [ + { "type": "exec", "exec-id": "rpm-list-installed" }, + { "type": "exec", "exec-id": "filter-zstd-plain" } + ] + }, + { + "path": "lsblk.json.zstd", + "group": "pre-start", + "pipeline": [ + { "type": "exec", "exec-id": "lsblk-all-json" }, + { "type": "exec", "exec-id": "filter-zstd-plain" } + ] + }, + { + "path": "db.sql.zstd", + "group": "data-dump", + "pipeline": [ + { + "type": "exec-inline", + "argv": [ + "/bin/mysqldump", + "-uroot", + "--all-databases" + ] + }, + { "type": "exec", "exec-id": "filter-zstd-parallel" } + ] + }, + { + "path": "root.tar.zstd", + "group": "tar-0", + "pipeline": [ + { + "type": "exec-append", + "exec-id": "tar", + "argv": [ + "-C", + "/", + "/etc", + "/home", + "/root", + "/var" + ] + }, + { "type": "exec", "exec-id": "filter-zstd-parallel" } + ] + }, + { + "path": "srv.tar.zstd", + "group": "tar-1", + "pipeline": [ + { + "type": "exec-append", + "exec-id": "tar", + "argv": [ + "-C", + "/", + "/srv" + ] + }, + { "type": "exec", "exec-id": "filter-zstd-parallel" } + ] + } + ] + }, + { + "id": "update", + "type": "routine", + "routine": [ + { + "type": "exec-inline", + "argv": [ "/bin/dnf", "--refresh", "-yq", "update" ] + }, + { + "type": "exec-inline", + "argv": [ "/bin/sa-update" ] + } + ] + }, + { + "id": "reboot", + "type": "routine", + "routine": [ + { +/* + * Block SIGTERM from systemd/init.d so PALHM can exit gracefully after issuing + * reboot. + */ + "type": "builtin", + "builtin-id": "sigmask", + "param": [ + { "action": "block", "sig": [ "TERM" ] } + ] + }, + { + "type": "exec-inline", + "argv": [ "/sbin/reboot" ] + } + ] + }, + { + "id": "default", + "type": "routine", + "routine": [ + { "type": "task", "task-id": "backup" }, + { "type": "task", "task-id": "update" }, + { "type": "task", "task-id": "reboot" } + ] + } + ] +} diff --git a/src/conf/py-debug/null.sample.jsonc b/src/conf/py-debug/null.sample.jsonc deleted file mode 100644 index a83de95..0000000 --- a/src/conf/py-debug/null.sample.jsonc +++ /dev/null @@ -1,140 +0,0 @@ -// PALHM Instance Config -{ - "include": [ "conf/py-debug/conf.d/core.jsonc" ], - "nb-workers": 1, - "vl": 3, - "tasks": [ - { - "id": "backup", - "type": "backup", - "backend": "null", - "object-groups": [ - { "id": "pre-start" }, - { - "id": "data-dump", - "depends": [ "pre-start" ] - }, - { - "id": "tar-media-0", - "depends": [ "data-dump" ] - }, - { - "id": "tar-media-1", - "depends": [ "data-dump" ] - } - ], - "objects": [ - { - "path": "pm-list.gz", - "group": "pre-start", - "pipeline": [ - { "type": "exec", "exec-id": "dnf-list-installed" }, - { "type": "exec", "exec-id": "filter-gzip-plain" } - ] - }, - { - "path": "lsblk.json.gz", - "group": "pre-start", - "pipeline": [ - { - "type": "exec-append", - "exec-id": "lsblk-all-json", - "argv": [ "-a" ] - }, - { "type": "exec", "exec-id": "filter-gzip-plain" } - ] - }, - { - "path": "random-dump.sql.xz", - "group": "data-dump", - "pipeline": [ - { - "type": "exec-inline", - "argv": [ - "/bin/dd", - "if=/dev/urandom", - "bs=4096", - "count=512", - "status=none" - ] - }, - { "type": "exec", "exec-id": "filter-xz-parallel" } - ] - }, - { - "path": "random-dump.0.xz", - "group": "tar-media-0", - "pipeline": [ - { - "type": "exec-inline", - "argv": [ - "/bin/dd", - "if=/dev/zero", - "bs=4096", - "count=512", - "status=none" - ] - }, - { "type": "exec", "exec-id": "filter-xz-parallel" } - ] - }, - { - "path": "random-dump.1.xz", - "group": "tar-media-1", - "pipeline": [ - { - "type": "exec-inline", - "argv": [ - "/bin/dd", - "if=/dev/zero", - "bs=4096", - "count=512", - "status=none" - ] - }, - { "type": "exec", "exec-id": "filter-xz-parallel" } - ] - } - ] - }, - { - "id": "update", - "type": "routine", - "routine": [ - { - "type": "exec-inline", - "argv": [ "/bin/echo", "0" ] - }, - { - "type": "exec-inline", - "argv": [ "/bin/sleep", "1" ] - }, - { - "type": "exec-inline", - "argv": [ "/bin/echo", "1" ] - } - ] - }, - { - "id": "default", - "type": "routine", - "routine": [ - { "type": "task", "task-id": "backup" }, - { "type": "task", "task-id": "update" }, - { - // Block SIGTERM from systemd/init.d so the program is not - // affected by the reboot command. - "type": "builtin", - "builtin-id": "sigmask", - "param": [ - { "action": "block", "sig": [ "TERM" ] } - ] - }, - { - "type": "exec-inline", - "argv": [ "/bin/true" ] - } - ] - } - ] -} diff --git a/src/conf/py-debug/palhm.jsonc b/src/conf/py-debug/palhm.jsonc new file mode 120000 index 0000000..fb68baf --- /dev/null +++ b/src/conf/py-debug/palhm.jsonc @@ -0,0 +1 @@ +aws.jsonc
\ No newline at end of file |