Forward multiple ports for autoscaler (#5893)

This commit is contained in:
Philipp Moritz
2019-10-18 16:50:46 -07:00
committed by GitHub
parent 48ba484640
commit 29eee7f970
3 changed files with 22 additions and 9 deletions
+1 -1
View File
@@ -347,7 +347,7 @@ def exec_cluster(config_file, cmd, docker, screen, tmux, stop, start,
stop: whether to stop the cluster after command run
start: whether to start the cluster if it isn't up
override_cluster_name: set the name of the cluster
port_forward: port to forward
port_forward (int or list[int]): port(s) to forward
"""
assert not (screen and tmux), "Can specify only one of `screen` or `tmux`."
+9 -4
View File
@@ -57,10 +57,12 @@ class KubernetesCommandRunner(object):
logger.info(self.log_prefix + "Running {}...".format(cmd))
if port_forward:
if not isinstance(port_forward, list):
port_forward = [port_forward]
port_forward_cmd = self.kubectl + [
"port-forward", self.node_id,
str(port_forward)
]
"port-forward",
self.node_id,
] + [str(fwd) for fwd in port_forward]
port_forward_process = subprocess.Popen(port_forward_cmd)
# Give port-forward a grace period to run and print output before
# running the actual command. This is a little ugly, but it should
@@ -242,7 +244,10 @@ class SSHCommandRunner(object):
ssh.append("-tt")
if port_forward:
ssh += ["-L", "{}:localhost:{}".format(port_forward, port_forward)]
if not isinstance(port_forward, list):
port_forward = [port_forward]
for fwd in port_forward:
ssh += ["-L", "{}:localhost:{}".format(fwd, fwd)]
final_cmd = ssh + self.get_default_ssh_options(timeout) + [
"{}@{}".format(self.ssh_user, self.ssh_ip)
+12 -4
View File
@@ -637,7 +637,11 @@ def rsync_up(cluster_config_file, source, target, cluster_name):
type=str,
help="Override the configured cluster name.")
@click.option(
"--port-forward", required=False, type=int, help="Port to forward.")
"--port-forward",
required=False,
multiple=True,
type=int,
help="Port to forward. Use this multiple times to forward multiple ports.")
@click.argument("script", required=True, type=str)
@click.option("--args", required=False, type=str, help="Script args.")
def submit(cluster_config_file, docker, screen, tmux, stop, start,
@@ -665,7 +669,7 @@ def submit(cluster_config_file, docker, screen, tmux, stop, start,
command_parts += [args]
cmd = " ".join(command_parts)
exec_cluster(cluster_config_file, cmd, docker, screen, tmux, stop, False,
cluster_name, port_forward)
cluster_name, list(port_forward))
@cli.command()
@@ -700,11 +704,15 @@ def submit(cluster_config_file, docker, screen, tmux, stop, start,
type=str,
help="Override the configured cluster name.")
@click.option(
"--port-forward", required=False, type=int, help="Port to forward.")
"--port-forward",
required=False,
multiple=True,
type=int,
help="Port to forward. Use this multiple times to forward multiple ports.")
def exec_cmd(cluster_config_file, cmd, docker, screen, tmux, stop, start,
cluster_name, port_forward):
exec_cluster(cluster_config_file, cmd, docker, screen, tmux, stop, start,
cluster_name, port_forward)
cluster_name, list(port_forward))
@cli.command()