Skip to content

Commit 6956260

Browse files
committed
Fix the way we get files from GCS
1 parent c6e0008 commit 6956260

File tree

3 files changed

+36
-44
lines changed

3 files changed

+36
-44
lines changed

sub_agents/e2e_test_analyst/agent.py

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,15 @@ def generate_source_code_links(test_name: str, commit_hash: Optional[str] = None
135135

136136
return links
137137

138-
async def get_e2e_test_logs_async(job_name: str, build_id: str) -> str:
138+
async def get_e2e_test_logs_async(job_name: str, build_id: str, test_name: str) -> str:
139139
"""Get e2e test logs from Prow."""
140-
# Extract job short name from full job name
141-
job_parts = job_name.split('-')
142-
if len(job_parts) >= 8:
143-
job_short_name = '-'.join(job_parts[7:]) # Everything after the 7th part
144-
else:
145-
job_short_name = job_name.split('-')[-1] # Fallback to last part
140+
146141

147142
# E2E test logs are typically in openshift-e2e-test directory
148-
e2e_test_path = f"artifacts/{job_short_name}/openshift-e2e-test/build-log.txt"
143+
if "sno" in test_name:
144+
e2e_test_path = f"artifacts/{test_name}/single-node-e2e-test/build-log.txt"
145+
else:
146+
e2e_test_path = f"artifacts/{test_name}/openshift-e2e-test/build-log.txt"
149147

150148
base_url = f"{GCS_URL}/{job_name}/{build_id}"
151149
e2e_test_url = f"{base_url}/{e2e_test_path}"
@@ -165,7 +163,7 @@ async def get_e2e_test_logs_async(job_name: str, build_id: str) -> str:
165163
Build ID: {build_id}
166164
167165
🔍 DEBUGGING INFO:
168-
- Job short name extracted: {job_short_name}
166+
- test_name: {test_name}
169167
- Base URL: {base_url}
170168
- Tried path: {e2e_test_path}
171169
@@ -244,7 +242,7 @@ async def get_e2e_test_logs_async(job_name: str, build_id: str) -> str:
244242
Build ID: {build_id}
245243
246244
🔍 DEBUGGING INFO:
247-
- Job short name extracted: {job_short_name}
245+
- test_name: {test_name}
248246
- Base URL: {base_url}
249247
- Tried path: {e2e_test_path}
250248
- HTTP Error: {str(e)}
@@ -265,27 +263,26 @@ async def get_e2e_test_logs_async(job_name: str, build_id: str) -> str:
265263
except Exception as e:
266264
return f"❌ E2E TEST ANALYSIS ERROR: {str(e)}"
267265

268-
async def get_junit_results_async(job_name: str, build_id: str) -> str:
266+
async def get_junit_results_async(job_name: str, build_id: str, test_name: str) -> str:
269267
"""Get JUnit test results from Prow."""
270-
# Extract job short name from full job name
271-
job_parts = job_name.split('-')
272-
if len(job_parts) >= 8:
273-
job_short_name = '-'.join(job_parts[7:]) # Everything after the 7th part
268+
# E2E test logs are typically in openshift-e2e-test directory
269+
if "sno" in test_name:
270+
e2e_test_path = f"artifacts/{test_name}/single-node-e2e-test"
274271
else:
275-
job_short_name = job_name.split('-')[-1] # Fallback to last part
276-
277-
# JUnit results are typically in junit directory
278-
junit_path = f"artifacts/{job_short_name}/openshift-e2e-test/junit_e2e_*.xml"
272+
e2e_test_path = f"artifacts/{test_name}/openshift-e2e-test"
273+
279274

280275
base_url = f"{GCS_URL}/{job_name}/{build_id}"
281276

282277
async with httpx.AsyncClient() as client:
283278
try:
284279
# Try common JUnit file patterns
285280
junit_patterns = [
286-
f"artifacts/{job_short_name}/openshift-e2e-test/junit_e2e.xml",
287-
f"artifacts/{job_short_name}/openshift-e2e-test/junit_e2e_20*.xml",
288-
f"artifacts/{job_short_name}/openshift-e2e-test/artifacts/junit_e2e.xml"
281+
f"{e2e_test_path}/junit_e2e.xml",
282+
f"{e2e_test_path}/junit_e2e_20*.xml",
283+
f"{e2e_test_path}/artifacts/junit_e2e.xml",
284+
f"{e2e_test_path}/artifacts/junit/junit_e2e.xml",
285+
f"{e2e_test_path}/artifacts/junit/junit_e2e_20*.xml"
289286
]
290287

291288
for pattern in junit_patterns:
@@ -321,13 +318,13 @@ def get_job_metadata_tool(job_name: str, build_id: str):
321318
"""Get metadata and status for a specific Prow job name and build ID."""
322319
return run_async_in_thread(get_job_metadata_async(job_name, build_id))
323320

324-
def get_e2e_test_logs_tool(job_name: str, build_id: str):
321+
def get_e2e_test_logs_tool(job_name: str, build_id: str, test_name: str):
325322
"""Get e2e test logs from the openshift-e2e-test directory with commit info and source code links."""
326-
return run_async_in_thread(get_e2e_test_logs_async(job_name, build_id))
323+
return run_async_in_thread(get_e2e_test_logs_async(job_name, build_id, test_name))
327324

328-
def get_junit_results_tool(job_name: str, build_id: str):
325+
def get_junit_results_tool(job_name: str, build_id: str, test_name: str):
329326
"""Get JUnit test results from the e2e test artifacts."""
330-
return run_async_in_thread(get_junit_results_async(job_name, build_id))
327+
return run_async_in_thread(get_junit_results_async(job_name, build_id, test_name))
331328

332329
e2e_test_analyst_agent = Agent(
333330
model=MODEL,

sub_agents/installation_analyst/agent.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -169,28 +169,21 @@ async def get_job_metadata_async(job_name: str, build_id: str) -> Dict[str, Any]
169169
except Exception as e:
170170
return {"error": f"Failed to fetch job info: {str(e)}"}
171171

172-
async def get_install_logs_async(job_name: str, build_id: str) -> str:
172+
async def get_install_logs_async(job_name: str, build_id: str, test_name: str) -> str:
173173
"""Get installation logs from build-log.txt in installation directories."""
174-
# Extract job short name from full job name
175-
job_parts = job_name.split('-')
176-
if len(job_parts) >= 8:
177-
job_short_name = '-'.join(job_parts[7:]) # Everything after the 7th part
178-
else:
179-
job_short_name = job_name.split('-')[-1] # Fallback to last part
180-
181-
# Try both possible installation directory patterns
174+
# List of possible installation directory patterns
182175
install_dirs = [
183-
f"artifacts/{job_short_name}/ipi-install-install",
184-
f"artifacts/{job_short_name}/ipi-install-install-stableinitial"
176+
"ipi-install-install",
177+
"ipi-install-install-stableinitial"
185178
]
186-
187179
base_url = f"{GCS_URL}/{job_name}/{build_id}"
188-
180+
# Construct the base artifacts URL
181+
artifacts_url = f"{base_url}/artifacts"
189182
async with httpx.AsyncClient() as client:
190183
for install_dir in install_dirs:
191184
try:
192185
# Get the build-log.txt from this installation directory
193-
log_url = f"{base_url}/{install_dir}/build-log.txt"
186+
log_url = f"{artifacts_url}/{test_name}/{install_dir}/build-log.txt"
194187

195188
response = await client.get(log_url)
196189
response.raise_for_status()
@@ -281,7 +274,7 @@ async def get_install_logs_async(job_name: str, build_id: str) -> str:
281274
Build ID: {build_id}
282275
283276
🔍 DEBUGGING INFO:
284-
- Job short name extracted: {job_short_name}
277+
- test_name: {test_name}
285278
- Base URL: {base_url}
286279
- Tried directories: {', '.join(install_dirs)}
287280
@@ -318,9 +311,9 @@ def get_job_metadata_tool(job_name: str, build_id: str):
318311
"""Get metadata and status for a specific Prow job name and build ID."""
319312
return run_async_in_thread(get_job_metadata_async(job_name, build_id))
320313

321-
def get_install_logs_tool(job_name: str, build_id: str):
314+
def get_install_logs_tool(job_name: str, build_id: str, test_name: str):
322315
"""Get installation logs from build-log.txt in installation directories with detailed analysis."""
323-
return run_async_in_thread(get_install_logs_async(job_name, build_id))
316+
return run_async_in_thread(get_install_logs_async(job_name, build_id, test_name))
324317

325318
installation_analyst_agent = Agent(
326319
model=MODEL,

sub_agents/mustgather_analyst/agent.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from google.adk import Agent
22
from . import prompt
3+
from google.adk.models.lite_llm import LiteLlm
4+
35
from .must_gather import get_must_gather, list_directory, read_drained_file, get_file_info, search_files
46
MODEL = "ollama/qwen3:4b"
57

68
mustgather_analyst_agent = Agent(
7-
model=MODEL,
9+
model=LiteLlm(model=MODEL),
810
name="mustgather_analyst_agent",
911
instruction=prompt.MUST_GATHER_SPECIALIST_PROMPT,
1012
output_key="must_gather_analysis_output",

0 commit comments

Comments
 (0)