Skip to content
This repository was archived by the owner on Feb 3, 2021. It is now read-only.

Commit 7c14648

Browse files
authored
Fix: expose get cluster configuration API (#648)
* fix get and ssh cli calls, add get_configuration api * update builds to lint aztk_cli in parallel * remove unnecessary get_configuration calls
1 parent 9098533 commit 7c14648

File tree

8 files changed

+47
-22
lines changed

8 files changed

+47
-22
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ install:
99

1010
script:
1111
- yapf --style .style.yapf -dpr aztk/ aztk_cli/
12-
- pylint -E aztk
12+
- pylint -j 2 -E aztk aztk_cli
1313
- pytest --ignore=tests/integration_tests
1414

1515
branches:

.vsts-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ phases:
2424
displayName: yapf
2525
2626
- script: |
27-
pylint -E aztk
27+
pylint -j 2 -E aztk aztk_cli
2828
condition: succeeded()
2929
displayName: pylint
3030

aztk/client/base/base_operations.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def __init__(self, context):
2424
self.blob_client = context['blob_client']
2525
self.secrets_configuration = context['secrets_configuration']
2626

27-
def get_cluster_config(self, id: str) -> models.ClusterConfiguration:
27+
def get_cluster_configuration(self, id: str) -> models.ClusterConfiguration:
2828
"""Open an ssh tunnel to a node
2929
3030
Args:
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import azure.batch.models.batch_error as batch_error
2+
3+
from aztk import error
4+
from aztk.utils import helpers
5+
6+
7+
def get_configuration(core_cluster_operations, cluster_id: str):
8+
try:
9+
return core_cluster_operations.get_cluster_configuration(cluster_id)
10+
except batch_error.BatchErrorException as e:
11+
raise error.AztkError(helpers.format_batch_exception(e))

aztk/spark/client/cluster/operations.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from aztk.spark.client.base import SparkBaseOperations
44

55
from .helpers import (copy, create, create_user, delete, diagnostics, download, get, get_application_log,
6-
get_application_status, get_remote_login_settings, list, node_run, run, submit, wait)
6+
get_application_status, get_configuration, get_remote_login_settings, list, node_run, run, submit,
7+
wait)
78

89

910
class ClusterOperations(SparkBaseOperations):
@@ -248,3 +249,14 @@ def wait(self, id: str, application_name: str):
248249
:obj:`None`
249250
"""
250251
return wait.wait_for_application_to_complete(self._core_cluster_operations, id, application_name)
252+
253+
def get_configuration(self, id: str):
254+
"""Get the initial configuration of the cluster
255+
256+
Args:
257+
id (:obj:`str`): the id of the cluster
258+
259+
Returns:
260+
:obj:`aztk.spark.models.ClusterConfiguration`
261+
"""
262+
return get_configuration.get_configuration(self._core_cluster_operations, id)

aztk_cli/spark/endpoints/cluster/cluster_get.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ def execute(args: typing.NamedTuple):
2020
cluster = spark_client.cluster.get(cluster_id)
2121
utils.print_cluster(spark_client, cluster, args.internal)
2222

23-
configuration = spark_client.cluster.get_cluster_config(cluster_id)
24-
if configuration and args.show_config:
25-
log.info("-------------------------------------------")
26-
log.info("Cluster configuration:")
27-
utils.print_cluster_conf(configuration, False)
23+
if args.show_config:
24+
configuration = spark_client.cluster.get_configuration(cluster_id)
25+
if configuration:
26+
log.info("-------------------------------------------")
27+
log.info("Cluster configuration:")
28+
utils.print_cluster_conf(configuration, False)

aztk_cli/spark/endpoints/cluster/cluster_ssh.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def setup_parser(parser: argparse.ArgumentParser):
3737
def execute(args: typing.NamedTuple):
3838
spark_client = aztk.spark.Client(config.load_aztk_secrets())
3939
cluster = spark_client.cluster.get(args.cluster_id)
40-
cluster_config = spark_client.cluster.get_cluster_config(args.cluster_id)
40+
cluster_configuration = spark_client.cluster.get_configuration(args.cluster_id)
4141
ssh_conf = SshConfig()
4242

4343
ssh_conf.merge(
@@ -55,21 +55,21 @@ def execute(args: typing.NamedTuple):
5555
utils.log_property("open webui", "{0}{1}".format(http_prefix, ssh_conf.web_ui_port))
5656
utils.log_property("open jobui", "{0}{1}".format(http_prefix, ssh_conf.job_ui_port))
5757
utils.log_property("open jobhistoryui", "{0}{1}".format(http_prefix, ssh_conf.job_history_ui_port))
58-
print_plugin_ports(cluster_config)
58+
print_plugin_ports(cluster_configuration)
5959
utils.log_property("ssh username", ssh_conf.username)
6060
utils.log_property("connect", ssh_conf.connect)
6161
log.info("-------------------------------------------")
6262

6363
try:
64-
shell_out_ssh(spark_client, ssh_conf)
64+
shell_out_ssh(spark_client, cluster_configuration, ssh_conf)
6565
except OSError:
6666
# no ssh client is found, falling back to pure python
67-
native_python_ssh_into_master(spark_client, cluster, ssh_conf, args.password)
67+
native_python_ssh_into_master(spark_client, cluster, cluster_configuration, ssh_conf, args.password)
6868

6969

70-
def print_plugin_ports(cluster_config: ClusterConfiguration):
71-
if cluster_config and cluster_config.plugins:
72-
plugins = cluster_config.plugins
70+
def print_plugin_ports(cluster_configuration: ClusterConfiguration):
71+
if cluster_configuration and cluster_configuration.plugins:
72+
plugins = cluster_configuration.plugins
7373
has_ports = False
7474
plugin_ports = {}
7575
for plugin in plugins:
@@ -93,12 +93,12 @@ def print_plugin_ports(cluster_config: ClusterConfiguration):
9393
utils.log_property(label, url)
9494

9595

96-
def native_python_ssh_into_master(spark_client, cluster, ssh_conf, password):
96+
def native_python_ssh_into_master(spark_client, cluster, cluster_configuration, ssh_conf, password):
9797
if not ssh_conf.connect:
9898
log.warning("No ssh client found, using pure python connection.")
9999
return
100100

101-
configuration = spark_client.cluster.get_cluster_config(cluster.id)
101+
configuration = spark_client.cluster.get_configuration(cluster.id)
102102
plugin_ports = []
103103
if configuration and configuration.plugins:
104104
ports = [
@@ -124,11 +124,12 @@ def native_python_ssh_into_master(spark_client, cluster, ssh_conf, password):
124124
internal=ssh_conf.internal)
125125

126126

127-
def shell_out_ssh(spark_client, ssh_conf):
127+
def shell_out_ssh(spark_client, cluster_configuration, ssh_conf):
128128
try:
129129
ssh_cmd = utils.ssh_in_master(
130130
client=spark_client,
131131
cluster_id=ssh_conf.cluster_id,
132+
cluster_configuration=cluster_configuration,
132133
webui=ssh_conf.web_ui_port,
133134
jobui=ssh_conf.job_ui_port,
134135
jobhistoryui=ssh_conf.job_history_ui_port,

aztk_cli/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def stream_logs(client, cluster_id, application_name):
130130

131131
def ssh_in_master(client,
132132
cluster_id: str,
133+
cluster_configuration: models.ClusterConfiguration,
133134
username: str = None,
134135
webui: str = None,
135136
jobui: str = None,
@@ -152,7 +153,6 @@ def ssh_in_master(client,
152153

153154
# Get master node id from task (job and task are both named pool_id)
154155
cluster = client.cluster.get(cluster_id)
155-
configuration = client.cluster.get_cluster_config(cluster_id)
156156

157157
master_node_id = cluster.master_node_id
158158

@@ -186,8 +186,8 @@ def ssh_in_master(client,
186186
if ports is not None:
187187
for port in ports:
188188
ssh_command.add_option("-L", "{0}:localhost:{1}".format(port[0], port[1]))
189-
if configuration and configuration.plugins:
190-
for plugin in configuration.plugins:
189+
if cluster_configuration and cluster_configuration.plugins:
190+
for plugin in cluster_configuration.plugins:
191191
for port in plugin.ports:
192192
if port.expose_publicly:
193193
ssh_command.add_option("-L", "{0}:localhost:{1}".format(port.public_port, port.internal))

0 commit comments

Comments
 (0)