runbooks 0.9.5__py3-none-any.whl → 0.9.7__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 (43) hide show
  1. runbooks/__init__.py +1 -1
  2. runbooks/_platform/__init__.py +19 -0
  3. runbooks/_platform/core/runbooks_wrapper.py +478 -0
  4. runbooks/cloudops/cost_optimizer.py +330 -0
  5. runbooks/cloudops/interfaces.py +3 -3
  6. runbooks/finops/README.md +1 -1
  7. runbooks/finops/automation_core.py +643 -0
  8. runbooks/finops/business_cases.py +414 -16
  9. runbooks/finops/cli.py +23 -0
  10. runbooks/finops/compute_cost_optimizer.py +865 -0
  11. runbooks/finops/ebs_cost_optimizer.py +718 -0
  12. runbooks/finops/ebs_optimizer.py +909 -0
  13. runbooks/finops/elastic_ip_optimizer.py +675 -0
  14. runbooks/finops/embedded_mcp_validator.py +330 -14
  15. runbooks/finops/enterprise_wrappers.py +827 -0
  16. runbooks/finops/legacy_migration.py +730 -0
  17. runbooks/finops/nat_gateway_optimizer.py +1160 -0
  18. runbooks/finops/network_cost_optimizer.py +1387 -0
  19. runbooks/finops/notebook_utils.py +596 -0
  20. runbooks/finops/reservation_optimizer.py +956 -0
  21. runbooks/finops/validation_framework.py +753 -0
  22. runbooks/finops/workspaces_analyzer.py +593 -0
  23. runbooks/inventory/__init__.py +7 -0
  24. runbooks/inventory/collectors/aws_networking.py +357 -6
  25. runbooks/inventory/mcp_vpc_validator.py +1091 -0
  26. runbooks/inventory/vpc_analyzer.py +1107 -0
  27. runbooks/inventory/vpc_architecture_validator.py +939 -0
  28. runbooks/inventory/vpc_dependency_analyzer.py +845 -0
  29. runbooks/main.py +425 -39
  30. runbooks/operate/vpc_operations.py +1479 -16
  31. runbooks/remediation/commvault_ec2_analysis.py +5 -4
  32. runbooks/remediation/dynamodb_optimize.py +2 -2
  33. runbooks/remediation/rds_instance_list.py +1 -1
  34. runbooks/remediation/rds_snapshot_list.py +5 -4
  35. runbooks/remediation/workspaces_list.py +2 -2
  36. runbooks/security/compliance_automation.py +2 -2
  37. runbooks/vpc/tests/test_config.py +2 -2
  38. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/METADATA +1 -1
  39. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/RECORD +43 -24
  40. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/WHEEL +0 -0
  41. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/entry_points.txt +0 -0
  42. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/licenses/LICENSE +0 -0
  43. {runbooks-0.9.5.dist-info → runbooks-0.9.7.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,10 @@
1
1
  """
2
- Commvault EC2 Analysis - Investigate EC2 utilization for cost optimization.
2
+ EC2 Utilization Analysis - Investigate EC2 utilization patterns for cost optimization.
3
3
 
4
- JIRA FinOps-25: Enhanced Commvault EC2 investigation for cost optimization
5
- Account: 637423383469 (Commvault backup account)
4
+ Business Case: Enhanced EC2 investigation framework for backup infrastructure analysis
5
+ Target Account: 637423383469 (Backup infrastructure account)
6
6
  Challenge: Determine if EC2 instances are actively used for backups or idle
7
+ Strategic Value: Infrastructure right-sizing and cost optimization through utilization analysis
7
8
  """
8
9
 
9
10
  import logging
@@ -59,7 +60,7 @@ def calculate_ec2_cost_impact(instances_data: List[Dict]) -> Dict[str, float]:
59
60
 
60
61
 
61
62
  @click.command()
62
- @click.option("--output-file", default="/tmp/commvault_ec2_investigation.csv", help="Output CSV file path")
63
+ @click.option("--output-file", default="./tmp/commvault_ec2_investigation.csv", help="Output CSV file path")
63
64
  @click.option("--account", default="637423383469", help="Commvault backup account ID (JIRA FinOps-25)")
64
65
  @click.option("--investigate-utilization", is_flag=True, help="Investigate EC2 utilization patterns")
65
66
  @click.option("--days", default=7, help="Number of days to analyze for utilization metrics")
@@ -114,8 +114,8 @@ def analyze_table(table_name):
114
114
 
115
115
  @click.command()
116
116
  @click.option("--apply", "-a", is_flag=True, help="Apply suggested optimizations")
117
- @click.option("--output", "-o", default="/tmp/dynamodb_analysis.csv", help="Output CSV file path")
118
- def dynamodb_analyze(apply=False, output="/tmp/dynamodb_analysis.csv"):
117
+ @click.option("--output", "-o", default="./tmp/dynamodb_analysis.csv", help="Output CSV file path")
118
+ def dynamodb_analyze(apply=False, output="./tmp/dynamodb_analysis.csv"):
119
119
  """Analyze DynamoDB tables and suggest cost optimizations."""
120
120
  logger.info(f"Analyzing DynamoDB tables in {display_aws_account_info()}")
121
121
 
@@ -58,7 +58,7 @@ def get_cloudwatch_metrics(cloudwatch, instance_id, metric_name, days=7):
58
58
 
59
59
 
60
60
  @click.command()
61
- @click.option("--output-file", default="/tmp/rds_cost_optimization.csv", help="Output CSV file path")
61
+ @click.option("--output-file", default="./tmp/rds_cost_optimization.csv", help="Output CSV file path")
62
62
  @click.option("--days", default=7, help="Number of days for CloudWatch metrics analysis")
63
63
  @click.option("--include-storage", is_flag=True, help="Include detailed storage analysis")
64
64
  def get_rds_list(output_file, days, include_storage):
@@ -1,9 +1,10 @@
1
1
  """
2
- RDS Snapshot Analysis - Analyze RDS snapshots for lifecycle management and cost optimization.
2
+ RDS Snapshot Lifecycle Analysis - Storage cost optimization and lifecycle management.
3
3
 
4
- JIRA FinOps-23: Enhanced RDS snapshots analysis with cost calculation for $5K-24K annual savings
5
- Accounts: 91893567291, 142964829704, 363435891329, 507583929055
4
+ Business Case: Enhanced snapshot analysis with cost calculation for $5K-24K annual savings
5
+ Target Accounts: 91893567291, 142964829704, 363435891329, 507583929055
6
6
  Focus: 89 manual snapshots causing storage costs and operational clutter
7
+ Strategic Value: Operational cleanup and cost reduction through automated lifecycle management
7
8
  """
8
9
 
9
10
  import logging
@@ -85,7 +86,7 @@ def calculate_manual_snapshot_savings(snapshots_data: List[Dict]) -> Dict[str, f
85
86
 
86
87
 
87
88
  @click.command()
88
- @click.option("--output-file", default="/tmp/rds_snapshots.csv", help="Output CSV file path")
89
+ @click.option("--output-file", default="./tmp/rds_snapshots.csv", help="Output CSV file path")
89
90
  @click.option("--old-days", default=30, help="Days threshold for considering snapshots old")
90
91
  @click.option("--include-cost", is_flag=True, help="Include estimated cost analysis")
91
92
  @click.option("--snapshot-type", help="Filter by snapshot type (automated, manual)")
@@ -93,7 +93,7 @@ def get_workspace_usage_by_hours(workspace_id, start_time, end_time):
93
93
 
94
94
 
95
95
  @click.command()
96
- @click.option("--output-file", default="/tmp/workspaces.csv", help="Output CSV file path")
96
+ @click.option("--output-file", default="./tmp/workspaces.csv", help="Output CSV file path")
97
97
  @click.option("--days", default=30, help="Number of days to analyze for usage metrics")
98
98
  @click.option("--delete-unused", is_flag=True, help="🚨 HIGH-RISK: Delete unused WorkSpaces")
99
99
  @click.option("--unused-days", default=90, help="Days threshold for considering WorkSpace unused")
@@ -102,7 +102,7 @@ def get_workspace_usage_by_hours(workspace_id, start_time, end_time):
102
102
  @click.option("--analyze", is_flag=True, help="Perform detailed cost analysis")
103
103
  @click.option("--dry-run", is_flag=True, default=True, help="Preview actions without execution")
104
104
  def get_workspaces(
105
- output_file: str = "/tmp/workspaces.csv",
105
+ output_file: str = "./tmp/workspaces.csv",
106
106
  days: int = 30,
107
107
  delete_unused: bool = False,
108
108
  unused_days: int = 90,
@@ -144,7 +144,7 @@ class ComplianceAutomation:
144
144
  tester = SecurityBaselineTester(
145
145
  profile=self.profile,
146
146
  lang_code=language,
147
- output_dir=f"/tmp/compliance_{datetime.now().strftime('%Y%m%d_%H%M%S')}",
147
+ output_dir=f"./tmp/compliance_{datetime.now().strftime('%Y%m%d_%H%M%S')}",
148
148
  )
149
149
 
150
150
  # Execute assessment
@@ -492,7 +492,7 @@ class ComplianceAutomation:
492
492
  else:
493
493
  raise ValueError(f"Unsupported format: {format}")
494
494
 
495
- dashboard_path = f"/tmp/{filename}"
495
+ dashboard_path = f"./tmp/{filename}"
496
496
  with open(dashboard_path, "w") as f:
497
497
  f.write(dashboard_content)
498
498
 
@@ -231,7 +231,7 @@ class TestVPCNetworkingConfig:
231
231
  "DEFAULT_ANALYSIS_DAYS": "45",
232
232
  "FORECAST_DAYS": "120",
233
233
  "OUTPUT_FORMAT": "json",
234
- "OUTPUT_DIR": "/tmp/vpc-exports",
234
+ "OUTPUT_DIR": "./tmp/vpc-exports",
235
235
  "ENABLE_COST_APPROVAL_WORKFLOW": "false",
236
236
  "ENABLE_MCP_VALIDATION": "true",
237
237
  }
@@ -247,7 +247,7 @@ class TestVPCNetworkingConfig:
247
247
  assert config.default_analysis_days == 45
248
248
  assert config.forecast_days == 120
249
249
  assert config.default_output_format == "json"
250
- assert str(config.default_output_dir) == "/tmp/vpc-exports"
250
+ assert str(config.default_output_dir) == "./tmp/vpc-exports"
251
251
  assert config.enable_cost_approval_workflow is False
252
252
  assert config.enable_mcp_validation is True
253
253
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runbooks
3
- Version: 0.9.5
3
+ Version: 0.9.7
4
4
  Summary: CloudOps Automation Toolkit with Enhanced Cloud Foundations Assessment for DevOps and SRE teams.
5
5
  Author-email: Maintainers <nnthanh101@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -1,9 +1,11 @@
1
1
  conftest.py,sha256=HTnQMw9wxefkvX5q4yG8EUH2qVLJBnC9QCt3UCltw7I,586
2
- runbooks/__init__.py,sha256=5_iizoEvp41BBd5QLP3F0xPprURLzVlndTw48znTd3s,4983
2
+ runbooks/__init__.py,sha256=rPUBLGrStIhoYg6DWJHFKXsoafu6_ZEAAOOxhbCoVxY,4983
3
3
  runbooks/__main__.py,sha256=0hTPUA9KkLm_H_COqaIpNzXvC4Lv5b_XYYBV6fUFDrM,241
4
4
  runbooks/base.py,sha256=a4jdiMeMWfJtOnYBlZ99Imzc1sdHCgyOXYhxUges7O8,11742
5
5
  runbooks/config.py,sha256=63Bct1jASQG3mjPTNnzfJwTMgXzG8aQqVsaku6ugZR0,7839
6
- runbooks/main.py,sha256=Dm9u-DQGymFHGUTR-lfJy79EA98BRgC2XaUGfKJ_6Kk,311800
6
+ runbooks/main.py,sha256=VAq1iC5xEOcmtUHHkETKjt23SKG0-qZPvwF0EyK77q0,333386
7
+ runbooks/_platform/__init__.py,sha256=86Y-f3Klzj8hpdvxxQyVXsm6ARevKsxnGoc6YjSqbUE,519
8
+ runbooks/_platform/core/runbooks_wrapper.py,sha256=bmOqZY3scxgVpIpca2ZdpVAAIGv2XpugRsHiGcXL-Og,18937
7
9
  runbooks/cfat/README.md,sha256=vDOJykrHDk8tBCw_PbWn27XvZXSmkv2sCknmlNaM9OY,11853
8
10
  runbooks/cfat/__init__.py,sha256=lxoBHV8KS5vXz6LBUh3tW6Bs4PQ7GpEcllb2v835rlI,2142
9
11
  runbooks/cfat/app.ts,sha256=EwpA9bQzkoH1qqTJ_Tco47PwVG2zTv4g8ZmEGYpWYlU,27785
@@ -70,9 +72,9 @@ runbooks/cfat/tests/test_models.py,sha256=16Dcdty82_yotJ2ngBbgydCy9BDamxtMZrs4a1
70
72
  runbooks/cfat/tests/test_reporting.py,sha256=ysPZSAFgCQ7oIkOdBxUrlCiyZBhWDpcnp0I2cv3k9_Q,12631
71
73
  runbooks/cloudops/__init__.py,sha256=YFC0DjjlW1D0W5KBqyKuPPz8gBQsCmrB-zy_8sTKBkE,5348
72
74
  runbooks/cloudops/base.py,sha256=DuiWkISty3-cUY_gvIW_TvTnYZwB9t16QrcQaWctPnQ,14736
73
- runbooks/cloudops/cost_optimizer.py,sha256=25G-E-nt11FeVDoPgE_ar38R8KKrcN9fstGfy9MEWok,32992
75
+ runbooks/cloudops/cost_optimizer.py,sha256=znnvruTwksZz2eMvKG4yLxRLF83kh9M6n9lLxj5ZlEU,48252
74
76
  runbooks/cloudops/infrastructure_optimizer.py,sha256=fUi6tAsiYyrp1dGx8gG7g8g49aoEmotKW1DW9Gvtnw0,1077
75
- runbooks/cloudops/interfaces.py,sha256=pUOJ6mwOjnYEyDYrp8V4PvgwR7xMF_AOdqOtc5RwcuM,32653
77
+ runbooks/cloudops/interfaces.py,sha256=gTlpf0uc6IHecrNPFO6GM7ViXQ6yTRWoMynbU_2y_1o,32656
76
78
  runbooks/cloudops/lifecycle_manager.py,sha256=ppaoR9BugGzH88a91cUhhIPopwFPBbLWoFWaQDG4pdA,1084
77
79
  runbooks/cloudops/mcp_cost_validation.py,sha256=RK_4pN1y_nkGeEGkF-lgYnNyDbbRSsPV272wB-Riy1Y,30172
78
80
  runbooks/cloudops/models.py,sha256=jZ2PnNJGJfOnZyfAVfaYspQaoYQ6TOk-pELJqFbrVac,12196
@@ -100,32 +102,43 @@ runbooks/enterprise/error_handling.py,sha256=0rorz2L3nWl3xMDMiEMgNj8CvM7efABnEIz
100
102
  runbooks/enterprise/logging.py,sha256=-Qau52mLjryFo8r9PzsHbfkbfBsFom1ndEIvy7ItFEY,31728
101
103
  runbooks/enterprise/multi_tenant.py,sha256=NDcPL0H5V2ELpHoswbJosyDxalARPngevn74wPnRZtA,23560
102
104
  runbooks/feedback/user_feedback_collector.py,sha256=P0lcJN82wta73kNStBVGwNrc3R_Sng_MPNcpaHwojKI,16461
103
- runbooks/finops/README.md,sha256=AJrpoQqtYo8JbmfYJmNFpxTGFCtdvLyP5t-RJSeGAlg,13127
105
+ runbooks/finops/README.md,sha256=0e08guT3r6TLY-nF9qnGllFDQpA_frqdURSwl7f8W8M,13128
104
106
  runbooks/finops/__init__.py,sha256=QChg1sByI0iwuzE5q6N2WrC4eFzXIkWjzTsMFbKEppo,4469
105
107
  runbooks/finops/account_resolver.py,sha256=AiDQiqyU0bWrgQHuVjBBwE_qjqCaLUo20oD28FkvnN0,9475
106
108
  runbooks/finops/accuracy_cross_validator.py,sha256=1IBtJ5Q_Re9_c90nC62ApkZ11LtKWrn4ouni3Vg1PEE,25758
109
+ runbooks/finops/automation_core.py,sha256=S3ZvvhwBDJzKot3EaC8asZN_-aApL_ChrZnjY0OB4JU,30788
107
110
  runbooks/finops/aws_client.py,sha256=TSWNQWn-22R0gleyslMwKhU1Jc_cg3Q-FPBZWa0n3RI,41647
108
111
  runbooks/finops/budget_integration.py,sha256=Sg_FFq5vU8RBaF3yAJUnnFyLbfGSacRZfGYyW2sx4kE,12915
109
- runbooks/finops/business_cases.py,sha256=1BBdTNRqdhmuE4nAxhQxnbUVGnXoY8ZK65TWY1kdu2U,21187
110
- runbooks/finops/cli.py,sha256=qlrXQTiXVT9LJkXsoBueg3lClBzsb3HWw0De1hUZbf0,10135
112
+ runbooks/finops/business_cases.py,sha256=v-sGH8I7yyYcIwd8cTWsuYFouFxd8I7PspEcx9bNRcg,39327
113
+ runbooks/finops/cli.py,sha256=pAcXUQXQ3SdatmqfQRJjge1MSzNWM6PqtXXMvNa4OGw,10913
111
114
  runbooks/finops/commvault_ec2_analysis.py,sha256=aX5uScOAm-sGRvA5Z3E4IC1Lf0p6dHilAd_bbUCUUSs,17893
115
+ runbooks/finops/compute_cost_optimizer.py,sha256=GzC9TAZs2I-7JDK13ebnOV_y58GzUFnKo6HGTwcYdNs,40511
112
116
  runbooks/finops/cost_optimizer.py,sha256=MNuTQj4FFz1nsl8LolXIfzyaXpabHoClDpXpa7UCYgA,52416
113
117
  runbooks/finops/cost_processor.py,sha256=YPXlIGonraynHpB-NpkF-YLkK_n_fy13J5OlgdjK4LU,53907
114
118
  runbooks/finops/dashboard_router.py,sha256=zxSMWZupIBR4hMrk4jASdv8rEThmb6qfpIAM6ddZ6Q4,43495
115
119
  runbooks/finops/dashboard_runner.py,sha256=2nw55L0ZpDnBpeg0-n28Qfs7CNfi14HQkY4E8uVK77A,94754
116
- runbooks/finops/embedded_mcp_validator.py,sha256=TjH8Sz3wlXC7YKwo9w03xZ2nZwyGaHNm25iES_Ebrmo,27639
120
+ runbooks/finops/ebs_cost_optimizer.py,sha256=SoE3ySa7xpOee4Zs4_vmf5N7uZJ3HX2_kiAPF4fxDgQ,31957
121
+ runbooks/finops/ebs_optimizer.py,sha256=vInSHPzAbl3s2iLqs1gq452Dz6OtkwicXD8-8hAMY0Q,43336
122
+ runbooks/finops/elastic_ip_optimizer.py,sha256=68c6Yupa0U0HZrhdr6kv-POPsDX_9vHRd2gvfTuYCww,32315
123
+ runbooks/finops/embedded_mcp_validator.py,sha256=0G6bRNvbCpiD-7rNMWXmIgbr1Vx4cDyx52P59boNHS4,45160
117
124
  runbooks/finops/enhanced_dashboard_runner.py,sha256=uR8PF7ebvmVGUHUJ71WDvcmojmIs7STAb7tnbhBqPIk,21148
118
125
  runbooks/finops/enhanced_progress.py,sha256=LisYm-akB1W7zDW2ulMrxJxjNPqSjMG9kObCpHYwO-A,11389
119
126
  runbooks/finops/enhanced_trend_visualization.py,sha256=tF7hGZbN8ieh1cW2W86-6yBMMgT0JNDcaUvgRTHslpA,16127
127
+ runbooks/finops/enterprise_wrappers.py,sha256=M_lCd5zdABvBVnRlZF6YrAvfC9MsIpgiUhL0bcexG2k,33813
120
128
  runbooks/finops/finops_dashboard.py,sha256=uO96CFDMflGAOGc_KrmtOnXk2iyEExDJxS65qH6D0qc,9647
121
129
  runbooks/finops/finops_scenarios.py,sha256=lnPqaRyQMQ6l1k0nwQookTlXoneL409G5jADMKXNbk4,50732
122
130
  runbooks/finops/helpers.py,sha256=-8QtOwkQVRkbYS6kg65DMKJpdhx9EQjpcoIOlt5ANmI,51599
123
131
  runbooks/finops/iam_guidance.py,sha256=YnaWywIHDsSYJwj34Jk0WKFNpNnDruPx5B4NmNzoRNA,19925
132
+ runbooks/finops/legacy_migration.py,sha256=QkuVsGwkH4IkXoGbmQ7jUspAXLi4FYkZedC1vOHB-o8,31430
124
133
  runbooks/finops/main.py,sha256=W0Lnr3GJN7Tp4QL0x09GROOc7fnttpdRmd3N3T5eULo,288
125
134
  runbooks/finops/markdown_exporter.py,sha256=2SE2kSINFFTKelHZLz_ukuV6tl9XRt-BzIXGdfCxTko,18177
126
135
  runbooks/finops/multi_dashboard.py,sha256=J0E0WTG_xC9Ch8vUFXRXE3aBwf7H5t9xrFfmkyLms9U,73474
136
+ runbooks/finops/nat_gateway_optimizer.py,sha256=WBfYhyXQ5R5F0LpiNghlEuY1-JgJoMDD6BQzgCUPrl0,55587
137
+ runbooks/finops/network_cost_optimizer.py,sha256=1XFrcuyuZXu1OBYufJhSHD5KC0AjKT97bbsskAenAA8,66743
138
+ runbooks/finops/notebook_utils.py,sha256=dhH7boTXO9EH10kPMdmSXDBOCUXupi1WU-wp83atzY8,29725
127
139
  runbooks/finops/optimizer.py,sha256=UcxZi5jj_wEvYdrC9FLcj10rRgKxHlnuGxRdFyv8rWg,36221
128
140
  runbooks/finops/profile_processor.py,sha256=2GmwDbzy0b5tpQaF-DzxrcRVJsrpVIBt2KdiH1ZRQ68,6241
141
+ runbooks/finops/reservation_optimizer.py,sha256=jaJrXlkN1HR7XHKqmzqCQbh0VLu7DgjJ6Z4RLJKB9go,45875
129
142
  runbooks/finops/runbooks.inventory.organizations_discovery.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
143
  runbooks/finops/runbooks.security.report_generator.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
144
  runbooks/finops/runbooks.security.run_script.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -135,7 +148,9 @@ runbooks/finops/schemas.py,sha256=YvW758e0b3RdWFNg8jgRXqaC2h7ScIHcgwq9nTpFNHo,23
135
148
  runbooks/finops/service_mapping.py,sha256=uThjqTEGwkPGWitWxHLjcYPj5KsvjYuReSDlf31tKOI,6543
136
149
  runbooks/finops/single_dashboard.py,sha256=OP8KA3fOIOzis79r3yFiJwfHiErJ2afjSeynLjTFXqI,50118
137
150
  runbooks/finops/types.py,sha256=17CVLQysbwDiWKi2iXjtz7n8SLZUxRtG1JMthfARJ8I,3317
151
+ runbooks/finops/validation_framework.py,sha256=PnP5U-BYSXPnZI26AOgWo3PnFXGTwRa5-GK1fCdJV3g,31751
138
152
  runbooks/finops/visualisations.py,sha256=BI6cBsKSNUcjqnEukMzHxZzqyv12w3TRj2zvN53-Rbk,2737
153
+ runbooks/finops/workspaces_analyzer.py,sha256=9hxwlNkIiabhGjJumAulvN20KKPXajMQRF_yWkFS6sk,22695
139
154
  runbooks/finops/tests/__init__.py,sha256=MFqn-e57ft0Dsmdi89vO7jrCV4wkmMNYDtyTrSbx0Jo,583
140
155
  runbooks/finops/tests/results_test_finops_dashboard.xml,sha256=JBoeWtVweUH5EZ15qnLQ_KfQVTR9fhNkZrfY3PCjZQI,4504
141
156
  runbooks/finops/tests/run_comprehensive_tests.py,sha256=EbgU4Z30pTnPLUX-I4Yyrl4xXZFyeTV3DzYawN6OP2M,15866
@@ -151,7 +166,7 @@ runbooks/hitl/enhanced_workflow_engine.py,sha256=V2QRWyd6mpe9-2fIg-cb12hTjaKYeSd
151
166
  runbooks/inventory/.gitignore,sha256=qqVQodfb6iNuPRM7fsl7lvqxrJaatKNQqQmX7s1_PPg,5563
152
167
  runbooks/inventory/ArgumentsClass.py,sha256=BwquO-iYZNS_fVxgASrksanzoAN_NPCzRpTAyohRLX0,8621
153
168
  runbooks/inventory/README.md,sha256=fDJvMzc6ITLMyoOvn2-KA7NVxl8-s4aK7L8-PMWOVi8,43927
154
- runbooks/inventory/__init__.py,sha256=ANgBvPKb-shH14uC-y9-LleHUMn9vv7JjHZwKRZ-9Ks,2106
169
+ runbooks/inventory/__init__.py,sha256=ryN9tsERXqE0a1OpzR65NY_oG5jxO5BAVixWT7h-IC8,2337
155
170
  runbooks/inventory/account_class.py,sha256=wvYNeiXHq6tk8Pqa95Aa91zAtuBXcnE51NonzDueuaM,26361
156
171
  runbooks/inventory/all_my_instances_wrapper.py,sha256=B_nHnXOFle6_LU1YnZd38uMZNV6pIONh4EvCyO-lwzw,5723
157
172
  runbooks/inventory/aws_decorators.py,sha256=_3QWqih_J6tgs7_dnJwp7Al7OI0qImZpFMyO4E-bMZE,8605
@@ -194,6 +209,7 @@ runbooks/inventory/list_sns_topics.py,sha256=qn1YlsZtpZSdC7lbFudBZCgW8w8DwUlVpzA
194
209
  runbooks/inventory/list_ssm_parameters.py,sha256=bsKjS-3vm3t9dJuiJprrH8URRXGW5qeKByB-KD9jMRE,20984
195
210
  runbooks/inventory/list_vpc_subnets.py,sha256=HcKjbmU9mydJhC7QQ4f4C4MzRF6pY9xf-gCdE_42DnI,19001
196
211
  runbooks/inventory/list_vpcs.py,sha256=b_54AqH_IgpJ_Qe4VcU-XKmvhfmc5rEJBLWldZw2lF4,18120
212
+ runbooks/inventory/mcp_vpc_validator.py,sha256=Ef_HM8pQIxhshbqINVtPilJiSIi05GsUSOFHSmiQICw,44005
197
213
  runbooks/inventory/organizations_discovery.py,sha256=R0bIxDkXQfuOwtYtINwr2XgYfkbz_X-B6OJhSgP9h3Q,57430
198
214
  runbooks/inventory/recover_cfn_stack_ids.py,sha256=_KgQgDgZRxeyzUb5im6RM-gORZL9WmD03jKpruwp3os,8638
199
215
  runbooks/inventory/requirements.txt,sha256=W8mvfeKf86CfTIeRJyqa978xJ77Cjfh4mlQ3Gb4YrCc,213
@@ -204,6 +220,9 @@ runbooks/inventory/runbooks.security.report_generator.log,sha256=47DEQpj8HBSa-_T
204
220
  runbooks/inventory/runbooks.security.run_script.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
221
  runbooks/inventory/runbooks.security.security_export.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
222
  runbooks/inventory/verify_ec2_security_groups.py,sha256=iFX5AlRJWaU0DP-gwdOrsXc3zNwsRZbjZeyjcn0YMUA,68221
223
+ runbooks/inventory/vpc_analyzer.py,sha256=JbRcrxnXoOuJwaPhXQjlIM-X07kKN62NUx6IqrghsnA,49863
224
+ runbooks/inventory/vpc_architecture_validator.py,sha256=0ukyPQ6K3N1FWp67RdqwhqtsiS0w8tBAaV80HGTXshk,38826
225
+ runbooks/inventory/vpc_dependency_analyzer.py,sha256=FX6gbIJZmL_pR1lBdoj9goBcEhTbzUxOrsmSW4q-Xwo,37133
207
226
  runbooks/inventory/vpc_flow_analyzer.py,sha256=FaBV1YPumuwQs1GrOq6Wu1pYWtLguvMl2OGUZhYw7rM,41447
208
227
  runbooks/inventory/LandingZone/delete_lz.py,sha256=hMwv-T8RTjQQdx9oLelABibFHGD9TFR0xkI_Hgfabw0,48920
209
228
  runbooks/inventory/Tests/common_test_data.py,sha256=M4qRXxYu-WphsJnnumG0P7ENK3OX1Gh2AoCxFN71U4s,180677
@@ -222,7 +241,7 @@ runbooks/inventory/collectors/__init__.py,sha256=gmRyAeXqZt-0KgBD4eh77zQs-dcxpKV
222
241
  runbooks/inventory/collectors/aws_comprehensive.py,sha256=KKfERje9F1_taw_q_m1jiXHxjXiVZ43SxXk3DUXFzsw,16953
223
242
  runbooks/inventory/collectors/aws_compute.py,sha256=MzxNqE1YWRdTVtLyJNNXgWabyvLU1kKoiKpe9Cn0RdU,21018
224
243
  runbooks/inventory/collectors/aws_management.py,sha256=kRB3mxCGXq3TfXlINzdhxIb0sB6CzGoO698JeuyKLWc,32932
225
- runbooks/inventory/collectors/aws_networking.py,sha256=8PbLVWrg_wls5a7NJm59e09WSglPwVGpL5wL48TeDDs,11425
244
+ runbooks/inventory/collectors/aws_networking.py,sha256=usLr9CKS2yOuKDuIDoKpIx0Fj_w0jwjccjrtsyekjKI,27439
226
245
  runbooks/inventory/collectors/base.py,sha256=cOFE-zUOOWYQJPxK0p9lwqPfBopS_bfX_LBrc9qq5TY,7371
227
246
  runbooks/inventory/collectors/enterprise_scale.py,sha256=hsuN3DIbVbBwzLdHeYYPm_uH5AwN_HZRGVIl0RHwrmA,10968
228
247
  runbooks/inventory/core/__init__.py,sha256=kCH8dKMGp3bAYNPQI7OegiQdglV0G1k36gUtAKT6avE,562
@@ -258,7 +277,7 @@ runbooks/operate/s3_operations.py,sha256=LtLipM3BdJNIG-3purXGqkBPNumhRgnKEt417IN
258
277
  runbooks/operate/tagging_operations.py,sha256=UMyiXTly6hy7ZrehalHQmWaAG1lKVW2yviOUFDY7zv8,26228
259
278
  runbooks/operate/tags.json,sha256=-Y77SDvrvn0sCdsxgdRwu0sl0mih2Ib_N6nGi-UtE5U,513
260
279
  runbooks/operate/vpc_endpoints.py,sha256=kNmjRZhOT_JjCHfcc4YEyBdQco4amLluDcf5ePA5KN0,27134
261
- runbooks/operate/vpc_operations.py,sha256=s9lB-G0iL4cuvStKyGAvNP1_FcAzbOc8z_Qu_nusklc,43077
280
+ runbooks/operate/vpc_operations.py,sha256=xQ7dNbHNQXco23YX09GIc4oXYKqpUAaPVkhwWCke4OQ,109096
262
281
  runbooks/remediation/README.md,sha256=8RuAqAvrhw8VLKw1HTUI1H6ZZfk6PMnrQmhEVH9qeJg,14536
263
282
  runbooks/remediation/__init__.py,sha256=JSPav84-avCg7mZPD-dI0_lh12MjE5wKllpzHqxhQws,3490
264
283
  runbooks/remediation/acm_cert_expired_unused.py,sha256=_SfttBHKMBfXNtI1006Ci1dCYDgqhCEGGI5Ua3RvQGk,3541
@@ -271,8 +290,8 @@ runbooks/remediation/cognito_active_users.py,sha256=ZKtludgCL0ufWiWpiodfD8DNRKSi
271
290
  runbooks/remediation/cognito_remediation.py,sha256=VOTTxHu935kwNLFt3zTcEj-5cY2hikifGcydgSF4KXw,36966
272
291
  runbooks/remediation/cognito_user_password_reset.py,sha256=1pBLS9Ccdu8ohflGcbsBI-HLKLbNYsU39sijielAcQk,6902
273
292
  runbooks/remediation/commons.py,sha256=aqhaH1UtZl8zcWCjh8p5jgZNe_3wkWQmAJo5gov9My4,17273
274
- runbooks/remediation/commvault_ec2_analysis.py,sha256=UTmIPgB_iyid5QFLTBwfJ1UKqbY4Lqko7B0ZDO7mTwc,11372
275
- runbooks/remediation/dynamodb_optimize.py,sha256=CKezH6osJlW44kpu47STN0K6Q9EbL69FYr2SmwjcHmw,5987
293
+ runbooks/remediation/commvault_ec2_analysis.py,sha256=34myR7nFwqyJPao-pVG4SgGu2VojTvs9Q-TLryVZCKM,11504
294
+ runbooks/remediation/dynamodb_optimize.py,sha256=8MAeIX9fUejIYH1cKFHD9-me5lB9DoiyPKg4M0SeR4Q,5989
276
295
  runbooks/remediation/dynamodb_remediation.py,sha256=Kcn3jBYmDoWkg5AsKX7fAxbDz-jl1s0kp2iPc96n3Fc,30872
277
296
  runbooks/remediation/dynamodb_server_side_encryption.py,sha256=wnXwRcXzR3dFpcsA-5CjyCvPBixOiflN2H8Rfdp8Wao,3802
278
297
  runbooks/remediation/ec2_public_ips.py,sha256=BcTi7QGihyy5brPa2zJSiqk0fcFYok5YO96B6GrEf68,5331
@@ -285,9 +304,9 @@ runbooks/remediation/kms_remediation.py,sha256=DdxR2WiBey8-M94dV9MPSoGsb27ScuA-U
285
304
  runbooks/remediation/lambda_list.py,sha256=B5dQzg_nWXbuC-h0TuCE1hH26Rsm5jeNkmRZrbYGekM,10925
286
305
  runbooks/remediation/lambda_remediation.py,sha256=WRaQUq0Y40l5_L4lkcyuUN5hZXRVIcVfqbfshAJAnWo,42553
287
306
  runbooks/remediation/multi_account.py,sha256=88mvZwVsPtyiXrlbECBWI5uMe6pL2CLWUS3sdZmegic,22062
288
- runbooks/remediation/rds_instance_list.py,sha256=Nl1Pe1DDBZBl3SDjnY2i51IrcErELgCh2W1EXQyu_Dc,8476
307
+ runbooks/remediation/rds_instance_list.py,sha256=HoDK0UwCT4uAv5RiJ4RxStXspetTPLyDaeXOa_icCwk,8477
289
308
  runbooks/remediation/rds_remediation.py,sha256=bWs7K41GMplArgC_NvUMyboSXljosrIDUtZL0QGWuh0,37069
290
- runbooks/remediation/rds_snapshot_list.py,sha256=X1g2j9J5_sN_5NIgZ3I6C9qdxQVkrPf45unhYASbQBo,16575
309
+ runbooks/remediation/rds_snapshot_list.py,sha256=u19qM3Nmxm5bhTI2AR4yhjM34KrNR1418cnSlXQPFDs,16664
291
310
  runbooks/remediation/requirements.txt,sha256=xwrVRq4cK8GbX9cwt_8TLLj8kCJHQ06tqBrH_wukMzE,2091
292
311
  runbooks/remediation/s3_block_public_access.py,sha256=nnDnRAdbM7elgl0LfX87avIzogaysawKUv5vDU_rFBs,6331
293
312
  runbooks/remediation/s3_bucket_public_access.py,sha256=eejdaWik_QpWHIMAZSdHWVckJBHL3VkXRBCIDFcVVVI,5533
@@ -301,13 +320,13 @@ runbooks/remediation/s3_object_search.py,sha256=8MnbwVwz2qZ0IK_C_uzMwNCfMnkB24d8
301
320
  runbooks/remediation/s3_remediation.py,sha256=KIy0BOMXUicqbeBcyGP9HBtF_Vu43oFavHWugp05r0I,33014
302
321
  runbooks/remediation/scan_for_phrase.py,sha256=FgTpDXnLg1tdnU6aYTmvOZu9CMjZMsfrZCNOSLqL4P4,18958
303
322
  runbooks/remediation/vpc_remediation.py,sha256=FDLR1oY27WN227kXJnpn1vqf2FtJ_f1ra4RocWxJ6-8,20716
304
- runbooks/remediation/workspaces_list.py,sha256=btHB2QJDXhon1szWRgur3bPo49tPoZsNwShGn6vFIno,16275
323
+ runbooks/remediation/workspaces_list.py,sha256=nP2XKnTp5hjltU2-noU7hj-aoq2jOxNkRbl1p7wTPD0,16277
305
324
  runbooks/remediation/Tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
325
  runbooks/remediation/Tests/update_policy.py,sha256=7jb5hMR6jVbCUwzl5MHVqxrIGFN9_2-trIMUV-R7Kls,2999
307
326
  runbooks/security/README.md,sha256=vnpEqKYs9Q9dCLX9tmB-1fZZWk3kOMmEoC29f-WArP8,18572
308
327
  runbooks/security/__init__.py,sha256=AnNXivlCvDjwGuk9gbqBsCgarURFxJDQE3HxJ_PDHjA,10237
309
328
  runbooks/security/cloudops_automation_security_validator.py,sha256=35gc2xGqe0VWxMy06_fwI9oPl9GKAhutOKsMYmrhbIs,48402
310
- runbooks/security/compliance_automation.py,sha256=G4ki4PgUg2_ZBEtB9RI0PfcvmGa7sUrX9HDEyOM1qKU,25669
329
+ runbooks/security/compliance_automation.py,sha256=rQE0zPYWbhh4NxEwqU_U12YFpwt_HyXplv6DtHitKQI,25671
311
330
  runbooks/security/compliance_automation_engine.py,sha256=M-Hfc_WvNEe5ZT7TAYgyc_XO3nygY5DP9PtoskVCf60,39446
312
331
  runbooks/security/config-origin.json,sha256=3mijAIymVtkf1V_BzDJPnQSBSFjrYyL-wrPBH3t8gXQ,1009
313
332
  runbooks/security/config.json,sha256=3mijAIymVtkf1V_BzDJPnQSBSFjrYyL-wrPBH3t8gXQ,1009
@@ -373,12 +392,12 @@ runbooks/vpc/rich_formatters.py,sha256=cVENwGPh3VmH7A0t0hkI7ZGOAtonpjm_Qez8lVUDZ
373
392
  runbooks/vpc/tests/__init__.py,sha256=WfLaQO9kiyKfULTIyMJ4nYJ0VV7eWhmBT3LUv9d9C10,96
374
393
  runbooks/vpc/tests/conftest.py,sha256=x5dBjMZ7BbxBI7d4pdhNLWkRod1wlBA4Sm1stv4poJA,11999
375
394
  runbooks/vpc/tests/test_cli_integration.py,sha256=OvsSNd9gFlkzdyDf8tUZGES93TTZR60KECnCpkyGawk,22759
376
- runbooks/vpc/tests/test_config.py,sha256=0JQ4cyxDGC4sVpDS4o2Jo1u93CtivmE4l4igigGOhJA,17482
395
+ runbooks/vpc/tests/test_config.py,sha256=GIX7cFnj7xUxxrYX49mV9hYmx60Dcd_Bu-cpb90oXdE,17484
377
396
  runbooks/vpc/tests/test_cost_engine.py,sha256=UVUj3yg1ir9XVsD4MRdZALPlRFwmhzcuak8x3w-m6-c,20914
378
397
  runbooks/vpc/tests/test_networking_wrapper.py,sha256=gmxnVzQJ-7rTsghzNLmIM-QZo9GUGyIhHqE1g8gkEkw,20623
379
- runbooks-0.9.5.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
380
- runbooks-0.9.5.dist-info/METADATA,sha256=8SwZWCmnizJQyxIliXkt4of60YC7ja-NtAtqagofo8M,26012
381
- runbooks-0.9.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
382
- runbooks-0.9.5.dist-info/entry_points.txt,sha256=WahHUYcgE2syXEc0MkoUdctLMxs0zjBWi_vWb5dRK8M,295
383
- runbooks-0.9.5.dist-info/top_level.txt,sha256=A0zTBjuF7THC6vnJU7StN7ihtUoh31lZSfwyWpWP2YE,18
384
- runbooks-0.9.5.dist-info/RECORD,,
398
+ runbooks-0.9.7.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
399
+ runbooks-0.9.7.dist-info/METADATA,sha256=htrEw0H7UJLjg4v69kDj4QhMTLWN35Gi_6OTAezqhtg,26012
400
+ runbooks-0.9.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
401
+ runbooks-0.9.7.dist-info/entry_points.txt,sha256=WahHUYcgE2syXEc0MkoUdctLMxs0zjBWi_vWb5dRK8M,295
402
+ runbooks-0.9.7.dist-info/top_level.txt,sha256=A0zTBjuF7THC6vnJU7StN7ihtUoh31lZSfwyWpWP2YE,18
403
+ runbooks-0.9.7.dist-info/RECORD,,