package config type Config struct { Kubeconfig string `yaml:"kubeconfig"` SSHUser string `yaml:"ssh_user"` SSHPort int `yaml:"ssh_port"` SSHConfigFile string `yaml:"ssh_config_file"` SSHIdentityFile string `yaml:"ssh_identity_file"` SSHNodeHosts map[string]string `yaml:"ssh_node_hosts"` SSHNodeUsers map[string]string `yaml:"ssh_node_users"` SSHManagedNodes []string `yaml:"ssh_managed_nodes"` SSHJumpHost string `yaml:"ssh_jump_host"` SSHJumpUser string `yaml:"ssh_jump_user"` IACRepoPath string `yaml:"iac_repo_path"` ExpectedFluxBranch string `yaml:"expected_flux_branch"` ExpectedFluxSource string `yaml:"expected_flux_source_url"` ControlPlanes []string `yaml:"control_planes"` Workers []string `yaml:"workers"` LocalBootstrapPaths []string `yaml:"local_bootstrap_paths"` ExcludedNamespaces []string `yaml:"excluded_namespaces"` Startup Startup `yaml:"startup"` Shutdown Shutdown `yaml:"shutdown"` UPS UPS `yaml:"ups"` Coordination Coordination `yaml:"coordination"` Metrics Metrics `yaml:"metrics"` State State `yaml:"state"` } type Startup struct { APIWaitSeconds int `yaml:"api_wait_seconds"` APIPollSeconds int `yaml:"api_poll_seconds"` ShutdownCooldownSeconds int `yaml:"shutdown_cooldown_seconds"` MinimumBatteryPercent float64 `yaml:"minimum_battery_percent"` RequireNodeInventoryReach bool `yaml:"require_node_inventory_reachability"` NodeInventoryReachWaitSeconds int `yaml:"node_inventory_reachability_wait_seconds"` NodeInventoryReachPollSeconds int `yaml:"node_inventory_reachability_poll_seconds"` NodeInventoryReachRequiredNodes []string `yaml:"node_inventory_reachability_required_nodes"` RequiredNodeLabels map[string]map[string]string `yaml:"required_node_labels"` RequireTimeSync bool `yaml:"require_time_sync"` TimeSyncWaitSeconds int `yaml:"time_sync_wait_seconds"` TimeSyncPollSeconds int `yaml:"time_sync_poll_seconds"` TimeSyncMode string `yaml:"time_sync_mode"` TimeSyncQuorum int `yaml:"time_sync_quorum"` ReconcileAccessOnBoot bool `yaml:"reconcile_access_on_boot"` AutoEtcdRestoreOnAPIFailure bool `yaml:"auto_etcd_restore_on_api_failure"` EtcdRestoreControlPlane string `yaml:"etcd_restore_control_plane"` RequireStorageReady bool `yaml:"require_storage_ready"` StorageReadyWaitSeconds int `yaml:"storage_ready_wait_seconds"` StorageReadyPollSeconds int `yaml:"storage_ready_poll_seconds"` StorageMinReadyNodes int `yaml:"storage_min_ready_nodes"` StorageCriticalPVCs []string `yaml:"storage_critical_pvcs"` RequirePostStartProbes bool `yaml:"require_post_start_probes"` PostStartProbeWaitSeconds int `yaml:"post_start_probe_wait_seconds"` PostStartProbePollSeconds int `yaml:"post_start_probe_poll_seconds"` PostStartProbes []string `yaml:"post_start_probes"` RequireServiceChecklist bool `yaml:"require_service_checklist"` ServiceChecklistWaitSeconds int `yaml:"service_checklist_wait_seconds"` ServiceChecklistPollSeconds int `yaml:"service_checklist_poll_seconds"` ServiceChecklistStabilitySec int `yaml:"service_checklist_stability_seconds"` ServiceChecklistAuth ServiceChecklistAuthSettings `yaml:"service_checklist_auth"` ServiceChecklistExplicitOnly bool `yaml:"service_checklist_explicit_only"` ServiceChecklist []ServiceChecklistCheck `yaml:"service_checklist"` RequireCriticalServiceEndpoints bool `yaml:"require_critical_service_endpoints"` CriticalServiceEndpointWaitSec int `yaml:"critical_service_endpoint_wait_seconds"` CriticalServiceEndpointPollSec int `yaml:"critical_service_endpoint_poll_seconds"` CriticalServiceEndpoints []string `yaml:"critical_service_endpoints"` RequireIngressChecklist bool `yaml:"require_ingress_checklist"` IngressChecklistWaitSeconds int `yaml:"ingress_checklist_wait_seconds"` IngressChecklistPollSeconds int `yaml:"ingress_checklist_poll_seconds"` IngressChecklistAccepted []int `yaml:"ingress_checklist_accepted_statuses"` IngressChecklistIgnoreHosts []string `yaml:"ingress_checklist_ignore_hosts"` IngressChecklistInsecureSkip bool `yaml:"ingress_checklist_insecure_skip_tls"` RequireNodeSSHAuth bool `yaml:"require_node_ssh_auth"` NodeSSHAuthWaitSeconds int `yaml:"node_ssh_auth_wait_seconds"` NodeSSHAuthPollSeconds int `yaml:"node_ssh_auth_poll_seconds"` NodeSSHAuthRequiredNodes []string `yaml:"node_ssh_auth_required_nodes"` RequireFluxHealth bool `yaml:"require_flux_health"` FluxHealthWaitSeconds int `yaml:"flux_health_wait_seconds"` FluxHealthPollSeconds int `yaml:"flux_health_poll_seconds"` FluxHealthRequiredKustomizations []string `yaml:"flux_health_required_kustomizations"` IgnoreFluxKustomizations []string `yaml:"ignore_flux_kustomizations"` RequireWorkloadConvergence bool `yaml:"require_workload_convergence"` WorkloadConvergenceWaitSeconds int `yaml:"workload_convergence_wait_seconds"` WorkloadConvergencePollSeconds int `yaml:"workload_convergence_poll_seconds"` WorkloadConvergenceRequiredNamespaces []string `yaml:"workload_convergence_required_namespaces"` IgnoreWorkloadNamespaces []string `yaml:"ignore_workload_namespaces"` IgnoreWorkloads []string `yaml:"ignore_workloads"` IgnoreUnavailableNodes []string `yaml:"ignore_unavailable_nodes"` AutoRecycleStuckPods bool `yaml:"auto_recycle_stuck_pods"` AutoQuarantineSchedulingStorms bool `yaml:"auto_quarantine_scheduling_storms"` SchedulingStormEventThreshold int `yaml:"scheduling_storm_event_threshold"` SchedulingStormWindowSeconds int `yaml:"scheduling_storm_window_seconds"` StuckPodGraceSeconds int `yaml:"stuck_pod_grace_seconds"` VaultUnsealKeyFile string `yaml:"vault_unseal_key_file"` VaultUnsealBreakglassCommand string `yaml:"vault_unseal_breakglass_command"` VaultUnsealBreakglassTimeout int `yaml:"vault_unseal_breakglass_timeout_seconds"` } type ServiceChecklistCheck struct { Name string `yaml:"name"` URL string `yaml:"url"` AcceptedStatuses []int `yaml:"accepted_statuses"` RequireRobotAuth bool `yaml:"require_robot_auth"` FollowRedirects bool `yaml:"follow_redirects"` LocationContains string `yaml:"location_contains"` LocationNotContains string `yaml:"location_not_contains"` FinalURLContains string `yaml:"final_url_contains"` FinalURLNotContains string `yaml:"final_url_not_contains"` BodyContains string `yaml:"body_contains"` BodyNotContains string `yaml:"body_not_contains"` TimeoutSeconds int `yaml:"timeout_seconds"` InsecureSkipTLS bool `yaml:"insecure_skip_tls"` } type ServiceChecklistAuthSettings struct { Mode string `yaml:"mode"` KeycloakBaseURL string `yaml:"keycloak_base_url"` Realm string `yaml:"realm"` RobotUsername string `yaml:"robot_username"` AdminSecretNamespace string `yaml:"admin_secret_namespace"` AdminSecretName string `yaml:"admin_secret_name"` AdminSecretUsernameKey string `yaml:"admin_secret_username_key"` AdminSecretPasswordKey string `yaml:"admin_secret_password_key"` } type Shutdown struct { DefaultBudgetSeconds int `yaml:"default_budget_seconds"` HistoryMinSamples int `yaml:"history_min_samples"` EmergencyBudgetSec int `yaml:"emergency_budget_seconds"` EmergencyMinSamples int `yaml:"emergency_history_min_samples"` EmergencySkipEtcd bool `yaml:"emergency_skip_etcd_snapshot"` EmergencySkipDrain bool `yaml:"emergency_skip_drain"` SkipEtcdSnapshot bool `yaml:"skip_etcd_snapshot"` SkipDrain bool `yaml:"skip_drain"` DrainParallelism int `yaml:"drain_parallelism"` ScaleParallelism int `yaml:"scale_parallelism"` SSHParallelism int `yaml:"ssh_parallelism"` } type UPS struct { Enabled bool `yaml:"enabled"` Provider string `yaml:"provider"` Target string `yaml:"target"` Targets []UPSTarget `yaml:"targets"` PollSeconds int `yaml:"poll_seconds"` RuntimeSafetyFactor float64 `yaml:"runtime_safety_factor"` OnBatteryGraceSeconds int `yaml:"on_battery_grace_seconds"` DebounceCount int `yaml:"debounce_count"` TelemetryTimeoutSeconds int `yaml:"telemetry_timeout_seconds"` } type UPSTarget struct { Name string `yaml:"name"` Target string `yaml:"target"` } type Coordination struct { ForwardShutdownHost string `yaml:"forward_shutdown_host"` ForwardShutdownUser string `yaml:"forward_shutdown_user"` ForwardShutdownConfig string `yaml:"forward_shutdown_config"` PeerHosts []string `yaml:"peer_hosts"` FallbackLocalShutdown bool `yaml:"fallback_local_shutdown"` CommandTimeoutSeconds int `yaml:"command_timeout_seconds"` StartupGuardMaxAgeSec int `yaml:"startup_guard_max_age_seconds"` Role string `yaml:"role"` AllowStartupOnBattery bool `yaml:"allow_startup_on_battery"` } type Metrics struct { Enabled bool `yaml:"enabled"` BindAddr string `yaml:"bind_addr"` Path string `yaml:"path"` } type State struct { Dir string `yaml:"dir"` ReportsDir string `yaml:"reports_dir"` RunHistoryPath string `yaml:"run_history_path"` LockPath string `yaml:"lock_path"` IntentPath string `yaml:"intent_path"` }