fix7: продакшен-реализация полного reconcile swap и интеграций
- Полностью переписан swap-модуль в режиме exclusive ownership\n- Добавлены verify/checks, статус фактического swap-state и drift\n- Интегрирован ensure-swap в daemon и systemd ExecStartPre\n- Усилен lock API (таймауты) и применение в traffic/firewall/swap\n- Усилен parser firewall (JSON-first + устойчивый text fallback)\n- Обновлены config validation, runtime tools и default priority\n- Синхронизированы docs и build/package hygiene\n- Удалены member Cargo.lock в пользу корневого lockfile
This commit is contained in:
@@ -6,7 +6,7 @@ use std::{
|
||||
time::{Duration, Instant},
|
||||
};
|
||||
|
||||
use crate::{config::Config, docker, firewall, iface, netns::build_transport, traffic};
|
||||
use crate::{config::Config, docker, firewall, iface, netns::build_transport, swap, traffic};
|
||||
use tracing::{error, info};
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
@@ -26,6 +26,15 @@ pub fn run(cfg: Config) -> anyhow::Result<()> {
|
||||
info!("starting daemon");
|
||||
let state = Arc::new(Mutex::new(LastActionState::default()));
|
||||
|
||||
if let Err(e) = swap::ensure_swap(&cfg) {
|
||||
set_err(&state, format!("startup swap reconcile: {e}"));
|
||||
append_event(&format!("startup_swap error=\"{e}\""));
|
||||
return Err(e);
|
||||
} else {
|
||||
set_ok(&state, "startup swap reconcile ok");
|
||||
append_event("startup_swap ok");
|
||||
}
|
||||
|
||||
if let Err(e) = traffic::reconcile_traffic(&cfg) {
|
||||
set_err(&state, format!("startup traffic reconcile: {e}"));
|
||||
append_event(&format!("startup_reconcile traffic=error error=\"{e}\""));
|
||||
@@ -60,6 +69,15 @@ pub fn run(cfg: Config) -> anyhow::Result<()> {
|
||||
});
|
||||
|
||||
loop {
|
||||
if let Err(e) = swap::ensure_swap(&cfg) {
|
||||
error!(error = %e, "swap reconcile error");
|
||||
set_err(&state, format!("periodic swap reconcile: {e}"));
|
||||
append_event(&format!("periodic_reconcile swap=error error=\"{e}\""));
|
||||
} else {
|
||||
set_ok(&state, "periodic swap reconcile ok");
|
||||
append_event("periodic_reconcile swap=ok");
|
||||
}
|
||||
|
||||
if let Err(e) = traffic::reconcile_traffic(&cfg) {
|
||||
error!(error = %e, "traffic reconcile error");
|
||||
set_err(&state, format!("periodic traffic reconcile: {e}"));
|
||||
@@ -199,7 +217,11 @@ fn append_event(event: &str) {
|
||||
}
|
||||
}
|
||||
|
||||
if let Ok(mut f) = fs::OpenOptions::new().create(true).write(true).truncate(true).open(EVENTS_FILE)
|
||||
if let Ok(mut f) = fs::OpenOptions::new()
|
||||
.create(true)
|
||||
.write(true)
|
||||
.truncate(true)
|
||||
.open(EVENTS_FILE)
|
||||
{
|
||||
let _ = f.write_all(content.as_bytes());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user