use std::path::PathBuf;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SnapshotStorageSettings {
#[serde(default)]
pub endpoint: String,
#[serde(default = "default_snapshot_bucket")]
pub bucket: String,
#[serde(default = "default_snapshot_prefix")]
pub prefix: String,
#[serde(default)]
pub access_key: String,
#[serde(default)]
pub secret_key: String,
#[serde(default = "default_snapshot_region")]
pub region: String,
#[serde(default)]
pub local_dir: Option<PathBuf>,
}
fn default_snapshot_bucket() -> String {
"nodedb-snapshots".into()
}
fn default_snapshot_prefix() -> String {
"snapshots/".into()
}
fn default_snapshot_region() -> String {
"us-east-1".into()
}
impl SnapshotStorageSettings {
pub fn to_snapshot_storage_config(
&self,
) -> crate::storage::snapshot_writer::SnapshotStorageConfig {
crate::storage::snapshot_writer::SnapshotStorageConfig {
endpoint: self.endpoint.clone(),
bucket: self.bucket.clone(),
prefix: self.prefix.clone(),
access_key: self.access_key.clone(),
secret_key: self.secret_key.clone(),
region: self.region.clone(),
local_dir: self.local_dir.clone(),
}
}
pub fn default_storage_config() -> crate::storage::snapshot_writer::SnapshotStorageConfig {
crate::storage::snapshot_writer::SnapshotStorageConfig {
endpoint: String::new(),
bucket: default_snapshot_bucket(),
prefix: default_snapshot_prefix(),
access_key: String::new(),
secret_key: String::new(),
region: default_snapshot_region(),
local_dir: None,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QuarantineStorageSettings {
#[serde(default)]
pub endpoint: String,
#[serde(default = "default_quarantine_bucket")]
pub bucket: String,
#[serde(default = "default_quarantine_prefix")]
pub prefix: String,
#[serde(default)]
pub access_key: String,
#[serde(default)]
pub secret_key: String,
#[serde(default = "default_quarantine_region")]
pub region: String,
#[serde(default)]
pub local_dir: Option<PathBuf>,
}
fn default_quarantine_bucket() -> String {
"nodedb-quarantine".into()
}
fn default_quarantine_prefix() -> String {
"quarantine/".into()
}
fn default_quarantine_region() -> String {
"us-east-1".into()
}
impl QuarantineStorageSettings {
pub fn to_quarantine_storage_config(
&self,
) -> crate::storage::quarantine::registry::QuarantineStorageConfig {
crate::storage::quarantine::registry::QuarantineStorageConfig {
endpoint: self.endpoint.clone(),
bucket: self.bucket.clone(),
prefix: self.prefix.clone(),
access_key: self.access_key.clone(),
secret_key: self.secret_key.clone(),
region: self.region.clone(),
local_dir: self.local_dir.clone(),
}
}
pub fn default_storage_config() -> crate::storage::quarantine::registry::QuarantineStorageConfig
{
crate::storage::quarantine::registry::QuarantineStorageConfig {
endpoint: String::new(),
bucket: default_quarantine_bucket(),
prefix: default_quarantine_prefix(),
access_key: String::new(),
secret_key: String::new(),
region: default_quarantine_region(),
local_dir: None,
}
}
}