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
@@ -60,11 +60,33 @@ def create_vpc_group():
60
60
  @click.option("--cost-optimization", is_flag=True, help="Include cost optimization analysis")
61
61
  @click.option("--topology-analysis", is_flag=True, help="Include network topology analysis")
62
62
  @click.option("--security-assessment", is_flag=True, help="Include security configuration review")
63
- @click.option("--savings-target", type=click.FloatRange(0.1, 0.8), default=0.3,
64
- help="Target savings percentage for optimization")
63
+ @click.option(
64
+ "--savings-target",
65
+ type=click.FloatRange(0.1, 0.8),
66
+ default=0.3,
67
+ help="Target savings percentage for optimization",
68
+ )
65
69
  @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account VPC analysis")
70
+ @click.option(
71
+ "--config",
72
+ type=click.Path(exists=True),
73
+ help="Path to YAML campaign configuration file (config-driven analysis)",
74
+ )
66
75
  @click.pass_context
67
- def analyze(ctx, profile, region, dry_run, output_format, output_file, cost_optimization, topology_analysis, security_assessment, savings_target, all):
76
+ def analyze(
77
+ ctx,
78
+ profile,
79
+ region,
80
+ dry_run,
81
+ output_format,
82
+ output_file,
83
+ cost_optimization,
84
+ topology_analysis,
85
+ security_assessment,
86
+ savings_target,
87
+ all,
88
+ config,
89
+ ):
68
90
  """
69
91
  Comprehensive VPC analysis with cost optimization and security assessment with universal profile support.
70
92
 
@@ -74,28 +96,53 @@ def create_vpc_group():
74
96
  • NAT Gateway and VPC endpoint optimization
75
97
  • Multi-account network topology mapping
76
98
  • Cross-account VPC analysis with --all flag
99
+ • Config-driven campaign analysis with --config (NEW)
77
100
 
78
101
  Examples:
79
102
  runbooks vpc analyze --cost-optimization --savings-target 0.25
80
103
  runbooks vpc analyze --topology-analysis --security-assessment
81
104
  runbooks vpc analyze --export-format pdf --cost-optimization
82
105
  runbooks vpc analyze --all --cost-optimization # Multi-account analysis
106
+ runbooks vpc analyze --config campaign.yaml --profile billing-profile # Config-driven campaign
83
107
  """
84
108
  try:
85
- from runbooks.vpc.analyzer import VPCAnalyzer
86
109
  from runbooks.common.profile_utils import get_profile_for_operation
87
110
  from runbooks.common.rich_utils import handle_output_format
88
111
 
89
112
  # Use ProfileManager for dynamic profile resolution
90
113
  resolved_profile = get_profile_for_operation("operational", profile)
91
114
 
115
+ # NEW: Config-driven campaign analysis
116
+ if config:
117
+ from runbooks.vpc import VPCCleanupFramework
118
+ from runbooks.vpc.cleanup_wrapper import display_config_campaign_results
119
+
120
+ cleanup_framework = VPCCleanupFramework(profile=resolved_profile, region=region, safety_mode=True)
121
+
122
+ results = cleanup_framework.analyze_from_config(config)
123
+ display_config_campaign_results(results)
124
+
125
+ # Export if requested
126
+ if output_file:
127
+ handle_output_format(
128
+ data=results,
129
+ output_format=output_format,
130
+ output_file=output_file,
131
+ title=f"Campaign {results.get('campaign_metadata', {}).get('campaign_id', 'Unknown')} Results",
132
+ )
133
+
134
+ return results
135
+
136
+ # EXISTING: Standard VPC analysis (unchanged)
137
+ from runbooks.vpc.analyzer import VPCAnalyzer
138
+
92
139
  analyzer = VPCAnalyzer(
93
140
  profile=resolved_profile,
94
141
  region=region,
95
142
  cost_optimization=cost_optimization,
96
143
  topology_analysis=topology_analysis,
97
144
  security_assessment=security_assessment,
98
- savings_target=savings_target
145
+ savings_target=savings_target,
99
146
  )
100
147
 
101
148
  analysis_results = analyzer.run_comprehensive_analysis()
@@ -105,7 +152,7 @@ def create_vpc_group():
105
152
  data=analysis_results,
106
153
  output_format=output_format,
107
154
  output_file=output_file,
108
- title="VPC Analysis Results"
155
+ title="VPC Analysis Results",
109
156
  )
110
157
 
111
158
  return analysis_results
@@ -122,12 +169,23 @@ def create_vpc_group():
122
169
  @common_output_options
123
170
  @click.option("--analyze", is_flag=True, help="Analyze NAT Gateway usage and costs")
124
171
  @click.option("--optimize", is_flag=True, help="Generate optimization recommendations")
125
- @click.option("--savings-target", type=click.FloatRange(0.1, 0.8), default=0.3,
126
- help="Target savings percentage")
172
+ @click.option("--savings-target", type=click.FloatRange(0.1, 0.8), default=0.3, help="Target savings percentage")
127
173
  @click.option("--include-alternatives", is_flag=True, help="Include NAT instance alternatives")
128
174
  @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account NAT Gateway analysis")
129
175
  @click.pass_context
130
- def nat_gateway_operations(ctx, profile, region, dry_run, output_format, output_file, analyze, optimize, savings_target, include_alternatives, all):
176
+ def nat_gateway_operations(
177
+ ctx,
178
+ profile,
179
+ region,
180
+ dry_run,
181
+ output_format,
182
+ output_file,
183
+ analyze,
184
+ optimize,
185
+ savings_target,
186
+ include_alternatives,
187
+ all,
188
+ ):
131
189
  """
132
190
  NAT Gateway cost analysis and optimization recommendations with universal profile support.
133
191
 
@@ -158,7 +216,7 @@ def create_vpc_group():
158
216
  analyze=analyze,
159
217
  optimize=optimize,
160
218
  savings_target=savings_target,
161
- include_alternatives=include_alternatives
219
+ include_alternatives=include_alternatives,
162
220
  )
163
221
 
164
222
  optimization_results = optimizer.run_nat_gateway_optimization()
@@ -168,7 +226,7 @@ def create_vpc_group():
168
226
  data=optimization_results,
169
227
  output_format=output_format,
170
228
  output_file=output_file,
171
- title="NAT Gateway Optimization Results"
229
+ title="NAT Gateway Optimization Results",
172
230
  )
173
231
 
174
232
  return optimization_results
@@ -184,12 +242,18 @@ def create_vpc_group():
184
242
  @common_aws_options
185
243
  @common_output_options
186
244
  @click.option("--include-costs", is_flag=True, help="Include cost analysis in topology")
187
- @click.option("--detail-level", type=click.Choice(['basic', 'detailed', 'comprehensive']),
188
- default='detailed', help="Topology detail level")
245
+ @click.option(
246
+ "--detail-level",
247
+ type=click.Choice(["basic", "detailed", "comprehensive"]),
248
+ default="detailed",
249
+ help="Topology detail level",
250
+ )
189
251
  @click.option("--output-dir", default="./vpc_topology", help="Output directory")
190
252
  @click.option("--all", is_flag=True, help="Use all available AWS profiles for multi-account topology generation")
191
253
  @click.pass_context
192
- def topology(ctx, profile, region, dry_run, output_format, output_file, include_costs, detail_level, output_dir, all):
254
+ def topology(
255
+ ctx, profile, region, dry_run, output_format, output_file, include_costs, detail_level, output_dir, all
256
+ ):
193
257
  """
194
258
  Generate network topology diagrams with cost correlation and universal profile support.
195
259
 
@@ -218,7 +282,7 @@ def create_vpc_group():
218
282
  region=region,
219
283
  include_costs=include_costs,
220
284
  detail_level=detail_level,
221
- output_dir=output_dir
285
+ output_dir=output_dir,
222
286
  )
223
287
 
224
288
  topology_results = topology_generator.generate_network_topology()
@@ -228,7 +292,7 @@ def create_vpc_group():
228
292
  data=topology_results,
229
293
  output_format=output_format,
230
294
  output_file=output_file,
231
- title="Network Topology Analysis"
295
+ title="Network Topology Analysis",
232
296
  )
233
297
 
234
298
  console.print(f"[green]✅ Network topology generated successfully[/green]")
@@ -243,4 +307,4 @@ def create_vpc_group():
243
307
  console.print(f"[red]❌ VPC topology generation failed: {e}[/red]")
244
308
  raise click.ClickException(str(e))
245
309
 
246
- return vpc
310
+ return vpc
runbooks/cli/registry.py CHANGED
@@ -49,15 +49,27 @@ class DRYCommandRegistry:
49
49
  try:
50
50
  from .commands import inventory, operate, finops, security, cfat, vpc, validation
51
51
 
52
- cls._commands.update({
53
- 'inventory': inventory.create_inventory_group(),
54
- 'operate': operate.create_operate_group(),
55
- 'finops': finops.create_finops_group(),
56
- 'security': security.create_security_group(),
57
- 'cfat': cfat.create_cfat_group(),
58
- 'vpc': vpc.create_vpc_group(),
59
- 'validation': validation.create_validation_group(),
60
- })
52
+ # Core production commands
53
+ cls._commands.update(
54
+ {
55
+ "inventory": inventory.create_inventory_group(),
56
+ "operate": operate.create_operate_group(),
57
+ "finops": finops.create_finops_group(),
58
+ "security": security.create_security_group(),
59
+ "cfat": cfat.create_cfat_group(),
60
+ "vpc": vpc.create_vpc_group(),
61
+ "validation": validation.create_validation_group(),
62
+ }
63
+ )
64
+
65
+ # Optional TDD framework - load separately to avoid breaking core CLI
66
+ try:
67
+ from runbooks.tdd.cli import tdd_group
68
+
69
+ cls._commands["tdd"] = tdd_group
70
+ except ImportError:
71
+ # TDD framework not available - continue with core commands
72
+ pass
61
73
 
62
74
  cls._loaded = True
63
75
 
@@ -92,4 +104,4 @@ class DRYCommandRegistry:
92
104
  def reset(cls):
93
105
  """Reset registry for testing purposes."""
94
106
  cls._commands.clear()
95
- cls._loaded = False
107
+ cls._loaded = False
@@ -19,7 +19,7 @@ NEW: Business Interface Layer for Notebook Usage
19
19
 
20
20
  # Core async API classes (for advanced users)
21
21
  from .cost_optimizer import CostOptimizer
22
- from .security_enforcer import SecurityEnforcer
22
+ from .security_enforcer import SecurityEnforcer
23
23
  from .lifecycle_manager import ResourceLifecycleManager
24
24
  from .infrastructure_optimizer import InfrastructureOptimizer
25
25
  from .monitoring_automation import MonitoringAutomation
@@ -31,16 +31,11 @@ from .interfaces import (
31
31
  optimize_unused_resources,
32
32
  governance_campaign,
33
33
  security_incident_response,
34
- optimize_infrastructure
34
+ optimize_infrastructure,
35
35
  )
36
36
 
37
37
  # Enterprise Notebook Framework (NEW in latest version)
38
- from .notebook_framework import (
39
- NotebookFramework,
40
- NotebookMode,
41
- AuthenticationStatus,
42
- ScenarioMetadata
43
- )
38
+ from .notebook_framework import NotebookFramework, NotebookMode, AuthenticationStatus, ScenarioMetadata
44
39
 
45
40
  # Type-safe models
46
41
  from .models import (
@@ -48,7 +43,7 @@ from .models import (
48
43
  CostOptimizationResult,
49
44
  SecurityEnforcementResult,
50
45
  BusinessScenario,
51
- ResourceImpact
46
+ ResourceImpact,
52
47
  )
53
48
 
54
49
  # Import centralized version from main runbooks package
@@ -61,29 +56,26 @@ __all__ = [
61
56
  "BusinessResultSummary",
62
57
  "emergency_cost_response",
63
58
  "optimize_unused_resources",
64
- "governance_campaign",
59
+ "governance_campaign",
65
60
  "security_incident_response",
66
61
  "optimize_infrastructure",
67
-
68
62
  # ENTERPRISE NOTEBOOK FRAMEWORK (latest version)
69
63
  "NotebookFramework",
70
- "NotebookMode",
64
+ "NotebookMode",
71
65
  "AuthenticationStatus",
72
66
  "ScenarioMetadata",
73
-
74
67
  # ADVANCED: Core API Classes (async operations)
75
- "CostOptimizer",
68
+ "CostOptimizer",
76
69
  "SecurityEnforcer",
77
- "ResourceLifecycleManager",
70
+ "ResourceLifecycleManager",
78
71
  "InfrastructureOptimizer",
79
72
  "MonitoringAutomation",
80
-
81
73
  # Type-Safe Models
82
74
  "CloudOpsExecutionResult",
83
- "CostOptimizationResult",
75
+ "CostOptimizationResult",
84
76
  "SecurityEnforcementResult",
85
77
  "BusinessScenario",
86
- "ResourceImpact"
78
+ "ResourceImpact",
87
79
  ]
88
80
 
89
81
  # Enterprise Usage Examples - Business Interface Layer
@@ -91,35 +83,36 @@ BUSINESS_SCENARIO_EXAMPLES = {
91
83
  "notebook_consolidation": {
92
84
  "description": "Enterprise notebook framework for consolidated scenarios (NEW in latest version)",
93
85
  "simple_example": "from runbooks.cloudops import NotebookFramework, NotebookMode; framework = NotebookFramework(profile='default', mode=NotebookMode.EXECUTIVE)",
94
- "advanced_example": "See notebooks/cloudops/consolidated-cost-optimization.ipynb for comprehensive example"
86
+ "advanced_example": "See notebooks/cloudops/consolidated-cost-optimization.ipynb for comprehensive example",
95
87
  },
96
88
  "cost_emergency": {
97
89
  "description": "Emergency cost optimization for $10K+ monthly spikes",
98
90
  "simple_example": "from runbooks.cloudops import emergency_cost_response; result = emergency_cost_response(profile='billing', cost_spike_threshold=25000)",
99
- "advanced_example": "from runbooks.cloudops import CostOptimizer; optimizer = CostOptimizer(); optimizer.optimize_nat_gateways()"
91
+ "advanced_example": "from runbooks.cloudops import CostOptimizer; optimizer = CostOptimizer(); optimizer.optimize_nat_gateways()",
100
92
  },
101
93
  "unused_resources": {
102
94
  "description": "Find unused AWS resources for immediate cost savings",
103
95
  "simple_example": "from runbooks.cloudops import optimize_unused_resources; result = optimize_unused_resources(profile='operations', minimum_cost_threshold=50)",
104
- "advanced_example": "from runbooks.cloudops import CostOptimizer; optimizer = CostOptimizer(); optimizer.optimize_idle_ec2_instances()"
96
+ "advanced_example": "from runbooks.cloudops import CostOptimizer; optimizer = CostOptimizer(); optimizer.optimize_idle_ec2_instances()",
105
97
  },
106
98
  "security_incident": {
107
- "description": "Automated security compliance remediation",
99
+ "description": "Automated security compliance remediation",
108
100
  "simple_example": "from runbooks.cloudops import security_incident_response; result = security_incident_response(profile='security', incident_type='s3_encryption')",
109
- "advanced_example": "from runbooks.cloudops import SecurityEnforcer; enforcer = SecurityEnforcer(); enforcer.enforce_s3_encryption()"
101
+ "advanced_example": "from runbooks.cloudops import SecurityEnforcer; enforcer = SecurityEnforcer(); enforcer.enforce_s3_encryption()",
110
102
  },
111
103
  "governance_campaign": {
112
104
  "description": "Multi-account governance and cleanup operations",
113
105
  "simple_example": "from runbooks.cloudops import governance_campaign; result = governance_campaign(management_profile='org-management', scope='organization')",
114
- "advanced_example": "from runbooks.cloudops import ResourceLifecycleManager; manager = ResourceLifecycleManager(); manager.enforce_tagging_standards()"
106
+ "advanced_example": "from runbooks.cloudops import ResourceLifecycleManager; manager = ResourceLifecycleManager(); manager.enforce_tagging_standards()",
115
107
  },
116
108
  "infrastructure_optimization": {
117
109
  "description": "Infrastructure optimization and performance recovery",
118
110
  "simple_example": "from runbooks.cloudops import optimize_infrastructure; result = optimize_infrastructure(profile='operations', cost_reduction_target=25)",
119
- "advanced_example": "from runbooks.cloudops import InfrastructureOptimizer; optimizer = InfrastructureOptimizer(); optimizer.optimize_load_balancers()"
120
- }
111
+ "advanced_example": "from runbooks.cloudops import InfrastructureOptimizer; optimizer = InfrastructureOptimizer(); optimizer.optimize_load_balancers()",
112
+ },
121
113
  }
122
114
 
115
+
123
116
  def get_business_scenarios():
124
117
  """Get available business scenarios with examples."""
125
- return BUSINESS_SCENARIO_EXAMPLES
118
+ return BUSINESS_SCENARIO_EXAMPLES