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.
- runbooks/__init__.py +31 -2
- runbooks/__init___optimized.py +18 -4
- runbooks/_platform/__init__.py +1 -5
- runbooks/_platform/core/runbooks_wrapper.py +141 -138
- runbooks/aws2/accuracy_validator.py +812 -0
- runbooks/base.py +7 -0
- runbooks/cfat/assessment/compliance.py +1 -1
- runbooks/cfat/assessment/runner.py +1 -0
- runbooks/cfat/cloud_foundations_assessment.py +227 -239
- runbooks/cli/__init__.py +1 -1
- runbooks/cli/commands/cfat.py +64 -23
- runbooks/cli/commands/finops.py +1005 -54
- runbooks/cli/commands/inventory.py +135 -91
- runbooks/cli/commands/operate.py +9 -36
- runbooks/cli/commands/security.py +42 -18
- runbooks/cli/commands/validation.py +432 -18
- runbooks/cli/commands/vpc.py +81 -17
- runbooks/cli/registry.py +22 -10
- runbooks/cloudops/__init__.py +20 -27
- runbooks/cloudops/base.py +96 -107
- runbooks/cloudops/cost_optimizer.py +544 -542
- runbooks/cloudops/infrastructure_optimizer.py +5 -4
- runbooks/cloudops/interfaces.py +224 -225
- runbooks/cloudops/lifecycle_manager.py +5 -4
- runbooks/cloudops/mcp_cost_validation.py +252 -235
- runbooks/cloudops/models.py +78 -53
- runbooks/cloudops/monitoring_automation.py +5 -4
- runbooks/cloudops/notebook_framework.py +177 -213
- runbooks/cloudops/security_enforcer.py +125 -159
- runbooks/common/accuracy_validator.py +17 -12
- runbooks/common/aws_pricing.py +349 -326
- runbooks/common/aws_pricing_api.py +211 -212
- runbooks/common/aws_profile_manager.py +40 -36
- runbooks/common/aws_utils.py +74 -79
- runbooks/common/business_logic.py +126 -104
- runbooks/common/cli_decorators.py +36 -60
- runbooks/common/comprehensive_cost_explorer_integration.py +455 -463
- runbooks/common/cross_account_manager.py +197 -204
- runbooks/common/date_utils.py +27 -39
- runbooks/common/decorators.py +29 -19
- runbooks/common/dry_run_examples.py +173 -208
- runbooks/common/dry_run_framework.py +157 -155
- runbooks/common/enhanced_exception_handler.py +15 -4
- runbooks/common/enhanced_logging_example.py +50 -64
- runbooks/common/enhanced_logging_integration_example.py +65 -37
- runbooks/common/env_utils.py +16 -16
- runbooks/common/error_handling.py +40 -38
- runbooks/common/lazy_loader.py +41 -23
- runbooks/common/logging_integration_helper.py +79 -86
- runbooks/common/mcp_cost_explorer_integration.py +476 -493
- runbooks/common/mcp_integration.py +99 -79
- runbooks/common/memory_optimization.py +140 -118
- runbooks/common/module_cli_base.py +37 -58
- runbooks/common/organizations_client.py +175 -193
- runbooks/common/patterns.py +23 -25
- runbooks/common/performance_monitoring.py +67 -71
- runbooks/common/performance_optimization_engine.py +283 -274
- runbooks/common/profile_utils.py +111 -37
- runbooks/common/rich_utils.py +315 -141
- runbooks/common/sre_performance_suite.py +177 -186
- runbooks/enterprise/__init__.py +1 -1
- runbooks/enterprise/logging.py +144 -106
- runbooks/enterprise/security.py +187 -204
- runbooks/enterprise/validation.py +43 -56
- runbooks/finops/__init__.py +26 -30
- runbooks/finops/account_resolver.py +1 -1
- runbooks/finops/advanced_optimization_engine.py +980 -0
- runbooks/finops/automation_core.py +268 -231
- runbooks/finops/business_case_config.py +184 -179
- runbooks/finops/cli.py +660 -139
- runbooks/finops/commvault_ec2_analysis.py +157 -164
- runbooks/finops/compute_cost_optimizer.py +336 -320
- runbooks/finops/config.py +20 -20
- runbooks/finops/cost_optimizer.py +484 -618
- runbooks/finops/cost_processor.py +332 -214
- runbooks/finops/dashboard_runner.py +1006 -172
- runbooks/finops/ebs_cost_optimizer.py +991 -657
- runbooks/finops/elastic_ip_optimizer.py +317 -257
- runbooks/finops/enhanced_mcp_integration.py +340 -0
- runbooks/finops/enhanced_progress.py +32 -29
- runbooks/finops/enhanced_trend_visualization.py +3 -2
- runbooks/finops/enterprise_wrappers.py +223 -285
- runbooks/finops/executive_export.py +203 -160
- runbooks/finops/helpers.py +130 -288
- runbooks/finops/iam_guidance.py +1 -1
- runbooks/finops/infrastructure/__init__.py +80 -0
- runbooks/finops/infrastructure/commands.py +506 -0
- runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
- runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
- runbooks/finops/markdown_exporter.py +337 -174
- runbooks/finops/mcp_validator.py +1952 -0
- runbooks/finops/nat_gateway_optimizer.py +1512 -481
- runbooks/finops/network_cost_optimizer.py +657 -587
- runbooks/finops/notebook_utils.py +226 -188
- runbooks/finops/optimization_engine.py +1136 -0
- runbooks/finops/optimizer.py +19 -23
- runbooks/finops/rds_snapshot_optimizer.py +367 -411
- runbooks/finops/reservation_optimizer.py +427 -363
- runbooks/finops/scenario_cli_integration.py +64 -65
- runbooks/finops/scenarios.py +1277 -438
- runbooks/finops/schemas.py +218 -182
- runbooks/finops/snapshot_manager.py +2289 -0
- runbooks/finops/types.py +3 -3
- runbooks/finops/validation_framework.py +259 -265
- runbooks/finops/vpc_cleanup_exporter.py +189 -144
- runbooks/finops/vpc_cleanup_optimizer.py +591 -573
- runbooks/finops/workspaces_analyzer.py +171 -182
- runbooks/integration/__init__.py +89 -0
- runbooks/integration/mcp_integration.py +1920 -0
- runbooks/inventory/CLAUDE.md +816 -0
- runbooks/inventory/__init__.py +2 -2
- runbooks/inventory/aws_decorators.py +2 -3
- runbooks/inventory/check_cloudtrail_compliance.py +2 -4
- runbooks/inventory/check_controltower_readiness.py +152 -151
- runbooks/inventory/check_landingzone_readiness.py +85 -84
- runbooks/inventory/cloud_foundations_integration.py +144 -149
- runbooks/inventory/collectors/aws_comprehensive.py +1 -1
- runbooks/inventory/collectors/aws_networking.py +109 -99
- runbooks/inventory/collectors/base.py +4 -0
- runbooks/inventory/core/collector.py +495 -313
- runbooks/inventory/core/formatter.py +11 -0
- runbooks/inventory/draw_org_structure.py +8 -9
- runbooks/inventory/drift_detection_cli.py +69 -96
- runbooks/inventory/ec2_vpc_utils.py +2 -2
- runbooks/inventory/find_cfn_drift_detection.py +5 -7
- runbooks/inventory/find_cfn_orphaned_stacks.py +7 -9
- runbooks/inventory/find_cfn_stackset_drift.py +5 -6
- runbooks/inventory/find_ec2_security_groups.py +48 -42
- runbooks/inventory/find_landingzone_versions.py +4 -6
- runbooks/inventory/find_vpc_flow_logs.py +7 -9
- runbooks/inventory/inventory_mcp_cli.py +48 -46
- runbooks/inventory/inventory_modules.py +103 -91
- runbooks/inventory/list_cfn_stacks.py +9 -10
- runbooks/inventory/list_cfn_stackset_operation_results.py +1 -3
- runbooks/inventory/list_cfn_stackset_operations.py +79 -57
- runbooks/inventory/list_cfn_stacksets.py +8 -10
- runbooks/inventory/list_config_recorders_delivery_channels.py +49 -39
- runbooks/inventory/list_ds_directories.py +65 -53
- runbooks/inventory/list_ec2_availability_zones.py +2 -4
- runbooks/inventory/list_ec2_ebs_volumes.py +32 -35
- runbooks/inventory/list_ec2_instances.py +23 -28
- runbooks/inventory/list_ecs_clusters_and_tasks.py +26 -34
- runbooks/inventory/list_elbs_load_balancers.py +22 -20
- runbooks/inventory/list_enis_network_interfaces.py +26 -33
- runbooks/inventory/list_guardduty_detectors.py +2 -4
- runbooks/inventory/list_iam_policies.py +2 -4
- runbooks/inventory/list_iam_roles.py +5 -7
- runbooks/inventory/list_iam_saml_providers.py +4 -6
- runbooks/inventory/list_lambda_functions.py +38 -38
- runbooks/inventory/list_org_accounts.py +6 -8
- runbooks/inventory/list_org_accounts_users.py +55 -44
- runbooks/inventory/list_rds_db_instances.py +31 -33
- runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
- runbooks/inventory/list_route53_hosted_zones.py +3 -5
- runbooks/inventory/list_servicecatalog_provisioned_products.py +37 -41
- runbooks/inventory/list_sns_topics.py +2 -4
- runbooks/inventory/list_ssm_parameters.py +4 -7
- runbooks/inventory/list_vpc_subnets.py +2 -4
- runbooks/inventory/list_vpcs.py +7 -10
- runbooks/inventory/mcp_inventory_validator.py +554 -468
- runbooks/inventory/mcp_vpc_validator.py +359 -442
- runbooks/inventory/organizations_discovery.py +63 -55
- runbooks/inventory/recover_cfn_stack_ids.py +7 -8
- runbooks/inventory/requirements.txt +0 -1
- runbooks/inventory/rich_inventory_display.py +35 -34
- runbooks/inventory/run_on_multi_accounts.py +3 -5
- runbooks/inventory/unified_validation_engine.py +281 -253
- runbooks/inventory/verify_ec2_security_groups.py +1 -1
- runbooks/inventory/vpc_analyzer.py +735 -697
- runbooks/inventory/vpc_architecture_validator.py +293 -348
- runbooks/inventory/vpc_dependency_analyzer.py +384 -380
- runbooks/inventory/vpc_flow_analyzer.py +1 -1
- runbooks/main.py +49 -34
- runbooks/main_final.py +91 -60
- runbooks/main_minimal.py +22 -10
- runbooks/main_optimized.py +131 -100
- runbooks/main_ultra_minimal.py +7 -2
- runbooks/mcp/__init__.py +36 -0
- runbooks/mcp/integration.py +679 -0
- runbooks/monitoring/performance_monitor.py +9 -4
- runbooks/operate/dynamodb_operations.py +3 -1
- runbooks/operate/ec2_operations.py +145 -137
- runbooks/operate/iam_operations.py +146 -152
- runbooks/operate/networking_cost_heatmap.py +29 -8
- runbooks/operate/rds_operations.py +223 -254
- runbooks/operate/s3_operations.py +107 -118
- runbooks/operate/vpc_operations.py +646 -616
- runbooks/remediation/base.py +1 -1
- runbooks/remediation/commons.py +10 -7
- runbooks/remediation/commvault_ec2_analysis.py +70 -66
- runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
- runbooks/remediation/multi_account.py +24 -21
- runbooks/remediation/rds_snapshot_list.py +86 -60
- runbooks/remediation/remediation_cli.py +92 -146
- runbooks/remediation/universal_account_discovery.py +83 -79
- runbooks/remediation/workspaces_list.py +46 -41
- runbooks/security/__init__.py +19 -0
- runbooks/security/assessment_runner.py +1150 -0
- runbooks/security/baseline_checker.py +812 -0
- runbooks/security/cloudops_automation_security_validator.py +509 -535
- runbooks/security/compliance_automation_engine.py +17 -17
- runbooks/security/config/__init__.py +2 -2
- runbooks/security/config/compliance_config.py +50 -50
- runbooks/security/config_template_generator.py +63 -76
- runbooks/security/enterprise_security_framework.py +1 -1
- runbooks/security/executive_security_dashboard.py +519 -508
- runbooks/security/multi_account_security_controls.py +959 -1210
- runbooks/security/real_time_security_monitor.py +422 -444
- runbooks/security/security_baseline_tester.py +1 -1
- runbooks/security/security_cli.py +143 -112
- runbooks/security/test_2way_validation.py +439 -0
- runbooks/security/two_way_validation_framework.py +852 -0
- runbooks/sre/production_monitoring_framework.py +167 -177
- runbooks/tdd/__init__.py +15 -0
- runbooks/tdd/cli.py +1071 -0
- runbooks/utils/__init__.py +14 -17
- runbooks/utils/logger.py +7 -2
- runbooks/utils/version_validator.py +50 -47
- runbooks/validation/__init__.py +6 -6
- runbooks/validation/cli.py +9 -3
- runbooks/validation/comprehensive_2way_validator.py +745 -704
- runbooks/validation/mcp_validator.py +906 -228
- runbooks/validation/terraform_citations_validator.py +104 -115
- runbooks/validation/terraform_drift_detector.py +461 -454
- runbooks/vpc/README.md +617 -0
- runbooks/vpc/__init__.py +8 -1
- runbooks/vpc/analyzer.py +577 -0
- runbooks/vpc/cleanup_wrapper.py +476 -413
- runbooks/vpc/cli_cloudtrail_commands.py +339 -0
- runbooks/vpc/cli_mcp_validation_commands.py +480 -0
- runbooks/vpc/cloudtrail_audit_integration.py +717 -0
- runbooks/vpc/config.py +92 -97
- runbooks/vpc/cost_engine.py +411 -148
- runbooks/vpc/cost_explorer_integration.py +553 -0
- runbooks/vpc/cross_account_session.py +101 -106
- runbooks/vpc/enhanced_mcp_validation.py +917 -0
- runbooks/vpc/eni_gate_validator.py +961 -0
- runbooks/vpc/heatmap_engine.py +185 -160
- runbooks/vpc/mcp_no_eni_validator.py +680 -639
- runbooks/vpc/nat_gateway_optimizer.py +358 -0
- runbooks/vpc/networking_wrapper.py +15 -8
- runbooks/vpc/pdca_remediation_planner.py +528 -0
- runbooks/vpc/performance_optimized_analyzer.py +219 -231
- runbooks/vpc/runbooks_adapter.py +1167 -241
- runbooks/vpc/tdd_red_phase_stubs.py +601 -0
- runbooks/vpc/test_data_loader.py +358 -0
- runbooks/vpc/tests/conftest.py +314 -4
- runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
- runbooks/vpc/tests/test_cost_engine.py +0 -2
- runbooks/vpc/topology_generator.py +326 -0
- runbooks/vpc/unified_scenarios.py +1297 -1124
- runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
- runbooks-1.1.6.dist-info/METADATA +327 -0
- runbooks-1.1.6.dist-info/RECORD +489 -0
- runbooks/finops/README.md +0 -414
- runbooks/finops/accuracy_cross_validator.py +0 -647
- runbooks/finops/business_cases.py +0 -950
- runbooks/finops/dashboard_router.py +0 -922
- runbooks/finops/ebs_optimizer.py +0 -973
- runbooks/finops/embedded_mcp_validator.py +0 -1629
- runbooks/finops/enhanced_dashboard_runner.py +0 -527
- runbooks/finops/finops_dashboard.py +0 -584
- runbooks/finops/finops_scenarios.py +0 -1218
- runbooks/finops/legacy_migration.py +0 -730
- runbooks/finops/multi_dashboard.py +0 -1519
- runbooks/finops/single_dashboard.py +0 -1113
- runbooks/finops/unlimited_scenarios.py +0 -393
- runbooks-1.1.4.dist-info/METADATA +0 -800
- runbooks-1.1.4.dist-info/RECORD +0 -468
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/WHEEL +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/entry_points.txt +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/licenses/LICENSE +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/top_level.txt +0 -0
runbooks/cli/commands/vpc.py
CHANGED
@@ -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(
|
64
|
-
|
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(
|
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(
|
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(
|
188
|
-
|
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(
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
runbooks/cloudops/__init__.py
CHANGED
@@ -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
|