38 lines
1.0 KiB
Rust
Raw Normal View History

2026-03-09 08:48:05 +01:00
use serde::{Deserialize, Serialize};
use crate::NodeArtifactFile;
2026-03-09 08:48:05 +01:00
/// Top-level cfgsync bundle containing per-node file payloads.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NodeArtifactsBundle {
pub nodes: Vec<NodeArtifactsBundleEntry>,
#[serde(default)]
pub shared_files: Vec<NodeArtifactFile>,
2026-03-09 08:48:05 +01:00
}
impl NodeArtifactsBundle {
2026-03-09 08:48:05 +01:00
#[must_use]
pub fn new(nodes: Vec<NodeArtifactsBundleEntry>) -> Self {
Self {
nodes,
shared_files: Vec::new(),
}
}
#[must_use]
pub fn with_shared_files(mut self, shared_files: Vec<NodeArtifactFile>) -> Self {
self.shared_files = shared_files;
self
2026-03-09 08:48:05 +01:00
}
}
/// Artifact set for a single node resolved by identifier.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NodeArtifactsBundleEntry {
2026-03-09 08:48:05 +01:00
/// Stable node identifier used by cfgsync lookup.
pub identifier: String,
/// Files that should be materialized for the node.
#[serde(default)]
pub files: Vec<NodeArtifactFile>,
2026-03-09 08:48:05 +01:00
}