runbooks 1.1.4__py3-none-any.whl → 1.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runbooks/__init__.py +31 -2
- runbooks/__init___optimized.py +18 -4
- runbooks/_platform/__init__.py +1 -5
- runbooks/_platform/core/runbooks_wrapper.py +141 -138
- runbooks/aws2/accuracy_validator.py +812 -0
- runbooks/base.py +7 -0
- runbooks/cfat/assessment/compliance.py +1 -1
- runbooks/cfat/assessment/runner.py +1 -0
- runbooks/cfat/cloud_foundations_assessment.py +227 -239
- runbooks/cli/__init__.py +1 -1
- runbooks/cli/commands/cfat.py +64 -23
- runbooks/cli/commands/finops.py +1005 -54
- runbooks/cli/commands/inventory.py +135 -91
- runbooks/cli/commands/operate.py +9 -36
- runbooks/cli/commands/security.py +42 -18
- runbooks/cli/commands/validation.py +432 -18
- runbooks/cli/commands/vpc.py +81 -17
- runbooks/cli/registry.py +22 -10
- runbooks/cloudops/__init__.py +20 -27
- runbooks/cloudops/base.py +96 -107
- runbooks/cloudops/cost_optimizer.py +544 -542
- runbooks/cloudops/infrastructure_optimizer.py +5 -4
- runbooks/cloudops/interfaces.py +224 -225
- runbooks/cloudops/lifecycle_manager.py +5 -4
- runbooks/cloudops/mcp_cost_validation.py +252 -235
- runbooks/cloudops/models.py +78 -53
- runbooks/cloudops/monitoring_automation.py +5 -4
- runbooks/cloudops/notebook_framework.py +177 -213
- runbooks/cloudops/security_enforcer.py +125 -159
- runbooks/common/accuracy_validator.py +17 -12
- runbooks/common/aws_pricing.py +349 -326
- runbooks/common/aws_pricing_api.py +211 -212
- runbooks/common/aws_profile_manager.py +40 -36
- runbooks/common/aws_utils.py +74 -79
- runbooks/common/business_logic.py +126 -104
- runbooks/common/cli_decorators.py +36 -60
- runbooks/common/comprehensive_cost_explorer_integration.py +455 -463
- runbooks/common/cross_account_manager.py +197 -204
- runbooks/common/date_utils.py +27 -39
- runbooks/common/decorators.py +29 -19
- runbooks/common/dry_run_examples.py +173 -208
- runbooks/common/dry_run_framework.py +157 -155
- runbooks/common/enhanced_exception_handler.py +15 -4
- runbooks/common/enhanced_logging_example.py +50 -64
- runbooks/common/enhanced_logging_integration_example.py +65 -37
- runbooks/common/env_utils.py +16 -16
- runbooks/common/error_handling.py +40 -38
- runbooks/common/lazy_loader.py +41 -23
- runbooks/common/logging_integration_helper.py +79 -86
- runbooks/common/mcp_cost_explorer_integration.py +476 -493
- runbooks/common/mcp_integration.py +99 -79
- runbooks/common/memory_optimization.py +140 -118
- runbooks/common/module_cli_base.py +37 -58
- runbooks/common/organizations_client.py +175 -193
- runbooks/common/patterns.py +23 -25
- runbooks/common/performance_monitoring.py +67 -71
- runbooks/common/performance_optimization_engine.py +283 -274
- runbooks/common/profile_utils.py +111 -37
- runbooks/common/rich_utils.py +315 -141
- runbooks/common/sre_performance_suite.py +177 -186
- runbooks/enterprise/__init__.py +1 -1
- runbooks/enterprise/logging.py +144 -106
- runbooks/enterprise/security.py +187 -204
- runbooks/enterprise/validation.py +43 -56
- runbooks/finops/__init__.py +26 -30
- runbooks/finops/account_resolver.py +1 -1
- runbooks/finops/advanced_optimization_engine.py +980 -0
- runbooks/finops/automation_core.py +268 -231
- runbooks/finops/business_case_config.py +184 -179
- runbooks/finops/cli.py +660 -139
- runbooks/finops/commvault_ec2_analysis.py +157 -164
- runbooks/finops/compute_cost_optimizer.py +336 -320
- runbooks/finops/config.py +20 -20
- runbooks/finops/cost_optimizer.py +484 -618
- runbooks/finops/cost_processor.py +332 -214
- runbooks/finops/dashboard_runner.py +1006 -172
- runbooks/finops/ebs_cost_optimizer.py +991 -657
- runbooks/finops/elastic_ip_optimizer.py +317 -257
- runbooks/finops/enhanced_mcp_integration.py +340 -0
- runbooks/finops/enhanced_progress.py +32 -29
- runbooks/finops/enhanced_trend_visualization.py +3 -2
- runbooks/finops/enterprise_wrappers.py +223 -285
- runbooks/finops/executive_export.py +203 -160
- runbooks/finops/helpers.py +130 -288
- runbooks/finops/iam_guidance.py +1 -1
- runbooks/finops/infrastructure/__init__.py +80 -0
- runbooks/finops/infrastructure/commands.py +506 -0
- runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
- runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
- runbooks/finops/markdown_exporter.py +337 -174
- runbooks/finops/mcp_validator.py +1952 -0
- runbooks/finops/nat_gateway_optimizer.py +1512 -481
- runbooks/finops/network_cost_optimizer.py +657 -587
- runbooks/finops/notebook_utils.py +226 -188
- runbooks/finops/optimization_engine.py +1136 -0
- runbooks/finops/optimizer.py +19 -23
- runbooks/finops/rds_snapshot_optimizer.py +367 -411
- runbooks/finops/reservation_optimizer.py +427 -363
- runbooks/finops/scenario_cli_integration.py +64 -65
- runbooks/finops/scenarios.py +1277 -438
- runbooks/finops/schemas.py +218 -182
- runbooks/finops/snapshot_manager.py +2289 -0
- runbooks/finops/types.py +3 -3
- runbooks/finops/validation_framework.py +259 -265
- runbooks/finops/vpc_cleanup_exporter.py +189 -144
- runbooks/finops/vpc_cleanup_optimizer.py +591 -573
- runbooks/finops/workspaces_analyzer.py +171 -182
- runbooks/integration/__init__.py +89 -0
- runbooks/integration/mcp_integration.py +1920 -0
- runbooks/inventory/CLAUDE.md +816 -0
- runbooks/inventory/__init__.py +2 -2
- runbooks/inventory/aws_decorators.py +2 -3
- runbooks/inventory/check_cloudtrail_compliance.py +2 -4
- runbooks/inventory/check_controltower_readiness.py +152 -151
- runbooks/inventory/check_landingzone_readiness.py +85 -84
- runbooks/inventory/cloud_foundations_integration.py +144 -149
- runbooks/inventory/collectors/aws_comprehensive.py +1 -1
- runbooks/inventory/collectors/aws_networking.py +109 -99
- runbooks/inventory/collectors/base.py +4 -0
- runbooks/inventory/core/collector.py +495 -313
- runbooks/inventory/core/formatter.py +11 -0
- runbooks/inventory/draw_org_structure.py +8 -9
- runbooks/inventory/drift_detection_cli.py +69 -96
- runbooks/inventory/ec2_vpc_utils.py +2 -2
- runbooks/inventory/find_cfn_drift_detection.py +5 -7
- runbooks/inventory/find_cfn_orphaned_stacks.py +7 -9
- runbooks/inventory/find_cfn_stackset_drift.py +5 -6
- runbooks/inventory/find_ec2_security_groups.py +48 -42
- runbooks/inventory/find_landingzone_versions.py +4 -6
- runbooks/inventory/find_vpc_flow_logs.py +7 -9
- runbooks/inventory/inventory_mcp_cli.py +48 -46
- runbooks/inventory/inventory_modules.py +103 -91
- runbooks/inventory/list_cfn_stacks.py +9 -10
- runbooks/inventory/list_cfn_stackset_operation_results.py +1 -3
- runbooks/inventory/list_cfn_stackset_operations.py +79 -57
- runbooks/inventory/list_cfn_stacksets.py +8 -10
- runbooks/inventory/list_config_recorders_delivery_channels.py +49 -39
- runbooks/inventory/list_ds_directories.py +65 -53
- runbooks/inventory/list_ec2_availability_zones.py +2 -4
- runbooks/inventory/list_ec2_ebs_volumes.py +32 -35
- runbooks/inventory/list_ec2_instances.py +23 -28
- runbooks/inventory/list_ecs_clusters_and_tasks.py +26 -34
- runbooks/inventory/list_elbs_load_balancers.py +22 -20
- runbooks/inventory/list_enis_network_interfaces.py +26 -33
- runbooks/inventory/list_guardduty_detectors.py +2 -4
- runbooks/inventory/list_iam_policies.py +2 -4
- runbooks/inventory/list_iam_roles.py +5 -7
- runbooks/inventory/list_iam_saml_providers.py +4 -6
- runbooks/inventory/list_lambda_functions.py +38 -38
- runbooks/inventory/list_org_accounts.py +6 -8
- runbooks/inventory/list_org_accounts_users.py +55 -44
- runbooks/inventory/list_rds_db_instances.py +31 -33
- runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
- runbooks/inventory/list_route53_hosted_zones.py +3 -5
- runbooks/inventory/list_servicecatalog_provisioned_products.py +37 -41
- runbooks/inventory/list_sns_topics.py +2 -4
- runbooks/inventory/list_ssm_parameters.py +4 -7
- runbooks/inventory/list_vpc_subnets.py +2 -4
- runbooks/inventory/list_vpcs.py +7 -10
- runbooks/inventory/mcp_inventory_validator.py +554 -468
- runbooks/inventory/mcp_vpc_validator.py +359 -442
- runbooks/inventory/organizations_discovery.py +63 -55
- runbooks/inventory/recover_cfn_stack_ids.py +7 -8
- runbooks/inventory/requirements.txt +0 -1
- runbooks/inventory/rich_inventory_display.py +35 -34
- runbooks/inventory/run_on_multi_accounts.py +3 -5
- runbooks/inventory/unified_validation_engine.py +281 -253
- runbooks/inventory/verify_ec2_security_groups.py +1 -1
- runbooks/inventory/vpc_analyzer.py +735 -697
- runbooks/inventory/vpc_architecture_validator.py +293 -348
- runbooks/inventory/vpc_dependency_analyzer.py +384 -380
- runbooks/inventory/vpc_flow_analyzer.py +1 -1
- runbooks/main.py +49 -34
- runbooks/main_final.py +91 -60
- runbooks/main_minimal.py +22 -10
- runbooks/main_optimized.py +131 -100
- runbooks/main_ultra_minimal.py +7 -2
- runbooks/mcp/__init__.py +36 -0
- runbooks/mcp/integration.py +679 -0
- runbooks/monitoring/performance_monitor.py +9 -4
- runbooks/operate/dynamodb_operations.py +3 -1
- runbooks/operate/ec2_operations.py +145 -137
- runbooks/operate/iam_operations.py +146 -152
- runbooks/operate/networking_cost_heatmap.py +29 -8
- runbooks/operate/rds_operations.py +223 -254
- runbooks/operate/s3_operations.py +107 -118
- runbooks/operate/vpc_operations.py +646 -616
- runbooks/remediation/base.py +1 -1
- runbooks/remediation/commons.py +10 -7
- runbooks/remediation/commvault_ec2_analysis.py +70 -66
- runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
- runbooks/remediation/multi_account.py +24 -21
- runbooks/remediation/rds_snapshot_list.py +86 -60
- runbooks/remediation/remediation_cli.py +92 -146
- runbooks/remediation/universal_account_discovery.py +83 -79
- runbooks/remediation/workspaces_list.py +46 -41
- runbooks/security/__init__.py +19 -0
- runbooks/security/assessment_runner.py +1150 -0
- runbooks/security/baseline_checker.py +812 -0
- runbooks/security/cloudops_automation_security_validator.py +509 -535
- runbooks/security/compliance_automation_engine.py +17 -17
- runbooks/security/config/__init__.py +2 -2
- runbooks/security/config/compliance_config.py +50 -50
- runbooks/security/config_template_generator.py +63 -76
- runbooks/security/enterprise_security_framework.py +1 -1
- runbooks/security/executive_security_dashboard.py +519 -508
- runbooks/security/multi_account_security_controls.py +959 -1210
- runbooks/security/real_time_security_monitor.py +422 -444
- runbooks/security/security_baseline_tester.py +1 -1
- runbooks/security/security_cli.py +143 -112
- runbooks/security/test_2way_validation.py +439 -0
- runbooks/security/two_way_validation_framework.py +852 -0
- runbooks/sre/production_monitoring_framework.py +167 -177
- runbooks/tdd/__init__.py +15 -0
- runbooks/tdd/cli.py +1071 -0
- runbooks/utils/__init__.py +14 -17
- runbooks/utils/logger.py +7 -2
- runbooks/utils/version_validator.py +50 -47
- runbooks/validation/__init__.py +6 -6
- runbooks/validation/cli.py +9 -3
- runbooks/validation/comprehensive_2way_validator.py +745 -704
- runbooks/validation/mcp_validator.py +906 -228
- runbooks/validation/terraform_citations_validator.py +104 -115
- runbooks/validation/terraform_drift_detector.py +461 -454
- runbooks/vpc/README.md +617 -0
- runbooks/vpc/__init__.py +8 -1
- runbooks/vpc/analyzer.py +577 -0
- runbooks/vpc/cleanup_wrapper.py +476 -413
- runbooks/vpc/cli_cloudtrail_commands.py +339 -0
- runbooks/vpc/cli_mcp_validation_commands.py +480 -0
- runbooks/vpc/cloudtrail_audit_integration.py +717 -0
- runbooks/vpc/config.py +92 -97
- runbooks/vpc/cost_engine.py +411 -148
- runbooks/vpc/cost_explorer_integration.py +553 -0
- runbooks/vpc/cross_account_session.py +101 -106
- runbooks/vpc/enhanced_mcp_validation.py +917 -0
- runbooks/vpc/eni_gate_validator.py +961 -0
- runbooks/vpc/heatmap_engine.py +185 -160
- runbooks/vpc/mcp_no_eni_validator.py +680 -639
- runbooks/vpc/nat_gateway_optimizer.py +358 -0
- runbooks/vpc/networking_wrapper.py +15 -8
- runbooks/vpc/pdca_remediation_planner.py +528 -0
- runbooks/vpc/performance_optimized_analyzer.py +219 -231
- runbooks/vpc/runbooks_adapter.py +1167 -241
- runbooks/vpc/tdd_red_phase_stubs.py +601 -0
- runbooks/vpc/test_data_loader.py +358 -0
- runbooks/vpc/tests/conftest.py +314 -4
- runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
- runbooks/vpc/tests/test_cost_engine.py +0 -2
- runbooks/vpc/topology_generator.py +326 -0
- runbooks/vpc/unified_scenarios.py +1297 -1124
- runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
- runbooks-1.1.6.dist-info/METADATA +327 -0
- runbooks-1.1.6.dist-info/RECORD +489 -0
- runbooks/finops/README.md +0 -414
- runbooks/finops/accuracy_cross_validator.py +0 -647
- runbooks/finops/business_cases.py +0 -950
- runbooks/finops/dashboard_router.py +0 -922
- runbooks/finops/ebs_optimizer.py +0 -973
- runbooks/finops/embedded_mcp_validator.py +0 -1629
- runbooks/finops/enhanced_dashboard_runner.py +0 -527
- runbooks/finops/finops_dashboard.py +0 -584
- runbooks/finops/finops_scenarios.py +0 -1218
- runbooks/finops/legacy_migration.py +0 -730
- runbooks/finops/multi_dashboard.py +0 -1519
- runbooks/finops/single_dashboard.py +0 -1113
- runbooks/finops/unlimited_scenarios.py +0 -393
- runbooks-1.1.4.dist-info/METADATA +0 -800
- runbooks-1.1.4.dist-info/RECORD +0 -468
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/WHEEL +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/entry_points.txt +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/licenses/LICENSE +0 -0
- {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/top_level.txt +0 -0
runbooks/cloudops/models.py
CHANGED
@@ -16,49 +16,57 @@ from enum import Enum
|
|
16
16
|
from datetime import datetime
|
17
17
|
import boto3
|
18
18
|
|
19
|
+
|
19
20
|
class BusinessScenario(str, Enum):
|
20
21
|
"""Business scenario categories for CloudOps automation."""
|
22
|
+
|
21
23
|
COST_OPTIMIZATION = "cost_optimization"
|
22
|
-
SECURITY_ENFORCEMENT = "security_enforcement"
|
24
|
+
SECURITY_ENFORCEMENT = "security_enforcement"
|
23
25
|
LIFECYCLE_MANAGEMENT = "lifecycle_management"
|
24
26
|
INFRASTRUCTURE_OPTIMIZATION = "infrastructure_optimization"
|
25
27
|
MONITORING_AUTOMATION = "monitoring_automation"
|
26
28
|
GOVERNANCE_CAMPAIGN = "governance_campaign"
|
27
29
|
|
30
|
+
|
28
31
|
class RiskLevel(str, Enum):
|
29
32
|
"""Risk assessment levels for business operations."""
|
33
|
+
|
30
34
|
LOW = "low"
|
31
|
-
MEDIUM = "medium"
|
35
|
+
MEDIUM = "medium"
|
32
36
|
HIGH = "high"
|
33
37
|
CRITICAL = "critical"
|
34
38
|
|
39
|
+
|
35
40
|
class ExecutionMode(str, Enum):
|
36
41
|
"""Execution modes for CloudOps operations."""
|
42
|
+
|
37
43
|
DRY_RUN = "dry_run"
|
38
44
|
EXECUTE = "execute"
|
39
45
|
VALIDATE_ONLY = "validate_only"
|
40
46
|
|
47
|
+
|
41
48
|
class ResourceImpact(BaseModel):
|
42
49
|
"""Business impact assessment for individual resources."""
|
50
|
+
|
43
51
|
resource_type: str = Field(description="AWS resource type (ec2, s3, nat-gateway, etc)")
|
44
52
|
resource_id: str = Field(description="Unique resource identifier")
|
45
53
|
resource_name: Optional[str] = Field(description="Human-readable resource name")
|
46
54
|
region: str = Field(description="AWS region")
|
47
55
|
account_id: str = Field(description="AWS account ID")
|
48
|
-
|
56
|
+
|
49
57
|
# Financial Impact
|
50
58
|
estimated_monthly_cost: Optional[float] = Field(description="Current monthly cost estimate")
|
51
|
-
projected_savings: Optional[float] = Field(description="Projected monthly savings")
|
52
|
-
|
59
|
+
projected_savings: Optional[float] = Field(description="Projected monthly savings")
|
60
|
+
|
53
61
|
# Risk Assessment
|
54
62
|
risk_level: RiskLevel = Field(description="Risk level for modification", default=RiskLevel.LOW)
|
55
63
|
business_criticality: str = Field(description="Business criticality (low/medium/high/critical)", default="low")
|
56
|
-
|
64
|
+
|
57
65
|
# Operational Impact
|
58
66
|
modification_required: bool = Field(description="Whether resource requires modification", default=False)
|
59
67
|
estimated_downtime: Optional[float] = Field(description="Expected downtime in minutes", default=None)
|
60
|
-
|
61
|
-
@field_validator(
|
68
|
+
|
69
|
+
@field_validator("risk_level")
|
62
70
|
@classmethod
|
63
71
|
def validate_risk_level(cls, v):
|
64
72
|
"""Ensure risk level is valid."""
|
@@ -66,86 +74,94 @@ class ResourceImpact(BaseModel):
|
|
66
74
|
try:
|
67
75
|
return RiskLevel(v.lower())
|
68
76
|
except ValueError:
|
69
|
-
raise ValueError(f
|
77
|
+
raise ValueError(f"Risk level must be one of: {[e.value for e in RiskLevel]}")
|
70
78
|
return v
|
71
79
|
|
72
|
-
@field_validator(
|
80
|
+
@field_validator("projected_savings")
|
73
81
|
@classmethod
|
74
82
|
def validate_savings(cls, v, info):
|
75
83
|
"""Validate savings against current cost."""
|
76
|
-
if v is not None and
|
77
|
-
current_cost = info.data[
|
84
|
+
if v is not None and "estimated_monthly_cost" in info.data:
|
85
|
+
current_cost = info.data["estimated_monthly_cost"]
|
78
86
|
if current_cost is not None and v > current_cost:
|
79
|
-
raise ValueError(
|
87
|
+
raise ValueError("Projected savings cannot exceed current cost")
|
80
88
|
return v
|
81
89
|
|
90
|
+
|
82
91
|
class ComplianceMetrics(BaseModel):
|
83
92
|
"""Security and compliance assessment metrics."""
|
93
|
+
|
84
94
|
framework: str = Field(description="Compliance framework (SOC2, PCI-DSS, HIPAA, etc)")
|
85
95
|
current_score: float = Field(ge=0, le=100, description="Current compliance score percentage")
|
86
|
-
target_score: float = Field(ge=0, le=100, description="Target compliance score percentage")
|
96
|
+
target_score: float = Field(ge=0, le=100, description="Target compliance score percentage")
|
87
97
|
violations_found: int = Field(ge=0, description="Number of violations identified")
|
88
98
|
violations_fixed: int = Field(ge=0, description="Number of violations remediated")
|
89
|
-
|
90
|
-
@field_validator(
|
99
|
+
|
100
|
+
@field_validator("violations_fixed")
|
91
101
|
@classmethod
|
92
102
|
def validate_violations_fixed(cls, v, info):
|
93
103
|
"""Ensure violations fixed doesn't exceed violations found."""
|
94
|
-
if
|
95
|
-
raise ValueError(
|
104
|
+
if "violations_found" in info.data and v > info.data["violations_found"]:
|
105
|
+
raise ValueError("Violations fixed cannot exceed violations found")
|
96
106
|
return v
|
97
107
|
|
108
|
+
|
98
109
|
class BusinessMetrics(BaseModel):
|
99
110
|
"""High-level business impact metrics for executive reporting."""
|
111
|
+
|
100
112
|
total_monthly_savings: float = Field(description="Total projected monthly savings")
|
101
113
|
implementation_cost: Optional[float] = Field(description="One-time implementation cost", default=None)
|
102
114
|
roi_percentage: Optional[float] = Field(description="Return on investment percentage", default=None)
|
103
115
|
payback_period_months: Optional[int] = Field(description="Payback period in months", default=None)
|
104
|
-
|
116
|
+
|
105
117
|
# Operational Metrics
|
106
|
-
operational_efficiency_gain: Optional[float] = Field(
|
118
|
+
operational_efficiency_gain: Optional[float] = Field(
|
119
|
+
description="Operational efficiency improvement percentage", default=None
|
120
|
+
)
|
107
121
|
manual_effort_reduction: Optional[float] = Field(description="Manual effort reduction percentage", default=None)
|
108
|
-
|
122
|
+
|
109
123
|
# Risk Metrics
|
110
124
|
overall_risk_level: RiskLevel = Field(description="Overall operation risk level")
|
111
125
|
business_continuity_impact: str = Field(description="Impact on business continuity", default="minimal")
|
112
126
|
|
127
|
+
|
113
128
|
class CloudOpsExecutionResult(BaseModel):
|
114
129
|
"""Comprehensive execution result for enterprise CloudOps operations."""
|
130
|
+
|
115
131
|
# Scenario Metadata
|
116
132
|
scenario: BusinessScenario = Field(description="Business scenario executed")
|
117
133
|
scenario_name: str = Field(description="Human-readable scenario name")
|
118
134
|
execution_timestamp: datetime = Field(description="Execution timestamp")
|
119
135
|
execution_mode: ExecutionMode = Field(description="Execution mode used")
|
120
|
-
|
136
|
+
|
121
137
|
# Execution Metrics
|
122
138
|
execution_time: float = Field(description="Total execution time in seconds")
|
123
139
|
success: bool = Field(description="Overall execution success")
|
124
140
|
error_message: Optional[str] = Field(description="Error message if execution failed", default=None)
|
125
|
-
|
141
|
+
|
126
142
|
# Resource Impact
|
127
143
|
resources_analyzed: int = Field(ge=0, description="Total resources analyzed")
|
128
144
|
resources_impacted: List[ResourceImpact] = Field(description="Detailed resource impact list")
|
129
|
-
|
145
|
+
|
130
146
|
# Business Impact
|
131
147
|
business_metrics: BusinessMetrics = Field(description="Business impact summary")
|
132
148
|
compliance_improvements: List[ComplianceMetrics] = Field(description="Compliance improvements", default=[])
|
133
|
-
|
149
|
+
|
134
150
|
# Recommendations
|
135
151
|
recommendations: List[str] = Field(description="Follow-up recommendations")
|
136
152
|
action_items: List[str] = Field(description="Required action items", default=[])
|
137
|
-
|
153
|
+
|
138
154
|
# Audit Trail
|
139
155
|
aws_profile_used: str = Field(description="AWS profile used for execution")
|
140
156
|
regions_analyzed: List[str] = Field(description="AWS regions analyzed", default=[])
|
141
157
|
services_analyzed: List[str] = Field(description="AWS services analyzed", default=[])
|
142
|
-
|
143
|
-
@field_validator(
|
158
|
+
|
159
|
+
@field_validator("execution_time")
|
144
160
|
@classmethod
|
145
161
|
def validate_execution_time(cls, v):
|
146
162
|
"""Ensure execution time is positive."""
|
147
163
|
if v < 0:
|
148
|
-
raise ValueError(
|
164
|
+
raise ValueError("Execution time must be positive")
|
149
165
|
return v
|
150
166
|
|
151
167
|
@property
|
@@ -159,9 +175,10 @@ class CloudOpsExecutionResult(BaseModel):
|
|
159
175
|
"projected_monthly_savings": self.business_metrics.total_monthly_savings,
|
160
176
|
"roi_percentage": self.business_metrics.roi_percentage,
|
161
177
|
"overall_risk": self.business_metrics.overall_risk_level.value,
|
162
|
-
"execution_time_seconds": self.execution_time
|
178
|
+
"execution_time_seconds": self.execution_time,
|
163
179
|
}
|
164
180
|
|
181
|
+
|
165
182
|
class CostOptimizationResult(CloudOpsExecutionResult):
|
166
183
|
"""Specialized result for cost optimization scenarios."""
|
167
184
|
|
@@ -180,43 +197,46 @@ class CostOptimizationResult(CloudOpsExecutionResult):
|
|
180
197
|
# Additional fields used by cost_optimizer.py
|
181
198
|
affected_resources: int = Field(description="Number of resources affected by optimization", default=0)
|
182
199
|
resource_impacts: List[ResourceImpact] = Field(description="Detailed resource impact analysis", default=[])
|
183
|
-
|
184
|
-
@field_validator(
|
200
|
+
|
201
|
+
@field_validator("optimized_monthly_spend")
|
185
202
|
@classmethod
|
186
203
|
def validate_optimized_spend(cls, v, info):
|
187
204
|
"""Ensure optimized spend is less than current spend."""
|
188
|
-
if
|
189
|
-
raise ValueError(
|
205
|
+
if "current_monthly_spend" in info.data and v > info.data["current_monthly_spend"]:
|
206
|
+
raise ValueError("Optimized spend cannot exceed current spend")
|
190
207
|
return v
|
191
208
|
|
209
|
+
|
192
210
|
class SecurityEnforcementResult(CloudOpsExecutionResult):
|
193
211
|
"""Specialized result for security enforcement scenarios."""
|
194
|
-
|
212
|
+
|
195
213
|
# Security-Specific Metrics
|
196
214
|
security_score_before: float = Field(ge=0, le=100, description="Security score before enforcement")
|
197
|
-
security_score_after: float = Field(ge=0, le=100, description="Security score after enforcement")
|
198
|
-
|
215
|
+
security_score_after: float = Field(ge=0, le=100, description="Security score after enforcement")
|
216
|
+
|
199
217
|
# Compliance Frameworks
|
200
218
|
compliance_frameworks: List[ComplianceMetrics] = Field(description="Compliance framework results")
|
201
|
-
|
219
|
+
|
202
220
|
# Security Findings
|
203
221
|
critical_findings: int = Field(ge=0, description="Critical security findings")
|
204
222
|
high_findings: int = Field(ge=0, description="High severity security findings")
|
205
223
|
medium_findings: int = Field(ge=0, description="Medium severity security findings")
|
206
224
|
low_findings: int = Field(ge=0, description="Low severity security findings")
|
207
|
-
|
225
|
+
|
208
226
|
# Remediation
|
209
227
|
auto_remediated: int = Field(ge=0, description="Automatically remediated findings")
|
210
228
|
manual_remediation_required: int = Field(ge=0, description="Findings requiring manual remediation")
|
211
229
|
|
230
|
+
|
212
231
|
class ProfileConfiguration(BaseModel):
|
213
232
|
"""AWS profile configuration for multi-account operations."""
|
233
|
+
|
214
234
|
profile_name: str = Field(description="AWS profile name")
|
215
235
|
profile_type: str = Field(description="Profile type (billing/management/operational)")
|
216
236
|
account_id: Optional[str] = Field(description="AWS account ID")
|
217
237
|
regions: List[str] = Field(description="Target AWS regions", default=["us-east-1"])
|
218
|
-
|
219
|
-
@field_validator(
|
238
|
+
|
239
|
+
@field_validator("profile_name")
|
220
240
|
@classmethod
|
221
241
|
def validate_profile_exists(cls, v):
|
222
242
|
"""Validate that AWS profile exists in local configuration."""
|
@@ -228,36 +248,41 @@ class ProfileConfiguration(BaseModel):
|
|
228
248
|
# In dry-run or test environments, allow any profile name
|
229
249
|
return v
|
230
250
|
|
251
|
+
|
231
252
|
class BusinessScenarioConfig(BaseModel):
|
232
253
|
"""Configuration for business scenario execution."""
|
254
|
+
|
233
255
|
scenario_name: str = Field(description="Business scenario name")
|
234
256
|
scenario_type: BusinessScenario = Field(description="Scenario type")
|
235
257
|
execution_mode: ExecutionMode = Field(description="Execution mode", default=ExecutionMode.DRY_RUN)
|
236
|
-
|
258
|
+
|
237
259
|
# AWS Configuration
|
238
260
|
primary_profile: ProfileConfiguration = Field(description="Primary AWS profile")
|
239
|
-
additional_profiles: List[ProfileConfiguration] = Field(
|
240
|
-
|
261
|
+
additional_profiles: List[ProfileConfiguration] = Field(
|
262
|
+
description="Additional profiles for multi-account", default=[]
|
263
|
+
)
|
264
|
+
|
241
265
|
# Business Parameters
|
242
266
|
cost_threshold: Optional[float] = Field(description="Minimum cost threshold for analysis")
|
243
267
|
risk_tolerance: RiskLevel = Field(description="Maximum acceptable risk level", default=RiskLevel.MEDIUM)
|
244
|
-
|
268
|
+
|
245
269
|
# Executive Reporting
|
246
270
|
generate_executive_report: bool = Field(description="Generate executive PDF report", default=True)
|
247
271
|
include_detailed_analysis: bool = Field(description="Include detailed technical analysis", default=False)
|
248
272
|
notify_stakeholders: List[str] = Field(description="Stakeholder notification emails", default=[])
|
249
273
|
|
274
|
+
|
250
275
|
# Export all models for easy importing
|
251
276
|
__all__ = [
|
252
|
-
"BusinessScenario",
|
253
|
-
"RiskLevel",
|
277
|
+
"BusinessScenario",
|
278
|
+
"RiskLevel",
|
254
279
|
"ExecutionMode",
|
255
|
-
"ResourceImpact",
|
256
|
-
"ComplianceMetrics",
|
280
|
+
"ResourceImpact",
|
281
|
+
"ComplianceMetrics",
|
257
282
|
"BusinessMetrics",
|
258
|
-
"CloudOpsExecutionResult",
|
259
|
-
"CostOptimizationResult",
|
283
|
+
"CloudOpsExecutionResult",
|
284
|
+
"CostOptimizationResult",
|
260
285
|
"SecurityEnforcementResult",
|
261
286
|
"ProfileConfiguration",
|
262
|
-
"BusinessScenarioConfig"
|
263
|
-
]
|
287
|
+
"BusinessScenarioConfig",
|
288
|
+
]
|
@@ -10,20 +10,21 @@ This module will be fully implemented in the next development phase.
|
|
10
10
|
from .base import CloudOpsBase
|
11
11
|
from .models import CloudOpsExecutionResult, BusinessScenario, ExecutionMode
|
12
12
|
|
13
|
+
|
13
14
|
class MonitoringAutomation(CloudOpsBase):
|
14
15
|
"""
|
15
16
|
Monitoring automation scenarios for operational excellence and SRE practices.
|
16
|
-
|
17
|
+
|
17
18
|
Future Implementation Will Include:
|
18
19
|
- CloudWatch automation and alerting
|
19
20
|
- Performance monitoring and optimization
|
20
21
|
- SRE monitoring patterns and dashboards
|
21
22
|
- Incident response automation
|
22
23
|
"""
|
23
|
-
|
24
|
+
|
24
25
|
def __init__(self, profile: str = "default", dry_run: bool = True):
|
25
26
|
super().__init__(profile, dry_run, ExecutionMode.DRY_RUN)
|
26
|
-
|
27
|
+
|
27
28
|
def placeholder_method(self):
|
28
29
|
"""Placeholder for future implementation."""
|
29
|
-
return "MonitoringAutomation - Coming in next development phase"
|
30
|
+
return "MonitoringAutomation - Coming in next development phase"
|