Compare commits

..

24 commits

Author SHA1 Message Date
Max
4f935baa37 cluster/services/storage: register existing keys and buckets in incandescence 2024-08-15 00:05:50 +02:00
Max
3fc6f6e95c cluster/services/consul: implement runConsul incantation 2024-08-15 00:05:50 +02:00
Max
746a5b73dc cluster/services/forge: define db 2024-08-15 00:05:50 +02:00
Max
e081f62022 cluster/services/storage: define snakeoil passphrase for heresy, ensure encryption 2024-08-15 00:05:50 +02:00
Max
c868f710f6 cluster/services/ways: add simulacrum deps 2024-08-15 00:05:50 +02:00
Max
a6615b60ba cluster/services/storage: use recursive simulacrum deps 2024-08-15 00:05:50 +02:00
Max
812cbe111b cluster/services/acme-client: implement augment for external ACME services 2024-08-15 00:05:50 +02:00
Max
85a76193d8 cluster/services/forge: use forService 2024-08-15 00:05:50 +02:00
Max
e86d51437e cluster/services/dns: use patroni incandescence 2024-08-15 00:05:50 +02:00
Max
e546191f3f modules/external-storage: implement detectFs for s3c4 2024-08-15 00:05:50 +02:00
Max
967c31fe42 cluster/services/storage: use locksmith secrets for external storage 2024-08-15 00:05:50 +02:00
Max
2d371d3815 cluster/services/storage: adjust test 2024-08-15 00:05:50 +02:00
Max
c74939424e cluster/services/storage: use incandescence 2024-08-15 00:05:50 +02:00
Max
ee161721ca modules/external-storage: support locksmith secrets 2024-08-15 00:05:50 +02:00
Max
45f78f8cf1 cluster/services/storage: implement s3ql key format 2024-08-15 00:05:50 +02:00
Max
a175d32b27 cluster/services/hercules-ci-multi-agent: use forService 2024-08-15 00:05:50 +02:00
Max
fa2ed3df7b cluster/services/monitoring: use forService 2024-08-15 00:05:50 +02:00
Max
32475201c8 checks/garage: drop 2024-08-15 00:05:50 +02:00
Max
dc12fa8d8f cluster/services/forge: use forService 2024-08-15 00:05:50 +02:00
Max
6623300408 cluster/services/attic: use forService 2024-08-15 00:05:50 +02:00
Max
0a4ad3c94d cluster/services/storage: test in simulacrum 2024-08-15 00:05:49 +02:00
Max
233c92d62e cluster/catalog: support snakeoil secrets 2024-08-15 00:05:49 +02:00
Max
340383f160 cluster/services/incandescence: destroy without waiting for change 2024-08-14 19:38:49 +02:00
Max
76f08600af cluster/services/incandescence: don't try to filter destruction if no objects declared 2024-08-14 19:20:22 +02:00

View file

@ -1,7 +1,7 @@
{ cluster, config, lib, ... }:
let
inherit (lib) concatStringsSep escapeShellArg flatten filter filterAttrs length mapAttrs mapAttrs' mapAttrsToList mkIf mkMerge pipe stringToCharacters;
inherit (lib) concatStringsSep escapeShellArg flatten filter filterAttrs length mapAttrs mapAttrs' mapAttrsToList mkIf mkMerge optionalString pipe stringToCharacters;
cfg = config.services.incandescence;
clusterCfg = cluster.config.incandescence;
@ -70,8 +70,7 @@ in
description = "Ignite Destruction: ${provider} - ${formula}";
wantedBy = [ "incandescence-${provider}.target" ] ++ map (dep: "ignite-${provider}-${dep}-destroy.service") formulaConfig.deps;
before = [ "incandescence-${provider}.target" ] ++ map (dep: "ignite-${provider}-${dep}-destroy.service") formulaConfig.deps;
wants = providerConfig.wants ++ [ "ignite-${provider}-${formula}-change.service" ];
after = providerConfig.after ++ [ "ignite-${provider}-${formula}-change.service" ];
inherit (providerConfig) wants after;
serviceConfig.Type = "oneshot";
distributed.enable = true;
path = [ config.services.consul.package ] ++ providerConfig.packages;
@ -83,13 +82,15 @@ in
(builtins.add 2)
toString
];
needsFilter = clusterCfg.providers.${provider}.objects.${formula} != [];
keyFilter = pipe clusterCfg.providers.${provider}.objects.${formula} [
(map (x: escapeShellArg "^${x}$"))
(concatStringsSep " \\\n -e ")
];
destroyAfterDays = toString formulaConfig.destroyAfterDays;
grep = optionalString needsFilter "grep -v -e ${keyFilter} |";
in ''
consul kv get --keys ${kvRoot}/ | cut -d/ -f${fieldNum} | grep -v -e ${keyFilter} | while read object; do
consul kv get --keys ${kvRoot}/ | cut -d/ -f${fieldNum} | ${grep} while read object; do
if consul kv get ${kvRoot}/$object/alive >/dev/null; then
destroyOn="$(consul kv get ${kvRoot}/$object/destroyOn || true)"
if [[ -z "$destroyOn" && "${destroyAfterDays}" -ne 0 ]]; then