diff --git a/CLAUDE.md b/CLAUDE.md index 077a37aa..74f41258 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -202,6 +202,8 @@ Do not use `gh cache delete --all`: it also removes the entries the current poli (`spring.grpc.client.channel..target`). Never `ServerBuilder` or `ManagedChannelBuilder` by hand. The protobuf plugin stays xolstice 0.6.1: the Boot-managed `io.github.ascopes` plugin fails under the UBI image's packaged Maven. .NET callers use the gRPC client factory (`AddGrpcClient`). + Traces come from the OTel Java agent alone: do not add a Micrometer tracing bridge, or Spring gRPC's + observation interceptor adds a second span per call. ## House test tools (prefer these; don't introduce alternatives) diff --git a/_plans/examples-plan.md b/_plans/examples-plan.md index 4c812d9a..fdbeaa1e 100644 --- a/_plans/examples-plan.md +++ b/_plans/examples-plan.md @@ -191,7 +191,7 @@ Build 20 runnable examples referenced by the tutorial site, each demonstrating p - Debezium (example 04) - flagd (example 27) -### Minikube Stack (optional, added later in the modernization plan) +### Minikube Stack (optional; S9 ran Example 05 on minikube, Appendix R, and S10 on OpenShift Local, Appendix S) - **Base**: Istio + KEDA + Strimzi + CloudNativePG + LGTM (covered by `lgtm-minikube-stack`) - **Opt-ins**: - Apicurio (example 09) diff --git a/_plans/s14-resilience-plan.md b/_plans/s14-resilience-plan.md index 3c28724f..26bdce1b 100644 --- a/_plans/s14-resilience-plan.md +++ b/_plans/s14-resilience-plan.md @@ -170,3 +170,14 @@ slack; Polly's breaker state lives per typed client, so `/breaker-state` must re SmallRye FT annotations need CDI-intercepted calls (not `this.` calls); Spring gRPC's port and health defaults versus the compose wiring; the OTel agent and Spring gRPC's own observation both instrumenting gRPC (double spans); Conan cache churn if C++ dependencies change (they should not). + +Outcome (2026-10-15): the breaker windows, half-open rules, Polly's per-client state, CDI interception and the Spring +gRPC defaults were all settled by the 111/111 matrix. The two left open are closed: + +- Reset wait: `verify.sh` no longer sleeps a fixed 11 s. It waits the 10 s open period, then calls `/with-breaker` + once a second until `/breaker-state` reports closed (at most 20 s), so the slack no longer depends on one + library's timing. Verified on all six languages. +- Double spans: none. In Example 11 (Spring Boot) a `POST /orders` trace holds one gRPC CLIENT span in + order-service and one SERVER span in inventory-service, both from the OTel agent (`io.opentelemetry.grpc-1.6`), + the server span parented on the client span. Spring gRPC's observation interceptor creates no spans because + Micrometer Tracing is not on the classpath; adding a Micrometer tracing bridge would bring the duplicates back. diff --git a/examples/01-cloud-native-principles/verify.sh b/examples/01-cloud-native-principles/verify.sh index 41f31755..2e97f896 100755 --- a/examples/01-cloud-native-principles/verify.sh +++ b/examples/01-cloud-native-principles/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/02-communications/verify.sh b/examples/02-communications/verify.sh index ed694fc6..b43ffade 100755 --- a/examples/02-communications/verify.sh +++ b/examples/02-communications/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/03-composition/verify.sh b/examples/03-composition/verify.sh index e3271c62..e3e2109d 100755 --- a/examples/03-composition/verify.sh +++ b/examples/03-composition/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/04-data/verify.sh b/examples/04-data/verify.sh index c79fa287..f5047726 100755 --- a/examples/04-data/verify.sh +++ b/examples/04-data/verify.sh @@ -8,12 +8,11 @@ CONNECT="${CONNECT:-http://localhost:8083}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/06-stream-processing/verify.sh b/examples/06-stream-processing/verify.sh index 2179937f..4b956f32 100755 --- a/examples/06-stream-processing/verify.sh +++ b/examples/06-stream-processing/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/09-api-registry/verify.sh b/examples/09-api-registry/verify.sh index 5f7f8a4d..db0c8a01 100755 --- a/examples/09-api-registry/verify.sh +++ b/examples/09-api-registry/verify.sh @@ -8,12 +8,11 @@ REGISTRY="${REGISTRY:-$BASE/apis/registry/v3}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/11-observability/verify.sh b/examples/11-observability/verify.sh index b50b31f9..c943d0d2 100755 --- a/examples/11-observability/verify.sh +++ b/examples/11-observability/verify.sh @@ -8,12 +8,11 @@ TEMPO="${TEMPO:-http://localhost:3200}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/12-security/verify.sh b/examples/12-security/verify.sh index b66a03fa..d232098b 100755 --- a/examples/12-security/verify.sh +++ b/examples/12-security/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/16-websockets/verify.sh b/examples/16-websockets/verify.sh index 16822a7e..2cf917c6 100755 --- a/examples/16-websockets/verify.sh +++ b/examples/16-websockets/verify.sh @@ -9,12 +9,11 @@ POD2="${POD2:-http://localhost:8082}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/17-sagas/verify.sh b/examples/17-sagas/verify.sh index 45e08719..6ed5992e 100755 --- a/examples/17-sagas/verify.sh +++ b/examples/17-sagas/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/18-errors/verify.sh b/examples/18-errors/verify.sh index eee894e5..abb4ac23 100755 --- a/examples/18-errors/verify.sh +++ b/examples/18-errors/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/19-ddd-hexagonal/verify.sh b/examples/19-ddd-hexagonal/verify.sh index 276cfc1e..9fdbedbd 100755 --- a/examples/19-ddd-hexagonal/verify.sh +++ b/examples/19-ddd-hexagonal/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/21-graceful-shutdown/verify.sh b/examples/21-graceful-shutdown/verify.sh index 5aad031b..619afaf6 100755 --- a/examples/21-graceful-shutdown/verify.sh +++ b/examples/21-graceful-shutdown/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/22-l7-routing/verify.sh b/examples/22-l7-routing/verify.sh index 2ad6063e..abeca87a 100755 --- a/examples/22-l7-routing/verify.sh +++ b/examples/22-l7-routing/verify.sh @@ -9,12 +9,11 @@ ROUTER="${ROUTER:-http://localhost:8090}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/24-monolith-to-microservices/verify.sh b/examples/24-monolith-to-microservices/verify.sh index 2fcefe88..18455a7a 100755 --- a/examples/24-monolith-to-microservices/verify.sh +++ b/examples/24-monolith-to-microservices/verify.sh @@ -9,12 +9,11 @@ DECORATOR="${DECORATOR:-http://localhost:8091}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/25-caching/verify.sh b/examples/25-caching/verify.sh index ec8f9ac0..addf46b3 100755 --- a/examples/25-caching/verify.sh +++ b/examples/25-caching/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/26-failure-modes/verify.sh b/examples/26-failure-modes/verify.sh index f068f73f..8b3e829d 100755 --- a/examples/26-failure-modes/verify.sh +++ b/examples/26-failure-modes/verify.sh @@ -9,12 +9,11 @@ BACKEND="${BACKEND:-http://localhost:8081}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } @@ -177,15 +176,19 @@ else fi # --- Breaker recovery --- -printf ' \xe2\x86\x92 restoring backend and waiting for breaker reset (11s)...\n' +printf ' \xe2\x86\x92 restoring backend; the breaker stays open 10s, then trial calls close it...\n' curl $CURL_OPTS -s -X POST -H 'Content-Type: application/json' \ -d '{"mode":"healthy"}' "$BACKEND/mode" >/dev/null -sleep 11 +sleep 10 -# First call after reset should trigger half-open → trial -curl $CURL_OPTS -sf "$EDGE/with-breaker" >/dev/null 2>&1 -curl $CURL_OPTS -sf "$EDGE/with-breaker" >/dev/null 2>&1 -curl $CURL_OPTS -sf "$EDGE/with-breaker" >/dev/null 2>&1 +# Poll rather than wait a fixed time: the libraries end the open period at slightly different moments, and the +# first call after it is the half-open trial (Polly closes after one success, the others after two). A call made +# while the breaker is still open only gets the fallback, so polling is harmless. Give up after 20 s. +for _ in $(seq 1 20); do + curl $CURL_OPTS -sf "$EDGE/with-breaker" >/dev/null 2>&1 + curl $CURL_OPTS -sf "$EDGE/breaker-state" 2>/dev/null | grep -q '"state":"closed"' && break + sleep 1 +done check "breaker recovered to closed after successful trials" \ "curl $CURL_OPTS -sf $EDGE/breaker-state" \ diff --git a/examples/27-feature-flags/verify.sh b/examples/27-feature-flags/verify.sh index d49d887f..8cf5f04c 100755 --- a/examples/27-feature-flags/verify.sh +++ b/examples/27-feature-flags/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/28-newman/verify.sh b/examples/28-newman/verify.sh index 5ca0cb64..a430bc13 100755 --- a/examples/28-newman/verify.sh +++ b/examples/28-newman/verify.sh @@ -7,12 +7,11 @@ BASE="${BASE:-http://localhost:8080}" CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; } diff --git a/examples/30-blazor-signalr/verify.sh b/examples/30-blazor-signalr/verify.sh index 977ec958..90798e9a 100755 --- a/examples/30-blazor-signalr/verify.sh +++ b/examples/30-blazor-signalr/verify.sh @@ -8,12 +8,11 @@ BASE2="${BASE2:-http://localhost:8081}" # second dashboard instance, same Redis CURL_OPTS="${CURL_OPTS:-}" # Container operations go through these helpers so the checks do not hard-code -# an engine. RUNTIME=openshift is added later: a ctr_target function will map -# a container name (cndp-kafka, cndp-postgres, ...) to its pod and each helper -# will call `oc exec` / `oc logs` instead. +# an engine. This example runs on Docker Compose only (RUNTIME=docker); Example 05's +# verify.sh shows the RUNTIME=kubernetes variant used on minikube and OpenShift Local. case "$RUNTIME" in docker) ;; - *) echo "RUNTIME=$RUNTIME not supported yet" >&2; exit 1 ;; + *) echo "RUNTIME=$RUNTIME not supported (docker)" >&2; exit 1 ;; esac ctr_exec() { docker exec "$@"; } ctr_logs() { docker logs "$@"; }