Skip to content

Commit a80f266

Browse files
committed
Addressed type checking errors
1 parent a07fbcf commit a80f266

File tree

3 files changed

+24
-28
lines changed

3 files changed

+24
-28
lines changed

lib/idp_common_pkg/idp_common/agents/error_analyzer/tools/cloudwatch_tool.py

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
import logging
99
import os
1010
from datetime import datetime, timedelta
11-
from typing import Any, Dict, List
11+
from typing import Any, Dict, List, Optional
1212

1313
import boto3
1414
from strands import tool
1515

16-
from ..config import create_error_response, safe_int_conversion
16+
from ..config import create_error_response
1717
from .dynamodb_tool import fetch_document_record
1818
from .xray_tool import extract_lambda_request_ids
1919

@@ -27,10 +27,10 @@
2727

2828
@tool
2929
def search_cloudwatch_logs(
30-
document_id: str = None,
30+
document_id: str = "",
3131
filter_pattern: str = "ERROR",
32-
hours_back: int = None,
33-
max_log_events: int = None,
32+
hours_back: int = 24,
33+
max_log_events: int = 10,
3434
max_log_groups: int = 20,
3535
) -> Dict[str, Any]:
3636
"""
@@ -57,9 +57,7 @@ def search_cloudwatch_logs(
5757
Dict containing error events, search metadata, and processing context
5858
"""
5959
try:
60-
max_log_events = safe_int_conversion(max_log_events, 10)
61-
max_log_groups = safe_int_conversion(max_log_groups, 20)
62-
hours_back = safe_int_conversion(hours_back, 24)
60+
# Parameters already have proper defaults, no conversion needed
6361

6462
if document_id:
6563
# Document-specific search mode
@@ -82,14 +80,14 @@ def search_cloudwatch_logs(
8280
# =============================================================================
8381

8482

85-
def _get_stack_name(document_record: Dict[str, Any] = None) -> str:
83+
def _get_stack_name(document_record: Optional[Dict[str, Any]] = None) -> str:
8684
"""
8785
Get stack name with priority: document ARN > environment variable.
8886
"""
8987
# First priority: Extract from document execution ARN
9088
if document_record:
9189
try:
92-
extracted_name = _extract_stack_name(document_record, None)
90+
extracted_name = _extract_stack_name(document_record)
9391
if extracted_name:
9492
return extracted_name
9593
except Exception as e:
@@ -115,7 +113,7 @@ def _search_document_logs(
115113
return context
116114

117115
# Get stack name from document context
118-
actual_stack_name = _get_stack_name(context["document_record"])
116+
actual_stack_name = _get_stack_name(context.get("document_record"))
119117

120118
# Get log groups for the stack
121119
log_groups = _get_log_groups_from_stack_prefix(actual_stack_name)
@@ -180,7 +178,7 @@ def _search_stack_logs(
180178
"events_found": 0,
181179
}
182180

183-
log_prefix = prefix_info.get("log_group_prefix")
181+
log_prefix = prefix_info.get("log_group_prefix", "")
184182

185183
# Get log groups with the prefix
186184
log_groups = _get_cloudwatch_log_groups(prefix=log_prefix)
@@ -266,9 +264,7 @@ def _get_document_context(document_id: str) -> Dict[str, Any]:
266264
}
267265

268266

269-
def _extract_stack_name(
270-
document_record: Dict[str, Any], fallback_stack_name: str
271-
) -> str:
267+
def _extract_stack_name(document_record: Dict[str, Any]) -> str:
272268
"""
273269
Extract actual stack name from Step Functions execution ARN.
274270
"""
@@ -283,7 +279,7 @@ def _extract_stack_name(
283279
if state_machine_name:
284280
return state_machine_name
285281

286-
return fallback_stack_name
282+
return ""
287283

288284

289285
def _get_processing_time_window(document_record: Dict[str, Any]) -> Dict[str, Any]:
@@ -383,8 +379,8 @@ def _search_by_request_ids(
383379
log_group_name=log_group["name"],
384380
filter_pattern="ERROR",
385381
max_events=max_log_events * 3,
386-
start_time=time_window["start_time"],
387-
end_time=time_window["end_time"],
382+
start_time=time_window.get("start_time"),
383+
end_time=time_window.get("end_time"),
388384
request_id=request_id,
389385
)
390386

@@ -440,8 +436,8 @@ def _search_by_document_fallback(
440436
log_group_name=log_group["name"],
441437
filter_pattern=doc_identifier,
442438
max_events=max_log_events,
443-
start_time=time_window["start_time"],
444-
end_time=time_window["end_time"],
439+
start_time=time_window.get("start_time"),
440+
end_time=time_window.get("end_time"),
445441
)
446442

447443
if search_result.get("events_found", 0) > 0:
@@ -533,7 +529,7 @@ def _search_cloudwatch_logs(
533529
max_events: int = 10,
534530
start_time: datetime = None,
535531
end_time: datetime = None,
536-
request_id: str = None,
532+
request_id: str = "",
537533
) -> Dict[str, Any]:
538534
"""
539535
Search CloudWatch logs within a specific log group for matching patterns.
@@ -542,7 +538,7 @@ def _search_cloudwatch_logs(
542538
client = boto3.client("logs")
543539

544540
# Use provided time window or default to hours_back from now
545-
if start_time and end_time:
541+
if start_time is not None and end_time is not None:
546542
search_start = start_time
547543
search_end = end_time
548544
else:
@@ -623,7 +619,7 @@ def _search_cloudwatch_logs(
623619
return create_error_response(str(e), events_found=0, events=[])
624620

625621

626-
def _build_filter_pattern(base_pattern: str, request_id: str = None) -> str:
622+
def _build_filter_pattern(base_pattern: str, request_id: str = "") -> str:
627623
"""
628624
Build CloudWatch filter pattern. Use ERROR pattern and filter by request ID in post-processing.
629625
"""

lib/idp_common_pkg/idp_common/agents/error_analyzer/tools/dynamodb_tool.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ def _get_tracking_table():
194194
return None, None
195195

196196
dynamodb = boto3.resource("dynamodb")
197-
return dynamodb.Table(table_name), table_name
197+
table = dynamodb.Table(table_name)
198+
return table, table_name
198199

199200

200201
def _create_empty_response(date: str, hours_back: int) -> Dict[str, Any]:

lib/idp_common_pkg/idp_common/agents/error_analyzer/tools/xray_tool.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
from ..config import (
2020
create_error_response,
21-
safe_int_conversion,
2221
)
2322

2423
logger = logging.getLogger(__name__)
@@ -93,7 +92,7 @@ def analyze_document_trace(document_id: str) -> Dict[str, Any]:
9392

9493
@tool
9594
def analyze_system_performance(
96-
stack_name: str = None, hours_back: int = None
95+
stack_name: str = "", hours_back: int = 1
9796
) -> Dict[str, Any]:
9897
"""
9998
Analyze system performance issues focusing on stack-specific traces first, then general infrastructure.
@@ -127,7 +126,7 @@ def analyze_system_performance(
127126
- recommendations (list): Actionable recommendations
128127
"""
129128
try:
130-
hours_back = safe_int_conversion(hours_back, 1)
129+
# hours_back already has proper default
131130
xray_client = boto3.client("xray")
132131

133132
end_time = datetime.utcnow()
@@ -165,7 +164,7 @@ def analyze_system_performance(
165164

166165
return _build_performance_analysis_response(
167166
analysis_type="infrastructure_wide",
168-
stack_name=stack_name or "not_provided",
167+
stack_name=stack_name if stack_name else "not_provided",
169168
traces_found=0,
170169
services_found=service_analysis.get("services_found", 0),
171170
performance_issues={"service_map": service_analysis},

0 commit comments

Comments
 (0)