code: def test_notebook_proxy() -> None:
      session = determined_test_session(conf.ADMIN_CREDENTIALS)
  
      def get_proxy(session: api.Session, task_id: str) -> None:
          session.get(f"proxy/{task_id}/")
  
      typ = NTSC_Kind.notebook
      created_id = launch_ntsc(session, 1, typ).id
      print(f"created {typ} {created_id}")
      wait_for_ntsc_state(
          session,
          NTSC_Kind(typ),
          created_id,
          lambda s: s == bindings.taskv1State.RUNNING,
          timeout=300,
      )
      deets = get_ntsc_details(session, typ, created_id)
      assert (
          deets.state == bindings.taskv1State.RUNNING
      ), f"{typ} should be running"
      err = api.task_is_ready(
          determined_test_session(conf.ADMIN_CREDENTIALS), created_id
      )
      assert err is None, f"{typ} should be ready {err}"
      print(deets)
      try:
          get_proxy(session, created_id)
      finally:
          kill_ntsc(session, typ, created_id)
  
file_path: determined/e2e_tests/tests/command/test_notebook.py
imports: import re
  from typing import List
  import pytest
  from determined.common import api
  from determined.common.api import NTSC_Kind, bindings, get_ntsc_details, wait_for_ntsc_state
  from tests import command
  from tests import config
  from tests.api_utils import determined_test_session, kill_ntsc, launch_ntsc
label_desc: Use image node_id 2 for calling a global function with example usage: test_notebook_proxy() without return types