agent: add the FSGroup support

Signed-off-by: Fupan Li <fupan.lfp@antgroup.com>
This commit is contained in:
Fupan Li 2022-06-11 11:30:51 +08:00
parent ff7874bc23
commit 9cb15ab4c5
5 changed files with 47 additions and 8 deletions

View File

@ -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<empty::Empty> for Empty {
}
}
impl From<FSGroup> 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<StringUser> for agent::StringUser {
fn from(from: StringUser) -> Self {
Self {
@ -105,6 +122,7 @@ impl From<Storage> 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(),

View File

@ -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,

View File

@ -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<String>,
pub source: String,
pub fs_type: String,
pub fs_group: Option<FSGroup>,
pub options: Vec<String>,
pub mount_point: String,
}

View File

@ -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),
};

View File

@ -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(),
};