Skip to content

Commit 3ee725d

Browse files
committed
chore(local-run): Fix make-demo-scenario
1 parent 9f06917 commit 3ee725d

File tree

4 files changed

+97
-27
lines changed

4 files changed

+97
-27
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
22

3-
SERVER_DOMAIN=prose.org.local
3+
SERVER_DOMAIN=prose-demo.org.local

local-run/scripts/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!make-demo-scenario.env

local-run/scripts/make-demo-scenario

100755100644
Lines changed: 83 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,95 @@ source "${SCRIPTS_ROOT:?}"/util.sh
1010
# ===== CONSTANTS =====
1111

1212
: ${REPOSITORY_ROOT:="${PROSE_POD_API_DIR:?}"}
13-
DEMO_DATA_DIR="${REPOSITORY_ROOT:?}"/local-run/demo-data
14-
: ${SCENARIOS_DIR:="${REPOSITORY_ROOT:?}"/local-run/scenarios}
13+
LOCAL_RUN_DIR="${REPOSITORY_ROOT:?}"/local-run
14+
DEMO_DATA_DIR="${LOCAL_RUN_DIR:?}"/demo-data
15+
: ${SCENARIOS_DIR:="${LOCAL_RUN_DIR:?}"/scenarios}
16+
: ${LOCAL_RUN_SCRIPTS_DIR:="${LOCAL_RUN_DIR:?}"/scripts}
1517

1618
: ${SCENARIO_NAME:=demo}
1719

1820
source "${DEMO_DATA_DIR:?}/constants.sh"
21+
source "${LOCAL_RUN_SCRIPTS_DIR:?}/scenario-files.sh"
1922

2023
# ===== MAIN LOGIC =====
2124

2225
# Create demo scenario.
23-
if [ -d "${SCENARIOS_DIR:?}/${SCENARIO_NAME:?}" ]; then
26+
if [ -d "${SCENARIO_DIR:?}" ]; then
2427
edo task local:scenarios:reset -y -- "${SCENARIO_NAME:?}"
2528
else
26-
edo task local:scenarios:create -- "${SCENARIO_NAME:?}"
29+
edo task local:scenarios:create -- "${SCENARIO_NAME:?}" --based-on=fresh
30+
fi
31+
32+
echo '' > "${SCENARIO_DIR:?}"/NO_RUN
33+
echo '' > "${SCENARIO_DIR:?}"/NO_DELETE
34+
35+
if [[ "$*" == *'--pod-address-dynamic'* ]]; then
36+
ADDRESS_CFG='address = { domain = "'"${DOMAIN:?}"'" }'
37+
else
38+
ADDRESS_CFG='address = { ipv4 = "172.20.0.40", ipv6 = "2001:db8::40" }'
39+
fi
40+
41+
mkdir -p "$(dirname "${PROSE_CONFIG_FILE:?}")"
42+
cat <<EOF > "${PROSE_CONFIG_FILE:?}"
43+
# Prose Pod API
44+
# REST API for administrating a Prose Pod
45+
# Configuration file
46+
# Example: https://github.com/prose-im/prose-pod-system/blob/master/Prose-example.toml
47+
# All keys: https://github.com/prose-im/prose-pod-api/blob/master/src/service/src/features/app_config/mod.rs
48+
49+
[branding]
50+
company_name = "Prose"
51+
52+
[server]
53+
domain = "prose-demo.org.local"
54+
55+
[pod]
56+
${ADDRESS_CFG:?}
57+
dashboard_url = "http://localhost:3030/"
58+
59+
[notify.email]
60+
pod_address = "pod@prose-demo.org.local"
61+
62+
smtp_host = "mailpit"
63+
smtp_encrypt = false
64+
EOF
65+
66+
mkdir -p "$(dirname "${COREDNS_COREFILE:?}")"
67+
cat <<EOF > "${COREDNS_COREFILE:?}"
68+
.:53 {
69+
file /etc/coredns/zones.db
70+
errors # show errors
71+
log # enable query logs
72+
}
73+
EOF
74+
75+
mkdir -p "$(dirname "${DNS_ZONE_FILE:?}")"
76+
cat <<EOF > "${DNS_ZONE_FILE:?}"
77+
@ IN SOA ns.prose-demo.org.local. admin.prose-demo.org.local. (
78+
2024101701 ; serial
79+
3600 ; refresh (1 hour)
80+
600 ; retry (10 minutes)
81+
86400 ; expire (1 day)
82+
3600 ; minimum (1 hour)
83+
)
84+
EOF
85+
86+
if [[ "$*" == *'--pod-address-dynamic'* ]]; then
87+
cat <<EOF >> "${DNS_ZONE_FILE:?}"
88+
prose-demo.org.local 3600 IN SRV 0 5 5222 prose-demo.org.local.
89+
prose-demo.org.local 3600 IN SRV 0 5 5269 prose-demo.org.local.
90+
EOF
91+
else
92+
cat <<EOF >> "${DNS_ZONE_FILE:?}"
93+
xmpp.prose-demo.org.local 600 IN A 172.20.0.40
94+
xmpp.prose-demo.org.local 600 IN AAAA 2001:db8::40
95+
prose-demo.org.local 3600 IN SRV 0 5 5222 xmpp.prose-demo.org.local.
96+
prose-demo.org.local 3600 IN SRV 0 5 5269 xmpp.prose-demo.org.local.
97+
EOF
2798
fi
2899

29100
# Run the API.
101+
export ENV_FILE="${REPOSITORY_ROOT:?}"/local-run/scripts/make-demo-scenario.env
30102
# NOTE: We need to run `local` so we can auto-accept invitations.
31103
edo FORCE_RUN=1 task local:run -- --api=local --scenario="${SCENARIO_NAME:?}" --detach
32104
while ! xh :8080/v1/version -q; do
@@ -47,33 +119,18 @@ log-in-member-n() {
47119
local n="${1:?}"
48120
local res="$(xh POST :8080/v1/login -a "${MEMBER_JIDS[n]}:${MEMBER_PASSWORDS[n]}" -b)"
49121
if [ $? -eq 0 ]; then
50-
jq -r '.token' <<< "${res:?}"
122+
MEMBER_TOKENS[n]="$(jq -r '.token' <<< "${res:?}")"
51123
else
52-
debug 'Retrying…'
124+
debug 'Retrying (debug)'
53125
log_as_debug_ xh POST :8080/v1/login -a "${MEMBER_JIDS[n]}:${MEMBER_PASSWORDS[n]}" -b
54126
return 1
55127
fi
56128
}
57129

58130
info 'Log first admin in'
59-
MEMBER_TOKENS[0]="$(log-in-member-n 0)"
131+
log-in-member-n 0
60132
ADMIN_TOKEN="${MEMBER_TOKENS[0]}"
61133

62-
if [[ "$*" == *'--pod-address-dynamic'* ]]; then
63-
info 'Initialize Pod address (dynamic address)'
64-
xh PUT :8080/v1/pod/config -q \
65-
address[hostname]="${DOMAIN:?}" \
66-
dashboard_url=http://localhost:3030 \
67-
-A bearer -a "${ADMIN_TOKEN:?}"
68-
else
69-
info 'Initialize Pod address (static address)'
70-
xh PUT :8080/v1/pod/config -q \
71-
address[ipv4]=172.20.0.40 \
72-
address[ipv6]=2001:db8::40 \
73-
dashboard_url=http://localhost:3030 \
74-
-A bearer -a "${ADMIN_TOKEN:?}"
75-
fi
76-
77134
info 'Set Workspace icon'
78135
xh PUT :8080/v1/workspace/icon -q \
79136
Content-Type:image/png \
@@ -86,7 +143,7 @@ update-member-n() {
86143
local nickname="${MEMBER_NICKNAMES[n]}"
87144
if [ -n "${nickname?}" ]; then
88145
info "Set ${MEMBER_JIDS[n]}’s nickname"
89-
xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/nickname -q \
146+
edo xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/nickname -q \
90147
nickname="${nickname:?}" \
91148
-A bearer -a "${MEMBER_TOKENS[n]}"
92149
else
@@ -96,7 +153,7 @@ update-member-n() {
96153
local avatar="${MEMBER_AVATARS[n]}"
97154
if [ -n "${avatar?}" ]; then
98155
info "Set ${MEMBER_JIDS[n]}’s avatar"
99-
xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/avatar -q \
156+
edo xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/avatar -q \
100157
image="${avatar:?}" \
101158
-A bearer -a "${MEMBER_TOKENS[n]}"
102159
else
@@ -106,7 +163,7 @@ update-member-n() {
106163
local email="${MEMBER_EMAILS[n]}"
107164
if [ -n "${email?}" ]; then
108165
info "Set ${MEMBER_JIDS[n]}’s email address"
109-
xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/email-address -q \
166+
edo xh PUT :8080/v1/members/"${MEMBER_JIDS[n]}"/email-address -q \
110167
--raw "\"${email:?}\"" \
111168
-A bearer -a "${MEMBER_TOKENS[n]}"
112169
else
@@ -126,7 +183,7 @@ add-member-n() {
126183
-A bearer -a "${ADMIN_TOKEN:?}"
127184

128185
info "Log ${MEMBER_JIDS[n]} in"
129-
MEMBER_TOKENS[n]="$(log-in-member-n "${n:?}")"
186+
log-in-member-n "${n:?}"
130187

131188
update-member-n "${n:?}"
132189
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
PROSE_LOG__LEVEL=trace
2+
PROSE_SERVER__LOG_LEVEL=debug
3+
PROSE_LOG__FORMAT=pretty
4+
PROSE_LOG__WITH_ANSI=true
5+
PROSE_DEBUG_USE_AT_YOUR_OWN_RISK__LOG_CONFIG_AT_STARTUP=true
6+
PROSE_DEBUG_USE_AT_YOUR_OWN_RISK__DETAILED_ERROR_RESPONSES=true
7+
PROSE_DEBUG_ONLY__INSECURE_PASSWORD_ON_AUTO_ACCEPT_INVITATION=true
8+
PROSE_DEBUG_ONLY__DEPENDENCY_MODES__NOTIFIER=logging
9+
OTEL_SERVICE_NAME='prose-pod-api'
10+
OTEL_EXPORTER_OTLP_ENDPOINT='http://otel-collector:4317'
11+
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL='grpc'
12+
OTEL_TRACES_SAMPLER='always_on'

0 commit comments

Comments
 (0)