109 lines
3.8 KiB
Plaintext
109 lines
3.8 KiB
Plaintext
# Info: AWS provider dependencies for batch provisioning workflows (Provisioning)
|
|
# Author: Claude Code Agent 7
|
|
# Release: 2.0.0
|
|
# Date: 2025-09-25
|
|
import provisioning
|
|
|
|
schema NetworkDependencies:
|
|
"""VPC and networking dependencies"""
|
|
vpc_first: bool = True
|
|
subnets_require_vpc: bool = True
|
|
igw_for_public: bool = True
|
|
route_tables_auto: bool = True
|
|
nacls_after_subnets: bool = True
|
|
network_timeout: int = 10
|
|
|
|
schema SecurityDependencies:
|
|
"""Security Group dependencies"""
|
|
requires_vpc: bool = True
|
|
cross_references: bool = True
|
|
batch_size: int = 20
|
|
max_rules_per_group: int = 60
|
|
|
|
schema InstanceDependencies:
|
|
"""EC2 instance dependencies"""
|
|
requires: [str] = ["subnets", "security_groups", "key_pairs"]
|
|
launch_template_support: bool = True
|
|
batch_size: int = 10
|
|
max_concurrent_per_az: int = 20
|
|
launch_timeout: int = 10
|
|
placement_groups: bool = True
|
|
|
|
schema VolumeDependencies:
|
|
"""EBS volume dependencies"""
|
|
independent_creation: bool = True
|
|
attach_requires_running: bool = False
|
|
concurrent_snapshots: bool = True
|
|
batch_size: int = 15
|
|
single_az_restriction: bool = True
|
|
|
|
schema ApiLimits:
|
|
"""API rate limits and constraints"""
|
|
ec2_requests_per_second: int = 20
|
|
vpc_requests_per_second: int = 10
|
|
ebs_requests_per_second: int = 10
|
|
burst_multiplier: float = 2
|
|
throttle_backoff: int = 1000
|
|
max_retries: int = 5
|
|
regional_limits: bool = True
|
|
|
|
schema SharedResources:
|
|
"""Shared resources across accounts/regions"""
|
|
amis_shareable: bool = True
|
|
snapshots_shareable: bool = True
|
|
keypairs_regional: bool = True
|
|
vpcs_isolated: bool = True
|
|
sgs_vpc_scoped: bool = True
|
|
|
|
schema Lifecycle:
|
|
"""Resource lifecycle management"""
|
|
safe_delete: [str] = ["instances", "volumes", "snapshots"]
|
|
dependency_check: [str] = ["vpc", "subnets", "security_groups"]
|
|
cost_monitoring: [str] = ["instances", "volumes", "nat_gateways", "load_balancers"]
|
|
cleanup_order: [str] = ["load_balancers", "volumes", "instances", "key_pairs", "security_groups", "internet_gateways", "subnets", "vpc"]
|
|
|
|
schema CrossProvider:
|
|
"""Cross-provider compatibility"""
|
|
upcloud_compatible: bool = True
|
|
local_compatible: bool = True
|
|
hybrid_deployments: bool = True
|
|
naming_restrictions: [str] = ["aws-", "amazon-"]
|
|
mandatory_tags: [str] = ["Project", "Environment", "ManagedBy"]
|
|
|
|
schema AvailabilityZones:
|
|
"""Availability Zone considerations"""
|
|
multi_az_distribution: bool = True
|
|
min_az_count: int = 2
|
|
max_az_count: int = 3
|
|
affinity_groups: bool = True
|
|
|
|
schema Validation:
|
|
"""Validation and compliance"""
|
|
quota_validation: bool = True
|
|
permission_validation: bool = True
|
|
regional_limits: bool = True
|
|
compliance_checks: bool = True
|
|
cost_estimation: bool = True
|
|
|
|
schema AWSDependencies:
|
|
"""
|
|
AWS provider dependency management for batch workflows
|
|
"""
|
|
# Resource creation order and dependencies
|
|
resource_order: [str] = ["vpc", "subnets", "internet_gateways", "security_groups", "key_pairs", "instances", "volumes", "load_balancers"]
|
|
|
|
# Configuration sections
|
|
network_dependencies: NetworkDependencies = NetworkDependencies {}
|
|
security_dependencies: SecurityDependencies = SecurityDependencies {}
|
|
instance_dependencies: InstanceDependencies = InstanceDependencies {}
|
|
volume_dependencies: VolumeDependencies = VolumeDependencies {}
|
|
api_limits: ApiLimits = ApiLimits {}
|
|
shared_resources: SharedResources = SharedResources {}
|
|
lifecycle: Lifecycle = Lifecycle {}
|
|
cross_provider: CrossProvider = CrossProvider {}
|
|
availability_zones: AvailabilityZones = AvailabilityZones {}
|
|
validation: Validation = Validation {}
|
|
|
|
# Default dependency configuration for AWS provider
|
|
aws_dependencies: AWSDependencies = AWSDependencies {}
|