MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / portforward

Function portforward

misc/python/materialize/cli/orchestratord.py:330–391  ·  view source on GitHub ↗
(args: argparse.Namespace)

Source from the content-addressed store, hash-verified

328
329
330def portforward(args: argparse.Namespace):
331 env_kubectl = make_env_kubectl(args)
332
333 resource_id = get_resource_id(args)
334
335 port_forward_targets = {
336 "console/http": lambda port: f"http://localhost:{port}/",
337 "balancerd/pgwire": lambda port: f"postgres://{os.environ['USER']}@localhost:{port}/materialize",
338 "balancerd/http": lambda port: f"http://localhost:{port}/",
339 "environmentd/internal-sql": lambda port: f"postgres://mz_system@localhost:{port}/materialize",
340 "environmentd/internal-http": lambda port: f"http://localhost:{port}/",
341 }
342
343 port_forwards = {}
344 sockets = []
345 try:
346 for port_forward_target in port_forward_targets:
347 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
348 sockets.append(s)
349 s.bind(("", 0))
350 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
351 port_forwards[port_forward_target] = s.getsockname()[1]
352 finally:
353 for s in sockets:
354 s.close()
355
356 def port_forward(target: str, port: str):
357 target_service, target_port = target.split("/")
358 # in theory doing a port forward to the service directly should work,
359 # but i can't seem to get it to
360 selector = json.loads(
361 env_kubectl(
362 "get",
363 "service",
364 f"mz{resource_id}-{target_service}",
365 "-o=jsonpath={.spec.selector}",
366 )
367 )
368 pod = env_kubectl(
369 "get",
370 "pod",
371 "-o=name",
372 *[f"--selector={k}={v}" for k, v in selector.items()],
373 ).splitlines()[0]
374
375 env_kubectl(
376 "port-forward",
377 pod,
378 f"{port}:{target_port}",
379 )
380
381 threads = [
382 threading.Thread(target=port_forward, args=[target, port])
383 for target, port in port_forwards.items()
384 ]
385
386 for t in threads:
387 t.start()

Callers

nothing calls this directly

Calls 8

make_env_kubectlFunction · 0.85
get_resource_idFunction · 0.85
appendMethod · 0.45
bindMethod · 0.45
closeMethod · 0.45
itemsMethod · 0.45
startMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected