diff --git a/experiments/layered-server-config/README.md b/experiments/layered-server-config/README.md new file mode 100644 index 0000000..3560363 --- /dev/null +++ b/experiments/layered-server-config/README.md @@ -0,0 +1,3 @@ +# Experimenting with service groups + + syndicate-server -c ./boot diff --git a/experiments/layered-server-config/boot/010-milestone.pr b/experiments/layered-server-config/boot/010-milestone.pr new file mode 100644 index 0000000..9e512c3 --- /dev/null +++ b/experiments/layered-server-config/boot/010-milestone.pr @@ -0,0 +1,10 @@ +; To "run" a milestone service, +; - assert that it is both started and ready +; - that's it! +; +? > [ + started> + ready> + $log ! state: up }> + ?- state: down }> +] diff --git a/experiments/layered-server-config/boot/010-service-state-up.pr b/experiments/layered-server-config/boot/010-service-state-up.pr new file mode 100644 index 0000000..e9fd2b2 --- /dev/null +++ b/experiments/layered-server-config/boot/010-service-state-up.pr @@ -0,0 +1,4 @@ +; To the usual suite of service states we add `up`, meaning "either `ready` or `complete`". +; +? +? diff --git a/experiments/layered-server-config/boot/020-load-system-layer.pr b/experiments/layered-server-config/boot/020-load-system-layer.pr new file mode 100644 index 0000000..8daa3e5 --- /dev/null +++ b/experiments/layered-server-config/boot/020-load-system-layer.pr @@ -0,0 +1,28 @@ +; Attenuate `$config` by rewriting plain `require-service` assertions to +; `require-system-service` assertions. Allow all other assertions through. +; +let ?sys = <* $config [ + > + +]> + +; Give meaning to `require-system-service`: it is an ordinary `require-service`, plus a +; declaration that the `system-layer` milestone depends on the service. +; +? [ + > + +] + +; Load config in the `system-layer` directory, using the wrapped `config` so that all plain +; services required are changed to be *system* services. +; +> + +; In addition, require the `system-layer` milestone explicitly. +; +> diff --git a/experiments/layered-server-config/boot/030-load-services.pr b/experiments/layered-server-config/boot/030-load-services.pr new file mode 100644 index 0000000..5893dfb --- /dev/null +++ b/experiments/layered-server-config/boot/030-load-services.pr @@ -0,0 +1,26 @@ +; Attenuate `$config` by rewriting plain `require-service` assertions to +; `require-basic-service` assertions. Allow all other assertions through. +; +let ?basic = <* $config [ + > + +]> + +; Give meaning to `require-basic-service`: it is an ordinary `require-service`, plus a +; declaration that the service depends on the `system-layer` milestone. +; +? [ + up>> + +] + +; Once we see that the `system-layer` milestone is ready, start processing the `services` +; directory. +; +? up> [ + > +] diff --git a/experiments/layered-server-config/services/mock-httpd.pr b/experiments/layered-server-config/services/mock-httpd.pr new file mode 100644 index 0000000..1c8b7a0 --- /dev/null +++ b/experiments/layered-server-config/services/mock-httpd.pr @@ -0,0 +1,4 @@ +> + +> + diff --git a/experiments/layered-server-config/start.sh b/experiments/layered-server-config/start.sh new file mode 100755 index 0000000..4fbf87f --- /dev/null +++ b/experiments/layered-server-config/start.sh @@ -0,0 +1,3 @@ +#!/bin/sh +make -C ~/src/syndicate-rs +~/src/syndicate-rs/target/debug/syndicate-server -c boot/ diff --git a/experiments/layered-server-config/system-layer/mock-eudev.pr b/experiments/layered-server-config/system-layer/mock-eudev.pr new file mode 100644 index 0000000..a32e1d3 --- /dev/null +++ b/experiments/layered-server-config/system-layer/mock-eudev.pr @@ -0,0 +1,7 @@ +> +> + +> + + up>> +>