Add EKS support (5 resources) + navigation fixes#128
Conversation
docs: simplify homebrew install command
feat: configurable startup view with navigation improvements
CloudWatch Logs filter (v0.9.1)
v0.10: AI Chat with Bedrock, ECS task-definitions, resource pagination
…, addons, access-entries) - clusters: standalone, 11 detail sections - node-groups: sub-resource, scaling/health info - fargate-profiles: sub-resource, selectors/subnets - addons: sub-resource, versions/config - access-entries: sub-resource, IAM→K8s mapping - registry: add EKS to Compute category - SDK: aws-sdk-go-v2/service/eks v1.76.3 Total: 20 files, ~1807 lines
- node-groups: Return all instance types (not just first) - registry: Add EKS default resource (clusters)
- EKS: Full navigation for all 5 resources (clusters, node-groups, fargate-profiles, addons, access-entries) - Parent cluster (p), IAM roles (r), CloudWatch logs (l), VPC/SG (v/s), ASG/LaunchTemplate (g/t) - Add EKS test fixtures: CloudFormation template + deploy/cleanup scripts for integration testing - Add LocalStack tasks for EKS demo data - Fix global key conflicts: c→p (Clear filter), a→o/g/t (Actions menu), m→s (Mark resource) - Affected: ECS, RDS, autoscaling, stepfunctions, transit-gateways
Add RoleName/UserName filter support to enable navigation from other resources (EKS, EC2, Lambda, ECS, etc). Changes: - roles: Check RoleName filter in ListPage(), direct Get() lookup - users: Check UserName filter in List(), direct Get() lookup - Return empty list if not found (not error, for filter behavior) Fixes: Navigation failure when pressing 'r' on EKS clusters/nodes/fargate/addons
Enhance cleanup.sh reliability w/ auto-retry & auth fix: - Auto-retry on DELETE_FAILED (max 2 attempts) - Fix auth mode to API before deletion (resolves deletion blocks) - CI_MODE env var for non-interactive cleanup - Update README: document retry behavior, env vars (CI_MODE, MAX_RETRY) Production-grade improvements for CI/CD integration.
- EKS clusters: Add ClusterName filter for child->parent nav - IAM roles: Move filter check List()->consistent w/ users/clusters - Resource browser: Reload on 'c' (fix filtered DAO cache)
Navigation broken - Navigations() returned empty array due to failed type assertion. Root cause: handleNavigation() used wrapped resource from contextForResource(), but Navigations() methods expect unwrapped concrete types (e.g. *ClusterResource). Fix: Use dao.UnwrapResource() like getNavigationShortcuts() does. Test: All resource navigation keys (n/f/a/e/r/l/v/s/g/t/o/p) work.
Enables filtered navigation from EKS node-groups. DAOs now check GetFilterFromContext for AutoScalingGroupName, LaunchTemplateId, KeyName filters, returning single resource instead of full list.
79 DAOs use fmt.Errorf('resource not found: %s', id) (lowercase).
IsNotFound() only checked AWS SDK codes + 'NotFound' (capital N).
Filter navigation (ASG/EC2/IAM/EKS) relies on IsNotFound() -> failed on non-existent resources.
Add 'not found' to hasErrorCode() -> 1 line fix, no user-facing change.
- Update README.md: 163→169 resources, add EKS - Regenerate imports_custom.go via task gen-imports
- Update resource count: 163→169 - Add EKS to Containers & ML section (5 resources) - Add Task Definitions to ECS - Add eks alias
Problem: commit 2780b20 broke AI chat in diff mode by unwrapping resources before passing to DiffView, losing region/profile info. Solution: DiffView now stores both wrapped (for metadata) and unwrapped (for rendering) resources. buildAIContext() gets correct region/profile from wrapped resources via buildResourceRef(). Files: internal/view/{diff_view,resource_browser_input}.go
PR Review: Add EKS support (5 resources) + navigation fixesSummaryThis PR adds comprehensive EKS support with 5 new resources (clusters, node-groups, fargate-profiles, addons, access-entries) and implements 26 cross-resource navigation links. The implementation is well-structured and follows the project's established patterns. ✅ Code Quality & Best PracticesExcellent
Good Practices Observed
🐛 Potential Issues1. IsNotFound() Case Sensitivity Fix ✅The fix in
2. List() Performance ConsiderationsMultiple DAO implementations call EKS Clusters DAO ( for _, name := range clusterNames {
output, err := d.client.DescribeCluster(ctx, &eks.DescribeClusterInput{...})
// ...
}Impact:
Recommendation: Consider adding comments explaining why individual calls are necessary, and potentially add rate limiting if needed in future. 3. Global Key Conflict ResolutionKey binding changes throughout various renderers:
Good: These resolve real conflicts 🔒 SecurityNo Issues Found ✅
⚡ PerformanceMinor Concerns
Optimizations Applied ✅
🧪 Test CoverageStrengths
Gaps
Recommendation: Consider adding unit tests for:
📝 DocumentationExcellent
Missing
🔍 Specific Code Review1. Taskfile.yml Changes (Lines 66-90)Issue: Removed YAML anchor syntax for env vars # Before:
env: &localstack-env
AWS_ENDPOINT_URL: http://localhost:4566
# After: Inline duplicationImpact: Minor - increases duplication but improves readability 2. DiffView Resource Unwrapping (diff_view.go:44-56)Excellent Fix ✅: Properly unwraps ProfiledResource/RegionalResource while preserving metadata leftUnwrap: dao.UnwrapResource(left), // unwrap for renderingThis fixes AI chat metadata preservation issue mentioned in PR description. 3. Navigation ImplementationExample from addons/render.go:170-192: navs = append(navs, render.Navigation{
Key: "p",
Label: "Cluster",
Service: "eks",
Resource: "clusters",
FilterField: "ClusterName",
FilterValue: clusterName,
})Perfect Implementation ✅: Follows the navigation pattern from 4. Registry UpdatesAll sub-resources properly added to "eks/node-groups": {},
"eks/fargate-profiles": {},
"eks/addons": {},
"eks/access-entries": {},Correct ✅ 📊 Statistics
🎯 Final VerdictStrengths
Minor Improvements Suggested
Recommended Actions
Overall Rating: Excellent ⭐⭐⭐⭐⭐The code is production-ready. The implementation is clean, well-tested (with CloudFormation fixtures), and properly integrated. The bug fixes for DiffView and navigation filtering are valuable improvements beyond the EKS feature addition. Status: Ready to merge ✅ Review conducted by Claude Code - Automated PR Review |
Summary
Changes
New Resources (5)
Navigation Enhancements
Bug Fixes
Test Infrastructure
Stats
Code Review
✅ CLAUDE.md compliant
✅ No bugs found
✅ All historical fixes applied
✅ Ready to merge
Details: Snap fe645947-2c96-7506-a8e8-058c08932d3e