runbooks 1.1.4__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 (228) 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 +138 -35
  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 +11 -0
  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 +63 -74
  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 +201 -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/cloud_foundations_integration.py +144 -149
  113. runbooks/inventory/collectors/aws_comprehensive.py +1 -1
  114. runbooks/inventory/collectors/aws_networking.py +109 -99
  115. runbooks/inventory/collectors/base.py +4 -0
  116. runbooks/inventory/core/collector.py +495 -313
  117. runbooks/inventory/drift_detection_cli.py +69 -96
  118. runbooks/inventory/inventory_mcp_cli.py +48 -46
  119. runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
  120. runbooks/inventory/mcp_inventory_validator.py +549 -465
  121. runbooks/inventory/mcp_vpc_validator.py +359 -442
  122. runbooks/inventory/organizations_discovery.py +55 -51
  123. runbooks/inventory/rich_inventory_display.py +33 -32
  124. runbooks/inventory/unified_validation_engine.py +278 -251
  125. runbooks/inventory/vpc_analyzer.py +732 -695
  126. runbooks/inventory/vpc_architecture_validator.py +293 -348
  127. runbooks/inventory/vpc_dependency_analyzer.py +382 -378
  128. runbooks/inventory/vpc_flow_analyzer.py +1 -1
  129. runbooks/main.py +49 -34
  130. runbooks/main_final.py +91 -60
  131. runbooks/main_minimal.py +22 -10
  132. runbooks/main_optimized.py +131 -100
  133. runbooks/main_ultra_minimal.py +7 -2
  134. runbooks/mcp/__init__.py +36 -0
  135. runbooks/mcp/integration.py +679 -0
  136. runbooks/monitoring/performance_monitor.py +9 -4
  137. runbooks/operate/dynamodb_operations.py +3 -1
  138. runbooks/operate/ec2_operations.py +145 -137
  139. runbooks/operate/iam_operations.py +146 -152
  140. runbooks/operate/networking_cost_heatmap.py +29 -8
  141. runbooks/operate/rds_operations.py +223 -254
  142. runbooks/operate/s3_operations.py +107 -118
  143. runbooks/operate/vpc_operations.py +646 -616
  144. runbooks/remediation/base.py +1 -1
  145. runbooks/remediation/commons.py +10 -7
  146. runbooks/remediation/commvault_ec2_analysis.py +70 -66
  147. runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
  148. runbooks/remediation/multi_account.py +24 -21
  149. runbooks/remediation/rds_snapshot_list.py +86 -60
  150. runbooks/remediation/remediation_cli.py +92 -146
  151. runbooks/remediation/universal_account_discovery.py +83 -79
  152. runbooks/remediation/workspaces_list.py +46 -41
  153. runbooks/security/__init__.py +19 -0
  154. runbooks/security/assessment_runner.py +1150 -0
  155. runbooks/security/baseline_checker.py +812 -0
  156. runbooks/security/cloudops_automation_security_validator.py +509 -535
  157. runbooks/security/compliance_automation_engine.py +17 -17
  158. runbooks/security/config/__init__.py +2 -2
  159. runbooks/security/config/compliance_config.py +50 -50
  160. runbooks/security/config_template_generator.py +63 -76
  161. runbooks/security/enterprise_security_framework.py +1 -1
  162. runbooks/security/executive_security_dashboard.py +519 -508
  163. runbooks/security/multi_account_security_controls.py +959 -1210
  164. runbooks/security/real_time_security_monitor.py +422 -444
  165. runbooks/security/security_baseline_tester.py +1 -1
  166. runbooks/security/security_cli.py +143 -112
  167. runbooks/security/test_2way_validation.py +439 -0
  168. runbooks/security/two_way_validation_framework.py +852 -0
  169. runbooks/sre/production_monitoring_framework.py +167 -177
  170. runbooks/tdd/__init__.py +15 -0
  171. runbooks/tdd/cli.py +1071 -0
  172. runbooks/utils/__init__.py +14 -17
  173. runbooks/utils/logger.py +7 -2
  174. runbooks/utils/version_validator.py +50 -47
  175. runbooks/validation/__init__.py +6 -6
  176. runbooks/validation/cli.py +9 -3
  177. runbooks/validation/comprehensive_2way_validator.py +745 -704
  178. runbooks/validation/mcp_validator.py +906 -228
  179. runbooks/validation/terraform_citations_validator.py +104 -115
  180. runbooks/validation/terraform_drift_detector.py +447 -451
  181. runbooks/vpc/README.md +617 -0
  182. runbooks/vpc/__init__.py +8 -1
  183. runbooks/vpc/analyzer.py +577 -0
  184. runbooks/vpc/cleanup_wrapper.py +476 -413
  185. runbooks/vpc/cli_cloudtrail_commands.py +339 -0
  186. runbooks/vpc/cli_mcp_validation_commands.py +480 -0
  187. runbooks/vpc/cloudtrail_audit_integration.py +717 -0
  188. runbooks/vpc/config.py +92 -97
  189. runbooks/vpc/cost_engine.py +411 -148
  190. runbooks/vpc/cost_explorer_integration.py +553 -0
  191. runbooks/vpc/cross_account_session.py +101 -106
  192. runbooks/vpc/enhanced_mcp_validation.py +917 -0
  193. runbooks/vpc/eni_gate_validator.py +961 -0
  194. runbooks/vpc/heatmap_engine.py +185 -160
  195. runbooks/vpc/mcp_no_eni_validator.py +680 -639
  196. runbooks/vpc/nat_gateway_optimizer.py +358 -0
  197. runbooks/vpc/networking_wrapper.py +15 -8
  198. runbooks/vpc/pdca_remediation_planner.py +528 -0
  199. runbooks/vpc/performance_optimized_analyzer.py +219 -231
  200. runbooks/vpc/runbooks_adapter.py +1167 -241
  201. runbooks/vpc/tdd_red_phase_stubs.py +601 -0
  202. runbooks/vpc/test_data_loader.py +358 -0
  203. runbooks/vpc/tests/conftest.py +314 -4
  204. runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
  205. runbooks/vpc/tests/test_cost_engine.py +0 -2
  206. runbooks/vpc/topology_generator.py +326 -0
  207. runbooks/vpc/unified_scenarios.py +1297 -1124
  208. runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
  209. runbooks-1.1.5.dist-info/METADATA +328 -0
  210. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/RECORD +214 -193
  211. runbooks/finops/README.md +0 -414
  212. runbooks/finops/accuracy_cross_validator.py +0 -647
  213. runbooks/finops/business_cases.py +0 -950
  214. runbooks/finops/dashboard_router.py +0 -922
  215. runbooks/finops/ebs_optimizer.py +0 -973
  216. runbooks/finops/embedded_mcp_validator.py +0 -1629
  217. runbooks/finops/enhanced_dashboard_runner.py +0 -527
  218. runbooks/finops/finops_dashboard.py +0 -584
  219. runbooks/finops/finops_scenarios.py +0 -1218
  220. runbooks/finops/legacy_migration.py +0 -730
  221. runbooks/finops/multi_dashboard.py +0 -1519
  222. runbooks/finops/single_dashboard.py +0 -1113
  223. runbooks/finops/unlimited_scenarios.py +0 -393
  224. runbooks-1.1.4.dist-info/METADATA +0 -800
  225. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/WHEEL +0 -0
  226. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/entry_points.txt +0 -0
  227. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/licenses/LICENSE +0 -0
  228. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/top_level.txt +0 -0
runbooks/cli/__init__.py CHANGED
@@ -10,4 +10,4 @@ preserving 100% functionality through intelligent command organization.
10
10
 
11
11
  from .registry import DRYCommandRegistry
12
12
 
13
- __all__ = ['DRYCommandRegistry']
13
+ __all__ = ["DRYCommandRegistry"]
@@ -58,17 +58,37 @@ def create_cfat_group():
58
58
 
59
59
  @cfat.command()
60
60
  @common_aws_options
61
- @click.option("--pillar", type=click.Choice([
62
- 'operational-excellence', 'security', 'reliability',
63
- 'performance-efficiency', 'cost-optimization', 'sustainability'
64
- ]), multiple=True, help="Specific Well-Architected pillars to assess")
61
+ @click.option(
62
+ "--pillar",
63
+ type=click.Choice(
64
+ [
65
+ "operational-excellence",
66
+ "security",
67
+ "reliability",
68
+ "performance-efficiency",
69
+ "cost-optimization",
70
+ "sustainability",
71
+ ]
72
+ ),
73
+ multiple=True,
74
+ help="Specific Well-Architected pillars to assess",
75
+ )
65
76
  @click.option("--all-pillars", is_flag=True, help="Assess all Well-Architected pillars")
66
77
  @click.option("--workload-name", help="Name of the workload being assessed")
67
- @click.option("--assessment-depth", type=click.Choice(['basic', 'comprehensive', 'enterprise']),
68
- default='comprehensive', help="Assessment depth level")
69
- @click.option("--export-format", type=click.Choice(['json', 'csv', 'pdf', 'html']),
70
- help="Export format for assessment results")
71
- @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account Well-Architected assessment")
78
+ @click.option(
79
+ "--assessment-depth",
80
+ type=click.Choice(["basic", "comprehensive", "enterprise"]),
81
+ default="comprehensive",
82
+ help="Assessment depth level",
83
+ )
84
+ @click.option(
85
+ "--export-format",
86
+ type=click.Choice(["json", "csv", "pdf", "html"]),
87
+ help="Export format for assessment results",
88
+ )
89
+ @click.option(
90
+ "--all", is_flag=True, help="Use all available AWS profiles for multi-account Well-Architected assessment"
91
+ )
72
92
  @click.pass_context
73
93
  def assess(ctx, profile, region, dry_run, pillar, all_pillars, workload_name, assessment_depth, export_format, all):
74
94
  """
@@ -101,7 +121,7 @@ def create_cfat_group():
101
121
  pillars=list(pillar) if pillar else None,
102
122
  all_pillars=all_pillars,
103
123
  workload_name=workload_name or "Default Workload",
104
- assessment_depth=assessment_depth
124
+ assessment_depth=assessment_depth,
105
125
  )
106
126
 
107
127
  assessment_results = assessment.run_well_architected_assessment()
@@ -121,11 +141,14 @@ def create_cfat_group():
121
141
  @cfat.command()
122
142
  @common_aws_options
123
143
  @click.option("--workload-name", required=True, help="Name of the workload for review")
124
- @click.option("--review-type", type=click.Choice(['initial', 'milestone', 'continuous']),
125
- default='milestone', help="Type of architecture review")
144
+ @click.option(
145
+ "--review-type",
146
+ type=click.Choice(["initial", "milestone", "continuous"]),
147
+ default="milestone",
148
+ help="Type of architecture review",
149
+ )
126
150
  @click.option("--stakeholders", multiple=True, help="Stakeholder names/emails for review")
127
- @click.option("--include-recommendations", is_flag=True, default=True,
128
- help="Include remediation recommendations")
151
+ @click.option("--include-recommendations", is_flag=True, default=True, help="Include remediation recommendations")
129
152
  @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account architecture review")
130
153
  @click.pass_context
131
154
  def review(ctx, profile, region, dry_run, workload_name, review_type, stakeholders, include_recommendations, all):
@@ -157,7 +180,7 @@ def create_cfat_group():
157
180
  workload_name=workload_name,
158
181
  review_type=review_type,
159
182
  stakeholders=list(stakeholders) if stakeholders else None,
160
- include_recommendations=include_recommendations
183
+ include_recommendations=include_recommendations,
161
184
  )
162
185
 
163
186
  review_results = review_manager.conduct_architecture_review()
@@ -173,16 +196,34 @@ def create_cfat_group():
173
196
 
174
197
  @cfat.command()
175
198
  @common_aws_options
176
- @click.option("--format", "report_format", type=click.Choice(['pdf', 'html', 'markdown', 'json']),
177
- multiple=True, default=['pdf'], help="Report formats")
199
+ @click.option(
200
+ "--format",
201
+ "report_format",
202
+ type=click.Choice(["pdf", "html", "markdown", "json"]),
203
+ multiple=True,
204
+ default=["pdf"],
205
+ help="Report formats",
206
+ )
178
207
  @click.option("--executive-summary", is_flag=True, help="Generate executive summary")
179
- @click.option("--include-remediation", is_flag=True, default=True,
180
- help="Include remediation roadmap")
208
+ @click.option("--include-remediation", is_flag=True, default=True, help="Include remediation roadmap")
181
209
  @click.option("--output-dir", default="./cfat_reports", help="Output directory")
182
210
  @click.option("--workload-filter", help="Filter reports by workload name")
183
- @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account Well-Architected reporting")
211
+ @click.option(
212
+ "--all", is_flag=True, help="Use all available AWS profiles for multi-account Well-Architected reporting"
213
+ )
184
214
  @click.pass_context
185
- def report(ctx, profile, region, dry_run, report_format, executive_summary, include_remediation, output_dir, workload_filter, all):
215
+ def report(
216
+ ctx,
217
+ profile,
218
+ region,
219
+ dry_run,
220
+ report_format,
221
+ executive_summary,
222
+ include_remediation,
223
+ output_dir,
224
+ workload_filter,
225
+ all,
226
+ ):
186
227
  """
187
228
  Generate comprehensive Well-Architected assessment reports with universal profile support.
188
229
 
@@ -210,7 +251,7 @@ def create_cfat_group():
210
251
  output_dir=output_dir,
211
252
  executive_summary=executive_summary,
212
253
  include_remediation=include_remediation,
213
- workload_filter=workload_filter
254
+ workload_filter=workload_filter,
214
255
  )
215
256
 
216
257
  report_results = {}
@@ -230,4 +271,4 @@ def create_cfat_group():
230
271
  console.print(f"[red]❌ CFAT report generation failed: {e}[/red]")
231
272
  raise click.ClickException(str(e))
232
273
 
233
- return cfat
274
+ return cfat