use derive_new::new;
use serde::Serialize;

use crate::hardware::PhysicalHost;

use super::LogicalHost;

/// Represents the binding between a LogicalHost and a PhysicalHost.
///
/// This is the only construct that directly maps a logical host to a physical host.
/// It serves as a bridge between the logical cluster structure and the physical infrastructure.
#[derive(Debug, new, Clone, Serialize)]
pub struct HostBinding {
    /// Reference to the LogicalHost
    pub logical_host: LogicalHost,
    /// Reference to the PhysicalHost
    pub physical_host: PhysicalHost,
}
