refactor: rename ScadaLink → ZB.MOM.WW.ScadaBridge (code + projects + namespaces)

Solution + 23 src projects + 26 test projects renamed; folders, csproj,
namespaces, and ScadaLinkDbContext/ScadaBridgeDbContext class updated.
ActorSystem "scadalink" → "scadabridge", Akka seed-node URLs migrated.
SQL roles/logins, LDAP domains, CLI command name, and CLI config dir
(~/.scadalink → ~/.scadabridge) also renamed.

Build green; 5 Host.Tests fail awaiting SQL login rename in next commit.
Pre-existing StaleTagMonitor timing flakes unchanged.

Rename script committed at tools/rename-to-scadabridge.sh.
This commit is contained in:
Joseph Doherty
2026-05-28 09:37:45 -04:00
parent 6d87ee3c3b
commit 7b0b9c7365
1531 changed files with 11180 additions and 11054 deletions
+23 -23
View File
@@ -1,11 +1,11 @@
# docker-cluster
Primary local Docker deployment — the full ScadaLink reference topology used for day-to-day development and integration testing. Runs on the developer workstation under Docker / OrbStack.
Primary local Docker deployment — the full ScadaBridge reference topology used for day-to-day development and integration testing. Runs on the developer workstation under Docker / OrbStack.
- **Deployment ID:** `docker-cluster`
- **Transport.SourceEnvironment:** `docker-cluster`
- **Source directory:** [`docker/`](../docker/)
- **Container-name prefix:** `scadalink-`
- **Container-name prefix:** `scadabridge-`
- **Host-port range:** `90XX`
## Topology
@@ -35,15 +35,15 @@ Two-node active/standby everywhere. Central runs the Blazor UI, Template Engine,
| Node | Container Name | Host Web | Host Akka | Host gRPC |
|------|----------------|----------|-----------|-----------|
| Traefik LB | `scadalink-traefik` | 9000 | — | — |
| Central A | `scadalink-central-a` | 9001 | 9011 | — |
| Central B | `scadalink-central-b` | 9002 | 9012 | — |
| Site-A A | `scadalink-site-a-a` | — | 9021 | 9023 |
| Site-A B | `scadalink-site-a-b` | — | 9022 | 9024 |
| Site-B A | `scadalink-site-b-a` | — | 9031 | 9033 |
| Site-B B | `scadalink-site-b-b` | — | 9032 | 9034 |
| Site-C A | `scadalink-site-c-a` | — | 9041 | 9043 |
| Site-C B | `scadalink-site-c-b` | — | 9042 | 9044 |
| Traefik LB | `scadabridge-traefik` | 9000 | — | — |
| Central A | `scadabridge-central-a` | 9001 | 9011 | — |
| Central B | `scadabridge-central-b` | 9002 | 9012 | — |
| Site-A A | `scadabridge-site-a-a` | — | 9021 | 9023 |
| Site-A B | `scadabridge-site-a-b` | — | 9022 | 9024 |
| Site-B A | `scadabridge-site-b-a` | — | 9031 | 9033 |
| Site-B B | `scadabridge-site-b-b` | — | 9032 | 9034 |
| Site-C A | `scadabridge-site-c-a` | — | 9041 | 9043 |
| Site-C B | `scadabridge-site-c-b` | — | 9042 | 9044 |
Port pattern: `90X1`/`90X2` (Akka), `90X3`/`90X4` (gRPC), where X = 0 (central), 2 (site-a), 3 (site-b), 4 (site-c).
@@ -57,27 +57,27 @@ Port pattern: `90X1`/`90X2` (Akka), `90X3`/`90X4` (gRPC), where X = 0 (central),
## Infrastructure Dependencies
All from `infra/docker-compose.yml`, attached via the shared `scadalink-net` bridge network:
All from `infra/docker-compose.yml`, attached via the shared `scadabridge-net` bridge network:
| Service | Container | Host Port | Purpose |
|---------|-----------|-----------|---------|
| MS SQL 2022 | `scadalink-mssql` | 1433 | `ScadaLinkConfig`, `ScadaLinkMachineData` |
| LDAP (GLAuth) | `scadalink-ldap` | 3893 | Authentication |
| SMTP (Mailpit) | `scadalink-smtp` | 1025 / 8025 | Notification capture |
| OPC UA | `scadalink-opcua` | 50000 / 8080 | Simulated device tags |
| REST API | `scadalink-restapi` | 5200 | External REST integration testing |
| MS SQL 2022 | `scadabridge-mssql` | 1433 | `ScadaBridgeConfig`, `ScadaBridgeMachineData` |
| LDAP (GLAuth) | `scadabridge-ldap` | 3893 | Authentication |
| SMTP (Mailpit) | `scadabridge-smtp` | 1025 / 8025 | Notification capture |
| OPC UA | `scadabridge-opcua` | 50000 / 8080 | Simulated device tags |
| REST API | `scadabridge-restapi` | 5200 | External REST integration testing |
## Databases
| Database | Owner |
|----------|-------|
| `ScadaLinkConfig` | Configuration Database (#17) |
| `ScadaLinkMachineData` | Machine data (template/instance runtime data) |
| `ScadaBridgeConfig` | Configuration Database (#17) |
| `ScadaBridgeMachineData` | Machine data (template/instance runtime data) |
## Commands
```bash
# Start infra first (creates scadalink-net, MS SQL, LDAP, SMTP, OPC UA, REST API)
# Start infra first (creates scadabridge-net, MS SQL, LDAP, SMTP, OPC UA, REST API)
cd infra && docker compose up -d && cd ..
# Build image + deploy all 8 nodes
@@ -88,7 +88,7 @@ bash docker/seed-sites.sh
# View logs
docker compose -f docker/docker-compose.yml logs -f
docker logs -f scadalink-central-a
docker logs -f scadabridge-central-a
# Health
curl -s http://localhost:9001/health/ready | python3 -m json.tool
@@ -103,7 +103,7 @@ bash docker/teardown.sh
The CLI talks to the Traefik LB, which routes to the active central node.
```bash
dotnet run --project src/ScadaLink.CLI -- \
dotnet run --project src/ZB.MOM.WW.ScadaBridge.CLI -- \
--url http://localhost:9000 \
--username multi-role --password password \
template list
@@ -125,5 +125,5 @@ All passwords are `password`. See `infra/glauth/config.toml` for the full list.
## Notes
- Reference deployment for the project — when a change ships, it gets validated here first.
- Concurrent with [`docker-cluster-env2`](docker-cluster-env2.md) on the same host; the two stacks share the `scadalink-net` network and `infra/` services but use disjoint host ports (`90XX` vs `91XX`) and databases.
- Concurrent with [`docker-cluster-env2`](docker-cluster-env2.md) on the same host; the two stacks share the `scadabridge-net` network and `infra/` services but use disjoint host ports (`90XX` vs `91XX`) and databases.
- Detailed setup, failover testing, and build-cache notes live in [`docker/README.md`](../docker/README.md).