/*
* Proxmox Virtual Environment API
*
* Generated from apidoc.js. NOT an official Proxmox specification. See https://pve.proxmox.com/pve-docs/api-viewer/ for the upstream documentation.
*
* The version of the OpenAPI document: 9.x
*
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PveHaConfig {
/// Describes the policy for handling HA services on poweroff or reboot of a node. Freeze will always freeze services which are still located on the node on shutdown, those services won't be recovered by the HA manager. Failover will not mark the services as frozen and thus the services will get recovered to other nodes, if the shutdown node does not come up again quickly (< 1min). 'conditional' chooses automatically depending on the type of shutdown, i.e., on a reboot the service will be frozen but on a poweroff the service will stay as is, and thus get recovered after about 2 minutes. Migrate will try to move all running services to another node when a reboot or shutdown was triggered. The poweroff process will only continue once no running services are located on the node anymore. If the node comes up again, the service will be moved back to the previously powered-off node, at least if no other migration, reloaction or recovery took place.
#[serde(rename = "shutdown_policy")]
pub shutdown_policy: models::PveClusterOptionsShutdownPolicyEnum,
}
impl PveHaConfig {
pub fn new(shutdown_policy: models::PveClusterOptionsShutdownPolicyEnum) -> PveHaConfig {
PveHaConfig {
shutdown_policy,
}
}
}
impl PveHaConfig {
/// Serialise this PveHaConfig into Proxmox's CLI-style shorthand
/// string (`key=value,…`). The property marked `x-pve-default-key`
/// is emitted positionally without a `key=` prefix; aliases collapse
/// multiple property names to the same wire key.
///
/// Example: `PveHaConfig `
/// → `"virtio,bridge=vmbr0"`
pub fn to_shorthand(&self) -> String {
let mut parts: Vec<String> = Vec::new();
parts.push(format!("shutdown_policy={}", self.shutdown_policy));
parts.join(",")
}
}