runbooks 1.1.3__py3-none-any.whl → 1.1.5__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 (247) 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/WEIGHT_CONFIG_README.md +1 -1
  8. runbooks/cfat/assessment/compliance.py +8 -8
  9. runbooks/cfat/assessment/runner.py +1 -0
  10. runbooks/cfat/cloud_foundations_assessment.py +227 -239
  11. runbooks/cfat/models.py +6 -2
  12. runbooks/cfat/tests/__init__.py +6 -1
  13. runbooks/cli/__init__.py +13 -0
  14. runbooks/cli/commands/cfat.py +274 -0
  15. runbooks/cli/commands/finops.py +1164 -0
  16. runbooks/cli/commands/inventory.py +379 -0
  17. runbooks/cli/commands/operate.py +239 -0
  18. runbooks/cli/commands/security.py +248 -0
  19. runbooks/cli/commands/validation.py +825 -0
  20. runbooks/cli/commands/vpc.py +310 -0
  21. runbooks/cli/registry.py +107 -0
  22. runbooks/cloudops/__init__.py +23 -30
  23. runbooks/cloudops/base.py +96 -107
  24. runbooks/cloudops/cost_optimizer.py +549 -547
  25. runbooks/cloudops/infrastructure_optimizer.py +5 -4
  26. runbooks/cloudops/interfaces.py +226 -227
  27. runbooks/cloudops/lifecycle_manager.py +5 -4
  28. runbooks/cloudops/mcp_cost_validation.py +252 -235
  29. runbooks/cloudops/models.py +78 -53
  30. runbooks/cloudops/monitoring_automation.py +5 -4
  31. runbooks/cloudops/notebook_framework.py +179 -215
  32. runbooks/cloudops/security_enforcer.py +125 -159
  33. runbooks/common/accuracy_validator.py +11 -0
  34. runbooks/common/aws_pricing.py +349 -326
  35. runbooks/common/aws_pricing_api.py +211 -212
  36. runbooks/common/aws_profile_manager.py +341 -0
  37. runbooks/common/aws_utils.py +75 -80
  38. runbooks/common/business_logic.py +127 -105
  39. runbooks/common/cli_decorators.py +36 -60
  40. runbooks/common/comprehensive_cost_explorer_integration.py +456 -464
  41. runbooks/common/cross_account_manager.py +198 -205
  42. runbooks/common/date_utils.py +27 -39
  43. runbooks/common/decorators.py +235 -0
  44. runbooks/common/dry_run_examples.py +173 -208
  45. runbooks/common/dry_run_framework.py +157 -155
  46. runbooks/common/enhanced_exception_handler.py +15 -4
  47. runbooks/common/enhanced_logging_example.py +50 -64
  48. runbooks/common/enhanced_logging_integration_example.py +65 -37
  49. runbooks/common/env_utils.py +16 -16
  50. runbooks/common/error_handling.py +40 -38
  51. runbooks/common/lazy_loader.py +41 -23
  52. runbooks/common/logging_integration_helper.py +79 -86
  53. runbooks/common/mcp_cost_explorer_integration.py +478 -495
  54. runbooks/common/mcp_integration.py +63 -74
  55. runbooks/common/memory_optimization.py +140 -118
  56. runbooks/common/module_cli_base.py +37 -58
  57. runbooks/common/organizations_client.py +176 -194
  58. runbooks/common/patterns.py +204 -0
  59. runbooks/common/performance_monitoring.py +67 -71
  60. runbooks/common/performance_optimization_engine.py +283 -274
  61. runbooks/common/profile_utils.py +248 -39
  62. runbooks/common/rich_utils.py +643 -92
  63. runbooks/common/sre_performance_suite.py +177 -186
  64. runbooks/enterprise/__init__.py +1 -1
  65. runbooks/enterprise/logging.py +144 -106
  66. runbooks/enterprise/security.py +187 -204
  67. runbooks/enterprise/validation.py +43 -56
  68. runbooks/finops/__init__.py +29 -33
  69. runbooks/finops/account_resolver.py +1 -1
  70. runbooks/finops/advanced_optimization_engine.py +980 -0
  71. runbooks/finops/automation_core.py +268 -231
  72. runbooks/finops/business_case_config.py +184 -179
  73. runbooks/finops/cli.py +660 -139
  74. runbooks/finops/commvault_ec2_analysis.py +157 -164
  75. runbooks/finops/compute_cost_optimizer.py +336 -320
  76. runbooks/finops/config.py +20 -20
  77. runbooks/finops/cost_optimizer.py +488 -622
  78. runbooks/finops/cost_processor.py +332 -214
  79. runbooks/finops/dashboard_runner.py +1006 -172
  80. runbooks/finops/ebs_cost_optimizer.py +991 -657
  81. runbooks/finops/elastic_ip_optimizer.py +317 -257
  82. runbooks/finops/enhanced_mcp_integration.py +340 -0
  83. runbooks/finops/enhanced_progress.py +40 -37
  84. runbooks/finops/enhanced_trend_visualization.py +3 -2
  85. runbooks/finops/enterprise_wrappers.py +230 -292
  86. runbooks/finops/executive_export.py +203 -160
  87. runbooks/finops/helpers.py +130 -288
  88. runbooks/finops/iam_guidance.py +1 -1
  89. runbooks/finops/infrastructure/__init__.py +80 -0
  90. runbooks/finops/infrastructure/commands.py +506 -0
  91. runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
  92. runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
  93. runbooks/finops/markdown_exporter.py +338 -175
  94. runbooks/finops/mcp_validator.py +1952 -0
  95. runbooks/finops/nat_gateway_optimizer.py +1513 -482
  96. runbooks/finops/network_cost_optimizer.py +657 -587
  97. runbooks/finops/notebook_utils.py +226 -188
  98. runbooks/finops/optimization_engine.py +1136 -0
  99. runbooks/finops/optimizer.py +25 -29
  100. runbooks/finops/rds_snapshot_optimizer.py +367 -411
  101. runbooks/finops/reservation_optimizer.py +427 -363
  102. runbooks/finops/scenario_cli_integration.py +77 -78
  103. runbooks/finops/scenarios.py +1278 -439
  104. runbooks/finops/schemas.py +218 -182
  105. runbooks/finops/snapshot_manager.py +2289 -0
  106. runbooks/finops/tests/test_finops_dashboard.py +3 -3
  107. runbooks/finops/tests/test_reference_images_validation.py +2 -2
  108. runbooks/finops/tests/test_single_account_features.py +17 -17
  109. runbooks/finops/tests/validate_test_suite.py +1 -1
  110. runbooks/finops/types.py +3 -3
  111. runbooks/finops/validation_framework.py +263 -269
  112. runbooks/finops/vpc_cleanup_exporter.py +191 -146
  113. runbooks/finops/vpc_cleanup_optimizer.py +593 -575
  114. runbooks/finops/workspaces_analyzer.py +171 -182
  115. runbooks/hitl/enhanced_workflow_engine.py +1 -1
  116. runbooks/integration/__init__.py +89 -0
  117. runbooks/integration/mcp_integration.py +1920 -0
  118. runbooks/inventory/CLAUDE.md +816 -0
  119. runbooks/inventory/README.md +3 -3
  120. runbooks/inventory/Tests/common_test_data.py +30 -30
  121. runbooks/inventory/__init__.py +2 -2
  122. runbooks/inventory/cloud_foundations_integration.py +144 -149
  123. runbooks/inventory/collectors/aws_comprehensive.py +28 -11
  124. runbooks/inventory/collectors/aws_networking.py +111 -101
  125. runbooks/inventory/collectors/base.py +4 -0
  126. runbooks/inventory/core/collector.py +495 -313
  127. runbooks/inventory/discovery.md +2 -2
  128. runbooks/inventory/drift_detection_cli.py +69 -96
  129. runbooks/inventory/find_ec2_security_groups.py +1 -1
  130. runbooks/inventory/inventory_mcp_cli.py +48 -46
  131. runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
  132. runbooks/inventory/mcp_inventory_validator.py +549 -465
  133. runbooks/inventory/mcp_vpc_validator.py +359 -442
  134. runbooks/inventory/organizations_discovery.py +56 -52
  135. runbooks/inventory/rich_inventory_display.py +33 -32
  136. runbooks/inventory/unified_validation_engine.py +278 -251
  137. runbooks/inventory/vpc_analyzer.py +733 -696
  138. runbooks/inventory/vpc_architecture_validator.py +293 -348
  139. runbooks/inventory/vpc_dependency_analyzer.py +382 -378
  140. runbooks/inventory/vpc_flow_analyzer.py +3 -3
  141. runbooks/main.py +152 -9147
  142. runbooks/main_final.py +91 -60
  143. runbooks/main_minimal.py +22 -10
  144. runbooks/main_optimized.py +131 -100
  145. runbooks/main_ultra_minimal.py +7 -2
  146. runbooks/mcp/__init__.py +36 -0
  147. runbooks/mcp/integration.py +679 -0
  148. runbooks/metrics/dora_metrics_engine.py +2 -2
  149. runbooks/monitoring/performance_monitor.py +9 -4
  150. runbooks/operate/dynamodb_operations.py +3 -1
  151. runbooks/operate/ec2_operations.py +145 -137
  152. runbooks/operate/iam_operations.py +146 -152
  153. runbooks/operate/mcp_integration.py +1 -1
  154. runbooks/operate/networking_cost_heatmap.py +33 -10
  155. runbooks/operate/privatelink_operations.py +1 -1
  156. runbooks/operate/rds_operations.py +223 -254
  157. runbooks/operate/s3_operations.py +107 -118
  158. runbooks/operate/vpc_endpoints.py +1 -1
  159. runbooks/operate/vpc_operations.py +648 -618
  160. runbooks/remediation/base.py +1 -1
  161. runbooks/remediation/commons.py +10 -7
  162. runbooks/remediation/commvault_ec2_analysis.py +71 -67
  163. runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
  164. runbooks/remediation/multi_account.py +24 -21
  165. runbooks/remediation/rds_snapshot_list.py +91 -65
  166. runbooks/remediation/remediation_cli.py +92 -146
  167. runbooks/remediation/universal_account_discovery.py +83 -79
  168. runbooks/remediation/workspaces_list.py +49 -44
  169. runbooks/security/__init__.py +19 -0
  170. runbooks/security/assessment_runner.py +1150 -0
  171. runbooks/security/baseline_checker.py +812 -0
  172. runbooks/security/cloudops_automation_security_validator.py +509 -535
  173. runbooks/security/compliance_automation_engine.py +17 -17
  174. runbooks/security/config/__init__.py +2 -2
  175. runbooks/security/config/compliance_config.py +50 -50
  176. runbooks/security/config_template_generator.py +63 -76
  177. runbooks/security/enterprise_security_framework.py +1 -1
  178. runbooks/security/executive_security_dashboard.py +519 -508
  179. runbooks/security/integration_test_enterprise_security.py +5 -3
  180. runbooks/security/multi_account_security_controls.py +959 -1210
  181. runbooks/security/real_time_security_monitor.py +422 -444
  182. runbooks/security/run_script.py +1 -1
  183. runbooks/security/security_baseline_tester.py +1 -1
  184. runbooks/security/security_cli.py +143 -112
  185. runbooks/security/test_2way_validation.py +439 -0
  186. runbooks/security/two_way_validation_framework.py +852 -0
  187. runbooks/sre/mcp_reliability_engine.py +6 -6
  188. runbooks/sre/production_monitoring_framework.py +167 -177
  189. runbooks/tdd/__init__.py +15 -0
  190. runbooks/tdd/cli.py +1071 -0
  191. runbooks/utils/__init__.py +14 -17
  192. runbooks/utils/logger.py +7 -2
  193. runbooks/utils/version_validator.py +51 -48
  194. runbooks/validation/__init__.py +6 -6
  195. runbooks/validation/cli.py +9 -3
  196. runbooks/validation/comprehensive_2way_validator.py +754 -708
  197. runbooks/validation/mcp_validator.py +906 -228
  198. runbooks/validation/terraform_citations_validator.py +104 -115
  199. runbooks/validation/terraform_drift_detector.py +447 -451
  200. runbooks/vpc/README.md +617 -0
  201. runbooks/vpc/__init__.py +8 -1
  202. runbooks/vpc/analyzer.py +577 -0
  203. runbooks/vpc/cleanup_wrapper.py +476 -413
  204. runbooks/vpc/cli_cloudtrail_commands.py +339 -0
  205. runbooks/vpc/cli_mcp_validation_commands.py +480 -0
  206. runbooks/vpc/cloudtrail_audit_integration.py +717 -0
  207. runbooks/vpc/config.py +92 -97
  208. runbooks/vpc/cost_engine.py +411 -148
  209. runbooks/vpc/cost_explorer_integration.py +553 -0
  210. runbooks/vpc/cross_account_session.py +101 -106
  211. runbooks/vpc/enhanced_mcp_validation.py +917 -0
  212. runbooks/vpc/eni_gate_validator.py +961 -0
  213. runbooks/vpc/heatmap_engine.py +190 -162
  214. runbooks/vpc/mcp_no_eni_validator.py +681 -640
  215. runbooks/vpc/nat_gateway_optimizer.py +358 -0
  216. runbooks/vpc/networking_wrapper.py +15 -8
  217. runbooks/vpc/pdca_remediation_planner.py +528 -0
  218. runbooks/vpc/performance_optimized_analyzer.py +219 -231
  219. runbooks/vpc/runbooks_adapter.py +1167 -241
  220. runbooks/vpc/tdd_red_phase_stubs.py +601 -0
  221. runbooks/vpc/test_data_loader.py +358 -0
  222. runbooks/vpc/tests/conftest.py +314 -4
  223. runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
  224. runbooks/vpc/tests/test_cost_engine.py +0 -2
  225. runbooks/vpc/topology_generator.py +326 -0
  226. runbooks/vpc/unified_scenarios.py +1302 -1129
  227. runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
  228. runbooks-1.1.5.dist-info/METADATA +328 -0
  229. {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/RECORD +233 -200
  230. runbooks/finops/README.md +0 -414
  231. runbooks/finops/accuracy_cross_validator.py +0 -647
  232. runbooks/finops/business_cases.py +0 -950
  233. runbooks/finops/dashboard_router.py +0 -922
  234. runbooks/finops/ebs_optimizer.py +0 -956
  235. runbooks/finops/embedded_mcp_validator.py +0 -1629
  236. runbooks/finops/enhanced_dashboard_runner.py +0 -527
  237. runbooks/finops/finops_dashboard.py +0 -584
  238. runbooks/finops/finops_scenarios.py +0 -1218
  239. runbooks/finops/legacy_migration.py +0 -730
  240. runbooks/finops/multi_dashboard.py +0 -1519
  241. runbooks/finops/single_dashboard.py +0 -1113
  242. runbooks/finops/unlimited_scenarios.py +0 -393
  243. runbooks-1.1.3.dist-info/METADATA +0 -799
  244. {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/WHEEL +0 -0
  245. {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/entry_points.txt +0 -0
  246. {runbooks-1.1.3.dist-info → runbooks-1.1.5.dist-info}/licenses/LICENSE +0 -0
  247. {runbooks-1.1.3.dist-info → runbooks-1.1.5.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()