use bytesize::ByteSize;
use serde::{Deserialize, Serialize};
use super::Merge;
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct CapabilityFileSystemV1 {
#[serde(default)]
pub volumes: Vec<FileSystemVolumeConfigV1>,
}
impl Merge for CapabilityFileSystemV1 {
fn merge_extend(mut self, other: &Self) -> Self {
self.volumes.extend(other.volumes.clone());
self
}
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct FileSystemVolumeConfigV1 {
pub name: String,
pub source: FileSystemVolumeSourceV1,
pub mounts: Vec<FileSystemVolumeMountV1>,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub enum FileSystemVolumeSourceV1 {
#[serde(rename = "local")]
Local(FileSystemVolumeSourceLocalV1),
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct FileSystemVolumeSourceLocalV1 {
#[schemars(with = "String")]
pub maximum_size: ByteSize,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct FileSystemVolumeMountV1 {
pub path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<FileSystemPermissionsV1>,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct FileSystemPermissionsV1 {
#[serde(skip_serializing_if = "Option::is_none")]
pub read: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub write: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delete: Option<bool>,
}