#!/usr/bin/env python

from __future__ import print_function

from spyt.dependency_utils import require_yt_client
require_yt_client()

from yt.wrapper import YtClient  # noqa: E402
from spyt import utils as spark_utils  # noqa: E402
from spyt.standalone import find_spark_cluster  # noqa: E402


def main(raw_args=None):
    args, unknown_args = spark_utils.parse_args(parser_arguments=dict(description="Spark Discovery"), raw_args=raw_args)

    client = YtClient(proxy=args.proxy, token=spark_utils.default_token())
    spark_cluster = find_spark_cluster(discovery_path=args.discovery_path, client=client)
    print("Master: {}".format(spark_cluster.master_endpoint))
    print("Master Web UI: http://{}/".format(spark_cluster.master_web_ui_url))
    print("Master REST API Endpoint: {}".format(spark_cluster.master_rest_endpoint))
    print("Operation: {}".format(spark_cluster.operation_url(client=client)))
    for url in spark_cluster.children_operation_urls(client=client):
        print("+- operation: {}".format(url))
    print("Spark History Server: http://{}/".format(spark_cluster.shs_url))
    print("Livy Server: http://{}/".format(spark_cluster.livy_url))
    print("SPYT Cluster version: {}".format(spark_cluster.spark_cluster_version))


if __name__ == '__main__':
    main()
