Skip to main content

GATEWAY_API_PROTOCOL_HTTP

Constant GATEWAY_API_PROTOCOL_HTTP 

Source
pub const GATEWAY_API_PROTOCOL_HTTP: &'static str;
Expand description

Canonical K8s Gateway API v1 ProtocolType OpenAPI schema enum’s HTTP listener-protocol scalar value every gateway_routes-emitted Gateway document’s first (and V0-only) listener declares under its caixa_core::KUBE_KEY_PROTOCOL axis. Re-export of the canonical caixa_core::GATEWAY_API_PROTOCOL_HTTP so the Gateway-API- implementation-side per-listener L7-parser-selection scalar value lives in exactly one place across every caixa renderer — caixa-mesh’s gateway_routes per-:entrada Gateway emitter (the single production-code site the prior inline "HTTP".into() literal sat at, caixa-mesh/src/lib.rs:2123 — the per-listener KUBE_KEY_PROTOCOL scalar-value emit) and every future per-Gateway-API-side renderer the M3.x absorption roadmap acknowledges now consult the same &'static str, so a future Gateway API ProtocolType enum rebrand (e.g. an upstream rename to HTTP/1.1 / HTTP/2 per the SIG-Network per-version-scope proposal) is a one-line edit on the canonical caixa_core::GATEWAY_API_PROTOCOL_HTTP declaration, not a coordinated rewrite across this crate’s gateway_routes renderer’s per-listener KUBE_KEY_PROTOCOL-scalar-value emit + the matching in-file gateway_listener_carries_aplicacao_host test’s assert_eq!(…, Some("HTTP")) listener-protocol-value pin + every future per-Gateway-API-side renderer the substrate adds. The prior inline literal would have let a Gateway-API ProtocolType rebrand on the caixa-mesh side without a coordinated edit on the matching in-file test pin silently emit a Gateway whose listener-protocol scalar drifts off the lifted-test-fixture pin — apply-side: the gateway-class-controller’s per-listener bind loop rejects the Gateway at admission (the K8s Gateway API v1 ProtocolType OpenAPI schema enum admits the closed set {"HTTP", "HTTPS", "TCP", "TLS", "UDP"} verbatim), and every external :entrada HTTP flow drops at the gateway-class-controller’s admission gate with no field naming the listener-protocol-drift root cause. Peer to the GATEWAY_API_KIND_GATEWAY + GATEWAY_API_KIND_HTTP_ROUTE re-exports on the sibling canonical-Gateway-API-CRD-kind- discriminator surface + the DEFAULT_GATEWAY_CLASS_NAME re-export on the sibling Gateway-controller-binding-scalar-value axis — extends the Gateway-API-CRD-kind-value + Gateway-controller- binding-value re-export set onto the sibling per-Gateway spec.listeners[].protocol listener-protocol-scalar-value axis the same gateway_routes renderer’s external :entrada ingress contract carries under the shared Gateway body. Canonical K8s Gateway API Gateway.spec.listeners[].protocol HTTP listener-protocol scalar value the rendered Gateway document’s first (and V0-only) listener declares under its KUBE_KEY_PROTOCOL axis. Pairs with the sibling GATEWAY_API_KIND_GATEWAY (fb4639c) + GATEWAY_API_KIND_HTTP_ROUTE (1adccc0) — the K8s Gateway API v1 CRD schema pins the per-listener L7 parser + TLS-termination strategy through the spec.listeners[].protocol scalar value (the gateway-class-controller’s per-listener bind loop selects the L7 parser + TLS termination strategy from this exact byte-sequence; the Gateway API v1 ProtocolType OpenAPI schema enum admits the closed set {"HTTP", "HTTPS", "TCP", "TLS", "UDP"} verbatim), so drift on the listener-protocol value is exactly as load-bearing as drift on the sibling GATEWAY_API_KIND_GATEWAY + GATEWAY_API_KIND_HTTP_ROUTE CRD kind discriminators the pair declares together (a ("Gateway", "http") / ("Gateway", "Http") / ("Gateway", "http/1.1") typo at the production-code call site lands outside the Gateway API v1 ProtocolType OpenAPI schema enum, surfacing apply-side as a non-self-locating “spec.listeners[0].protocol: Unsupported value: "http": supported values: "HTTP", "HTTPS", "TCP", "TLS", "UDP"” apiserver admission-rejection far from the source caixa.lisp / the renderer’s listener.insert(…) call site — the rendered per-Aplicacao Gateway object never reconciles at the gateway-class-controller’s per-listener bind loop and every external :entrada HTTP flow drops at the gateway-class- controller’s admission gate with no field naming the listener-protocol-drift root cause).

The single source of truth the rendered Aplicacao Gateway-API-side ingress bundle’s per-listener L7-parser-selection axis reaches for:

  • the rendered Gateway document’s spec.listeners[0].protocol axis (the gateway_routes per-:entrada Gateway emitter’s listener.insert(KUBE_KEY_PROTOCOL, "HTTP") call — the sole production-code call site the prior inline "HTTP".into() literal sat at, caixa-mesh/src/lib.rs:2123).

The listener-protocol value names the same Gateway-API- implementation-side per-listener L7-parser-selection scalar as the sibling KUBE_KEY_PROTOCOL key-axis discriminator carries the value under, and must move together with the sibling K8s Gateway API ProtocolType OpenAPI schema enum on any future Gateway API rebrand (an upstream Gateway API v2 rename of the HTTP listener protocol from HTTP to HTTP/1.1 / HTTP/2 / http, coordinated with the upstream SIG-Network Gateway API ProtocolType enum deprecation cycle, would land at this one const rather than scattered across every per-emitter listener-block-insertion site).

The PRIME DIRECTIVE duplication-budget rule (THEORY.md §I.3.5, “every recurring shape becomes a generator before it becomes a pattern; every pattern becomes a library before it becomes duplicated code. The duplication budget is zero.”) promotes the constant to a typed substrate-side &'static str on the same trajectory the GATEWAY_API_KIND_GATEWAY (fb4639c) / GATEWAY_API_KIND_HTTP_ROUTE (1adccc0) / DEFAULT_GATEWAY_CLASS_NAME (d9b0743) lifts established on the sibling Gateway-API-CRD-kind-discriminator + Gateway-controller- binding-scalar-value axes — extends the per-Gateway-API-CRD-kind- discriminator lift pair across the (Gateway, HTTPRoute) pair onto the sibling per-Gateway spec.listeners[].protocol listener-protocol-scalar-value axis the same gateway_routes external :entrada ingress emitter carries.

A future Gateway-API-side renderer the M3.x absorption roadmap names — an HTTPS listener with TLS termination (a sibling GATEWAY_API_PROTOCOL_HTTPS const value the same enum admits), the future M4 mesh.pleme.io/v1alpha1/Aplicacao materializer’s per-Aplicacao multi-listener fan-out over {HTTP, HTTPS, TLS}, a future per-listener route-attached-policy renderer that binds distinct policy chains per listener-protocol — inherits the canonical HTTP listener-protocol value by construction with no opportunity for per-renderer drift.