wasmer_deploy_schema/schema/
fs.rs

1use bytesize::ByteSize;
2use serde::{Deserialize, Serialize};
3
4use super::Merge;
5
6#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
7pub struct CapabilityFileSystemV1 {
8    #[serde(default)]
9    pub volumes: Vec<FileSystemVolumeConfigV1>,
10}
11
12impl Merge for CapabilityFileSystemV1 {
13    fn merge_extend(mut self, other: &Self) -> Self {
14        self.volumes.extend(other.volumes.clone());
15        self
16    }
17}
18
19#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
20pub struct FileSystemVolumeConfigV1 {
21    /// Name for the volume in the context of this workload.
22    pub name: String,
23    pub source: FileSystemVolumeSourceV1,
24    pub mounts: Vec<FileSystemVolumeMountV1>,
25}
26
27#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
28pub enum FileSystemVolumeSourceV1 {
29    #[serde(rename = "local")]
30    Local(FileSystemVolumeSourceLocalV1),
31}
32
33#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
34pub struct FileSystemVolumeSourceLocalV1 {
35    #[schemars(with = "String")]
36    pub maximum_size: ByteSize,
37}
38
39#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
40pub struct FileSystemVolumeMountV1 {
41    /// The path where the volume should be mounted.
42    pub path: String,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub permissions: Option<FileSystemPermissionsV1>,
45}
46
47#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
48pub struct FileSystemPermissionsV1 {
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub read: Option<bool>,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub write: Option<bool>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub delete: Option<bool>,
55}