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
@@ -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
- console=console,
42
- show_time=True,
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('-')) >= 3
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('i-') and len(instance_id) >= 10
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 'profile' in config:
141
- if not validator.validate_aws_profile(config['profile']):
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 'region' in config:
146
- if not validator.validate_region(config['region']):
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 'account_id' in user_input:
162
- if not validator.validate_account_id(user_input['account_id']):
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 'instance_id' in user_input:
167
- if not validator.validate_instance_id(user_input['instance_id']):
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")
@@ -1,5 +1,5 @@
1
1
  """
2
- CloudOps Runbooks FinOps Module - Enterprise Cost and Resource Monitoring
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
- create_business_summary_table,
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
- finops_workspaces,
73
- finops_snapshots,
74
- finops_commvault,
75
- get_business_scenarios_summary,
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 (latest version)
98
+ # Business scenarios with notebook integration (consolidated version)
103
99
  "create_business_scenarios_validated",
104
- "format_for_business_audience",
105
- "format_for_technical_audience",
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
- "validate_scenarios_accuracy",
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 Runbooks FinOps
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.