From 0f3c83ed9e1b31d7da2c6965df99c14e531149d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Ra=C4=8Dinsk=C3=BD?= Date: Fri, 24 Apr 2026 12:21:15 +0200 Subject: [PATCH] fix: custom job url after rebrand --- .../batch_prediction/_batch_prediction.py | 2 +- google/cloud/aiplatform/jobs.py | 2 +- google/cloud/aiplatform/training_jobs.py | 2 +- .../cloud/aiplatform/utils/console_utils.py | 2 +- tests/unit/aiplatform/test_jobs.py | 44 +++++++++++++++++++ .../batch_prediction/_batch_prediction.py | 2 +- 6 files changed, 49 insertions(+), 5 deletions(-) diff --git a/agentplatform/batch_prediction/_batch_prediction.py b/agentplatform/batch_prediction/_batch_prediction.py index 7c9307d950..e164b1d999 100644 --- a/agentplatform/batch_prediction/_batch_prediction.py +++ b/agentplatform/batch_prediction/_batch_prediction.py @@ -287,7 +287,7 @@ def _dashboard_uri(self) -> Optional[str]: project = fields.pop("project") job = list(fields.values())[0] return ( - "https://console.cloud.google.com/ai/platform/locations/" + "https://console.cloud.google.com/agent-platform/locations/" f"{location}/{self._job_type}/{job}?project={project}" ) diff --git a/google/cloud/aiplatform/jobs.py b/google/cloud/aiplatform/jobs.py index 472c1661d5..d350660a55 100644 --- a/google/cloud/aiplatform/jobs.py +++ b/google/cloud/aiplatform/jobs.py @@ -212,7 +212,7 @@ def _dashboard_uri(self) -> Optional[str]: location = fields.pop("location") project = fields.pop("project") job = list(fields.values())[0] - url = f"https://console.cloud.google.com/ai/platform/locations/{location}/{self._job_type}/{job}?project={project}" + url = f"https://console.cloud.google.com/agent-platform/locations/{location}/{self._job_type}/{job}?project={project}" return url def _log_job_state(self): diff --git a/google/cloud/aiplatform/training_jobs.py b/google/cloud/aiplatform/training_jobs.py index 71dce9e3f5..0ee34b8cfb 100644 --- a/google/cloud/aiplatform/training_jobs.py +++ b/google/cloud/aiplatform/training_jobs.py @@ -1011,7 +1011,7 @@ def _dashboard_uri(self) -> str: """Helper method to compose the dashboard uri where training can be viewed.""" fields = self._parse_resource_name(self.resource_name) - url = f"https://console.cloud.google.com/ai/platform/locations/{fields['location']}/training/{fields['training_pipeline']}?project={fields['project']}" + url = f"https://console.cloud.google.com/agent-platform/locations/{fields['location']}/training/{fields['training_pipeline']}?project={fields['project']}" return url @property diff --git a/google/cloud/aiplatform/utils/console_utils.py b/google/cloud/aiplatform/utils/console_utils.py index c108b0605e..16d83e2526 100644 --- a/google/cloud/aiplatform/utils/console_utils.py +++ b/google/cloud/aiplatform/utils/console_utils.py @@ -22,7 +22,7 @@ def custom_job_console_uri(custom_job_resource_name: str) -> str: """Helper method to create console uri from custom job resource name.""" fields = jobs.CustomJob._parse_resource_name(custom_job_resource_name) - return f"https://console.cloud.google.com/ai/platform/locations/{fields['location']}/training/{fields['custom_job']}?project={fields['project']}" + return f"https://console.cloud.google.com/agent-platform/locations/{fields['location']}/training/{fields['custom_job']}?project={fields['project']}" def custom_job_tensorboard_console_uri( diff --git a/tests/unit/aiplatform/test_jobs.py b/tests/unit/aiplatform/test_jobs.py index 79f99ea7e0..7d688c85f3 100644 --- a/tests/unit/aiplatform/test_jobs.py +++ b/tests/unit/aiplatform/test_jobs.py @@ -380,6 +380,24 @@ def test_cancel_mock_job(self, fake_job_cancel_mock): fake_job_cancel_mock.assert_called_once_with(name=_TEST_JOB_RESOURCE_NAME) + @pytest.mark.usefixtures("fake_job_getter_mock") + def test_dashboard_uri_uses_agent_platform_path(self): + fake_job = self.FakeJob(job_name=_TEST_JOB_RESOURCE_NAME) + uri = fake_job._dashboard_uri() + assert "/agent-platform/" in uri + assert "/ai/platform/" not in uri + + @pytest.mark.usefixtures("fake_job_getter_mock") + def test_dashboard_uri_format(self): + fake_job = self.FakeJob(job_name=_TEST_JOB_RESOURCE_NAME) + uri = fake_job._dashboard_uri() + expected = ( + f"https://console.cloud.google.com/agent-platform/locations/" + f"{_TEST_LOCATION}/{self.FakeJob._job_type}/{_TEST_ID}" + f"?project={_TEST_PROJECT}" + ) + assert uri == expected + @pytest.fixture def get_batch_prediction_job_mock(): @@ -1321,6 +1339,32 @@ def test_batch_predict_job_with_publisher_model( == _TEST_PUBLISHER_MODEL_NAME ) + def test_batch_prediction_dashboard_uri_uses_agent_platform_path( + self, get_batch_prediction_job_mock + ): + aiplatform.init(project=_TEST_PROJECT, location=_TEST_LOCATION) + bp = jobs.BatchPredictionJob( + batch_prediction_job_name=_TEST_BATCH_PREDICTION_JOB_NAME + ) + uri = bp._dashboard_uri() + assert "/agent-platform/" in uri + assert "/ai/platform/" not in uri + + def test_batch_prediction_dashboard_uri_format( + self, get_batch_prediction_job_mock + ): + aiplatform.init(project=_TEST_PROJECT, location=_TEST_LOCATION) + bp = jobs.BatchPredictionJob( + batch_prediction_job_name=_TEST_BATCH_PREDICTION_JOB_NAME + ) + uri = bp._dashboard_uri() + expected = ( + f"https://console.cloud.google.com/agent-platform/locations/" + f"{_TEST_LOCATION}/batch-predictions/{_TEST_ID}" + f"?project={_TEST_PROJECT}" + ) + assert uri == expected + @pytest.fixture def get_mdm_job_mock(): diff --git a/vertexai/batch_prediction/_batch_prediction.py b/vertexai/batch_prediction/_batch_prediction.py index a8b2272e05..6dc5ae958b 100644 --- a/vertexai/batch_prediction/_batch_prediction.py +++ b/vertexai/batch_prediction/_batch_prediction.py @@ -292,7 +292,7 @@ def _dashboard_uri(self) -> Optional[str]: project = fields.pop("project") job = list(fields.values())[0] return ( - "https://console.cloud.google.com/ai/platform/locations/" + "https://console.cloud.google.com/agent-platform/locations/" f"{location}/{self._job_type}/{job}?project={project}" )