96 lines
3.3 KiB
Plaintext
Raw Normal View History

# VM Lifecycle Contracts
#
# Type definitions for VM persistence and lifecycle management
# Migrated from provisioning/kcl/vm_lifecycle.k
{
VmPersistence = {
mode | [| 'permanent, 'temporary |] | default = 'permanent,
auto_start | Bool | default = false,
restart_policy | [| 'no, 'always, 'on_failure |] | default = 'always,
max_retries | Number | default = 5,
ttl_hours | Number | default = 24,
auto_cleanup | Bool | default = true,
force_cleanup | Bool | default = false,
cleanup_grace_period | Number | default = 60,
created_at_unix | Number,
scheduled_cleanup | Number | optional,
last_state_change | Number | optional,
},
VmLifecyclePolicy = {
on_host_reboot | [| 'start, 'keep_stopped, 'destroy |] | default = 'start,
on_host_shutdown | [| 'shutdown, 'save_state, 'destroy |] | default = 'shutdown,
on_memory_pressure | [| 'suspend, 'kill, 'none |] | default = 'none,
on_disk_full | [| 'suspend, 'kill, 'none |] | default = 'none,
enforce_memory_limit | Bool | default = true,
enforce_cpu_limit | Bool | default = true,
enforce_disk_limit | Bool | default = false,
},
VmCleanupSchedule = {
vm_name | String,
vm_id | String,
mode | [| 'temporary |] | default = 'temporary,
created_at | String,
scheduled_cleanup_at | String,
ttl_hours | Number,
cleanup_status | [| 'pending, 'in_progress, 'completed, 'failed |] | default = 'pending,
cleanup_attempts | Number | default = 0,
last_cleanup_attempt | String | optional,
cleanup_error | String | optional,
},
VmRecoveryState = {
vm_name | String,
vm_id | String,
state_before_shutdown | [| 'running, 'stopped, 'paused |],
creation_timestamp | String,
last_checkpoint | String,
memory_snapshot | String | optional,
memory_size_mb | Number | optional,
config_snapshot | Dyn,
},
VmAutoStartConfig = {
vm_name | String,
enabled | Bool | default = true,
start_order | Number | default = 0,
start_delay_seconds | Number | default = 0,
wait_for_ssh | Bool | default = true,
ssh_timeout_seconds | Number | default = 300,
on_start_failure | [| 'stop, 'retry, 'ignore |] | default = 'retry,
max_start_retries | Number | default = 3,
depends_on | Array String | default = [],
},
VmCleanupPolicy = {
cleanup_enabled | Bool | default = true,
check_interval_minutes | Number | default = 60,
cleanup_window_start | String | default = "02:00",
cleanup_window_end | String | default = "06:00",
cleanup_in_window_only | Bool | default = true,
max_concurrent_cleanups | Number | default = 3,
cleanup_batch_size | Number | default = 10,
require_confirmation | Bool | default = false,
dry_run_mode | Bool | default = false,
skip_on_low_resources | Bool | default = true,
log_cleanup_operations | Bool | default = true,
alert_on_cleanup_failure | Bool | default = true,
retention_days | Number | default = 7,
},
VmStateSnapshot = {
vm_name | String,
snapshot_time | String,
vm_state | [| 'stopped, 'starting, 'running, 'stopping, 'paused, 'error |],
cpu_usage_percent | Number,
memory_usage_mb | Number,
disk_usage_gb | Number,
ip_addresses | Array String,
mac_addresses | Array String,
uptime_seconds | Number,
restart_count | Number,
},
}