diff --git a/src/runtime-rs/crates/agent/src/kata/trans.rs b/src/runtime-rs/crates/agent/src/kata/trans.rs index 033f0bd979..e7fdaa9448 100644 --- a/src/runtime-rs/crates/agent/src/kata/trans.rs +++ b/src/runtime-rs/crates/agent/src/kata/trans.rs @@ -16,13 +16,14 @@ use crate::{ ARPNeighbor, ARPNeighbors, AddArpNeighborRequest, AgentDetails, BlkioStats, BlkioStatsEntry, CgroupStats, CheckRequest, CloseStdinRequest, ContainerID, CopyFileRequest, CpuStats, CpuUsage, CreateContainerRequest, CreateSandboxRequest, Device, - Empty, ExecProcessRequest, GuestDetailsResponse, HealthCheckResponse, HugetlbStats, - IPAddress, IPFamily, Interface, Interfaces, KernelModule, MemHotplugByProbeRequest, - MemoryData, MemoryStats, NetworkStats, OnlineCPUMemRequest, PidsStats, ReadStreamRequest, - ReadStreamResponse, RemoveContainerRequest, ReseedRandomDevRequest, Route, Routes, - SetGuestDateTimeRequest, SignalProcessRequest, StatsContainerResponse, Storage, StringUser, - ThrottlingData, TtyWinResizeRequest, UpdateContainerRequest, UpdateInterfaceRequest, - UpdateRoutesRequest, VersionCheckResponse, WaitProcessRequest, WriteStreamRequest, + Empty, ExecProcessRequest, FSGroup, FSGroupChangePolicy, GuestDetailsResponse, + HealthCheckResponse, HugetlbStats, IPAddress, IPFamily, Interface, Interfaces, + KernelModule, MemHotplugByProbeRequest, MemoryData, MemoryStats, NetworkStats, + OnlineCPUMemRequest, PidsStats, ReadStreamRequest, ReadStreamResponse, + RemoveContainerRequest, ReseedRandomDevRequest, Route, Routes, SetGuestDateTimeRequest, + SignalProcessRequest, StatsContainerResponse, Storage, StringUser, ThrottlingData, + TtyWinResizeRequest, UpdateContainerRequest, UpdateInterfaceRequest, UpdateRoutesRequest, + VersionCheckResponse, WaitProcessRequest, WriteStreamRequest, }, OomEventResponse, WaitProcessResponse, WriteStreamResponse, }; @@ -72,6 +73,22 @@ impl From for Empty { } } +impl From for agent::FSGroup { + fn from(from: FSGroup) -> Self { + let policy = match from.group_change_policy { + FSGroupChangePolicy::Always => types::FSGroupChangePolicy::Always, + FSGroupChangePolicy::OnRootMismatch => types::FSGroupChangePolicy::OnRootMismatch, + }; + + Self { + group_id: from.group_id, + group_change_policy: policy, + unknown_fields: Default::default(), + cached_size: Default::default(), + } + } +} + impl From for agent::StringUser { fn from(from: StringUser) -> Self { Self { @@ -105,6 +122,7 @@ impl From for agent::Storage { driver_options: from_vec(from.driver_options), source: from.source, fstype: from.fs_type, + fs_group: from_option(from.fs_group), options: from_vec(from.options), mount_point: from.mount_point, unknown_fields: Default::default(), diff --git a/src/runtime-rs/crates/agent/src/lib.rs b/src/runtime-rs/crates/agent/src/lib.rs index 9c72a76847..1e28cc2b8f 100644 --- a/src/runtime-rs/crates/agent/src/lib.rs +++ b/src/runtime-rs/crates/agent/src/lib.rs @@ -12,7 +12,7 @@ logging::logger_with_subsystem!(sl, "agent"); pub mod kata; mod log_forwarder; mod sock; -mod types; +pub mod types; pub use types::{ ARPNeighbor, ARPNeighbors, AddArpNeighborRequest, BlkioStatsEntry, CheckRequest, CloseStdinRequest, ContainerID, ContainerProcessID, CopyFileRequest, CreateContainerRequest, diff --git a/src/runtime-rs/crates/agent/src/types.rs b/src/runtime-rs/crates/agent/src/types.rs index caf507c9ae..49319c2f07 100644 --- a/src/runtime-rs/crates/agent/src/types.rs +++ b/src/runtime-rs/crates/agent/src/types.rs @@ -15,6 +15,24 @@ impl Empty { } } +impl Default for FSGroupChangePolicy { + fn default() -> Self { + FSGroupChangePolicy::Always + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum FSGroupChangePolicy { + Always = 0, + OnRootMismatch = 1, +} + +#[derive(Debug, PartialEq, Clone, Default)] +pub struct FSGroup { + pub group_id: u32, + pub group_change_policy: FSGroupChangePolicy, +} + #[derive(PartialEq, Clone, Default)] pub struct StringUser { pub uid: String, @@ -37,6 +55,7 @@ pub struct Storage { pub driver_options: Vec, pub source: String, pub fs_type: String, + pub fs_group: Option, pub options: Vec, pub mount_point: String, } diff --git a/src/runtime-rs/crates/resource/src/share_fs/share_virtio_fs_inline.rs b/src/runtime-rs/crates/resource/src/share_fs/share_virtio_fs_inline.rs index 146efc6094..e903694ead 100644 --- a/src/runtime-rs/crates/resource/src/share_fs/share_virtio_fs_inline.rs +++ b/src/runtime-rs/crates/resource/src/share_fs/share_virtio_fs_inline.rs @@ -78,6 +78,7 @@ impl ShareFs for ShareVirtioFsInline { driver_options: Vec::new(), source: String::from(MOUNT_GUEST_TAG), fs_type: String::from(FS_TYPE_VIRTIO_FS), + fs_group: None, options: shared_options, mount_point: String::from(KATA_GUEST_SHARE_DIR), }; diff --git a/src/runtime-rs/crates/resource/src/volume/shm_volume.rs b/src/runtime-rs/crates/resource/src/volume/shm_volume.rs index e26fe19046..c1c9df993f 100644 --- a/src/runtime-rs/crates/resource/src/volume/shm_volume.rs +++ b/src/runtime-rs/crates/resource/src/volume/shm_volume.rs @@ -45,6 +45,7 @@ impl ShmVolume { driver_options: Vec::new(), source: String::from("shm"), fs_type: String::from("tmpfs"), + fs_group: None, options, mount_point: mount_path.to_string(), };