Skip to content

edge: add ProxyRoute.Service to retire host-substring service detection#48

Merged
Viridian-Inc merged 1 commit into
mainfrom
chore/edge-route-service-field
May 2, 2026
Merged

edge: add ProxyRoute.Service to retire host-substring service detection#48
Viridian-Inc merged 1 commit into
mainfrom
chore/edge-route-service-field

Conversation

@Viridian-Inc
Copy link
Copy Markdown
Owner

Summary

`pkg/edge/proxy.go::logProxyRequest` (after #46) was attributing proxied requests via a string-match cascade against the Host header that ran parallel to the route table — adding `cargo.` would route correctly but log as `"proxy"` because the cascade didn't know about the new host. This is the wart I flagged at the start of the original split conversation.

`ProxyRoute` now carries an optional `Service string`. `BuildRoutesWithPorts` sets it on every route whose traffic should be attributed (the cloudmock-internal rows leave it blank since `logProxyRequest` filters them out as internal traffic before reaching attribution). `logProxyRequest` reads `route.Service` first; the host-substring cascade stays as a fallback for hand-rolled route tables that don't set it (backwards compat).

Closes #47.

Test plan

  • `go build ./...`
  • `go test ./pkg/edge/... ./pkg/gateway/... ./pkg/admin/... ./cmd/gateway/...` — all green
  • New `TestBuildRoutes_ServiceLabels` pins the mapping for both `.localhost` rows and primary-domain rows, and asserts the internal rows leave `Service` blank.

🤖 Generated with Claude Code

The service attribution in logProxyRequest used a string-match cascade
against the Host header that ran in parallel to the route table — adding
cargo.<domain> to BuildRoutes would route correctly but log as "proxy"
because the cascade didn't know about the new host. This was the wart I
flagged at the start of the split conversation.

ProxyRoute now carries an optional Service string. BuildRoutesWithPorts
sets it on every route whose traffic should be attributed (the
cloudmock-internal rows leave it blank since logProxyRequest filters
them out as internal traffic before reaching attribution). logProxyRequest
reads route.Service first; the host-substring cascade stays as a fallback
for hand-rolled route tables that don't set it.

New TestBuildRoutes_ServiceLabels pins the mapping for both .localhost
rows and primary-domain rows, plus asserts the internal routes leave
Service blank.

Closes #47

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Viridian-Inc Viridian-Inc merged commit be2d77b into main May 2, 2026
2 checks passed
@Viridian-Inc Viridian-Inc deleted the chore/edge-route-service-field branch May 2, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

edge: add ProxyRoute.Service to retire host-substring service detection

1 participant