Skip to content

Commit f4b7239

Browse files
committed
feat: more generic url
1 parent a27927d commit f4b7239

File tree

3 files changed

+21
-23
lines changed

3 files changed

+21
-23
lines changed

src/google/adk/cli/cli_tools_click.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import os
2424
import tempfile
2525
from typing import Optional
26+
from urllib.parse import urlparse
2627

2728
import click
2829
from click.core import ParameterSource
@@ -616,18 +617,12 @@ def fast_api_common_options():
616617

617618
def decorator(func):
618619
@click.option(
619-
"--host",
620+
"--base_url",
620621
type=str,
621-
help="Optional. The binding host of the server",
622-
default="127.0.0.1",
622+
help="Optional. The base URL of the server.",
623+
default="http://127\.0\.0\.1:8000",
623624
show_default=True,
624625
)
625-
@click.option(
626-
"--port",
627-
type=int,
628-
help="Optional. The port of the server",
629-
default=8000,
630-
)
631626
@click.option(
632627
"--allow_origins",
633628
help="Optional. Any additional origins to allow for CORS.",
@@ -719,8 +714,7 @@ def cli_web(
719714
eval_storage_uri: Optional[str] = None,
720715
log_level: str = "INFO",
721716
allow_origins: Optional[list[str]] = None,
722-
host: str = "127.0.0.1",
723-
port: int = 8000,
717+
base_url="http://127.0.0.1:8000",
724718
trace_to_cloud: bool = False,
725719
reload: bool = True,
726720
session_service_uri: Optional[str] = None,
@@ -741,6 +735,9 @@ def cli_web(
741735
adk web --session_service_uri=[uri] --port=[port] path/to/agents_dir
742736
"""
743737
logs.setup_adk_logger(getattr(logging, log_level.upper()))
738+
parsed_url = urlparse(base_url)
739+
host = parsed_url.hostname
740+
port = parsed_url.port
744741

745742
@asynccontextmanager
746743
async def _lifespan(app: FastAPI):
@@ -777,8 +774,7 @@ async def _lifespan(app: FastAPI):
777774
trace_to_cloud=trace_to_cloud,
778775
lifespan=_lifespan,
779776
a2a=a2a,
780-
host=host,
781-
port=port,
777+
base_url=base_url,
782778
reload_agents=reload_agents,
783779
)
784780
config = uvicorn.Config(
@@ -810,8 +806,7 @@ def cli_api_server(
810806
eval_storage_uri: Optional[str] = None,
811807
log_level: str = "INFO",
812808
allow_origins: Optional[list[str]] = None,
813-
host: str = "127.0.0.1",
814-
port: int = 8000,
809+
base_url="http://127.0.0.1:8000",
815810
trace_to_cloud: bool = False,
816811
reload: bool = True,
817812
session_service_uri: Optional[str] = None,
@@ -833,6 +828,9 @@ def cli_api_server(
833828
"""
834829
logs.setup_adk_logger(getattr(logging, log_level.upper()))
835830

831+
parsed_url = urlparse(base_url)
832+
host = parsed_url.hostname
833+
port = parsed_url.port
836834
session_service_uri = session_service_uri or session_db_url
837835
artifact_service_uri = artifact_service_uri or artifact_storage_uri
838836
config = uvicorn.Config(
@@ -846,8 +844,7 @@ def cli_api_server(
846844
web=False,
847845
trace_to_cloud=trace_to_cloud,
848846
a2a=a2a,
849-
host=host,
850-
port=port,
847+
base_url=base_url,
851848
reload_agents=reload_agents,
852849
),
853850
host=host,

src/google/adk/cli/fast_api.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ def get_fast_api_app(
6464
allow_origins: Optional[list[str]] = None,
6565
web: bool,
6666
a2a: bool = False,
67-
host: str = "127.0.0.1",
68-
port: int = 8000,
67+
base_url: str = "http://127.0.0.1:8000",
6968
trace_to_cloud: bool = False,
7069
reload_agents: bool = False,
7170
lifespan: Optional[Lifespan[FastAPI]] = None,
@@ -352,6 +351,8 @@ async def _get_a2a_runner_async() -> Runner:
352351
logger.info("Setting up A2A agent: %s", app_name)
353352

354353
try:
354+
a2a_rpc_path = f"{base_url}/a2a/{app_name}"
355+
355356
agent_executor = A2aAgentExecutor(
356357
runner=create_a2a_runner_loader(app_name),
357358
)
@@ -363,6 +364,8 @@ async def _get_a2a_runner_async() -> Runner:
363364
with (p / "agent.json").open("r", encoding="utf-8") as f:
364365
data = json.load(f)
365366
agent_card = AgentCard(**data)
367+
# todo: if url is not defined, override it here
368+
agent_card.url = a2a_rpc_path
366369

367370
a2a_app = A2AStarletteApplication(
368371
agent_card=agent_card,

tests/unittests/cli/test_fast_api.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,7 @@ def test_app(
432432
memory_service_uri="",
433433
allow_origins=["*"],
434434
a2a=False, # Disable A2A for most tests
435-
host="127.0.0.1",
436-
port=8000,
435+
base_url="http://127.0.0.1:8000",
437436
)
438437

439438
# Create a TestClient that doesn't start a real server
@@ -607,8 +606,7 @@ def test_app_with_a2a(
607606
memory_service_uri="",
608607
allow_origins=["*"],
609608
a2a=True,
610-
host="127.0.0.1",
611-
port=8000,
609+
base_url="http://127.0.0.1:8000",
612610
)
613611

614612
client = TestClient(app)

0 commit comments

Comments
 (0)