runbooks 1.1.4__py3-none-any.whl → 1.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. runbooks/__init__.py +31 -2
  2. runbooks/__init___optimized.py +18 -4
  3. runbooks/_platform/__init__.py +1 -5
  4. runbooks/_platform/core/runbooks_wrapper.py +141 -138
  5. runbooks/aws2/accuracy_validator.py +812 -0
  6. runbooks/base.py +7 -0
  7. runbooks/cfat/assessment/compliance.py +1 -1
  8. runbooks/cfat/assessment/runner.py +1 -0
  9. runbooks/cfat/cloud_foundations_assessment.py +227 -239
  10. runbooks/cli/__init__.py +1 -1
  11. runbooks/cli/commands/cfat.py +64 -23
  12. runbooks/cli/commands/finops.py +1005 -54
  13. runbooks/cli/commands/inventory.py +138 -35
  14. runbooks/cli/commands/operate.py +9 -36
  15. runbooks/cli/commands/security.py +42 -18
  16. runbooks/cli/commands/validation.py +432 -18
  17. runbooks/cli/commands/vpc.py +81 -17
  18. runbooks/cli/registry.py +22 -10
  19. runbooks/cloudops/__init__.py +20 -27
  20. runbooks/cloudops/base.py +96 -107
  21. runbooks/cloudops/cost_optimizer.py +544 -542
  22. runbooks/cloudops/infrastructure_optimizer.py +5 -4
  23. runbooks/cloudops/interfaces.py +224 -225
  24. runbooks/cloudops/lifecycle_manager.py +5 -4
  25. runbooks/cloudops/mcp_cost_validation.py +252 -235
  26. runbooks/cloudops/models.py +78 -53
  27. runbooks/cloudops/monitoring_automation.py +5 -4
  28. runbooks/cloudops/notebook_framework.py +177 -213
  29. runbooks/cloudops/security_enforcer.py +125 -159
  30. runbooks/common/accuracy_validator.py +11 -0
  31. runbooks/common/aws_pricing.py +349 -326
  32. runbooks/common/aws_pricing_api.py +211 -212
  33. runbooks/common/aws_profile_manager.py +40 -36
  34. runbooks/common/aws_utils.py +74 -79
  35. runbooks/common/business_logic.py +126 -104
  36. runbooks/common/cli_decorators.py +36 -60
  37. runbooks/common/comprehensive_cost_explorer_integration.py +455 -463
  38. runbooks/common/cross_account_manager.py +197 -204
  39. runbooks/common/date_utils.py +27 -39
  40. runbooks/common/decorators.py +29 -19
  41. runbooks/common/dry_run_examples.py +173 -208
  42. runbooks/common/dry_run_framework.py +157 -155
  43. runbooks/common/enhanced_exception_handler.py +15 -4
  44. runbooks/common/enhanced_logging_example.py +50 -64
  45. runbooks/common/enhanced_logging_integration_example.py +65 -37
  46. runbooks/common/env_utils.py +16 -16
  47. runbooks/common/error_handling.py +40 -38
  48. runbooks/common/lazy_loader.py +41 -23
  49. runbooks/common/logging_integration_helper.py +79 -86
  50. runbooks/common/mcp_cost_explorer_integration.py +476 -493
  51. runbooks/common/mcp_integration.py +63 -74
  52. runbooks/common/memory_optimization.py +140 -118
  53. runbooks/common/module_cli_base.py +37 -58
  54. runbooks/common/organizations_client.py +175 -193
  55. runbooks/common/patterns.py +23 -25
  56. runbooks/common/performance_monitoring.py +67 -71
  57. runbooks/common/performance_optimization_engine.py +283 -274
  58. runbooks/common/profile_utils.py +111 -37
  59. runbooks/common/rich_utils.py +201 -141
  60. runbooks/common/sre_performance_suite.py +177 -186
  61. runbooks/enterprise/__init__.py +1 -1
  62. runbooks/enterprise/logging.py +144 -106
  63. runbooks/enterprise/security.py +187 -204
  64. runbooks/enterprise/validation.py +43 -56
  65. runbooks/finops/__init__.py +26 -30
  66. runbooks/finops/account_resolver.py +1 -1
  67. runbooks/finops/advanced_optimization_engine.py +980 -0
  68. runbooks/finops/automation_core.py +268 -231
  69. runbooks/finops/business_case_config.py +184 -179
  70. runbooks/finops/cli.py +660 -139
  71. runbooks/finops/commvault_ec2_analysis.py +157 -164
  72. runbooks/finops/compute_cost_optimizer.py +336 -320
  73. runbooks/finops/config.py +20 -20
  74. runbooks/finops/cost_optimizer.py +484 -618
  75. runbooks/finops/cost_processor.py +332 -214
  76. runbooks/finops/dashboard_runner.py +1006 -172
  77. runbooks/finops/ebs_cost_optimizer.py +991 -657
  78. runbooks/finops/elastic_ip_optimizer.py +317 -257
  79. runbooks/finops/enhanced_mcp_integration.py +340 -0
  80. runbooks/finops/enhanced_progress.py +32 -29
  81. runbooks/finops/enhanced_trend_visualization.py +3 -2
  82. runbooks/finops/enterprise_wrappers.py +223 -285
  83. runbooks/finops/executive_export.py +203 -160
  84. runbooks/finops/helpers.py +130 -288
  85. runbooks/finops/iam_guidance.py +1 -1
  86. runbooks/finops/infrastructure/__init__.py +80 -0
  87. runbooks/finops/infrastructure/commands.py +506 -0
  88. runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
  89. runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
  90. runbooks/finops/markdown_exporter.py +337 -174
  91. runbooks/finops/mcp_validator.py +1952 -0
  92. runbooks/finops/nat_gateway_optimizer.py +1512 -481
  93. runbooks/finops/network_cost_optimizer.py +657 -587
  94. runbooks/finops/notebook_utils.py +226 -188
  95. runbooks/finops/optimization_engine.py +1136 -0
  96. runbooks/finops/optimizer.py +19 -23
  97. runbooks/finops/rds_snapshot_optimizer.py +367 -411
  98. runbooks/finops/reservation_optimizer.py +427 -363
  99. runbooks/finops/scenario_cli_integration.py +64 -65
  100. runbooks/finops/scenarios.py +1277 -438
  101. runbooks/finops/schemas.py +218 -182
  102. runbooks/finops/snapshot_manager.py +2289 -0
  103. runbooks/finops/types.py +3 -3
  104. runbooks/finops/validation_framework.py +259 -265
  105. runbooks/finops/vpc_cleanup_exporter.py +189 -144
  106. runbooks/finops/vpc_cleanup_optimizer.py +591 -573
  107. runbooks/finops/workspaces_analyzer.py +171 -182
  108. runbooks/integration/__init__.py +89 -0
  109. runbooks/integration/mcp_integration.py +1920 -0
  110. runbooks/inventory/CLAUDE.md +816 -0
  111. runbooks/inventory/__init__.py +2 -2
  112. runbooks/inventory/cloud_foundations_integration.py +144 -149
  113. runbooks/inventory/collectors/aws_comprehensive.py +1 -1
  114. runbooks/inventory/collectors/aws_networking.py +109 -99
  115. runbooks/inventory/collectors/base.py +4 -0
  116. runbooks/inventory/core/collector.py +495 -313
  117. runbooks/inventory/drift_detection_cli.py +69 -96
  118. runbooks/inventory/inventory_mcp_cli.py +48 -46
  119. runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
  120. runbooks/inventory/mcp_inventory_validator.py +549 -465
  121. runbooks/inventory/mcp_vpc_validator.py +359 -442
  122. runbooks/inventory/organizations_discovery.py +55 -51
  123. runbooks/inventory/rich_inventory_display.py +33 -32
  124. runbooks/inventory/unified_validation_engine.py +278 -251
  125. runbooks/inventory/vpc_analyzer.py +732 -695
  126. runbooks/inventory/vpc_architecture_validator.py +293 -348
  127. runbooks/inventory/vpc_dependency_analyzer.py +382 -378
  128. runbooks/inventory/vpc_flow_analyzer.py +1 -1
  129. runbooks/main.py +49 -34
  130. runbooks/main_final.py +91 -60
  131. runbooks/main_minimal.py +22 -10
  132. runbooks/main_optimized.py +131 -100
  133. runbooks/main_ultra_minimal.py +7 -2
  134. runbooks/mcp/__init__.py +36 -0
  135. runbooks/mcp/integration.py +679 -0
  136. runbooks/monitoring/performance_monitor.py +9 -4
  137. runbooks/operate/dynamodb_operations.py +3 -1
  138. runbooks/operate/ec2_operations.py +145 -137
  139. runbooks/operate/iam_operations.py +146 -152
  140. runbooks/operate/networking_cost_heatmap.py +29 -8
  141. runbooks/operate/rds_operations.py +223 -254
  142. runbooks/operate/s3_operations.py +107 -118
  143. runbooks/operate/vpc_operations.py +646 -616
  144. runbooks/remediation/base.py +1 -1
  145. runbooks/remediation/commons.py +10 -7
  146. runbooks/remediation/commvault_ec2_analysis.py +70 -66
  147. runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
  148. runbooks/remediation/multi_account.py +24 -21
  149. runbooks/remediation/rds_snapshot_list.py +86 -60
  150. runbooks/remediation/remediation_cli.py +92 -146
  151. runbooks/remediation/universal_account_discovery.py +83 -79
  152. runbooks/remediation/workspaces_list.py +46 -41
  153. runbooks/security/__init__.py +19 -0
  154. runbooks/security/assessment_runner.py +1150 -0
  155. runbooks/security/baseline_checker.py +812 -0
  156. runbooks/security/cloudops_automation_security_validator.py +509 -535
  157. runbooks/security/compliance_automation_engine.py +17 -17
  158. runbooks/security/config/__init__.py +2 -2
  159. runbooks/security/config/compliance_config.py +50 -50
  160. runbooks/security/config_template_generator.py +63 -76
  161. runbooks/security/enterprise_security_framework.py +1 -1
  162. runbooks/security/executive_security_dashboard.py +519 -508
  163. runbooks/security/multi_account_security_controls.py +959 -1210
  164. runbooks/security/real_time_security_monitor.py +422 -444
  165. runbooks/security/security_baseline_tester.py +1 -1
  166. runbooks/security/security_cli.py +143 -112
  167. runbooks/security/test_2way_validation.py +439 -0
  168. runbooks/security/two_way_validation_framework.py +852 -0
  169. runbooks/sre/production_monitoring_framework.py +167 -177
  170. runbooks/tdd/__init__.py +15 -0
  171. runbooks/tdd/cli.py +1071 -0
  172. runbooks/utils/__init__.py +14 -17
  173. runbooks/utils/logger.py +7 -2
  174. runbooks/utils/version_validator.py +50 -47
  175. runbooks/validation/__init__.py +6 -6
  176. runbooks/validation/cli.py +9 -3
  177. runbooks/validation/comprehensive_2way_validator.py +745 -704
  178. runbooks/validation/mcp_validator.py +906 -228
  179. runbooks/validation/terraform_citations_validator.py +104 -115
  180. runbooks/validation/terraform_drift_detector.py +447 -451
  181. runbooks/vpc/README.md +617 -0
  182. runbooks/vpc/__init__.py +8 -1
  183. runbooks/vpc/analyzer.py +577 -0
  184. runbooks/vpc/cleanup_wrapper.py +476 -413
  185. runbooks/vpc/cli_cloudtrail_commands.py +339 -0
  186. runbooks/vpc/cli_mcp_validation_commands.py +480 -0
  187. runbooks/vpc/cloudtrail_audit_integration.py +717 -0
  188. runbooks/vpc/config.py +92 -97
  189. runbooks/vpc/cost_engine.py +411 -148
  190. runbooks/vpc/cost_explorer_integration.py +553 -0
  191. runbooks/vpc/cross_account_session.py +101 -106
  192. runbooks/vpc/enhanced_mcp_validation.py +917 -0
  193. runbooks/vpc/eni_gate_validator.py +961 -0
  194. runbooks/vpc/heatmap_engine.py +185 -160
  195. runbooks/vpc/mcp_no_eni_validator.py +680 -639
  196. runbooks/vpc/nat_gateway_optimizer.py +358 -0
  197. runbooks/vpc/networking_wrapper.py +15 -8
  198. runbooks/vpc/pdca_remediation_planner.py +528 -0
  199. runbooks/vpc/performance_optimized_analyzer.py +219 -231
  200. runbooks/vpc/runbooks_adapter.py +1167 -241
  201. runbooks/vpc/tdd_red_phase_stubs.py +601 -0
  202. runbooks/vpc/test_data_loader.py +358 -0
  203. runbooks/vpc/tests/conftest.py +314 -4
  204. runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
  205. runbooks/vpc/tests/test_cost_engine.py +0 -2
  206. runbooks/vpc/topology_generator.py +326 -0
  207. runbooks/vpc/unified_scenarios.py +1297 -1124
  208. runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
  209. runbooks-1.1.5.dist-info/METADATA +328 -0
  210. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/RECORD +214 -193
  211. runbooks/finops/README.md +0 -414
  212. runbooks/finops/accuracy_cross_validator.py +0 -647
  213. runbooks/finops/business_cases.py +0 -950
  214. runbooks/finops/dashboard_router.py +0 -922
  215. runbooks/finops/ebs_optimizer.py +0 -973
  216. runbooks/finops/embedded_mcp_validator.py +0 -1629
  217. runbooks/finops/enhanced_dashboard_runner.py +0 -527
  218. runbooks/finops/finops_dashboard.py +0 -584
  219. runbooks/finops/finops_scenarios.py +0 -1218
  220. runbooks/finops/legacy_migration.py +0 -730
  221. runbooks/finops/multi_dashboard.py +0 -1519
  222. runbooks/finops/single_dashboard.py +0 -1113
  223. runbooks/finops/unlimited_scenarios.py +0 -393
  224. runbooks-1.1.4.dist-info/METADATA +0 -800
  225. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/WHEEL +0 -0
  226. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/entry_points.txt +0 -0
  227. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/licenses/LICENSE +0 -0
  228. {runbooks-1.1.4.dist-info → runbooks-1.1.5.dist-info}/top_level.txt +0 -0
runbooks/finops/config.py CHANGED
@@ -11,9 +11,9 @@ MANAGER FEEDBACK INTEGRATION:
11
11
  - Full functionality preserved through API access
12
12
  """
13
13
 
14
+ import os
14
15
  from dataclasses import dataclass
15
16
  from typing import Optional
16
- import os
17
17
 
18
18
 
19
19
  @dataclass
@@ -39,7 +39,7 @@ class DisplayConfiguration:
39
39
  medium_cost_threshold: float = 1000.0
40
40
 
41
41
  @classmethod
42
- def get_default_config(cls) -> 'DisplayConfiguration':
42
+ def get_default_config(cls) -> "DisplayConfiguration":
43
43
  """
44
44
  Get default configuration with smart business-appropriate defaults.
45
45
 
@@ -51,14 +51,14 @@ class DisplayConfiguration:
51
51
  """
52
52
  return cls(
53
53
  profile_display_length=50, # Reasonable display length for terminals
54
- service_name_length=25, # Business-friendly service name truncation
55
- max_services_text=10, # Optimal readability for service summaries
56
- high_cost_threshold=5000.0, # Industry standard high-cost threshold
57
- medium_cost_threshold=1000.0 # Industry standard medium-cost threshold
54
+ service_name_length=25, # Business-friendly service name truncation
55
+ max_services_text=10, # Optimal readability for service summaries
56
+ high_cost_threshold=5000.0, # Industry standard high-cost threshold
57
+ medium_cost_threshold=1000.0, # Industry standard medium-cost threshold
58
58
  )
59
59
 
60
60
  @classmethod
61
- def from_environment(cls) -> 'DisplayConfiguration':
61
+ def from_environment(cls) -> "DisplayConfiguration":
62
62
  """
63
63
  Load configuration from environment variables for API access.
64
64
 
@@ -70,11 +70,11 @@ class DisplayConfiguration:
70
70
  - FINOPS_MEDIUM_COST_THRESHOLD: Medium cost threshold for highlighting
71
71
  """
72
72
  return cls(
73
- profile_display_length=cls._get_int_env('FINOPS_PROFILE_DISPLAY_LENGTH'),
74
- service_name_length=cls._get_int_env('FINOPS_SERVICE_NAME_LENGTH'),
75
- max_services_text=cls._get_int_env('FINOPS_MAX_SERVICES_TEXT'),
76
- high_cost_threshold=cls._get_float_env('FINOPS_HIGH_COST_THRESHOLD', 5000.0),
77
- medium_cost_threshold=cls._get_float_env('FINOPS_MEDIUM_COST_THRESHOLD', 1000.0)
73
+ profile_display_length=cls._get_int_env("FINOPS_PROFILE_DISPLAY_LENGTH"),
74
+ service_name_length=cls._get_int_env("FINOPS_SERVICE_NAME_LENGTH"),
75
+ max_services_text=cls._get_int_env("FINOPS_MAX_SERVICES_TEXT"),
76
+ high_cost_threshold=cls._get_float_env("FINOPS_HIGH_COST_THRESHOLD", 5000.0),
77
+ medium_cost_threshold=cls._get_float_env("FINOPS_MEDIUM_COST_THRESHOLD", 1000.0),
78
78
  )
79
79
 
80
80
  @staticmethod
@@ -92,7 +92,7 @@ class DisplayConfiguration:
92
92
  except ValueError:
93
93
  return default
94
94
 
95
- def apply_smart_defaults(self, terminal_width: Optional[int] = None) -> 'DisplayConfiguration':
95
+ def apply_smart_defaults(self, terminal_width: Optional[int] = None) -> "DisplayConfiguration":
96
96
  """
97
97
  Apply smart defaults based on terminal capabilities.
98
98
 
@@ -107,7 +107,7 @@ class DisplayConfiguration:
107
107
  service_name_length=self.service_name_length,
108
108
  max_services_text=self.max_services_text,
109
109
  high_cost_threshold=self.high_cost_threshold,
110
- medium_cost_threshold=self.medium_cost_threshold
110
+ medium_cost_threshold=self.medium_cost_threshold,
111
111
  )
112
112
 
113
113
  # Smart profile display length based on terminal width
@@ -223,7 +223,7 @@ def get_profile_display_length(args=None) -> int:
223
223
 
224
224
  DEPRECATION WARNING: This function is deprecated. Use FinOpsConfigManager.get_profile_display_length() instead.
225
225
  """
226
- if args and hasattr(args, 'profile_display_length') and args.profile_display_length:
226
+ if args and hasattr(args, "profile_display_length") and args.profile_display_length:
227
227
  return args.profile_display_length
228
228
  return _global_config.get_profile_display_length()
229
229
 
@@ -234,7 +234,7 @@ def get_service_name_length(args=None) -> int:
234
234
 
235
235
  DEPRECATION WARNING: This function is deprecated. Use FinOpsConfigManager.get_service_name_length() instead.
236
236
  """
237
- if args and hasattr(args, 'service_name_length') and args.service_name_length:
237
+ if args and hasattr(args, "service_name_length") and args.service_name_length:
238
238
  return args.service_name_length
239
239
  return _global_config.get_service_name_length()
240
240
 
@@ -245,7 +245,7 @@ def get_max_services_text(args=None) -> int:
245
245
 
246
246
  DEPRECATION WARNING: This function is deprecated. Use FinOpsConfigManager.get_max_services_text() instead.
247
247
  """
248
- if args and hasattr(args, 'max_services_text') and args.max_services_text:
248
+ if args and hasattr(args, "max_services_text") and args.max_services_text:
249
249
  return args.max_services_text
250
250
  return _global_config.get_max_services_text()
251
251
 
@@ -256,7 +256,7 @@ def get_high_cost_threshold(args=None) -> float:
256
256
 
257
257
  DEPRECATION WARNING: This function is deprecated. Use FinOpsConfigManager.get_high_cost_threshold() instead.
258
258
  """
259
- if args and hasattr(args, 'high_cost_threshold') and args.high_cost_threshold:
259
+ if args and hasattr(args, "high_cost_threshold") and args.high_cost_threshold:
260
260
  return args.high_cost_threshold
261
261
  return _global_config.get_high_cost_threshold()
262
262
 
@@ -267,6 +267,6 @@ def get_medium_cost_threshold(args=None) -> float:
267
267
 
268
268
  DEPRECATION WARNING: This function is deprecated. Use FinOpsConfigManager.get_medium_cost_threshold() instead.
269
269
  """
270
- if args and hasattr(args, 'medium_cost_threshold') and args.medium_cost_threshold:
270
+ if args and hasattr(args, "medium_cost_threshold") and args.medium_cost_threshold:
271
271
  return args.medium_cost_threshold
272
- return _global_config.get_medium_cost_threshold()
272
+ return _global_config.get_medium_cost_threshold()