runbooks 0.9.4__py3-none-any.whl → 0.9.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runbooks/__init__.py +1 -1
- runbooks/common/rich_utils.py +8 -8
- runbooks/finops/__init__.py +42 -0
- runbooks/finops/business_cases.py +552 -0
- runbooks/finops/commvault_ec2_analysis.py +8 -8
- runbooks/finops/finops_scenarios.py +351 -0
- runbooks/finops/helpers.py +182 -0
- runbooks/finops/scenarios.py +789 -0
- runbooks/finops/workspaces_analyzer.py +593 -0
- runbooks/remediation/commvault_ec2_analysis.py +11 -10
- runbooks/remediation/rds_snapshot_list.py +19 -18
- runbooks/remediation/workspaces_list.py +7 -7
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/METADATA +1 -1
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/RECORD +18 -15
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/WHEEL +0 -0
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/entry_points.txt +0 -0
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/licenses/LICENSE +0 -0
- {runbooks-0.9.4.dist-info → runbooks-0.9.6.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,10 @@
|
|
1
1
|
"""
|
2
|
-
RDS Snapshot Analysis -
|
2
|
+
RDS Snapshot Lifecycle Analysis - Storage cost optimization and lifecycle management.
|
3
3
|
|
4
|
-
|
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
|
@@ -36,7 +37,7 @@ def estimate_snapshot_cost(allocated_storage, storage_type="gp2", days_old=1):
|
|
36
37
|
"""
|
37
38
|
Estimate monthly snapshot storage cost with enhanced accuracy.
|
38
39
|
|
39
|
-
JIRA
|
40
|
+
JIRA FinOps-23: Enhanced cost estimation for $5K-24K annual savings target
|
40
41
|
Based on AWS RDS snapshot pricing: https://aws.amazon.com/rds/pricing/
|
41
42
|
"""
|
42
43
|
# RDS Snapshot storage cost per GB per month (USD)
|
@@ -57,7 +58,7 @@ def calculate_manual_snapshot_savings(snapshots_data: List[Dict]) -> Dict[str, f
|
|
57
58
|
"""
|
58
59
|
Calculate potential savings from manual snapshot cleanup.
|
59
60
|
|
60
|
-
JIRA
|
61
|
+
JIRA FinOps-23: Focuses on 89 manual snapshots for cost optimization
|
61
62
|
"""
|
62
63
|
manual_snapshots = [s for s in snapshots_data if s.get("SnapshotType", "").lower() == "manual"]
|
63
64
|
|
@@ -89,7 +90,7 @@ def calculate_manual_snapshot_savings(snapshots_data: List[Dict]) -> Dict[str, f
|
|
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)")
|
92
|
-
@click.option("--manual-only", is_flag=True, help="Focus on manual snapshots only (JIRA
|
93
|
+
@click.option("--manual-only", is_flag=True, help="Focus on manual snapshots only (JIRA FinOps-23)")
|
93
94
|
@click.option("--older-than", default=90, help="Focus on snapshots older than X days")
|
94
95
|
@click.option("--calculate-savings", is_flag=True, help="Calculate detailed cost savings analysis")
|
95
96
|
@click.option("--analyze", is_flag=True, help="Perform comprehensive cost analysis")
|
@@ -97,7 +98,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
97
98
|
"""
|
98
99
|
Analyze RDS snapshots for lifecycle management and cost optimization.
|
99
100
|
|
100
|
-
JIRA
|
101
|
+
JIRA FinOps-23: Enhanced RDS snapshots analysis for $5K-24K annual savings
|
101
102
|
Focus on 89 manual snapshots causing storage costs and operational clutter
|
102
103
|
"""
|
103
104
|
print_header("RDS Snapshot Cost Optimization Analysis", "v0.9.1")
|
@@ -123,7 +124,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
123
124
|
if manual_only:
|
124
125
|
original_count = len(snapshots)
|
125
126
|
snapshots = [s for s in snapshots if s.get("SnapshotType", "").lower() == "manual"]
|
126
|
-
console.print(f"[dim]JIRA
|
127
|
+
console.print(f"[dim]JIRA FinOps-23 Filter: {len(snapshots)} manual snapshots (from {original_count} total)[/dim]")
|
127
128
|
|
128
129
|
if snapshot_type:
|
129
130
|
original_count = len(snapshots)
|
@@ -174,7 +175,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
174
175
|
"AvailabilityZone": snapshot.get("AvailabilityZone", "Unknown"),
|
175
176
|
}
|
176
177
|
|
177
|
-
# Enhanced cost analysis (JIRA
|
178
|
+
# Enhanced cost analysis (JIRA FinOps-23)
|
178
179
|
estimated_cost = 0.0
|
179
180
|
if include_cost or calculate_savings or analyze:
|
180
181
|
if allocated_storage > 0:
|
@@ -198,7 +199,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
198
199
|
|
199
200
|
total_storage += allocated_storage
|
200
201
|
|
201
|
-
# Enhanced cleanup recommendations (JIRA
|
202
|
+
# Enhanced cleanup recommendations (JIRA FinOps-23)
|
202
203
|
recommendations = []
|
203
204
|
if age_days >= older_than and snap_type.lower() == "manual":
|
204
205
|
recommendations.append(f"HIGH PRIORITY: Manual snapshot >{older_than} days old")
|
@@ -217,7 +218,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
217
218
|
write_to_csv(data, output_file)
|
218
219
|
print_success(f"RDS snapshot analysis exported to: {output_file}")
|
219
220
|
|
220
|
-
# Enhanced cost analysis for JIRA
|
221
|
+
# Enhanced cost analysis for JIRA FinOps-23
|
221
222
|
if calculate_savings or analyze:
|
222
223
|
savings_analysis = calculate_manual_snapshot_savings(data)
|
223
224
|
|
@@ -225,7 +226,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
225
226
|
print_header("RDS Snapshot Analysis Summary")
|
226
227
|
|
227
228
|
summary_table = create_table(
|
228
|
-
title="RDS Snapshot Cost Analysis - JIRA
|
229
|
+
title="RDS Snapshot Cost Analysis - JIRA FinOps-23",
|
229
230
|
columns=[
|
230
231
|
{"header": "Metric", "style": "cyan"},
|
231
232
|
{"header": "Count", "style": "green bold"},
|
@@ -268,7 +269,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
268
269
|
"Mixed Types"
|
269
270
|
)
|
270
271
|
|
271
|
-
# JIRA
|
272
|
+
# JIRA FinOps-23 specific analysis
|
272
273
|
if calculate_savings or analyze:
|
273
274
|
summary_table.add_row(
|
274
275
|
f"🎯 Manual >{older_than}d (Cleanup Target)",
|
@@ -285,7 +286,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
285
286
|
high_priority_candidates = [s for s in data if s["AgeDays"] >= older_than and s["SnapshotType"].lower() == "manual"]
|
286
287
|
|
287
288
|
if high_priority_candidates:
|
288
|
-
print_warning(f"🎯 JIRA
|
289
|
+
print_warning(f"🎯 JIRA FinOps-23: {len(high_priority_candidates)} high-priority manual snapshots (>{older_than} days):")
|
289
290
|
|
290
291
|
# Create detailed cleanup candidates table
|
291
292
|
cleanup_table = create_table(
|
@@ -320,7 +321,7 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
320
321
|
else:
|
321
322
|
print_success("✓ No old manual snapshots found")
|
322
323
|
|
323
|
-
# Target validation (JIRA
|
324
|
+
# Target validation (JIRA FinOps-23: $5K-24K annual savings)
|
324
325
|
if calculate_savings or analyze:
|
325
326
|
target_min_annual = 5000.0
|
326
327
|
target_max_annual = 24000.0
|
@@ -328,12 +329,12 @@ def get_rds_snapshot_details(output_file, old_days, include_cost, snapshot_type,
|
|
328
329
|
|
329
330
|
if actual_savings >= target_min_annual:
|
330
331
|
if actual_savings <= target_max_annual:
|
331
|
-
print_success(f"🎯 Target Achievement: ${actual_savings:,.0f} within JIRA
|
332
|
+
print_success(f"🎯 Target Achievement: ${actual_savings:,.0f} within JIRA FinOps-23 range (${target_min_annual:,.0f}-${target_max_annual:,.0f})")
|
332
333
|
else:
|
333
|
-
print_success(f"🎯 Target Exceeded: ${actual_savings:,.0f} exceeds JIRA
|
334
|
+
print_success(f"🎯 Target Exceeded: ${actual_savings:,.0f} exceeds JIRA FinOps-23 maximum target (${target_max_annual:,.0f})")
|
334
335
|
else:
|
335
336
|
percentage = (actual_savings / target_min_annual) * 100
|
336
|
-
print_warning(f"📊 Analysis: ${actual_savings:,.0f} is {percentage:.1f}% of JIRA
|
337
|
+
print_warning(f"📊 Analysis: ${actual_savings:,.0f} is {percentage:.1f}% of JIRA FinOps-23 minimum target (${target_min_annual:,.0f})")
|
337
338
|
|
338
339
|
# Encryption status
|
339
340
|
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
|
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
|
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
|
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
|
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
|
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
|
308
|
+
# Target validation (JIRA FinOps-24: $12,518 annual savings)
|
309
309
|
if calculate_savings or analyze:
|
310
|
-
target_annual_savings = 12518.0 # JIRA
|
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,5 +1,5 @@
|
|
1
1
|
conftest.py,sha256=HTnQMw9wxefkvX5q4yG8EUH2qVLJBnC9QCt3UCltw7I,586
|
2
|
-
runbooks/__init__.py,sha256=
|
2
|
+
runbooks/__init__.py,sha256=aqPOk1xo4uEUhg8nucZ8wN0A9CsQ4vvSuamcDi7xEKo,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=
|
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=
|
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=
|
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=
|
121
|
-
runbooks/finops/helpers.py,sha256
|
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,11 +130,13 @@ 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
|
135
137
|
runbooks/finops/types.py,sha256=17CVLQysbwDiWKi2iXjtz7n8SLZUxRtG1JMthfARJ8I,3317
|
136
138
|
runbooks/finops/visualisations.py,sha256=BI6cBsKSNUcjqnEukMzHxZzqyv12w3TRj2zvN53-Rbk,2737
|
139
|
+
runbooks/finops/workspaces_analyzer.py,sha256=c0w3bjIV2VTAQYAtQVG7sN8NeC2Mr74M3CjYY5DGy-I,22694
|
137
140
|
runbooks/finops/tests/__init__.py,sha256=MFqn-e57ft0Dsmdi89vO7jrCV4wkmMNYDtyTrSbx0Jo,583
|
138
141
|
runbooks/finops/tests/results_test_finops_dashboard.xml,sha256=JBoeWtVweUH5EZ15qnLQ_KfQVTR9fhNkZrfY3PCjZQI,4504
|
139
142
|
runbooks/finops/tests/run_comprehensive_tests.py,sha256=EbgU4Z30pTnPLUX-I4Yyrl4xXZFyeTV3DzYawN6OP2M,15866
|
@@ -269,7 +272,7 @@ runbooks/remediation/cognito_active_users.py,sha256=ZKtludgCL0ufWiWpiodfD8DNRKSi
|
|
269
272
|
runbooks/remediation/cognito_remediation.py,sha256=VOTTxHu935kwNLFt3zTcEj-5cY2hikifGcydgSF4KXw,36966
|
270
273
|
runbooks/remediation/cognito_user_password_reset.py,sha256=1pBLS9Ccdu8ohflGcbsBI-HLKLbNYsU39sijielAcQk,6902
|
271
274
|
runbooks/remediation/commons.py,sha256=aqhaH1UtZl8zcWCjh8p5jgZNe_3wkWQmAJo5gov9My4,17273
|
272
|
-
runbooks/remediation/commvault_ec2_analysis.py,sha256=
|
275
|
+
runbooks/remediation/commvault_ec2_analysis.py,sha256=dARr45WG_niz9VI1h2Kfq1xLkrscffuxXgNHFJ268_I,11503
|
273
276
|
runbooks/remediation/dynamodb_optimize.py,sha256=CKezH6osJlW44kpu47STN0K6Q9EbL69FYr2SmwjcHmw,5987
|
274
277
|
runbooks/remediation/dynamodb_remediation.py,sha256=Kcn3jBYmDoWkg5AsKX7fAxbDz-jl1s0kp2iPc96n3Fc,30872
|
275
278
|
runbooks/remediation/dynamodb_server_side_encryption.py,sha256=wnXwRcXzR3dFpcsA-5CjyCvPBixOiflN2H8Rfdp8Wao,3802
|
@@ -285,7 +288,7 @@ runbooks/remediation/lambda_remediation.py,sha256=WRaQUq0Y40l5_L4lkcyuUN5hZXRVIc
|
|
285
288
|
runbooks/remediation/multi_account.py,sha256=88mvZwVsPtyiXrlbECBWI5uMe6pL2CLWUS3sdZmegic,22062
|
286
289
|
runbooks/remediation/rds_instance_list.py,sha256=Nl1Pe1DDBZBl3SDjnY2i51IrcErELgCh2W1EXQyu_Dc,8476
|
287
290
|
runbooks/remediation/rds_remediation.py,sha256=bWs7K41GMplArgC_NvUMyboSXljosrIDUtZL0QGWuh0,37069
|
288
|
-
runbooks/remediation/rds_snapshot_list.py,sha256=
|
291
|
+
runbooks/remediation/rds_snapshot_list.py,sha256=4d4VBFeh6zgEjAjwjLpVOUA4F4QM5Z8hOFKnFlAeGJ8,16663
|
289
292
|
runbooks/remediation/requirements.txt,sha256=xwrVRq4cK8GbX9cwt_8TLLj8kCJHQ06tqBrH_wukMzE,2091
|
290
293
|
runbooks/remediation/s3_block_public_access.py,sha256=nnDnRAdbM7elgl0LfX87avIzogaysawKUv5vDU_rFBs,6331
|
291
294
|
runbooks/remediation/s3_bucket_public_access.py,sha256=eejdaWik_QpWHIMAZSdHWVckJBHL3VkXRBCIDFcVVVI,5533
|
@@ -299,7 +302,7 @@ runbooks/remediation/s3_object_search.py,sha256=8MnbwVwz2qZ0IK_C_uzMwNCfMnkB24d8
|
|
299
302
|
runbooks/remediation/s3_remediation.py,sha256=KIy0BOMXUicqbeBcyGP9HBtF_Vu43oFavHWugp05r0I,33014
|
300
303
|
runbooks/remediation/scan_for_phrase.py,sha256=FgTpDXnLg1tdnU6aYTmvOZu9CMjZMsfrZCNOSLqL4P4,18958
|
301
304
|
runbooks/remediation/vpc_remediation.py,sha256=FDLR1oY27WN227kXJnpn1vqf2FtJ_f1ra4RocWxJ6-8,20716
|
302
|
-
runbooks/remediation/workspaces_list.py,sha256=
|
305
|
+
runbooks/remediation/workspaces_list.py,sha256=btHB2QJDXhon1szWRgur3bPo49tPoZsNwShGn6vFIno,16275
|
303
306
|
runbooks/remediation/Tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
304
307
|
runbooks/remediation/Tests/update_policy.py,sha256=7jb5hMR6jVbCUwzl5MHVqxrIGFN9_2-trIMUV-R7Kls,2999
|
305
308
|
runbooks/security/README.md,sha256=vnpEqKYs9Q9dCLX9tmB-1fZZWk3kOMmEoC29f-WArP8,18572
|
@@ -374,9 +377,9 @@ runbooks/vpc/tests/test_cli_integration.py,sha256=OvsSNd9gFlkzdyDf8tUZGES93TTZR6
|
|
374
377
|
runbooks/vpc/tests/test_config.py,sha256=0JQ4cyxDGC4sVpDS4o2Jo1u93CtivmE4l4igigGOhJA,17482
|
375
378
|
runbooks/vpc/tests/test_cost_engine.py,sha256=UVUj3yg1ir9XVsD4MRdZALPlRFwmhzcuak8x3w-m6-c,20914
|
376
379
|
runbooks/vpc/tests/test_networking_wrapper.py,sha256=gmxnVzQJ-7rTsghzNLmIM-QZo9GUGyIhHqE1g8gkEkw,20623
|
377
|
-
runbooks-0.9.
|
378
|
-
runbooks-0.9.
|
379
|
-
runbooks-0.9.
|
380
|
-
runbooks-0.9.
|
381
|
-
runbooks-0.9.
|
382
|
-
runbooks-0.9.
|
380
|
+
runbooks-0.9.6.dist-info/licenses/LICENSE,sha256=WAQUYGIkLJh6CPrlZgr0IsbRODa0EZ6fboBXGjfWggs,11375
|
381
|
+
runbooks-0.9.6.dist-info/METADATA,sha256=cNeTdOLO4m3NgKAP8BdFdO7_boeBV8SZGMFbJa_qeio,26012
|
382
|
+
runbooks-0.9.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
383
|
+
runbooks-0.9.6.dist-info/entry_points.txt,sha256=WahHUYcgE2syXEc0MkoUdctLMxs0zjBWi_vWb5dRK8M,295
|
384
|
+
runbooks-0.9.6.dist-info/top_level.txt,sha256=A0zTBjuF7THC6vnJU7StN7ihtUoh31lZSfwyWpWP2YE,18
|
385
|
+
runbooks-0.9.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|