Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/google/adk/cli/cli_deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -1503,7 +1503,6 @@ def to_agent_engine(
)
app_name = os.path.basename(os.path.normpath(agent_folder))
_validate_app_name(app_name)
display_name = display_name or app_name
parent_folder = os.path.dirname(os.path.normpath(agent_folder))
if adk_app_object:
warnings.warn(
Expand Down Expand Up @@ -1590,6 +1589,8 @@ def to_agent_engine(
f' {display_name}'
)
agent_config['display_name'] = display_name
elif 'display_name' not in agent_config:
agent_config['display_name'] = app_name
if description:
if 'description' in agent_config:
click.echo(
Expand Down
68 changes: 68 additions & 0 deletions tests/unittests/cli/utils/test_cli_deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,74 @@ def test_to_agent_engine_raises_when_explicit_config_file_missing(
assert expected_abs in str(exc_info.value)


@pytest.mark.parametrize(
"cli_display_name, config_display_name, expected_display_name",
[
("", "Name From Config", "Name From Config"),
("Name From CLI", "Name From Config", "Name From CLI"),
("", None, "agent"),
],
)
def test_to_agent_engine_display_name_precedence(
monkeypatch: pytest.MonkeyPatch,
agent_dir: Callable[[bool, bool], Path],
cli_display_name: str,
config_display_name: Optional[str],
expected_display_name: str,
) -> None:
"""--display_name wins over the config file, which wins over the folder."""
monkeypatch.setattr(shutil, "rmtree", lambda *a, **k: None)
update_recorder = _Recorder()

fake_agentplatform = types.ModuleType("agentplatform")

class _FakeRuntimes:

def create(self, **kwargs: Any) -> Any:
del kwargs
return types.SimpleNamespace(
api_resource=types.SimpleNamespace(
name="projects/p/locations/l/reasoningEngines/e"
)
)

def update(self, *, name: str, config: Dict[str, Any]) -> None:
update_recorder(name=name, config=config)

class _FakeAgentPlatformClient:

def __init__(self, *args: Any, **kwargs: Any) -> None:
del args
del kwargs
self.runtimes = _FakeRuntimes()

fake_agentplatform.Client = _FakeAgentPlatformClient
monkeypatch.setitem(sys.modules, "agentplatform", fake_agentplatform)
monkeypatch.setattr(
"src.google.adk.dependencies._agentplatform.agentplatform",
fake_agentplatform,
)
src_dir = agent_dir(False, False)
config: Dict[str, Any] = {}
if config_display_name is not None:
config["display_name"] = config_display_name
(src_dir / ".agent_engine_config.json").write_text(json.dumps(config))

cli_deploy.to_agent_engine(
agent_folder=str(src_dir),
temp_folder="tmp",
trace_to_cloud=True,
project="my-gcp-project",
region="us-central1",
display_name=cli_display_name,
adk_version="1.2.0",
)

assert len(update_recorder.calls) == 1
deployed_config = update_recorder.calls[0][1]["config"]
assert deployed_config["display_name"] == expected_display_name


@pytest.mark.parametrize("include_requirements", [True, False])
def test_to_gke_happy_path(
monkeypatch: pytest.MonkeyPatch,
Expand Down
Loading