runbooks 0.9.4__py3-none-any.whl → 0.9.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.
@@ -1,7 +1,7 @@
1
1
  """
2
2
  Commvault EC2 Analysis - Investigate EC2 utilization for cost optimization.
3
3
 
4
- JIRA AWSO-25: Enhanced Commvault EC2 investigation for cost optimization
4
+ JIRA FinOps-25: Enhanced Commvault EC2 investigation for cost optimization
5
5
  Account: 637423383469 (Commvault backup account)
6
6
  Challenge: Determine if EC2 instances are actively used for backups or idle
7
7
  """
@@ -26,7 +26,7 @@ def calculate_ec2_cost_impact(instances_data: List[Dict]) -> Dict[str, float]:
26
26
  """
27
27
  Calculate potential cost impact for EC2 instances.
28
28
 
29
- JIRA AWSO-25: Focuses on Commvault backup account utilization analysis
29
+ JIRA FinOps-25: Focuses on Commvault backup account utilization analysis
30
30
  """
31
31
  total_instances = len(instances_data)
32
32
  running_instances = [i for i in instances_data if i.get("State", {}).get("Name") == "running"]
@@ -60,18 +60,18 @@ def calculate_ec2_cost_impact(instances_data: List[Dict]) -> Dict[str, float]:
60
60
 
61
61
  @click.command()
62
62
  @click.option("--output-file", default="/tmp/commvault_ec2_investigation.csv", help="Output CSV file path")
63
- @click.option("--account", default="637423383469", help="Commvault backup account ID (JIRA AWSO-25)")
63
+ @click.option("--account", default="637423383469", help="Commvault backup account ID (JIRA FinOps-25)")
64
64
  @click.option("--investigate-utilization", is_flag=True, help="Investigate EC2 utilization patterns")
65
65
  @click.option("--days", default=7, help="Number of days to analyze for utilization metrics")
66
66
  @click.option("--dry-run", is_flag=True, default=True, help="Preview analysis without execution")
67
67
  def investigate_commvault_ec2(output_file, account, investigate_utilization, days, dry_run):
68
68
  """
69
- AWSO-25: Commvault EC2 investigation for cost optimization.
69
+ FinOps-25: Commvault EC2 investigation for cost optimization.
70
70
 
71
71
  Account: 637423383469 (Commvault backup account)
72
72
  Challenge: Determine if EC2 instances are actively used for backups or idle
73
73
  """
74
- print_header("JIRA AWSO-25: Commvault EC2 Investigation", "v0.9.1")
74
+ print_header("JIRA FinOps-25: Commvault EC2 Investigation", "v0.9.1")
75
75
 
76
76
  account_info = display_aws_account_info()
77
77
  console.print(f"[cyan]Account: {account} - Investigating EC2 usage patterns[/cyan]")
@@ -164,7 +164,7 @@ def investigate_commvault_ec2(output_file, account, investigate_utilization, day
164
164
  print_header("Commvault EC2 Investigation Summary")
165
165
 
166
166
  summary_table = create_table(
167
- title="EC2 Cost Impact Analysis - JIRA AWSO-25",
167
+ title="EC2 Cost Impact Analysis - JIRA FinOps-25",
168
168
  columns=[
169
169
  {"header": "Metric", "style": "cyan"},
170
170
  {"header": "Count", "style": "green bold"},
@@ -250,8 +250,8 @@ def investigate_commvault_ec2(output_file, account, investigate_utilization, day
250
250
  else:
251
251
  print_success("✓ No low-utilization instances detected")
252
252
 
253
- # JIRA AWSO-25 completion status
254
- console.print(f"\n[cyan]📋 JIRA AWSO-25 Status: Investigation framework complete[/cyan]")
253
+ # JIRA FinOps-25 completion status
254
+ console.print(f"\n[cyan]📋 JIRA FinOps-25 Status: Investigation framework complete[/cyan]")
255
255
  console.print(f"[dim]Next steps: Manual review of findings and cost impact validation[/dim]")
256
256
 
257
257
  except Exception as e:
@@ -1,7 +1,7 @@
1
1
  """
2
2
  RDS Snapshot Analysis - Analyze RDS snapshots for lifecycle management and cost optimization.
3
3
 
4
- JIRA AWSO-23: Enhanced RDS snapshots analysis with cost calculation for $5K-24K annual savings
4
+ JIRA FinOps-23: Enhanced RDS snapshots analysis with cost calculation for $5K-24K annual savings
5
5
  Accounts: 91893567291, 142964829704, 363435891329, 507583929055
6
6
  Focus: 89 manual snapshots causing storage costs and operational clutter
7
7
  """
@@ -36,7 +36,7 @@ def estimate_snapshot_cost(allocated_storage, storage_type="gp2", days_old=1):
36
36
  """
37
37
  Estimate monthly snapshot storage cost with enhanced accuracy.
38
38
 
39
- JIRA AWSO-23: Enhanced cost estimation for $5K-24K annual savings target
39
+ JIRA FinOps-23: Enhanced cost estimation for $5K-24K annual savings target
40
40
  Based on AWS RDS snapshot pricing: https://aws.amazon.com/rds/pricing/
41
41
  """
42
42
  # RDS Snapshot storage cost per GB per month (USD)
@@ -57,7 +57,7 @@ def calculate_manual_snapshot_savings(snapshots_data: List[Dict]) -> Dict[str, f
57
57
  """
58
58
  Calculate potential savings from manual snapshot cleanup.
59
59
 
60
- JIRA AWSO-23: Focuses on 89 manual snapshots for cost optimization
60
+ JIRA FinOps-23: Focuses on 89 manual snapshots for cost optimization
61
61
  """
62
62
  manual_snapshots = [s for s in snapshots_data if s.get("SnapshotType", "").lower() == "manual"]
63
63
 
@@ -89,7 +89,7 @@ def calculate_manual_snapshot_savings(snapshots_data: List[Dict]) -> Dict[str, f
89
89
  @click.option("--old-days", default=30, help="Days threshold for considering snapshots old")
90
90
  @click.option("--include-cost", is_flag=True, help="Include estimated cost analysis")
91
91
  @click.option("--snapshot-type", help="Filter by snapshot type (automated, manual)")
92
- @click.option("--manual-only", is_flag=True, help="Focus on manual snapshots only (JIRA AWSO-23)")
92
+ @click.option("--manual-only", is_flag=True, help="Focus on manual snapshots only (JIRA FinOps-23)")
93
93
  @click.option("--older-than", default=90, help="Focus on snapshots older than X days")
94
94
  @click.option("--calculate-savings", is_flag=True, help="Calculate detailed cost savings analysis")
95
95
  @click.option("--analyze", is_flag=True, help="Perform comprehensive cost analysis")
@@ -97,7 +97,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
97
97
  """
98
98
  Analyze RDS snapshots for lifecycle management and cost optimization.
99
99
 
100
- JIRA AWSO-23: Enhanced RDS snapshots analysis for $5K-24K annual savings
100
+ JIRA FinOps-23: Enhanced RDS snapshots analysis for $5K-24K annual savings
101
101
  Focus on 89 manual snapshots causing storage costs and operational clutter
102
102
  """
103
103
  print_header("RDS Snapshot Cost Optimization Analysis", "v0.9.1")
@@ -123,7 +123,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
123
123
  if manual_only:
124
124
  original_count = len(snapshots)
125
125
  snapshots = [s for s in snapshots if s.get("SnapshotType", "").lower() == "manual"]
126
- console.print(f"[dim]JIRA AWSO-23 Filter: {len(snapshots)} manual snapshots (from {original_count} total)[/dim]")
126
+ console.print(f"[dim]JIRA FinOps-23 Filter: {len(snapshots)} manual snapshots (from {original_count} total)[/dim]")
127
127
 
128
128
  if snapshot_type:
129
129
  original_count = len(snapshots)
@@ -174,7 +174,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
174
174
  "AvailabilityZone": snapshot.get("AvailabilityZone", "Unknown"),
175
175
  }
176
176
 
177
- # Enhanced cost analysis (JIRA AWSO-23)
177
+ # Enhanced cost analysis (JIRA FinOps-23)
178
178
  estimated_cost = 0.0
179
179
  if include_cost or calculate_savings or analyze:
180
180
  if allocated_storage > 0:
@@ -198,7 +198,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
198
198
 
199
199
  total_storage += allocated_storage
200
200
 
201
- # Enhanced cleanup recommendations (JIRA AWSO-23)
201
+ # Enhanced cleanup recommendations (JIRA FinOps-23)
202
202
  recommendations = []
203
203
  if age_days >= older_than and snap_type.lower() == "manual":
204
204
  recommendations.append(f"HIGH PRIORITY: Manual snapshot >{older_than} days old")
@@ -217,7 +217,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
217
217
  write_to_csv(data, output_file)
218
218
  print_success(f"RDS snapshot analysis exported to: {output_file}")
219
219
 
220
- # Enhanced cost analysis for JIRA AWSO-23
220
+ # Enhanced cost analysis for JIRA FinOps-23
221
221
  if calculate_savings or analyze:
222
222
  savings_analysis = calculate_manual_snapshot_savings(data)
223
223
 
@@ -225,7 +225,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
225
225
  print_header("RDS Snapshot Analysis Summary")
226
226
 
227
227
  summary_table = create_table(
228
- title="RDS Snapshot Cost Analysis - JIRA AWSO-23",
228
+ title="RDS Snapshot Cost Analysis - JIRA FinOps-23",
229
229
  columns=[
230
230
  {"header": "Metric", "style": "cyan"},
231
231
  {"header": "Count", "style": "green bold"},
@@ -268,7 +268,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
268
268
  "Mixed Types"
269
269
  )
270
270
 
271
- # JIRA AWSO-23 specific analysis
271
+ # JIRA FinOps-23 specific analysis
272
272
  if calculate_savings or analyze:
273
273
  summary_table.add_row(
274
274
  f"🎯 Manual >{older_than}d (Cleanup Target)",
@@ -285,7 +285,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
285
285
  high_priority_candidates = [s for s in data if s["AgeDays"] >= older_than and s["SnapshotType"].lower() == "manual"]
286
286
 
287
287
  if high_priority_candidates:
288
- print_warning(f"🎯 JIRA AWSO-23: {len(high_priority_candidates)} high-priority manual snapshots (>{older_than} days):")
288
+ print_warning(f"🎯 JIRA FinOps-23: {len(high_priority_candidates)} high-priority manual snapshots (>{older_than} days):")
289
289
 
290
290
  # Create detailed cleanup candidates table
291
291
  cleanup_table = create_table(
@@ -320,7 +320,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
320
320
  else:
321
321
  print_success("✓ No old manual snapshots found")
322
322
 
323
- # Target validation (JIRA AWSO-23: $5K-24K annual savings)
323
+ # Target validation (JIRA FinOps-23: $5K-24K annual savings)
324
324
  if calculate_savings or analyze:
325
325
  target_min_annual = 5000.0
326
326
  target_max_annual = 24000.0
@@ -328,12 +328,12 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
328
328
 
329
329
  if actual_savings >= target_min_annual:
330
330
  if actual_savings <= target_max_annual:
331
- print_success(f"🎯 Target Achievement: ${actual_savings:,.0f} within JIRA AWSO-23 range (${target_min_annual:,.0f}-${target_max_annual:,.0f})")
331
+ print_success(f"🎯 Target Achievement: ${actual_savings:,.0f} within JIRA FinOps-23 range (${target_min_annual:,.0f}-${target_max_annual:,.0f})")
332
332
  else:
333
- print_success(f"🎯 Target Exceeded: ${actual_savings:,.0f} exceeds JIRA AWSO-23 maximum target (${target_max_annual:,.0f})")
333
+ print_success(f"🎯 Target Exceeded: ${actual_savings:,.0f} exceeds JIRA FinOps-23 maximum target (${target_max_annual:,.0f})")
334
334
  else:
335
335
  percentage = (actual_savings / target_min_annual) * 100
336
- print_warning(f"📊 Analysis: ${actual_savings:,.0f} is {percentage:.1f}% of JIRA AWSO-23 minimum target (${target_min_annual:,.0f})")
336
+ print_warning(f"📊 Analysis: ${actual_savings:,.0f} is {percentage:.1f}% of JIRA FinOps-23 minimum target (${target_min_annual:,.0f})")
337
337
 
338
338
  # Encryption status
339
339
  encrypted_count = sum(1 for s in data if s["Encrypted"])
@@ -1,7 +1,7 @@
1
1
  """
2
2
  🚨 HIGH-RISK: WorkSpaces Management - Analyze and manage WorkSpaces with deletion capabilities.
3
3
 
4
- JIRA AWSO-24: Enhanced WorkSpaces cleanup with cost calculation for $12,518 annual savings
4
+ JIRA FinOps-24: Enhanced WorkSpaces cleanup with cost calculation for $12,518 annual savings
5
5
  Accounts: 339712777494, 802669565615, 142964829704, 507583929055
6
6
  Types: STANDARD, PERFORMANCE, VALUE in AUTO_STOP mode
7
7
  """
@@ -26,7 +26,7 @@ def calculate_workspace_monthly_cost(workspace_bundle_id: str, running_mode: str
26
26
  """
27
27
  Calculate monthly cost for WorkSpace based on bundle and running mode.
28
28
 
29
- JIRA AWSO-24: Cost calculations for $12,518 annual savings target
29
+ JIRA FinOps-24: Cost calculations for $12,518 annual savings target
30
30
  Based on AWS WorkSpaces pricing: https://aws.amazon.com/workspaces/pricing/
31
31
  """
32
32
  # WorkSpaces pricing by bundle type (monthly USD)
@@ -114,7 +114,7 @@ def get_workspaces(
114
114
  """
115
115
  🚨 HIGH-RISK: Analyze WorkSpaces usage and optionally delete unused ones.
116
116
 
117
- JIRA AWSO-24: Enhanced WorkSpaces cleanup with cost calculation for $12,518 annual savings
117
+ JIRA FinOps-24: Enhanced WorkSpaces cleanup with cost calculation for $12,518 annual savings
118
118
  """
119
119
 
120
120
  print_header("WorkSpaces Cost Optimization Analysis", "v0.9.1")
@@ -198,7 +198,7 @@ def get_workspaces(
198
198
  # Determine if workspace is unused
199
199
  is_unused = last_connection is None or last_connection < unused_threshold
200
200
 
201
- # Calculate cost (JIRA AWSO-24 enhancement)
201
+ # Calculate cost (JIRA FinOps-24 enhancement)
202
202
  monthly_cost = 0.0
203
203
  if calculate_savings or analyze:
204
204
  monthly_cost = calculate_workspace_monthly_cost(bundle_id, running_mode)
@@ -237,7 +237,7 @@ def get_workspaces(
237
237
  print_header("WorkSpaces Analysis Summary")
238
238
 
239
239
  summary_table = create_table(
240
- title="WorkSpaces Cost Analysis - JIRA AWSO-24",
240
+ title="WorkSpaces Cost Analysis - JIRA FinOps-24",
241
241
  columns=[
242
242
  {"header": "Metric", "style": "cyan"},
243
243
  {"header": "Value", "style": "green bold"},
@@ -305,9 +305,9 @@ def get_workspaces(
305
305
  if len(unused_workspaces) > 10:
306
306
  console.print(f"[dim]... and {len(unused_workspaces) - 10} more unused WorkSpaces[/dim]")
307
307
 
308
- # Target validation (JIRA AWSO-24: $12,518 annual savings)
308
+ # Target validation (JIRA FinOps-24: $12,518 annual savings)
309
309
  if calculate_savings or analyze:
310
- target_annual_savings = 12518.0 # JIRA AWSO-24 target
310
+ target_annual_savings = 12518.0 # JIRA FinOps-24 target
311
311
  if potential_savings_annual >= target_annual_savings * 0.8: # 80% of target
312
312
  print_success(f"🎯 Target Achievement: {potential_savings_annual/target_annual_savings*100:.1f}% of $12,518 annual savings target")
313
313
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runbooks
3
- Version: 0.9.4
3
+ Version: 0.9.5
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,5 +1,5 @@
1
1
  conftest.py,sha256=HTnQMw9wxefkvX5q4yG8EUH2qVLJBnC9QCt3UCltw7I,586
2
- runbooks/__init__.py,sha256=HfSMMCV2Xuhjg7Lt4wi-R1-BZzjZvUOl19LuBJo68Hg,4983
2
+ runbooks/__init__.py,sha256=5_iizoEvp41BBd5QLP3F0xPprURLzVlndTw48znTd3s,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
@@ -94,20 +94,21 @@ runbooks/common/mcp_cost_explorer_integration.py,sha256=pskehv95cbHhHOsKePRknm9o
94
94
  runbooks/common/mcp_integration.py,sha256=qK8iP7scfZTpe3X0OBFFVhpVR5NxTbI7Oz9QPpseN7Y,21156
95
95
  runbooks/common/performance_monitor.py,sha256=Yxc536l8pprPaRAtxs4APTm9ZEwL2XZuEPq0lmcfAr8,14114
96
96
  runbooks/common/profile_utils.py,sha256=Xp2VuDklgurJ889BbqxIvF2T4MHOaDsst0GmRxeEcl4,8229
97
- runbooks/common/rich_utils.py,sha256=kswW5H1FH5i89Ycat_oEPaPQE8moSfVXPZ-sRnUXnv8,33497
97
+ runbooks/common/rich_utils.py,sha256=XqxJSHN_VgX4P00r38SWzZfY0qxc3ETZ-SX4R3xNaIE,33513
98
98
  runbooks/enterprise/__init__.py,sha256=Lcw5CXUTgc3B1PrLH8vZfiQuKyda2GOuiRnWjTD7-tU,1568
99
99
  runbooks/enterprise/error_handling.py,sha256=0rorz2L3nWl3xMDMiEMgNj8CvM7efABnEIzkMEg4B2g,14505
100
100
  runbooks/enterprise/logging.py,sha256=-Qau52mLjryFo8r9PzsHbfkbfBsFom1ndEIvy7ItFEY,31728
101
101
  runbooks/enterprise/multi_tenant.py,sha256=NDcPL0H5V2ELpHoswbJosyDxalARPngevn74wPnRZtA,23560
102
102
  runbooks/feedback/user_feedback_collector.py,sha256=P0lcJN82wta73kNStBVGwNrc3R_Sng_MPNcpaHwojKI,16461
103
103
  runbooks/finops/README.md,sha256=AJrpoQqtYo8JbmfYJmNFpxTGFCtdvLyP5t-RJSeGAlg,13127
104
- runbooks/finops/__init__.py,sha256=__jb0ZNdt-C1ijNS79DcOry_q2a4HsGgx2Q1q6Fa-XE,3011
104
+ runbooks/finops/__init__.py,sha256=QChg1sByI0iwuzE5q6N2WrC4eFzXIkWjzTsMFbKEppo,4469
105
105
  runbooks/finops/account_resolver.py,sha256=AiDQiqyU0bWrgQHuVjBBwE_qjqCaLUo20oD28FkvnN0,9475
106
106
  runbooks/finops/accuracy_cross_validator.py,sha256=1IBtJ5Q_Re9_c90nC62ApkZ11LtKWrn4ouni3Vg1PEE,25758
107
107
  runbooks/finops/aws_client.py,sha256=TSWNQWn-22R0gleyslMwKhU1Jc_cg3Q-FPBZWa0n3RI,41647
108
108
  runbooks/finops/budget_integration.py,sha256=Sg_FFq5vU8RBaF3yAJUnnFyLbfGSacRZfGYyW2sx4kE,12915
109
+ runbooks/finops/business_cases.py,sha256=1BBdTNRqdhmuE4nAxhQxnbUVGnXoY8ZK65TWY1kdu2U,21187
109
110
  runbooks/finops/cli.py,sha256=qlrXQTiXVT9LJkXsoBueg3lClBzsb3HWw0De1hUZbf0,10135
110
- runbooks/finops/commvault_ec2_analysis.py,sha256=VlphS6XzEqKjpxsnglfnOQ5dwW17ENItvhOdWPW1T1Q,17877
111
+ runbooks/finops/commvault_ec2_analysis.py,sha256=aX5uScOAm-sGRvA5Z3E4IC1Lf0p6dHilAd_bbUCUUSs,17893
111
112
  runbooks/finops/cost_optimizer.py,sha256=MNuTQj4FFz1nsl8LolXIfzyaXpabHoClDpXpa7UCYgA,52416
112
113
  runbooks/finops/cost_processor.py,sha256=YPXlIGonraynHpB-NpkF-YLkK_n_fy13J5OlgdjK4LU,53907
113
114
  runbooks/finops/dashboard_router.py,sha256=zxSMWZupIBR4hMrk4jASdv8rEThmb6qfpIAM6ddZ6Q4,43495
@@ -117,8 +118,8 @@ runbooks/finops/enhanced_dashboard_runner.py,sha256=uR8PF7ebvmVGUHUJ71WDvcmojmIs
117
118
  runbooks/finops/enhanced_progress.py,sha256=LisYm-akB1W7zDW2ulMrxJxjNPqSjMG9kObCpHYwO-A,11389
118
119
  runbooks/finops/enhanced_trend_visualization.py,sha256=tF7hGZbN8ieh1cW2W86-6yBMMgT0JNDcaUvgRTHslpA,16127
119
120
  runbooks/finops/finops_dashboard.py,sha256=uO96CFDMflGAOGc_KrmtOnXk2iyEExDJxS65qH6D0qc,9647
120
- runbooks/finops/finops_scenarios.py,sha256=yNXhVTm6X1s-AUhk4_0_nQx4N9iQBKegIDx9MWBB9ek,35062
121
- runbooks/finops/helpers.py,sha256=NMUH3g9y3QGMZtA_Lm51immGJQ2FKz1CuMsSaDEIWk8,45234
121
+ runbooks/finops/finops_scenarios.py,sha256=lnPqaRyQMQ6l1k0nwQookTlXoneL409G5jADMKXNbk4,50732
122
+ runbooks/finops/helpers.py,sha256=-8QtOwkQVRkbYS6kg65DMKJpdhx9EQjpcoIOlt5ANmI,51599
122
123
  runbooks/finops/iam_guidance.py,sha256=YnaWywIHDsSYJwj34Jk0WKFNpNnDruPx5B4NmNzoRNA,19925
123
124
  runbooks/finops/main.py,sha256=W0Lnr3GJN7Tp4QL0x09GROOc7fnttpdRmd3N3T5eULo,288
124
125
  runbooks/finops/markdown_exporter.py,sha256=2SE2kSINFFTKelHZLz_ukuV6tl9XRt-BzIXGdfCxTko,18177
@@ -129,6 +130,7 @@ runbooks/finops/runbooks.inventory.organizations_discovery.log,sha256=47DEQpj8HB
129
130
  runbooks/finops/runbooks.security.report_generator.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
131
  runbooks/finops/runbooks.security.run_script.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
132
  runbooks/finops/runbooks.security.security_export.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
+ runbooks/finops/scenarios.py,sha256=-3YZOXfK0kJhk8vQ63zIP3LQmKrpDtZAjt2fgIkIjNI,36809
132
134
  runbooks/finops/schemas.py,sha256=YvW758e0b3RdWFNg8jgRXqaC2h7ScIHcgwq9nTpFNHo,23423
133
135
  runbooks/finops/service_mapping.py,sha256=uThjqTEGwkPGWitWxHLjcYPj5KsvjYuReSDlf31tKOI,6543
134
136
  runbooks/finops/single_dashboard.py,sha256=OP8KA3fOIOzis79r3yFiJwfHiErJ2afjSeynLjTFXqI,50118
@@ -269,7 +271,7 @@ runbooks/remediation/cognito_active_users.py,sha256=ZKtludgCL0ufWiWpiodfD8DNRKSi
269
271
  runbooks/remediation/cognito_remediation.py,sha256=VOTTxHu935kwNLFt3zTcEj-5cY2hikifGcydgSF4KXw,36966
270
272
  runbooks/remediation/cognito_user_password_reset.py,sha256=1pBLS9Ccdu8ohflGcbsBI-HLKLbNYsU39sijielAcQk,6902
271
273
  runbooks/remediation/commons.py,sha256=aqhaH1UtZl8zcWCjh8p5jgZNe_3wkWQmAJo5gov9My4,17273
272
- runbooks/remediation/commvault_ec2_analysis.py,sha256=OJpaddMnkKW83Sv7PtLCyPxPxItDUz9vdweLgS-_bJU,11356
274
+ runbooks/remediation/commvault_ec2_analysis.py,sha256=UTmIPgB_iyid5QFLTBwfJ1UKqbY4Lqko7B0ZDO7mTwc,11372
273
275
  runbooks/remediation/dynamodb_optimize.py,sha256=CKezH6osJlW44kpu47STN0K6Q9EbL69FYr2SmwjcHmw,5987
274
276
  runbooks/remediation/dynamodb_remediation.py,sha256=Kcn3jBYmDoWkg5AsKX7fAxbDz-jl1s0kp2iPc96n3Fc,30872
275
277
  runbooks/remediation/dynamodb_server_side_encryption.py,sha256=wnXwRcXzR3dFpcsA-5CjyCvPBixOiflN2H8Rfdp8Wao,3802
@@ -285,7 +287,7 @@ runbooks/remediation/lambda_remediation.py,sha256=WRaQUq0Y40l5_L4lkcyuUN5hZXRVIc
285
287
  runbooks/remediation/multi_account.py,sha256=88mvZwVsPtyiXrlbECBWI5uMe6pL2CLWUS3sdZmegic,22062
286
288
  runbooks/remediation/rds_instance_list.py,sha256=Nl1Pe1DDBZBl3SDjnY2i51IrcErELgCh2W1EXQyu_Dc,8476
287
289
  runbooks/remediation/rds_remediation.py,sha256=bWs7K41GMplArgC_NvUMyboSXljosrIDUtZL0QGWuh0,37069
288
- runbooks/remediation/rds_snapshot_list.py,sha256=d5gUwPs5m-EyJOrqRdz4w0uVqf5h3jmHfeDC2g4Hs_E,16543
290
+ runbooks/remediation/rds_snapshot_list.py,sha256=X1g2j9J5_sN_5NIgZ3I6C9qdxQVkrPf45unhYASbQBo,16575
289
291
  runbooks/remediation/requirements.txt,sha256=xwrVRq4cK8GbX9cwt_8TLLj8kCJHQ06tqBrH_wukMzE,2091
290
292
  runbooks/remediation/s3_block_public_access.py,sha256=nnDnRAdbM7elgl0LfX87avIzogaysawKUv5vDU_rFBs,6331
291
293
  runbooks/remediation/s3_bucket_public_access.py,sha256=eejdaWik_QpWHIMAZSdHWVckJBHL3VkXRBCIDFcVVVI,5533
@@ -299,7 +301,7 @@ runbooks/remediation/s3_object_search.py,sha256=8MnbwVwz2qZ0IK_C_uzMwNCfMnkB24d8
299
301
  runbooks/remediation/s3_remediation.py,sha256=KIy0BOMXUicqbeBcyGP9HBtF_Vu43oFavHWugp05r0I,33014
300
302
  runbooks/remediation/scan_for_phrase.py,sha256=FgTpDXnLg1tdnU6aYTmvOZu9CMjZMsfrZCNOSLqL4P4,18958
301
303
  runbooks/remediation/vpc_remediation.py,sha256=FDLR1oY27WN227kXJnpn1vqf2FtJ_f1ra4RocWxJ6-8,20716
302
- runbooks/remediation/workspaces_list.py,sha256=vldD5bp-MQG1-qsC4j2r9z_JZerQ4YzwGspD6f26e7M,16261
304
+ runbooks/remediation/workspaces_list.py,sha256=btHB2QJDXhon1szWRgur3bPo49tPoZsNwShGn6vFIno,16275
303
305
  runbooks/remediation/Tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
306
  runbooks/remediation/Tests/update_policy.py,sha256=7jb5hMR6jVbCUwzl5MHVqxrIGFN9_2-trIMUV-R7Kls,2999
305
307
  runbooks/security/README.md,sha256=vnpEqKYs9Q9dCLX9tmB-1fZZWk3kOMmEoC29f-WArP8,18572
@@ -374,9 +376,9 @@ runbooks/vpc/tests/test_cli_integration.py,sha256=OvsSNd9gFlkzdyDf8tUZGES93TTZR6
374
376
  runbooks/vpc/tests/test_config.py,sha256=0JQ4cyxDGC4sVpDS4o2Jo1u93CtivmE4l4igigGOhJA,17482
375
377
  runbooks/vpc/tests/test_cost_engine.py,sha256=UVUj3yg1ir9XVsD4MRdZALPlRFwmhzcuak8x3w-m6-c,20914
376
378
  runbooks/vpc/tests/test_networking_wrapper.py,sha256=gmxnVzQJ-7rTsghzNLmIM-QZo9GUGyIhHqE1g8gkEkw,20623
377
- runbooks-0.9.4.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
378
- runbooks-0.9.4.dist-info/METADATA,sha256=9v42r6zXNDdRqgyMGQqtD2dbqhbnU9gLDZxI0c_lbmw,26012
379
- runbooks-0.9.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
380
- runbooks-0.9.4.dist-info/entry_points.txt,sha256=WahHUYcgE2syXEc0MkoUdctLMxs0zjBWi_vWb5dRK8M,295
381
- runbooks-0.9.4.dist-info/top_level.txt,sha256=A0zTBjuF7THC6vnJU7StN7ihtUoh31lZSfwyWpWP2YE,18
382
- runbooks-0.9.4.dist-info/RECORD,,
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,,