prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Print out name of the created master pod after submitting a job via client
  Currently, when submitting a job via `elasticdl train --job_name=xxx`, no master pod information will be printed out and users have to guess the name to master pod from the job name they provided. 
  
  We should print out the name to master pod when job has been submitted successfully.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `elasticdl/python/elasticdl/api.py`
  Content:
  ```
  1 import os
  2 
  3 from elasticdl.python.common import k8s_client as k8s
  4 from elasticdl.python.elasticdl.image_builder import (
  5     build_and_push_docker_image,
  6 )
  7 
  8 MODEL_ROOT_PATH = "/model_zoo"
  9 CLUSTER_SPEC_ROOT_PATH = "/cluster_spec"
  10 
  11 
  12 def train(args):
  13     image_name = build_and_push_docker_image(
  14         model_zoo=args.model_def,
  15         base_image=args.image_base,
  16         docker_image_prefix=args.docker_image_prefix,
  17         extra_pypi=args.extra_pypi_index,
  18         cluster_spec=args.cluster_spec,
  19     )
  20     container_args = [
  21         "-m",
  22         "elasticdl.python.master.main",
  23         "--job_name",
  24         args.job_name,
  25         "--worker_image",
  26         image_name,
  27         "--model_def",
  28         _model_def_in_docker(args.model_def),
  29         "--cluster_spec",
  30         _cluster_spec_def_in_docker(args.cluster_spec),
  31         "--num_workers",
  32         str(args.num_workers),
  33         "--worker_resource_request",
  34         args.worker_resource_request,
  35         "--worker_resource_limit",
  36         args.worker_resource_limit,
  37         "--namespace",
  38         args.namespace,
  39         "--tensorboard_log_dir",
  40         args.tensorboard_log_dir,
  41         "--records_per_task",
  42         str(args.records_per_task),
  43         "--num_epochs",
  44         str(args.num_epochs),
  45         "--grads_to_wait",
  46         str(args.grads_to_wait),
  47         "--minibatch_size",
  48         str(args.minibatch_size),
  49         "--training_data_dir",
  50         args.training_data_dir,
  51         "--evaluation_data_dir",
  52         args.evaluation_data_dir,
  53         "--checkpoint_steps",
  54         str(args.checkpoint_steps),
  55         "--checkpoint_dir",
  56         args.checkpoint_dir,
  57         "--keep_checkpoint_max",
  58         str(args.keep_checkpoint_max),
  59         "--evaluation_steps",
  60         str(args.evaluation_steps),
  61         "--evaluation_start_delay_secs",
  62         str(args.evaluation_start_delay_secs),
  63         "--evaluation_throttle_secs",
  64         str(args.evaluation_throttle_secs),
  65         "--input_fn",
  66         args.input_fn,
  67         "--loss",
  68         args.loss,
  69         "--optimizer",
  70         args.optimizer,
  71         "--eval_metrics_fn",
  72         args.eval_metrics_fn,
  73         "--model_class",
  74         args.model_class,
  75         "--model_params",
  76         args.model_params,
  77     ]
  78     container_args.extend(["--image_pull_policy", args.image_pull_policy])
  79     container_args.extend(["--restart_policy", args.restart_policy])
  80     container_args.extend(["--volume", args.volume])
  81 
  82     args.master_resource_limit = (
  83         args.master_resource_limit
  84         if args.master_resource_limit
  85         else args.master_resource_request
  86     )
  87 
  88     k8s.Client(
  89         image_name=image_name,
  90         namespace=args.namespace,
  91         job_name=args.job_name,
  92         event_callback=None,
  93         cluster_spec=args.cluster_spec,
  94     ).create_master(
  95         resource_requests=args.master_resource_request,
  96         resource_limits=args.master_resource_limit,
  97         args=container_args,
  98         pod_priority=args.master_pod_priority,
  99         image_pull_policy=args.image_pull_policy,
  100         restart_policy=args.restart_policy,
  101         volume=args.volume,
  102     )
  103     # TODO: print dashboard url after launching the master pod
  104 
  105 
  106 def evaluate(args):
  107     image_name = build_and_push_docker_image(
  108         model_zoo=args.model_def,
  109         base_image=args.image_base,
  110         docker_image_prefix=args.docker_image_prefix,
  111         extra_pypi=args.extra_pypi_index,
  112         cluster_spec=args.cluster_spec,
  113     )
  114     container_args = [
  115         "-m",
  116         "elasticdl.python.master.main",
  117         "--job_name",
  118         args.job_name,
  119         "--worker_image",
  120         image_name,
  121         "--model_def",
  122         _model_def_in_docker(args.model_def),
  123         "--cluster_spec",
  124         _cluster_spec_def_in_docker(args.cluster_spec),
  125         "--num_workers",
  126         str(args.num_workers),
  127         "--worker_resource_request",
  128         args.worker_resource_request,
  129         "--worker_resource_limit",
  130         args.worker_resource_limit,
  131         "--namespace",
  132         args.namespace,
  133         "--records_per_task",
  134         str(args.records_per_task),
  135         "--minibatch_size",
  136         str(args.minibatch_size),
  137         "--evaluation_data_dir",
  138         args.evaluation_data_dir,
  139         "--checkpoint_filename_for_init",
  140         args.checkpoint_filename_for_init,
  141         "--input_fn",
  142         args.input_fn,
  143         "--eval_metrics_fn",
  144         args.eval_metrics_fn,
  145         "--model_class",
  146         args.model_class,
  147         "--model_params",
  148         args.model_params,
  149     ]
  150     container_args.extend(["--image_pull_policy", args.image_pull_policy])
  151     container_args.extend(["--restart_policy", args.restart_policy])
  152     container_args.extend(["--volume", args.volume])
  153 
  154     args.master_resource_limit = (
  155         args.master_resource_limit
  156         if args.master_resource_limit
  157         else args.master_resource_request
  158     )
  159 
  160     k8s.Client(
  161         image_name=image_name,
  162         namespace=args.namespace,
  163         job_name=args.job_name,
  164         event_callback=None,
  165         cluster_spec=args.cluster_spec,
  166     ).create_master(
  167         resource_requests=args.master_resource_request,
  168         resource_limits=args.master_resource_limit,
  169         args=container_args,
  170         pod_priority=args.master_pod_priority,
  171         image_pull_policy=args.image_pull_policy,
  172         restart_policy=args.restart_policy,
  173         volume=args.volume,
  174     )
  175 
  176 
  177 def _model_def_in_docker(model_def):
  178     return os.path.join(MODEL_ROOT_PATH, os.path.basename(model_def))
  179 
  180 
  181 def _cluster_spec_def_in_docker(cluster_spec):
  182     return (
  183         os.path.join(CLUSTER_SPEC_ROOT_PATH, os.path.basename(cluster_spec))
  184         if cluster_spec
  185         else ""
  186     )
  187
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/elasticdl/python/elasticdl/api.py b/elasticdl/python/elasticdl/api.py
  --- a/elasticdl/python/elasticdl/api.py
  +++ b/elasticdl/python/elasticdl/api.py
  @@ -85,21 +85,7 @@
           else args.master_resource_request
       )
   
  -    k8s.Client(
  -        image_name=image_name,
  -        namespace=args.namespace,
  -        job_name=args.job_name,
  -        event_callback=None,
  -        cluster_spec=args.cluster_spec,
  -    ).create_master(
  -        resource_requests=args.master_resource_request,
  -        resource_limits=args.master_resource_limit,
  -        args=container_args,
  -        pod_priority=args.master_pod_priority,
  -        image_pull_policy=args.image_pull_policy,
  -        restart_policy=args.restart_policy,
  -        volume=args.volume,
  -    )
  +    _submit_job(image_name, args, container_args)
       # TODO: print dashboard url after launching the master pod
   
   
  @@ -157,20 +143,30 @@
           else args.master_resource_request
       )
   
  -    k8s.Client(
  +    _submit_job(image_name, args, container_args)
  +
  +
  +def _submit_job(image_name, client_args, container_args):
  +    client = k8s.Client(
           image_name=image_name,
  -        namespace=args.namespace,
  -        job_name=args.job_name,
  +        namespace=client_args.namespace,
  +        job_name=client_args.job_name,
           event_callback=None,
  -        cluster_spec=args.cluster_spec,
  -    ).create_master(
  -        resource_requests=args.master_resource_request,
  -        resource_limits=args.master_resource_limit,
  +        cluster_spec=client_args.cluster_spec,
  +    )
  +
  +    client.create_master(
  +        resource_requests=client_args.master_resource_request,
  +        resource_limits=client_args.master_resource_limit,
           args=container_args,
  -        pod_priority=args.master_pod_priority,
  -        image_pull_policy=args.image_pull_policy,
  -        restart_policy=args.restart_policy,
  -        volume=args.volume,
  +        pod_priority=client_args.master_pod_priority,
  +        image_pull_policy=client_args.image_pull_policy,
  +        restart_policy=client_args.restart_policy,
  +        volume=client_args.volume,
  +    )
  +    print(
  +        "ElasticDL job %s was successfully submitted. The master pod is: %s."
  +        % (client_args.job_name, client.get_master_pod_name())
       )
  
verification_info: {"golden_diff": "diff --git a/elasticdl/python/elasticdl/api.py b/elasticdl/python/elasticdl/api.py\n--- a/elasticdl/python/elasticdl/api.py\n+++ b/elasticdl/python/elasticdl/api.py\n@@ -85,21 +85,7 @@\n         else args.master_resource_request\n     )\n \n-    k8s.Client(\n-        image_name=image_name,\n-        namespace=args.namespace,\n-        job_name=args.job_name,\n-        event_callback=None,\n-        cluster_spec=args.cluster_spec,\n-    ).create_master(\n-        resource_requests=args.master_resource_request,\n-        resource_limits=args.master_resource_limit,\n-        args=container_args,\n-        pod_priority=args.master_pod_priority,\n-        image_pull_policy=args.image_pull_policy,\n-        restart_policy=args.restart_policy,\n-        volume=args.volume,\n-    )\n+    _submit_job(image_name, args, container_args)\n     # TODO: print dashboard url after launching the master pod\n \n \n@@ -157,20 +143,30 @@\n         else args.master_resource_request\n     )\n \n-    k8s.Client(\n+    _submit_job(image_name, args, container_args)\n+\n+\n+def _submit_job(image_name, client_args, container_args):\n+    client = k8s.Client(\n         image_name=image_name,\n-        namespace=args.namespace,\n-        job_name=args.job_name,\n+        namespace=client_args.namespace,\n+        job_name=client_args.job_name,\n         event_callback=None,\n-        cluster_spec=args.cluster_spec,\n-    ).create_master(\n-        resource_requests=args.master_resource_request,\n-        resource_limits=args.master_resource_limit,\n+        cluster_spec=client_args.cluster_spec,\n+    )\n+\n+    client.create_master(\n+        resource_requests=client_args.master_resource_request,\n+        resource_limits=client_args.master_resource_limit,\n         args=container_args,\n-        pod_priority=args.master_pod_priority,\n-        image_pull_policy=args.image_pull_policy,\n-        restart_policy=args.restart_policy,\n-        volume=args.volume,\n+        pod_priority=client_args.master_pod_priority,\n+        image_pull_policy=client_args.image_pull_policy,\n+        restart_policy=client_args.restart_policy,\n+        volume=client_args.volume,\n+    )\n+    print(\n+        \"ElasticDL job %s was successfully submitted. The master pod is: %s.\"\n+        % (client_args.job_name, client.get_master_pod_name())\n     )\n", "issue": "Print out name of the created master pod after submitting a job via client\nCurrently, when submitting a job via `elasticdl train --job_name=xxx`, no master pod information will be printed out and users have to guess the name to master pod from the job name they provided. \r\n\r\nWe should print out the name to master pod when job has been submitted successfully.\n", "before_files": [{"content": "import os\n\nfrom elasticdl.python.common import k8s_client as k8s\nfrom elasticdl.python.elasticdl.image_builder import (\n    build_and_push_docker_image,\n)\n\nMODEL_ROOT_PATH = \"/model_zoo\"\nCLUSTER_SPEC_ROOT_PATH = \"/cluster_spec\"\n\n\ndef train(args):\n    image_name = build_and_push_docker_image(\n        model_zoo=args.model_def,\n        base_image=args.image_base,\n        docker_image_prefix=args.docker_image_prefix,\n        extra_pypi=args.extra_pypi_index,\n        cluster_spec=args.cluster_spec,\n    )\n    container_args = [\n        \"-m\",\n        \"elasticdl.python.master.main\",\n        \"--job_name\",\n        args.job_name,\n        \"--worker_image\",\n        image_name,\n        \"--model_def\",\n        _model_def_in_docker(args.model_def),\n        \"--cluster_spec\",\n        _cluster_spec_def_in_docker(args.cluster_spec),\n        \"--num_workers\",\n        str(args.num_workers),\n        \"--worker_resource_request\",\n        args.worker_resource_request,\n        \"--worker_resource_limit\",\n        args.worker_resource_limit,\n        \"--namespace\",\n        args.namespace,\n        \"--tensorboard_log_dir\",\n        args.tensorboard_log_dir,\n        \"--records_per_task\",\n        str(args.records_per_task),\n        \"--num_epochs\",\n        str(args.num_epochs),\n        \"--grads_to_wait\",\n        str(args.grads_to_wait),\n        \"--minibatch_size\",\n        str(args.minibatch_size),\n        \"--training_data_dir\",\n        args.training_data_dir,\n        \"--evaluation_data_dir\",\n        args.evaluation_data_dir,\n        \"--checkpoint_steps\",\n        str(args.checkpoint_steps),\n        \"--checkpoint_dir\",\n        args.checkpoint_dir,\n        \"--keep_checkpoint_max\",\n        str(args.keep_checkpoint_max),\n        \"--evaluation_steps\",\n        str(args.evaluation_steps),\n        \"--evaluation_start_delay_secs\",\n        str(args.evaluation_start_delay_secs),\n        \"--evaluation_throttle_secs\",\n        str(args.evaluation_throttle_secs),\n        \"--input_fn\",\n        args.input_fn,\n        \"--loss\",\n        args.loss,\n        \"--optimizer\",\n        args.optimizer,\n        \"--eval_metrics_fn\",\n        args.eval_metrics_fn,\n        \"--model_class\",\n        args.model_class,\n        \"--model_params\",\n        args.model_params,\n    ]\n    container_args.extend([\"--image_pull_policy\", args.image_pull_policy])\n    container_args.extend([\"--restart_policy\", args.restart_policy])\n    container_args.extend([\"--volume\", args.volume])\n\n    args.master_resource_limit = (\n        args.master_resource_limit\n        if args.master_resource_limit\n        else args.master_resource_request\n    )\n\n    k8s.Client(\n        image_name=image_name,\n        namespace=args.namespace,\n        job_name=args.job_name,\n        event_callback=None,\n        cluster_spec=args.cluster_spec,\n    ).create_master(\n        resource_requests=args.master_resource_request,\n        resource_limits=args.master_resource_limit,\n        args=container_args,\n        pod_priority=args.master_pod_priority,\n        image_pull_policy=args.image_pull_policy,\n        restart_policy=args.restart_policy,\n        volume=args.volume,\n    )\n    # TODO: print dashboard url after launching the master pod\n\n\ndef evaluate(args):\n    image_name = build_and_push_docker_image(\n        model_zoo=args.model_def,\n        base_image=args.image_base,\n        docker_image_prefix=args.docker_image_prefix,\n        extra_pypi=args.extra_pypi_index,\n        cluster_spec=args.cluster_spec,\n    )\n    container_args = [\n        \"-m\",\n        \"elasticdl.python.master.main\",\n        \"--job_name\",\n        args.job_name,\n        \"--worker_image\",\n        image_name,\n        \"--model_def\",\n        _model_def_in_docker(args.model_def),\n        \"--cluster_spec\",\n        _cluster_spec_def_in_docker(args.cluster_spec),\n        \"--num_workers\",\n        str(args.num_workers),\n        \"--worker_resource_request\",\n        args.worker_resource_request,\n        \"--worker_resource_limit\",\n        args.worker_resource_limit,\n        \"--namespace\",\n        args.namespace,\n        \"--records_per_task\",\n        str(args.records_per_task),\n        \"--minibatch_size\",\n        str(args.minibatch_size),\n        \"--evaluation_data_dir\",\n        args.evaluation_data_dir,\n        \"--checkpoint_filename_for_init\",\n        args.checkpoint_filename_for_init,\n        \"--input_fn\",\n        args.input_fn,\n        \"--eval_metrics_fn\",\n        args.eval_metrics_fn,\n        \"--model_class\",\n        args.model_class,\n        \"--model_params\",\n        args.model_params,\n    ]\n    container_args.extend([\"--image_pull_policy\", args.image_pull_policy])\n    container_args.extend([\"--restart_policy\", args.restart_policy])\n    container_args.extend([\"--volume\", args.volume])\n\n    args.master_resource_limit = (\n        args.master_resource_limit\n        if args.master_resource_limit\n        else args.master_resource_request\n    )\n\n    k8s.Client(\n        image_name=image_name,\n        namespace=args.namespace,\n        job_name=args.job_name,\n        event_callback=None,\n        cluster_spec=args.cluster_spec,\n    ).create_master(\n        resource_requests=args.master_resource_request,\n        resource_limits=args.master_resource_limit,\n        args=container_args,\n        pod_priority=args.master_pod_priority,\n        image_pull_policy=args.image_pull_policy,\n        restart_policy=args.restart_policy,\n        volume=args.volume,\n    )\n\n\ndef _model_def_in_docker(model_def):\n    return os.path.join(MODEL_ROOT_PATH, os.path.basename(model_def))\n\n\ndef _cluster_spec_def_in_docker(cluster_spec):\n    return (\n        os.path.join(CLUSTER_SPEC_ROOT_PATH, os.path.basename(cluster_spec))\n        if cluster_spec\n        else \"\"\n    )\n", "path": "elasticdl/python/elasticdl/api.py"}], "after_files": [{"content": "import os\n\nfrom elasticdl.python.common import k8s_client as k8s\nfrom elasticdl.python.elasticdl.image_builder import (\n    build_and_push_docker_image,\n)\n\nMODEL_ROOT_PATH = \"/model_zoo\"\nCLUSTER_SPEC_ROOT_PATH = \"/cluster_spec\"\n\n\ndef train(args):\n    image_name = build_and_push_docker_image(\n        model_zoo=args.model_def,\n        base_image=args.image_base,\n        docker_image_prefix=args.docker_image_prefix,\n        extra_pypi=args.extra_pypi_index,\n        cluster_spec=args.cluster_spec,\n    )\n    container_args = [\n        \"-m\",\n        \"elasticdl.python.master.main\",\n        \"--job_name\",\n        args.job_name,\n        \"--worker_image\",\n        image_name,\n        \"--model_def\",\n        _model_def_in_docker(args.model_def),\n        \"--cluster_spec\",\n        _cluster_spec_def_in_docker(args.cluster_spec),\n        \"--num_workers\",\n        str(args.num_workers),\n        \"--worker_resource_request\",\n        args.worker_resource_request,\n        \"--worker_resource_limit\",\n        args.worker_resource_limit,\n        \"--namespace\",\n        args.namespace,\n        \"--tensorboard_log_dir\",\n        args.tensorboard_log_dir,\n        \"--records_per_task\",\n        str(args.records_per_task),\n        \"--num_epochs\",\n        str(args.num_epochs),\n        \"--grads_to_wait\",\n        str(args.grads_to_wait),\n        \"--minibatch_size\",\n        str(args.minibatch_size),\n        \"--training_data_dir\",\n        args.training_data_dir,\n        \"--evaluation_data_dir\",\n        args.evaluation_data_dir,\n        \"--checkpoint_steps\",\n        str(args.checkpoint_steps),\n        \"--checkpoint_dir\",\n        args.checkpoint_dir,\n        \"--keep_checkpoint_max\",\n        str(args.keep_checkpoint_max),\n        \"--evaluation_steps\",\n        str(args.evaluation_steps),\n        \"--evaluation_start_delay_secs\",\n        str(args.evaluation_start_delay_secs),\n        \"--evaluation_throttle_secs\",\n        str(args.evaluation_throttle_secs),\n        \"--input_fn\",\n        args.input_fn,\n        \"--loss\",\n        args.loss,\n        \"--optimizer\",\n        args.optimizer,\n        \"--eval_metrics_fn\",\n        args.eval_metrics_fn,\n        \"--model_class\",\n        args.model_class,\n        \"--model_params\",\n        args.model_params,\n    ]\n    container_args.extend([\"--image_pull_policy\", args.image_pull_policy])\n    container_args.extend([\"--restart_policy\", args.restart_policy])\n    container_args.extend([\"--volume\", args.volume])\n\n    args.master_resource_limit = (\n        args.master_resource_limit\n        if args.master_resource_limit\n        else args.master_resource_request\n    )\n\n    _submit_job(image_name, args, container_args)\n    # TODO: print dashboard url after launching the master pod\n\n\ndef evaluate(args):\n    image_name = build_and_push_docker_image(\n        model_zoo=args.model_def,\n        base_image=args.image_base,\n        docker_image_prefix=args.docker_image_prefix,\n        extra_pypi=args.extra_pypi_index,\n        cluster_spec=args.cluster_spec,\n    )\n    container_args = [\n        \"-m\",\n        \"elasticdl.python.master.main\",\n        \"--job_name\",\n        args.job_name,\n        \"--worker_image\",\n        image_name,\n        \"--model_def\",\n        _model_def_in_docker(args.model_def),\n        \"--cluster_spec\",\n        _cluster_spec_def_in_docker(args.cluster_spec),\n        \"--num_workers\",\n        str(args.num_workers),\n        \"--worker_resource_request\",\n        args.worker_resource_request,\n        \"--worker_resource_limit\",\n        args.worker_resource_limit,\n        \"--namespace\",\n        args.namespace,\n        \"--records_per_task\",\n        str(args.records_per_task),\n        \"--minibatch_size\",\n        str(args.minibatch_size),\n        \"--evaluation_data_dir\",\n        args.evaluation_data_dir,\n        \"--checkpoint_filename_for_init\",\n        args.checkpoint_filename_for_init,\n        \"--input_fn\",\n        args.input_fn,\n        \"--eval_metrics_fn\",\n        args.eval_metrics_fn,\n        \"--model_class\",\n        args.model_class,\n        \"--model_params\",\n        args.model_params,\n    ]\n    container_args.extend([\"--image_pull_policy\", args.image_pull_policy])\n    container_args.extend([\"--restart_policy\", args.restart_policy])\n    container_args.extend([\"--volume\", args.volume])\n\n    args.master_resource_limit = (\n        args.master_resource_limit\n        if args.master_resource_limit\n        else args.master_resource_request\n    )\n\n    _submit_job(image_name, args, container_args)\n\n\ndef _submit_job(image_name, client_args, container_args):\n    client = k8s.Client(\n        image_name=image_name,\n        namespace=client_args.namespace,\n        job_name=client_args.job_name,\n        event_callback=None,\n        cluster_spec=client_args.cluster_spec,\n    )\n\n    client.create_master(\n        resource_requests=client_args.master_resource_request,\n        resource_limits=client_args.master_resource_limit,\n        args=container_args,\n        pod_priority=client_args.master_pod_priority,\n        image_pull_policy=client_args.image_pull_policy,\n        restart_policy=client_args.restart_policy,\n        volume=client_args.volume,\n    )\n    print(\n        \"ElasticDL job %s was successfully submitted. The master pod is: %s.\"\n        % (client_args.job_name, client.get_master_pod_name())\n    )\n\n\ndef _model_def_in_docker(model_def):\n    return os.path.join(MODEL_ROOT_PATH, os.path.basename(model_def))\n\n\ndef _cluster_spec_def_in_docker(cluster_spec):\n    return (\n        os.path.join(CLUSTER_SPEC_ROOT_PATH, os.path.basename(cluster_spec))\n        if cluster_spec\n        else \"\"\n    )\n", "path": "elasticdl/python/elasticdl/api.py"}]}