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
@@ -19,54 +19,47 @@ from rich.logging import RichHandler
|
|
19
19
|
# Rich console for enterprise logging
|
20
20
|
console = Console()
|
21
21
|
|
22
|
+
|
22
23
|
class EnhancedLogging:
|
23
24
|
"""Enhanced logging capabilities for enterprise operations."""
|
24
|
-
|
25
|
+
|
25
26
|
def __init__(self, module_name: str = "runbooks"):
|
26
27
|
self.module_name = module_name
|
27
28
|
self.logger = self._setup_enhanced_logger()
|
28
|
-
|
29
|
+
|
29
30
|
def _setup_enhanced_logger(self) -> logging.Logger:
|
30
31
|
"""Setup enhanced logger with Rich integration."""
|
31
32
|
logger = logging.getLogger(f"runbooks.{self.module_name}")
|
32
|
-
|
33
|
+
|
33
34
|
# Skip if already configured
|
34
35
|
if logger.handlers:
|
35
36
|
return logger
|
36
|
-
|
37
|
+
|
37
38
|
logger.setLevel(logging.INFO)
|
38
|
-
|
39
|
+
|
39
40
|
# Rich handler for beautiful console output
|
40
|
-
rich_handler = RichHandler(
|
41
|
-
|
42
|
-
|
43
|
-
show_path=True,
|
44
|
-
rich_tracebacks=True
|
45
|
-
)
|
46
|
-
|
47
|
-
formatter = logging.Formatter(
|
48
|
-
fmt="[%(name)s] %(message)s",
|
49
|
-
datefmt="[%X]"
|
50
|
-
)
|
41
|
+
rich_handler = RichHandler(console=console, show_time=True, show_path=True, rich_tracebacks=True)
|
42
|
+
|
43
|
+
formatter = logging.Formatter(fmt="[%(name)s] %(message)s", datefmt="[%X]")
|
51
44
|
rich_handler.setFormatter(formatter)
|
52
|
-
|
45
|
+
|
53
46
|
logger.addHandler(rich_handler)
|
54
47
|
logger.propagate = False
|
55
|
-
|
48
|
+
|
56
49
|
return logger
|
57
|
-
|
50
|
+
|
58
51
|
def info(self, message: str, **kwargs) -> None:
|
59
52
|
"""Log info message with Rich formatting."""
|
60
53
|
self.logger.info(message, **kwargs)
|
61
|
-
|
54
|
+
|
62
55
|
def warning(self, message: str, **kwargs) -> None:
|
63
56
|
"""Log warning message with Rich formatting."""
|
64
57
|
self.logger.warning(message, **kwargs)
|
65
|
-
|
58
|
+
|
66
59
|
def error(self, message: str, **kwargs) -> None:
|
67
60
|
"""Log error message with Rich formatting."""
|
68
61
|
self.logger.error(message, **kwargs)
|
69
|
-
|
62
|
+
|
70
63
|
def debug(self, message: str, **kwargs) -> None:
|
71
64
|
"""Log debug message with Rich formatting."""
|
72
65
|
self.logger.debug(message, **kwargs)
|
@@ -74,60 +67,60 @@ class EnhancedLogging:
|
|
74
67
|
|
75
68
|
class ConfigValidator:
|
76
69
|
"""Configuration validation utilities."""
|
77
|
-
|
70
|
+
|
78
71
|
@staticmethod
|
79
72
|
def validate_aws_profile(profile: str) -> bool:
|
80
73
|
"""Validate AWS profile configuration."""
|
81
74
|
if not profile or not isinstance(profile, str):
|
82
75
|
return False
|
83
76
|
return len(profile.strip()) > 0
|
84
|
-
|
77
|
+
|
85
78
|
@staticmethod
|
86
79
|
def validate_region(region: str) -> bool:
|
87
80
|
"""Validate AWS region format."""
|
88
81
|
if not region or not isinstance(region, str):
|
89
82
|
return False
|
90
83
|
# Basic AWS region format validation
|
91
|
-
return len(region.split(
|
84
|
+
return len(region.split("-")) >= 3
|
92
85
|
|
93
86
|
|
94
87
|
class InputValidator:
|
95
88
|
"""Input validation utilities."""
|
96
|
-
|
89
|
+
|
97
90
|
@staticmethod
|
98
91
|
def validate_account_id(account_id: str) -> bool:
|
99
92
|
"""Validate AWS account ID format."""
|
100
93
|
if not account_id or not isinstance(account_id, str):
|
101
94
|
return False
|
102
95
|
return account_id.isdigit() and len(account_id) == 12
|
103
|
-
|
96
|
+
|
104
97
|
@staticmethod
|
105
98
|
def validate_instance_id(instance_id: str) -> bool:
|
106
99
|
"""Validate EC2 instance ID format."""
|
107
100
|
if not instance_id or not isinstance(instance_id, str):
|
108
101
|
return False
|
109
|
-
return instance_id.startswith(
|
102
|
+
return instance_id.startswith("i-") and len(instance_id) >= 10
|
110
103
|
|
111
104
|
|
112
105
|
class TypeValidator:
|
113
106
|
"""Type validation utilities."""
|
114
|
-
|
107
|
+
|
115
108
|
@staticmethod
|
116
109
|
def validate_list_of_strings(value: Any) -> bool:
|
117
110
|
"""Validate that value is a list of strings."""
|
118
111
|
if not isinstance(value, list):
|
119
112
|
return False
|
120
113
|
return all(isinstance(item, str) for item in value)
|
121
|
-
|
114
|
+
|
122
115
|
@staticmethod
|
123
116
|
def validate_dict(value: Any, required_keys: Optional[List[str]] = None) -> bool:
|
124
117
|
"""Validate dictionary structure."""
|
125
118
|
if not isinstance(value, dict):
|
126
119
|
return False
|
127
|
-
|
120
|
+
|
128
121
|
if required_keys:
|
129
122
|
return all(key in value for key in required_keys)
|
130
|
-
|
123
|
+
|
131
124
|
return True
|
132
125
|
|
133
126
|
|
@@ -135,43 +128,37 @@ def validate_configuration(config: Dict[str, Any]) -> Dict[str, Any]:
|
|
135
128
|
"""Validate configuration dictionary."""
|
136
129
|
validator = ConfigValidator()
|
137
130
|
errors = []
|
138
|
-
|
131
|
+
|
139
132
|
# Validate profile if present
|
140
|
-
if
|
141
|
-
if not validator.validate_aws_profile(config[
|
133
|
+
if "profile" in config:
|
134
|
+
if not validator.validate_aws_profile(config["profile"]):
|
142
135
|
errors.append("Invalid AWS profile configuration")
|
143
|
-
|
136
|
+
|
144
137
|
# Validate region if present
|
145
|
-
if
|
146
|
-
if not validator.validate_region(config[
|
138
|
+
if "region" in config:
|
139
|
+
if not validator.validate_region(config["region"]):
|
147
140
|
errors.append("Invalid AWS region format")
|
148
|
-
|
149
|
-
return {
|
150
|
-
'valid': len(errors) == 0,
|
151
|
-
'errors': errors
|
152
|
-
}
|
141
|
+
|
142
|
+
return {"valid": len(errors) == 0, "errors": errors}
|
153
143
|
|
154
144
|
|
155
145
|
def validate_user_input(user_input: Dict[str, Any]) -> Dict[str, Any]:
|
156
146
|
"""Validate user input data."""
|
157
147
|
validator = InputValidator()
|
158
148
|
errors = []
|
159
|
-
|
149
|
+
|
160
150
|
# Validate account ID if present
|
161
|
-
if
|
162
|
-
if not validator.validate_account_id(user_input[
|
151
|
+
if "account_id" in user_input:
|
152
|
+
if not validator.validate_account_id(user_input["account_id"]):
|
163
153
|
errors.append("Invalid AWS account ID format")
|
164
|
-
|
165
|
-
# Validate instance ID if present
|
166
|
-
if
|
167
|
-
if not validator.validate_instance_id(user_input[
|
154
|
+
|
155
|
+
# Validate instance ID if present
|
156
|
+
if "instance_id" in user_input:
|
157
|
+
if not validator.validate_instance_id(user_input["instance_id"]):
|
168
158
|
errors.append("Invalid EC2 instance ID format")
|
169
|
-
|
170
|
-
return {
|
171
|
-
'valid': len(errors) == 0,
|
172
|
-
'errors': errors
|
173
|
-
}
|
159
|
+
|
160
|
+
return {"valid": len(errors) == 0, "errors": errors}
|
174
161
|
|
175
162
|
|
176
163
|
# Create default enhanced logger
|
177
|
-
enhanced_logger = EnhancedLogging("enterprise")
|
164
|
+
enhanced_logger = EnhancedLogging("enterprise")
|
runbooks/finops/__init__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"""
|
2
|
-
CloudOps
|
2
|
+
CloudOps & FinOps Runbooks Module - Enterprise Cost and Resource Monitoring
|
3
3
|
|
4
4
|
This module provides terminal-based AWS cost monitoring with features including:
|
5
5
|
- Multi-account cost summaries
|
@@ -31,7 +31,11 @@ from runbooks.finops.aws_client import (
|
|
31
31
|
|
32
32
|
# Data processors
|
33
33
|
from runbooks.finops.cost_processor import export_to_csv, export_to_json, get_cost_data, get_trend
|
34
|
+
|
35
|
+
# Enterprise FinOps Dashboard Components - Using consolidated dashboard_runner.py
|
36
|
+
# Backward compatibility for legacy tests and components
|
34
37
|
from runbooks.finops.dashboard_runner import (
|
38
|
+
FinOpsConfig,
|
35
39
|
_run_audit_report,
|
36
40
|
_run_cost_trend_analysis,
|
37
41
|
_run_executive_dashboard,
|
@@ -40,47 +44,39 @@ from runbooks.finops.dashboard_runner import (
|
|
40
44
|
run_dashboard,
|
41
45
|
)
|
42
46
|
|
43
|
-
# Enterprise FinOps Dashboard Components - Using existing dashboard_runner.py
|
44
|
-
# Backward compatibility module for legacy tests and components
|
45
|
-
from runbooks.finops.finops_dashboard import FinOpsConfig
|
46
|
-
|
47
47
|
# Enhanced helpers with notebook integration functions
|
48
48
|
from runbooks.finops.helpers import (
|
49
|
+
create_business_summary_table,
|
50
|
+
create_roi_analysis_table,
|
49
51
|
export_audit_report_to_csv,
|
50
52
|
export_audit_report_to_json,
|
51
53
|
export_audit_report_to_pdf,
|
52
54
|
export_cost_dashboard_to_pdf,
|
55
|
+
export_scenarios_to_notebook_html,
|
53
56
|
export_trend_data_to_json,
|
54
|
-
load_config_file,
|
55
57
|
# NOTEBOOK INTEGRATION FUNCTIONS - Added for clean notebook consumption
|
56
58
|
format_currency,
|
57
|
-
|
58
|
-
export_scenarios_to_notebook_html,
|
59
|
-
create_roi_analysis_table,
|
59
|
+
load_config_file,
|
60
60
|
)
|
61
|
+
from runbooks.finops.profile_processor import process_combined_profiles, process_single_profile
|
61
62
|
|
62
63
|
# Business scenarios with notebook integration
|
63
|
-
from runbooks.finops.finops_scenarios import (
|
64
|
-
create_business_scenarios_validated,
|
65
|
-
format_for_business_audience,
|
66
|
-
format_for_technical_audience,
|
67
|
-
FinOpsBusinessScenarios,
|
68
|
-
)
|
69
|
-
|
70
64
|
# NEW latest version: Clean API wrapper for notebook consumption
|
71
65
|
from runbooks.finops.scenarios import (
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
format_for_audience,
|
77
|
-
validate_scenarios_accuracy,
|
66
|
+
UnifiedScenarioManager, # Replaces FinOpsBusinessScenarios
|
67
|
+
create_business_scenarios_validated,
|
68
|
+
display_unlimited_scenarios_help, # CLI help function
|
69
|
+
finops_23_rds_snapshots_optimization,
|
78
70
|
# Legacy aliases for backward compatibility
|
79
71
|
finops_24_workspaces_cleanup,
|
80
|
-
finops_23_rds_snapshots_optimization,
|
81
72
|
finops_25_commvault_investigation,
|
73
|
+
finops_commvault,
|
74
|
+
finops_snapshots,
|
75
|
+
finops_workspaces,
|
76
|
+
format_for_audience, # Consolidated function replaces format_for_business_audience and format_for_technical_audience
|
77
|
+
get_business_scenarios_summary,
|
78
|
+
validate_finops_mcp_accuracy,
|
82
79
|
)
|
83
|
-
from runbooks.finops.profile_processor import process_combined_profiles, process_single_profile
|
84
80
|
|
85
81
|
# Type definitions
|
86
82
|
from runbooks.finops.types import BudgetInfo, CostData, EC2Summary, ProfileData, RegionName
|
@@ -99,11 +95,10 @@ __all__ = [
|
|
99
95
|
"_run_executive_dashboard",
|
100
96
|
# Enterprise Dashboard Classes - backward compatibility
|
101
97
|
"FinOpsConfig",
|
102
|
-
# Business scenarios with notebook integration (
|
98
|
+
# Business scenarios with notebook integration (consolidated version)
|
103
99
|
"create_business_scenarios_validated",
|
104
|
-
"
|
105
|
-
"
|
106
|
-
"FinOpsBusinessScenarios",
|
100
|
+
"format_for_audience", # Consolidated function
|
101
|
+
"UnifiedScenarioManager", # Consolidated class
|
107
102
|
# NEW latest version: Clean API wrapper functions (cleaned naming)
|
108
103
|
"finops_workspaces",
|
109
104
|
"finops_snapshots",
|
@@ -114,7 +109,8 @@ __all__ = [
|
|
114
109
|
"finops_25_commvault_investigation",
|
115
110
|
"get_business_scenarios_summary",
|
116
111
|
"format_for_audience",
|
117
|
-
"
|
112
|
+
"validate_finops_mcp_accuracy", # Updated function name in consolidated version
|
113
|
+
"display_unlimited_scenarios_help", # CLI help function
|
118
114
|
# Processors
|
119
115
|
"get_cost_data",
|
120
116
|
"get_trend",
|
@@ -142,7 +138,7 @@ __all__ = [
|
|
142
138
|
"load_config_file",
|
143
139
|
# NOTEBOOK INTEGRATION FUNCTIONS (latest version)
|
144
140
|
"format_currency",
|
145
|
-
"create_business_summary_table",
|
141
|
+
"create_business_summary_table",
|
146
142
|
"export_scenarios_to_notebook_html",
|
147
143
|
"create_roi_analysis_table",
|
148
144
|
# Types
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
2
|
"""
|
3
|
-
AWS Account Name Resolution Module for CloudOps
|
3
|
+
AWS Account Name Resolution Module for CloudOps & FinOps Runbooks
|
4
4
|
|
5
5
|
This module provides account ID to account name mapping functionality using
|
6
6
|
the AWS Organizations API for readable account display in FinOps dashboards.
|