PR 7.3 — Doc updates for v2 Galaxy backend (partial)
Forward-looking doc surface for the new in-process GalaxyDriver: - CLAUDE.md gains a "v2 Galaxy backend" preamble at the top pointing readers at lmx_mxgw.md and docs/v2/Galaxy.Performance.md, and framing the rest of the doc as the still-accurate v1 Galaxy.Host description. - New auto-memory entry project_galaxy_via_mxgateway.md captures the default-since-PR-7.1 status, perf surface entry points, and the soak validation knobs. Intentionally deferred until PR 7.2 (parity-rig-validated): - Removing the v1 description and rewriting the architecture section outright. - Deleting mxaccess_documentation.md (still consumed by Galaxy.Host). - Retiring memory entries for project_galaxy_host_service.md / project_galaxy_host_installed.md / project_aveva_platform_installed.md — those describe a stack that's still installed and in active use. - Scrubbing Galaxy.Host references from docs/v2/dev-environment.md, docs/ServiceHosting.md, docs/Redundancy.md, docs/security.md. All those changes presuppose the legacy stack is gone, which it isn't yet. Re-open this PR's tail once the parity matrix in docs/v2/Galaxy.ParityMatrix.md is fully green on a live rig. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
50
CLAUDE.md
50
CLAUDE.md
@@ -2,6 +2,22 @@
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## v2 Galaxy backend (default since PR 7.1)
|
||||
|
||||
The OPC UA server is now a .NET 10 host. Galaxy access flows through
|
||||
the in-process `GalaxyDriver` (`src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/`)
|
||||
talking gRPC to a separate **mxaccessgw** gateway process — see
|
||||
`lmx_mxgw.md` for the design and `docs/v2/Galaxy.Performance.md` for
|
||||
the perf surface (tracing, metrics, soak). The legacy out-of-process
|
||||
`Galaxy.Host` (.NET 4.8 x86 + MXAccess COM, fronted by `GalaxyProxyDriver`)
|
||||
still ships and registers under DriverType `"Galaxy"` for parity
|
||||
testing — it retires in PR 7.2 once the parity matrix in
|
||||
`docs/v2/Galaxy.ParityMatrix.md` is fully green on the parity rig.
|
||||
|
||||
The v1 description below covers the Galaxy.Host backend that is now
|
||||
one of two backends; everything from "Project Goal" through the
|
||||
"Library Preferences" section is still accurate for that path.
|
||||
|
||||
## Project Goal
|
||||
|
||||
Build an OPC UA server on .NET Framework 4.8 (32-bit) that exposes AVEVA System Platform (Wonderware) Galaxy tags via the MXAccess toolkit. The server mirrors the Galaxy object hierarchy as an OPC UA address space, translating between contained-name browse paths and tag-name runtime references.
|
||||
@@ -71,6 +87,40 @@ dotnet test tests/ZB.MOM.WW.OtOpcUa.IntegrationTests # integration tests
|
||||
dotnet test --filter "FullyQualifiedName~MyTestClass.MyMethod" # single test
|
||||
```
|
||||
|
||||
## Docker Workflow (driver fixtures + central SQL Server)
|
||||
|
||||
> **Migrated 2026-04-28**: Docker config + host moved off this dev VM (DESKTOP-6JL3KKO) onto the shared Linux Docker host (`DOCKER`, 10.100.0.35) so the dev VM could shed WSL2/Hyper-V and have its GPU re-attached via ESXi passthrough. Docker Desktop is no longer installed here. All checked-in `appsettings.json` defaults, fixture-class default endpoints, and `e2e-config.sample.json` were rewritten to target `10.100.0.35`. The driver fixture compose files under `tests/.../Docker/docker-compose.yml` now carry a `project: lmxopcua` label on every service. See `docs/v2/dev-environment.md` for the full rewrite (header dated 2026-04-28).
|
||||
|
||||
Docker workloads run on a shared Linux host at **`10.100.0.35`** — not on this VM. Stacks live at `/opt/otopcua-<driver>/` on the host and carry the `project=lmxopcua` label so they're discoverable via `docker ps --filter label=project=lmxopcua`.
|
||||
|
||||
**`docker -H ssh://...` does NOT work from this VM.** Windows OpenSSH ↔ docker.exe stdio bridging hangs (`docker system dial-stdio` runs server-side but no API data flows). Use the helper below — it SSHes into the docker host and runs `docker compose` server-side.
|
||||
|
||||
**Use `lmxopcua-fix.ps1` (in `~/bin`) to control fixtures from this VM:**
|
||||
|
||||
```powershell
|
||||
lmxopcua-fix ls # list all lmxopcua-tagged containers on the host
|
||||
lmxopcua-fix up modbus standard # bring a profile up
|
||||
lmxopcua-fix up abcip controllogix
|
||||
lmxopcua-fix up s7 s7_1500
|
||||
lmxopcua-fix up opcuaclient # single-service stack, no profile arg
|
||||
lmxopcua-fix down modbus # tear stack down
|
||||
lmxopcua-fix logs modbus
|
||||
lmxopcua-fix sync modbus # rsync this repo's tests/.../Docker/ → /opt/otopcua-modbus/
|
||||
```
|
||||
|
||||
**`sync` is the deployment step.** When you edit a fixture's compose file or Dockerfile under `tests/.../Docker/`, run `lmxopcua-fix sync <driver>` to push the changes to the docker host before bringing the stack up. The repo files are the source of truth; `/opt/otopcua-<driver>/` is a mirrored deployment.
|
||||
|
||||
**Endpoints (defaults already point at the docker host):**
|
||||
- SQL Server (always-on): `10.100.0.35,14330` — used by `appsettings.json` for `ConfigDb`.
|
||||
- Modbus: `10.100.0.35:5020` (`MODBUS_SIM_ENDPOINT`)
|
||||
- AB CIP: `10.100.0.35:44818` (`AB_SERVER_ENDPOINT`)
|
||||
- S7: `10.100.0.35:1102` (`S7_SIM_ENDPOINT`)
|
||||
- OPC UA reference (opc-plc): `opc.tcp://10.100.0.35:50000` (`OPCUA_SIM_ENDPOINT`)
|
||||
|
||||
Override any endpoint via the env var to point at a real PLC. The local OtOpcUa server runs on this VM at `opc.tcp://localhost:4840` — **that's not on the docker host**.
|
||||
|
||||
See `docs/v2/dev-environment.md` for the full inventory and rationale.
|
||||
|
||||
## Build & Runtime Constraints
|
||||
|
||||
- Language: C#, .NET Framework 4.8, **x86 (32-bit)** platform target — required for MXAccess COM interop
|
||||
|
||||
Reference in New Issue
Block a user