runbooks 1.1.4__py3-none-any.whl → 1.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. runbooks/__init__.py +31 -2
  2. runbooks/__init___optimized.py +18 -4
  3. runbooks/_platform/__init__.py +1 -5
  4. runbooks/_platform/core/runbooks_wrapper.py +141 -138
  5. runbooks/aws2/accuracy_validator.py +812 -0
  6. runbooks/base.py +7 -0
  7. runbooks/cfat/assessment/compliance.py +1 -1
  8. runbooks/cfat/assessment/runner.py +1 -0
  9. runbooks/cfat/cloud_foundations_assessment.py +227 -239
  10. runbooks/cli/__init__.py +1 -1
  11. runbooks/cli/commands/cfat.py +64 -23
  12. runbooks/cli/commands/finops.py +1005 -54
  13. runbooks/cli/commands/inventory.py +135 -91
  14. runbooks/cli/commands/operate.py +9 -36
  15. runbooks/cli/commands/security.py +42 -18
  16. runbooks/cli/commands/validation.py +432 -18
  17. runbooks/cli/commands/vpc.py +81 -17
  18. runbooks/cli/registry.py +22 -10
  19. runbooks/cloudops/__init__.py +20 -27
  20. runbooks/cloudops/base.py +96 -107
  21. runbooks/cloudops/cost_optimizer.py +544 -542
  22. runbooks/cloudops/infrastructure_optimizer.py +5 -4
  23. runbooks/cloudops/interfaces.py +224 -225
  24. runbooks/cloudops/lifecycle_manager.py +5 -4
  25. runbooks/cloudops/mcp_cost_validation.py +252 -235
  26. runbooks/cloudops/models.py +78 -53
  27. runbooks/cloudops/monitoring_automation.py +5 -4
  28. runbooks/cloudops/notebook_framework.py +177 -213
  29. runbooks/cloudops/security_enforcer.py +125 -159
  30. runbooks/common/accuracy_validator.py +17 -12
  31. runbooks/common/aws_pricing.py +349 -326
  32. runbooks/common/aws_pricing_api.py +211 -212
  33. runbooks/common/aws_profile_manager.py +40 -36
  34. runbooks/common/aws_utils.py +74 -79
  35. runbooks/common/business_logic.py +126 -104
  36. runbooks/common/cli_decorators.py +36 -60
  37. runbooks/common/comprehensive_cost_explorer_integration.py +455 -463
  38. runbooks/common/cross_account_manager.py +197 -204
  39. runbooks/common/date_utils.py +27 -39
  40. runbooks/common/decorators.py +29 -19
  41. runbooks/common/dry_run_examples.py +173 -208
  42. runbooks/common/dry_run_framework.py +157 -155
  43. runbooks/common/enhanced_exception_handler.py +15 -4
  44. runbooks/common/enhanced_logging_example.py +50 -64
  45. runbooks/common/enhanced_logging_integration_example.py +65 -37
  46. runbooks/common/env_utils.py +16 -16
  47. runbooks/common/error_handling.py +40 -38
  48. runbooks/common/lazy_loader.py +41 -23
  49. runbooks/common/logging_integration_helper.py +79 -86
  50. runbooks/common/mcp_cost_explorer_integration.py +476 -493
  51. runbooks/common/mcp_integration.py +99 -79
  52. runbooks/common/memory_optimization.py +140 -118
  53. runbooks/common/module_cli_base.py +37 -58
  54. runbooks/common/organizations_client.py +175 -193
  55. runbooks/common/patterns.py +23 -25
  56. runbooks/common/performance_monitoring.py +67 -71
  57. runbooks/common/performance_optimization_engine.py +283 -274
  58. runbooks/common/profile_utils.py +111 -37
  59. runbooks/common/rich_utils.py +315 -141
  60. runbooks/common/sre_performance_suite.py +177 -186
  61. runbooks/enterprise/__init__.py +1 -1
  62. runbooks/enterprise/logging.py +144 -106
  63. runbooks/enterprise/security.py +187 -204
  64. runbooks/enterprise/validation.py +43 -56
  65. runbooks/finops/__init__.py +26 -30
  66. runbooks/finops/account_resolver.py +1 -1
  67. runbooks/finops/advanced_optimization_engine.py +980 -0
  68. runbooks/finops/automation_core.py +268 -231
  69. runbooks/finops/business_case_config.py +184 -179
  70. runbooks/finops/cli.py +660 -139
  71. runbooks/finops/commvault_ec2_analysis.py +157 -164
  72. runbooks/finops/compute_cost_optimizer.py +336 -320
  73. runbooks/finops/config.py +20 -20
  74. runbooks/finops/cost_optimizer.py +484 -618
  75. runbooks/finops/cost_processor.py +332 -214
  76. runbooks/finops/dashboard_runner.py +1006 -172
  77. runbooks/finops/ebs_cost_optimizer.py +991 -657
  78. runbooks/finops/elastic_ip_optimizer.py +317 -257
  79. runbooks/finops/enhanced_mcp_integration.py +340 -0
  80. runbooks/finops/enhanced_progress.py +32 -29
  81. runbooks/finops/enhanced_trend_visualization.py +3 -2
  82. runbooks/finops/enterprise_wrappers.py +223 -285
  83. runbooks/finops/executive_export.py +203 -160
  84. runbooks/finops/helpers.py +130 -288
  85. runbooks/finops/iam_guidance.py +1 -1
  86. runbooks/finops/infrastructure/__init__.py +80 -0
  87. runbooks/finops/infrastructure/commands.py +506 -0
  88. runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
  89. runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
  90. runbooks/finops/markdown_exporter.py +337 -174
  91. runbooks/finops/mcp_validator.py +1952 -0
  92. runbooks/finops/nat_gateway_optimizer.py +1512 -481
  93. runbooks/finops/network_cost_optimizer.py +657 -587
  94. runbooks/finops/notebook_utils.py +226 -188
  95. runbooks/finops/optimization_engine.py +1136 -0
  96. runbooks/finops/optimizer.py +19 -23
  97. runbooks/finops/rds_snapshot_optimizer.py +367 -411
  98. runbooks/finops/reservation_optimizer.py +427 -363
  99. runbooks/finops/scenario_cli_integration.py +64 -65
  100. runbooks/finops/scenarios.py +1277 -438
  101. runbooks/finops/schemas.py +218 -182
  102. runbooks/finops/snapshot_manager.py +2289 -0
  103. runbooks/finops/types.py +3 -3
  104. runbooks/finops/validation_framework.py +259 -265
  105. runbooks/finops/vpc_cleanup_exporter.py +189 -144
  106. runbooks/finops/vpc_cleanup_optimizer.py +591 -573
  107. runbooks/finops/workspaces_analyzer.py +171 -182
  108. runbooks/integration/__init__.py +89 -0
  109. runbooks/integration/mcp_integration.py +1920 -0
  110. runbooks/inventory/CLAUDE.md +816 -0
  111. runbooks/inventory/__init__.py +2 -2
  112. runbooks/inventory/aws_decorators.py +2 -3
  113. runbooks/inventory/check_cloudtrail_compliance.py +2 -4
  114. runbooks/inventory/check_controltower_readiness.py +152 -151
  115. runbooks/inventory/check_landingzone_readiness.py +85 -84
  116. runbooks/inventory/cloud_foundations_integration.py +144 -149
  117. runbooks/inventory/collectors/aws_comprehensive.py +1 -1
  118. runbooks/inventory/collectors/aws_networking.py +109 -99
  119. runbooks/inventory/collectors/base.py +4 -0
  120. runbooks/inventory/core/collector.py +495 -313
  121. runbooks/inventory/core/formatter.py +11 -0
  122. runbooks/inventory/draw_org_structure.py +8 -9
  123. runbooks/inventory/drift_detection_cli.py +69 -96
  124. runbooks/inventory/ec2_vpc_utils.py +2 -2
  125. runbooks/inventory/find_cfn_drift_detection.py +5 -7
  126. runbooks/inventory/find_cfn_orphaned_stacks.py +7 -9
  127. runbooks/inventory/find_cfn_stackset_drift.py +5 -6
  128. runbooks/inventory/find_ec2_security_groups.py +48 -42
  129. runbooks/inventory/find_landingzone_versions.py +4 -6
  130. runbooks/inventory/find_vpc_flow_logs.py +7 -9
  131. runbooks/inventory/inventory_mcp_cli.py +48 -46
  132. runbooks/inventory/inventory_modules.py +103 -91
  133. runbooks/inventory/list_cfn_stacks.py +9 -10
  134. runbooks/inventory/list_cfn_stackset_operation_results.py +1 -3
  135. runbooks/inventory/list_cfn_stackset_operations.py +79 -57
  136. runbooks/inventory/list_cfn_stacksets.py +8 -10
  137. runbooks/inventory/list_config_recorders_delivery_channels.py +49 -39
  138. runbooks/inventory/list_ds_directories.py +65 -53
  139. runbooks/inventory/list_ec2_availability_zones.py +2 -4
  140. runbooks/inventory/list_ec2_ebs_volumes.py +32 -35
  141. runbooks/inventory/list_ec2_instances.py +23 -28
  142. runbooks/inventory/list_ecs_clusters_and_tasks.py +26 -34
  143. runbooks/inventory/list_elbs_load_balancers.py +22 -20
  144. runbooks/inventory/list_enis_network_interfaces.py +26 -33
  145. runbooks/inventory/list_guardduty_detectors.py +2 -4
  146. runbooks/inventory/list_iam_policies.py +2 -4
  147. runbooks/inventory/list_iam_roles.py +5 -7
  148. runbooks/inventory/list_iam_saml_providers.py +4 -6
  149. runbooks/inventory/list_lambda_functions.py +38 -38
  150. runbooks/inventory/list_org_accounts.py +6 -8
  151. runbooks/inventory/list_org_accounts_users.py +55 -44
  152. runbooks/inventory/list_rds_db_instances.py +31 -33
  153. runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
  154. runbooks/inventory/list_route53_hosted_zones.py +3 -5
  155. runbooks/inventory/list_servicecatalog_provisioned_products.py +37 -41
  156. runbooks/inventory/list_sns_topics.py +2 -4
  157. runbooks/inventory/list_ssm_parameters.py +4 -7
  158. runbooks/inventory/list_vpc_subnets.py +2 -4
  159. runbooks/inventory/list_vpcs.py +7 -10
  160. runbooks/inventory/mcp_inventory_validator.py +554 -468
  161. runbooks/inventory/mcp_vpc_validator.py +359 -442
  162. runbooks/inventory/organizations_discovery.py +63 -55
  163. runbooks/inventory/recover_cfn_stack_ids.py +7 -8
  164. runbooks/inventory/requirements.txt +0 -1
  165. runbooks/inventory/rich_inventory_display.py +35 -34
  166. runbooks/inventory/run_on_multi_accounts.py +3 -5
  167. runbooks/inventory/unified_validation_engine.py +281 -253
  168. runbooks/inventory/verify_ec2_security_groups.py +1 -1
  169. runbooks/inventory/vpc_analyzer.py +735 -697
  170. runbooks/inventory/vpc_architecture_validator.py +293 -348
  171. runbooks/inventory/vpc_dependency_analyzer.py +384 -380
  172. runbooks/inventory/vpc_flow_analyzer.py +1 -1
  173. runbooks/main.py +49 -34
  174. runbooks/main_final.py +91 -60
  175. runbooks/main_minimal.py +22 -10
  176. runbooks/main_optimized.py +131 -100
  177. runbooks/main_ultra_minimal.py +7 -2
  178. runbooks/mcp/__init__.py +36 -0
  179. runbooks/mcp/integration.py +679 -0
  180. runbooks/monitoring/performance_monitor.py +9 -4
  181. runbooks/operate/dynamodb_operations.py +3 -1
  182. runbooks/operate/ec2_operations.py +145 -137
  183. runbooks/operate/iam_operations.py +146 -152
  184. runbooks/operate/networking_cost_heatmap.py +29 -8
  185. runbooks/operate/rds_operations.py +223 -254
  186. runbooks/operate/s3_operations.py +107 -118
  187. runbooks/operate/vpc_operations.py +646 -616
  188. runbooks/remediation/base.py +1 -1
  189. runbooks/remediation/commons.py +10 -7
  190. runbooks/remediation/commvault_ec2_analysis.py +70 -66
  191. runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
  192. runbooks/remediation/multi_account.py +24 -21
  193. runbooks/remediation/rds_snapshot_list.py +86 -60
  194. runbooks/remediation/remediation_cli.py +92 -146
  195. runbooks/remediation/universal_account_discovery.py +83 -79
  196. runbooks/remediation/workspaces_list.py +46 -41
  197. runbooks/security/__init__.py +19 -0
  198. runbooks/security/assessment_runner.py +1150 -0
  199. runbooks/security/baseline_checker.py +812 -0
  200. runbooks/security/cloudops_automation_security_validator.py +509 -535
  201. runbooks/security/compliance_automation_engine.py +17 -17
  202. runbooks/security/config/__init__.py +2 -2
  203. runbooks/security/config/compliance_config.py +50 -50
  204. runbooks/security/config_template_generator.py +63 -76
  205. runbooks/security/enterprise_security_framework.py +1 -1
  206. runbooks/security/executive_security_dashboard.py +519 -508
  207. runbooks/security/multi_account_security_controls.py +959 -1210
  208. runbooks/security/real_time_security_monitor.py +422 -444
  209. runbooks/security/security_baseline_tester.py +1 -1
  210. runbooks/security/security_cli.py +143 -112
  211. runbooks/security/test_2way_validation.py +439 -0
  212. runbooks/security/two_way_validation_framework.py +852 -0
  213. runbooks/sre/production_monitoring_framework.py +167 -177
  214. runbooks/tdd/__init__.py +15 -0
  215. runbooks/tdd/cli.py +1071 -0
  216. runbooks/utils/__init__.py +14 -17
  217. runbooks/utils/logger.py +7 -2
  218. runbooks/utils/version_validator.py +50 -47
  219. runbooks/validation/__init__.py +6 -6
  220. runbooks/validation/cli.py +9 -3
  221. runbooks/validation/comprehensive_2way_validator.py +745 -704
  222. runbooks/validation/mcp_validator.py +906 -228
  223. runbooks/validation/terraform_citations_validator.py +104 -115
  224. runbooks/validation/terraform_drift_detector.py +461 -454
  225. runbooks/vpc/README.md +617 -0
  226. runbooks/vpc/__init__.py +8 -1
  227. runbooks/vpc/analyzer.py +577 -0
  228. runbooks/vpc/cleanup_wrapper.py +476 -413
  229. runbooks/vpc/cli_cloudtrail_commands.py +339 -0
  230. runbooks/vpc/cli_mcp_validation_commands.py +480 -0
  231. runbooks/vpc/cloudtrail_audit_integration.py +717 -0
  232. runbooks/vpc/config.py +92 -97
  233. runbooks/vpc/cost_engine.py +411 -148
  234. runbooks/vpc/cost_explorer_integration.py +553 -0
  235. runbooks/vpc/cross_account_session.py +101 -106
  236. runbooks/vpc/enhanced_mcp_validation.py +917 -0
  237. runbooks/vpc/eni_gate_validator.py +961 -0
  238. runbooks/vpc/heatmap_engine.py +185 -160
  239. runbooks/vpc/mcp_no_eni_validator.py +680 -639
  240. runbooks/vpc/nat_gateway_optimizer.py +358 -0
  241. runbooks/vpc/networking_wrapper.py +15 -8
  242. runbooks/vpc/pdca_remediation_planner.py +528 -0
  243. runbooks/vpc/performance_optimized_analyzer.py +219 -231
  244. runbooks/vpc/runbooks_adapter.py +1167 -241
  245. runbooks/vpc/tdd_red_phase_stubs.py +601 -0
  246. runbooks/vpc/test_data_loader.py +358 -0
  247. runbooks/vpc/tests/conftest.py +314 -4
  248. runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
  249. runbooks/vpc/tests/test_cost_engine.py +0 -2
  250. runbooks/vpc/topology_generator.py +326 -0
  251. runbooks/vpc/unified_scenarios.py +1297 -1124
  252. runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
  253. runbooks-1.1.6.dist-info/METADATA +327 -0
  254. runbooks-1.1.6.dist-info/RECORD +489 -0
  255. runbooks/finops/README.md +0 -414
  256. runbooks/finops/accuracy_cross_validator.py +0 -647
  257. runbooks/finops/business_cases.py +0 -950
  258. runbooks/finops/dashboard_router.py +0 -922
  259. runbooks/finops/ebs_optimizer.py +0 -973
  260. runbooks/finops/embedded_mcp_validator.py +0 -1629
  261. runbooks/finops/enhanced_dashboard_runner.py +0 -527
  262. runbooks/finops/finops_dashboard.py +0 -584
  263. runbooks/finops/finops_scenarios.py +0 -1218
  264. runbooks/finops/legacy_migration.py +0 -730
  265. runbooks/finops/multi_dashboard.py +0 -1519
  266. runbooks/finops/single_dashboard.py +0 -1113
  267. runbooks/finops/unlimited_scenarios.py +0 -393
  268. runbooks-1.1.4.dist-info/METADATA +0 -800
  269. runbooks-1.1.4.dist-info/RECORD +0 -468
  270. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/WHEEL +0 -0
  271. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/entry_points.txt +0 -0
  272. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/licenses/LICENSE +0 -0
  273. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,339 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ CloudTrail CLI Commands for VPC Cleanup Audit Framework
4
+
5
+ Enterprise CLI commands integrating CloudTrail MCP server for comprehensive
6
+ deleted resources tracking and audit trail compliance.
7
+
8
+ Author: Enterprise Agile Team (devops-security-engineer [5] + python-runbooks-engineer [1])
9
+ Strategic Coordination: enterprise-product-owner [0]
10
+ """
11
+
12
+ import click
13
+ from datetime import datetime
14
+ from typing import List, Optional, Dict, Any
15
+ import json
16
+
17
+ from runbooks.common.rich_utils import console, print_header, print_success, print_error, print_warning
18
+ from .runbooks_adapter import RunbooksAdapter
19
+ from .cloudtrail_audit_integration import analyze_vpc_deletions_with_cloudtrail, validate_user_vpc_cleanup_claims
20
+
21
+
22
+ @click.group(name="audit")
23
+ def cloudtrail_audit():
24
+ """CloudTrail MCP integration commands for VPC cleanup audit trails."""
25
+ pass
26
+
27
+
28
+ @cloudtrail_audit.command(name="analyze-deletions")
29
+ @click.option("--profile", default="MANAGEMENT_PROFILE", help="AWS profile for CloudTrail access")
30
+ @click.option("--target-vpcs", help="Comma-separated list of VPC IDs to analyze")
31
+ @click.option("--days-back", default=90, help="Days to look back for audit trail (default: 90)")
32
+ @click.option("--export", is_flag=True, help="Export results to JSON file")
33
+ @click.option("--compliance-framework", default="SOC2", help="Compliance framework (SOC2, PCI-DSS, HIPAA)")
34
+ def analyze_vpc_deletions(
35
+ profile: str, target_vpcs: Optional[str], days_back: int, export: bool, compliance_framework: str
36
+ ):
37
+ """
38
+ Analyze VPC deletions using CloudTrail MCP integration for comprehensive audit trails.
39
+
40
+ Enterprise command for deleted resources tracking with ≥99.5% MCP validation accuracy.
41
+ Provides complete audit trail compliance for governance frameworks.
42
+
43
+ Examples:
44
+ runbooks vpc audit analyze-deletions --profile MANAGEMENT_PROFILE --days-back 90
45
+ runbooks vpc audit analyze-deletions --target-vpcs vpc-123,vpc-456 --export
46
+ runbooks vpc audit analyze-deletions --compliance-framework PCI-DSS
47
+ """
48
+ print_header("CloudTrail VPC Deletion Analysis", f"MCP Integration - {compliance_framework} Compliance")
49
+
50
+ # Parse target VPCs if provided
51
+ vpc_ids = None
52
+ if target_vpcs:
53
+ vpc_ids = [vpc.strip() for vpc in target_vpcs.split(",")]
54
+ console.print(f"[cyan]🎯 Target VPCs:[/cyan] {', '.join(vpc_ids)}")
55
+
56
+ console.print(f"[cyan]📅 Audit Period:[/cyan] {days_back} days")
57
+ console.print(f"[cyan]🛡️ Compliance:[/cyan] {compliance_framework}")
58
+ console.print(f"[cyan]📋 Profile:[/cyan] {profile}")
59
+
60
+ try:
61
+ # Initialize RunbooksAdapter with CloudTrail integration
62
+ adapter = RunbooksAdapter(profile=profile)
63
+
64
+ # Analyze VPC deletions with audit trail
65
+ audit_results = adapter.analyze_vpc_deletions_audit_trail(target_vpcs=vpc_ids, days_back=days_back)
66
+
67
+ if audit_results.get("error"):
68
+ print_error(f"CloudTrail analysis failed: {audit_results['error']}")
69
+ return
70
+
71
+ # Display results summary
72
+ console.print()
73
+ print_success("✅ CloudTrail Analysis Complete")
74
+
75
+ source = audit_results.get("source", "unknown")
76
+ if source == "cloudtrail_mcp_integration":
77
+ console.print(f"[green]🔗 Source:[/green] CloudTrail MCP Integration")
78
+ console.print(f"[green]📊 Deleted Resources:[/green] {audit_results.get('deleted_resources_found', 0)}")
79
+ console.print(f"[green]✅ MCP Validated:[/green] {audit_results.get('mcp_validated', False)}")
80
+ console.print(f"[green]🛡️ Compliance:[/green] {audit_results.get('compliance_status', 'Unknown')}")
81
+ console.print(f"[green]📋 Completeness:[/green] {audit_results.get('audit_trail_completeness', 0):.1f}%")
82
+ else:
83
+ print_warning(f"Using fallback analysis: {source}")
84
+ console.print(f"[yellow]📊 Events Found:[/yellow] {audit_results.get('events_found', 0)}")
85
+ console.print(f"[yellow]⚠️ Limitation:[/yellow] {audit_results.get('limitation', 'Unknown')}")
86
+
87
+ # Generate compliance report
88
+ console.print()
89
+ print_success(f"📋 Generating {compliance_framework} Compliance Report...")
90
+
91
+ compliance_report = adapter.generate_vpc_cleanup_compliance_report(
92
+ audit_results=audit_results.get("audit_results"), compliance_framework=compliance_framework
93
+ )
94
+
95
+ if compliance_report.get("overall_status"):
96
+ status_color = "green" if compliance_report["overall_status"] == "COMPLIANT" else "yellow"
97
+ console.print(
98
+ f"[{status_color}]🛡️ {compliance_framework} Status:[/{status_color}] {compliance_report['overall_status']}"
99
+ )
100
+
101
+ # Export results if requested
102
+ if export:
103
+ export_data = {
104
+ "analysis_timestamp": datetime.now().isoformat(),
105
+ "audit_results": audit_results,
106
+ "compliance_report": compliance_report,
107
+ "parameters": {
108
+ "profile": profile,
109
+ "target_vpcs": vpc_ids,
110
+ "days_back": days_back,
111
+ "compliance_framework": compliance_framework,
112
+ },
113
+ }
114
+
115
+ filename = f"vpc_cloudtrail_analysis_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
116
+
117
+ with open(filename, "w") as f:
118
+ json.dump(export_data, f, indent=2, default=str)
119
+
120
+ print_success(f"📄 Results exported to: {filename}")
121
+
122
+ console.print()
123
+ console.print("[dim]💡 For comprehensive validation, ensure CloudTrail MCP server is configured[/dim]")
124
+
125
+ except Exception as e:
126
+ print_error(f"CloudTrail analysis failed: {str(e)}")
127
+ console.print(
128
+ "[red]💡 Ensure CloudTrail MCP server is operational and MANAGEMENT_PROFILE has CloudTrail read permissions[/red]"
129
+ )
130
+
131
+
132
+ @cloudtrail_audit.command(name="validate-claims")
133
+ @click.option("--profile", default="MANAGEMENT_PROFILE", help="AWS profile for CloudTrail access")
134
+ @click.option("--claims-file", help="JSON file with claimed VPC deletions")
135
+ @click.option("--export", is_flag=True, help="Export validation results to JSON file")
136
+ def validate_user_claims(profile: str, claims_file: Optional[str], export: bool):
137
+ """
138
+ Validate user's VPC deletion claims against CloudTrail audit trail.
139
+
140
+ Specifically designed for the user's case of validating 12 deleted VPCs
141
+ using comprehensive CloudTrail MCP integration.
142
+
143
+ Examples:
144
+ runbooks vpc audit validate-claims --claims-file user_deletions.json
145
+ runbooks vpc audit validate-claims --profile MANAGEMENT_PROFILE --export
146
+
147
+ Expected claims file format:
148
+ [
149
+ {
150
+ "vpc_id": "vpc-12345678",
151
+ "deletion_date": "2024-09-01",
152
+ "claimed_by": "user@company.com"
153
+ }
154
+ ]
155
+ """
156
+ print_header("User VPC Deletion Validation", "CloudTrail MCP Evidence")
157
+
158
+ # Load claimed deletions
159
+ claimed_deletions = []
160
+
161
+ if claims_file:
162
+ try:
163
+ with open(claims_file, "r") as f:
164
+ claimed_deletions = json.load(f)
165
+ console.print(f"[cyan]📄 Claims File:[/cyan] {claims_file}")
166
+ except Exception as e:
167
+ print_error(f"Failed to load claims file: {e}")
168
+ return
169
+ else:
170
+ # Example data structure for user's 12 VPCs
171
+ print_warning("No claims file provided - using example validation structure")
172
+ console.print("[dim]💡 Use --claims-file to specify actual deletion claims[/dim]")
173
+ claimed_deletions = [
174
+ {"vpc_id": f"vpc-example{i:02d}", "deletion_date": "2024-09-01", "claimed_by": "user@company.com"}
175
+ for i in range(1, 13)
176
+ ]
177
+
178
+ console.print(f"[cyan]📊 Total Claims:[/cyan] {len(claimed_deletions)}")
179
+ console.print(f"[cyan]📋 Profile:[/cyan] {profile}")
180
+
181
+ try:
182
+ # Initialize RunbooksAdapter with CloudTrail integration
183
+ adapter = RunbooksAdapter(profile=profile)
184
+
185
+ # Validate user's VPC deletion claims
186
+ validation_results = adapter.validate_user_vpc_cleanup_claims(claimed_deletions)
187
+
188
+ if validation_results.get("error"):
189
+ print_error(f"Validation failed: {validation_results['error']}")
190
+ return
191
+
192
+ # Display validation summary
193
+ console.print()
194
+ print_success("✅ Validation Complete")
195
+
196
+ source = validation_results.get("source", "unknown")
197
+ if source == "cloudtrail_mcp_validation":
198
+ console.print(f"[green]🔗 Source:[/green] CloudTrail MCP Validation")
199
+ console.print(f"[green]📊 Total Claims:[/green] {validation_results.get('total_claimed', 0)}")
200
+ console.print(f"[green]✅ Validated:[/green] {validation_results.get('validated_count', 0)}")
201
+ console.print(f"[green]📈 Accuracy:[/green] {validation_results.get('validation_accuracy', 0):.1f}%")
202
+ console.print(f"[green]🛡️ Evidence:[/green] {validation_results.get('audit_evidence_count', 0)} events")
203
+
204
+ # Color code accuracy
205
+ accuracy = validation_results.get("validation_accuracy", 0)
206
+ accuracy_color = "green" if accuracy >= 95 else "yellow" if accuracy >= 80 else "red"
207
+ console.print(
208
+ f"[{accuracy_color}]📋 Validation Status:[/{accuracy_color}] {'EXCELLENT' if accuracy >= 95 else 'GOOD' if accuracy >= 80 else 'NEEDS REVIEW'}"
209
+ )
210
+ else:
211
+ print_warning(f"Using fallback validation: {source}")
212
+ console.print(f"[yellow]📊 Claims:[/yellow] {validation_results.get('total_claimed_deletions', 0)}")
213
+ console.print(f"[yellow]⚠️ Status:[/yellow] {validation_results.get('validation_status', 'Unknown')}")
214
+ console.print(
215
+ f"[yellow]💡 Recommendation:[/yellow] {validation_results.get('recommendation', 'Enable MCP')}"
216
+ )
217
+
218
+ # Export validation results if requested
219
+ if export:
220
+ export_data = {
221
+ "validation_timestamp": datetime.now().isoformat(),
222
+ "validation_results": validation_results,
223
+ "claimed_deletions": claimed_deletions,
224
+ "parameters": {"profile": profile, "claims_file": claims_file or "example_data"},
225
+ }
226
+
227
+ filename = f"vpc_validation_results_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
228
+
229
+ with open(filename, "w") as f:
230
+ json.dump(export_data, f, indent=2, default=str)
231
+
232
+ print_success(f"📄 Validation results exported to: {filename}")
233
+
234
+ console.print()
235
+ console.print("[dim]💡 For comprehensive validation, ensure CloudTrail MCP server is configured[/dim]")
236
+
237
+ except Exception as e:
238
+ print_error(f"Validation failed: {str(e)}")
239
+ console.print(
240
+ "[red]💡 Ensure CloudTrail MCP server is operational and MANAGEMENT_PROFILE has CloudTrail read permissions[/red]"
241
+ )
242
+
243
+
244
+ @cloudtrail_audit.command(name="compliance-report")
245
+ @click.option("--profile", default="MANAGEMENT_PROFILE", help="AWS profile for CloudTrail access")
246
+ @click.option("--framework", default="SOC2", help="Compliance framework (SOC2, PCI-DSS, HIPAA)")
247
+ @click.option("--days-back", default=90, help="Days to look back for audit trail")
248
+ @click.option("--export", is_flag=True, help="Export compliance report to JSON file")
249
+ def generate_compliance_report(profile: str, framework: str, days_back: int, export: bool):
250
+ """
251
+ Generate enterprise compliance report for VPC cleanup audit trail.
252
+
253
+ Comprehensive compliance reporting for governance frameworks with
254
+ CloudTrail MCP integration and ≥99.5% validation accuracy.
255
+
256
+ Examples:
257
+ runbooks vpc audit compliance-report --framework SOC2
258
+ runbooks vpc audit compliance-report --framework PCI-DSS --days-back 180 --export
259
+ runbooks vpc audit compliance-report --profile MANAGEMENT_PROFILE --framework HIPAA
260
+ """
261
+ print_header(f"{framework} Compliance Report", "VPC Cleanup Audit Trail")
262
+
263
+ console.print(f"[cyan]🛡️ Framework:[/cyan] {framework}")
264
+ console.print(f"[cyan]📅 Audit Period:[/cyan] {days_back} days")
265
+ console.print(f"[cyan]📋 Profile:[/cyan] {profile}")
266
+
267
+ try:
268
+ # Initialize RunbooksAdapter with CloudTrail integration
269
+ adapter = RunbooksAdapter(profile=profile)
270
+
271
+ # Generate comprehensive compliance report
272
+ compliance_report = adapter.generate_vpc_cleanup_compliance_report(compliance_framework=framework)
273
+
274
+ if compliance_report.get("error"):
275
+ print_error(f"Compliance report generation failed: {compliance_report['error']}")
276
+ return
277
+
278
+ # Display compliance summary
279
+ console.print()
280
+ print_success(f"✅ {framework} Compliance Report Generated")
281
+
282
+ source = compliance_report.get("source", "unknown")
283
+ if source == "enterprise_compliance_framework":
284
+ status = compliance_report.get("overall_status", "UNKNOWN")
285
+ status_color = "green" if status == "COMPLIANT" else "yellow" if status == "REVIEW" else "red"
286
+
287
+ console.print(f"[{status_color}]🛡️ Compliance Status:[/{status_color}] {status}")
288
+ console.print(f"[green]📋 Audit Score:[/green] {compliance_report.get('audit_score', 0):.1f}%")
289
+ console.print(f"[green]✅ Validation Score:[/green] {compliance_report.get('validation_score', 0):.1f}%")
290
+ console.print(f"[blue]🔗 Enterprise:[/blue] {compliance_report.get('enterprise_coordination', 'Active')}")
291
+ else:
292
+ print_warning(f"Using fallback compliance report: {source}")
293
+ console.print(f"[yellow]📊 Status:[/yellow] {compliance_report.get('status', 'INCOMPLETE')}")
294
+ console.print(f"[yellow]⚠️ Audit Status:[/yellow] {compliance_report.get('audit_trail_status', 'PARTIAL')}")
295
+
296
+ # Display recommendations if available
297
+ if compliance_report.get("compliance_report", {}).get("compliance_assessment", {}).get("recommendations"):
298
+ recommendations = compliance_report["compliance_report"]["compliance_assessment"]["recommendations"]
299
+ console.print()
300
+ console.print("[bold cyan]📋 Compliance Recommendations:[/bold cyan]")
301
+ for i, rec in enumerate(recommendations[:3], 1): # Show top 3
302
+ console.print(f"[cyan]{i}.[/cyan] {rec}")
303
+
304
+ # Export compliance report if requested
305
+ if export:
306
+ filename = f"{framework.lower()}_compliance_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
307
+
308
+ with open(filename, "w") as f:
309
+ json.dump(compliance_report, f, indent=2, default=str)
310
+
311
+ print_success(f"📄 {framework} compliance report exported to: {filename}")
312
+
313
+ console.print()
314
+ console.print(
315
+ "[dim]💡 For comprehensive compliance validation, ensure CloudTrail MCP server is configured[/dim]"
316
+ )
317
+
318
+ except Exception as e:
319
+ print_error(f"Compliance report generation failed: {str(e)}")
320
+ console.print(
321
+ "[red]💡 Ensure CloudTrail MCP server is operational and MANAGEMENT_PROFILE has CloudTrail read permissions[/red]"
322
+ )
323
+
324
+
325
+ # Integration with main VPC CLI
326
+ def add_cloudtrail_commands(vpc_cli_group):
327
+ """Add CloudTrail audit commands to main VPC CLI group."""
328
+ vpc_cli_group.add_command(cloudtrail_audit)
329
+
330
+
331
+ if __name__ == "__main__":
332
+ # Standalone execution for testing
333
+ console.print("[bold green]CloudTrail VPC Audit CLI Commands[/bold green]")
334
+ console.print("[cyan]Available commands for enterprise team coordination:[/cyan]")
335
+ console.print("• runbooks vpc audit analyze-deletions")
336
+ console.print("• runbooks vpc audit validate-claims")
337
+ console.print("• runbooks vpc audit compliance-report")
338
+
339
+ cloudtrail_audit()