@@ -54,10 +54,12 @@ async def execute(self, context: PhaseContext) -> None:
5454 "deployed_at" : datetime .utcnow ().isoformat (),
5555 }
5656 context .runtime_state .save ()
57- await self ._emit_event (context , "gateway_portal.ready" , context .runtime_state .gateway_portal_output )
57+ await self ._emit_event (
58+ context , "gateway_portal.ready" , context .runtime_state .gateway_portal_output
59+ )
5860 return
5961
60- docker = context .docker_client if context .docker_client is not None else DockerHandler ()
62+ docker = context .docker_client if context .docker_client is not None else DockerHandler () # type: ignore[no-untyped-call]
6163 gateway = GatewayHandler (docker )
6264
6365 # ── Real Internet ───────────────────────────────────────────────────
@@ -100,7 +102,7 @@ async def _apply_internet_policy(
100102 context : PhaseContext ,
101103 gateway : GatewayHandler ,
102104 portal : GatewayPortal ,
103- ) -> dict :
105+ ) -> dict [ str , Any ] :
104106 config = portal .real_internet
105107 context .logger .info (f"Real-internet mode: { config .mode .value } " )
106108
@@ -109,9 +111,7 @@ async def _apply_internet_policy(
109111 output : dict [str , Any ] = {"mode" : config .mode .value }
110112
111113 if config .upstream_resolver_enabled and config .upstream_resolver_ip :
112- await self ._configure_upstream_resolver (
113- context , config .upstream_resolver_ip
114- )
114+ await self ._configure_upstream_resolver (context , config .upstream_resolver_ip )
115115 output ["upstream_resolver" ] = config .upstream_resolver_ip
116116
117117 if config .mode == GatewayRealInternetMode .MIRRORED and config .service_mirrors :
@@ -122,9 +122,7 @@ async def _apply_internet_policy(
122122
123123 return output
124124
125- async def _configure_upstream_resolver (
126- self , context : PhaseContext , resolver_ip : str
127- ) -> None :
125+ async def _configure_upstream_resolver (self , context : PhaseContext , resolver_ip : str ) -> None :
128126 """Inject an upstream forwarder into the CoreDNS root Corefile.
129127
130128 Adds a ``forward . <resolver_ip>`` directive so that names not
@@ -137,25 +135,21 @@ async def _configure_upstream_resolver(
137135
138136 try :
139137 corefile_patch = (
140- f"\n # Upstream internet resolver (gateway portal)\n "
141- f"forward . { resolver_ip } \n "
138+ f"\n # Upstream internet resolver (gateway portal)\n " f"forward . { resolver_ip } \n "
142139 )
143140 corefile_append_cmd = [
144- "sh" , "-c" ,
141+ "sh" ,
142+ "-c" ,
145143 f"echo '{ corefile_patch } ' >> /etc/coredns/Corefile" ,
146144 ]
147145 exit_code , output = await context .docker_client .exec_command (
148146 "netengine_coredns" , corefile_append_cmd
149147 )
150148 if exit_code != 0 :
151- context .logger .warning (
152- f"Could not append upstream resolver to CoreDNS: { output } "
153- )
149+ context .logger .warning (f"Could not append upstream resolver to CoreDNS: { output } " )
154150 else :
155151 # Reload CoreDNS to pick up the change
156- await context .docker_client .exec_command (
157- "netengine_coredns" , ["kill" , "-HUP" , "1" ]
158- )
152+ await context .docker_client .exec_command ("netengine_coredns" , ["kill" , "-HUP" , "1" ])
159153 context .logger .info (f"Upstream resolver configured: { resolver_ip } " )
160154 except Exception as exc :
161155 context .logger .warning (f"Upstream resolver setup skipped: { exc } " )
@@ -170,16 +164,15 @@ async def _apply_cross_world(
170164 gateway : GatewayHandler ,
171165 docker : DockerHandler ,
172166 portal : GatewayPortal ,
173- ) -> dict :
167+ ) -> dict [ str , Any ] :
174168 cross_world = portal .cross_world
175169
176170 if cross_world .mode == GatewayCrossWorldMode .NONE :
177171 context .logger .info ("Cross-world mode: NONE — no peering configured" )
178172 return {"mode" : GatewayCrossWorldMode .NONE .value , "peers" : []}
179173
180174 context .logger .info (
181- f"Cross-world mode: { cross_world .mode .value } "
182- f"({ len (cross_world .peers )} peer(s))"
175+ f"Cross-world mode: { cross_world .mode .value } " f"({ len (cross_world .peers )} peer(s))"
183176 )
184177
185178 peers_output = []
@@ -198,7 +191,7 @@ async def _setup_peer(
198191 gateway : GatewayHandler ,
199192 docker : DockerHandler ,
200193 peer : CrossWorldPeer ,
201- ) -> dict :
194+ ) -> dict [ str , Any ] :
202195 """Wire up a single cross-world peer: trust anchor + routing + DNS."""
203196 context .logger .info (f"Setting up cross-world peer: { peer .name } ({ peer .endpoint } )" )
204197 result : dict [str , Any ] = {
@@ -213,9 +206,7 @@ async def _setup_peer(
213206 await self ._install_trust_anchor (context , docker , peer .name , peer .trust_anchor_cert )
214207 result ["trust_anchor_installed" ] = True
215208 except Exception as exc :
216- context .logger .warning (
217- f"Trust anchor install failed for peer { peer .name } : { exc } "
218- )
209+ context .logger .warning (f"Trust anchor install failed for peer { peer .name } : { exc } " )
219210 result ["trust_anchor_installed" ] = False
220211 result ["trust_anchor_error" ] = str (exc )
221212 else :
@@ -272,15 +263,11 @@ async def _install_trust_anchor(
272263 "netengine_gateway" , ["update-ca-certificates" ]
273264 )
274265 if exit_code != 0 :
275- raise PKIError (
276- f"update-ca-certificates failed for peer { peer_name } : { output } "
277- )
266+ raise PKIError (f"update-ca-certificates failed for peer { peer_name } : { output } " )
278267
279268 context .logger .info (f"Trust anchor installed for peer: { peer_name } " )
280269
281- async def _configure_peer_dns (
282- self , context : PhaseContext , peer : CrossWorldPeer
283- ) -> None :
270+ async def _configure_peer_dns (self , context : PhaseContext , peer : CrossWorldPeer ) -> None :
284271 """Add a CoreDNS forwarding zone for the peer world's TLD.
285272
286273 Derives the peer TLD from ``<peer.name>.internal`` and adds a
@@ -304,9 +291,7 @@ async def _configure_peer_dns(
304291 ["sh" , "-c" , f"echo '{ corefile_stub } ' >> /etc/coredns/Corefile" ],
305292 )
306293 if exit_code != 0 :
307- raise GatewayError (
308- f"Could not configure DNS forwarding for peer { peer .name } : { output } "
309- )
294+ raise GatewayError (f"Could not configure DNS forwarding for peer { peer .name } : { output } " )
310295
311296 # Signal CoreDNS to reload config
312297 await context .docker_client .exec_command ("netengine_coredns" , ["kill" , "-HUP" , "1" ])
@@ -316,7 +301,9 @@ async def _configure_peer_dns(
316301 # Event emission
317302 # ─────────────────────────────────────────────
318303
319- async def _emit_event (self , context : PhaseContext , event_type : str , payload : dict ) -> None :
304+ async def _emit_event (
305+ self , context : PhaseContext , event_type : str , payload : dict [str , Any ]
306+ ) -> None :
320307 event = EventEnvelope .create (
321308 event_type = event_type ,
322309 emitted_by = "gateway_portal_handler" ,
@@ -327,6 +314,6 @@ async def _emit_event(self, context: PhaseContext, event_type: str, payload: dic
327314 context .logger .info (f"Event emitted: { event_type } " )
328315 if context .pgmq_client is not None :
329316 try :
330- await context .pgmq_client .send (event )
317+ await context .pgmq_client .send ("gateway_portal_events" , event )
331318 except Exception as exc :
332319 context .logger .warning (f"Failed to queue gateway portal event: { exc } " )
0 commit comments