Great that you made a fix quickly! Thank you.
Yes, that’s a first step, and the description you make is correct. Let’s go for it.
Great that you made a fix quickly! Thank you.
Yes, that’s a first step, and the description you make is correct. Let’s go for it.
BTW, once we have this in place, what’s the catch of having the services talk to each other on their own?
Could you clarify?
See the new configuration field ‘control-interface’ in the message router yaml files. If it’s lets’s say 7001, then you can do:
echo 'n' | nc localhost 7001
which will have the same effect as pressing n.
In bash this might be:
upsycle-send () {
local host=$1
local port=$2
local line
while read line; do
nc "$host" "$port" <<< "$line"
done
}
cat > file.txt # e.g. n<enter>S<enter><ctrl-d>
cat file.txt | upsycle-send 127.0.0.1 7001
But to make a nice demo you probably want to send a few commands to the message router A, then to service A1, then to the message router or another service, etc. It might an idea to make a little DSL for this.
s-a1 j # join multicast groups
sleep 5
s-a1 m # send multicast update
mr-a S
with mappings mr-a=mr-a.dream.public.cat:7001, s-a1=dmc-1.dream.public.cat:nnnn in another file.
and then eventually
s-a1 join-multicast-groups <key1> <key2>
sleep 5
s-a1 send-multicast <key1> "hello this is a DMC update"
mr-a show-state
and so on.
Although I have gmp
installed, I get:
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[ERROR] The compilation of conf-gmp failed at "/home/dream/.opam/opam-init/hooks/sandbox.sh build sh -exc cc -c $CFLAGS -I/usr/local/include test.c".
#=== ERROR while compiling conf-gmp.3 =========================================#
# context 2.0.8 | linux/x86_64 | ocaml-system.4.12.0 | https://opam.ocaml.org#b7eb40e7
# path ~/.opam/default/.opam-switch/build/conf-gmp.3
# command ~/.opam/opam-init/hooks/sandbox.sh build sh -exc cc -c $CFLAGS -I/usr/local/include test.c
# exit-code 1
# env-file ~/.opam/log/conf-gmp-75590-e1320e.env
# output-file ~/.opam/log/conf-gmp-75590-e1320e.out
### output ###
# + cc -c -I/usr/local/include test.c
# test.c:1:10: fatal error: gmp.h: No such file or directory
# 1 | #include <gmp.h>
# | ^~~~~~~
# compilation terminated.
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build conf-gmp 3
└─
╶─ No changes have been performed
Looks like it’s missing a dev library. On Debian it would be called libgmp-dev, dunno about Alpine.
It's NixOS. I installed the
gmp` package derivation.
So, anyway, just in passing. NixOS 21.05 on the Hetzner Cloud was broken. Now it’s fixed.
Please note that the commands to generate the keys and to run the components have changed slightly:
The new commands are
example/gen-keys-and-certs
example/run-message-router { a | b | c }
example/run-service { a1 | a2 | a3 | b1 }
(example can also be abbreviated ‘eg’)
Sorry for the late change but it was necessary to properly separate the examples from the non-examples.
I guess you mean a1 | a2 | a2 | b1
Thank you for this and the Dockerfile.
Today we’re meeting with DataPlayers to discuss RDF. Will look at it tomorrow then. Have a nice day!
thanks, fixed.
I’m wondering where the TLS certificates go, so I can copy them from mr-a to mr-b and mr-c. Or are they consistent between hosts (unlikely)?
Is this a question related to this topic?
Do you mean which folder?
Am I really to answer this question? There are at least two threads to move out of this particular topic into their own topic.
I want to be able to copy the certificates from one VM to the next so they match their expected routers. I guess I cannot generate certificates and expect the configurations to magically match each other.
Oh, sorry. Somehow I thought we were in a different thread.
Anyway, they are in the priv/cert/ directory (from root)
Thanks. Indeed, I moved the posts to another topic
Ah, dammit, I think I need mr-b up in order to run mr-c. Will look at it later.
Mm, no. C should be able to run without B running. You can try it on debian with the localhost example.
It only says ‘trying to connect to B’ or something like that.