From 33d37c0c0d3d86552b7bd4c36c75bf416f6286e2 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Thu, 16 Mar 2023 11:16:24 -0700 Subject: [PATCH] Move console to runc-shim Signed-off-by: Maksym Pavlenko --- crates/runc-shim/Cargo.toml | 1 + crates/{shim => runc-shim}/src/asynchronous/console.rs | 6 ++---- crates/runc-shim/src/asynchronous/mod.rs | 1 + crates/runc-shim/src/asynchronous/runc.rs | 6 ++++-- crates/runc-shim/src/common.rs | 9 ++++++++- crates/{shim => runc-shim}/src/synchronous/console.rs | 6 ++---- crates/runc-shim/src/synchronous/container.rs | 2 +- crates/runc-shim/src/synchronous/mod.rs | 1 + crates/runc-shim/src/synchronous/runc.rs | 2 +- crates/shim/Cargo.toml | 1 - crates/shim/src/asynchronous/mod.rs | 1 - crates/shim/src/lib.rs | 2 -- crates/shim/src/synchronous/mod.rs | 2 -- crates/shim/src/util.rs | 8 -------- 14 files changed, 21 insertions(+), 27 deletions(-) rename crates/{shim => runc-shim}/src/asynchronous/console.rs (95%) rename crates/{shim => runc-shim}/src/synchronous/console.rs (95%) diff --git a/crates/runc-shim/Cargo.toml b/crates/runc-shim/Cargo.toml index be9d3ee..9d1f390 100644 --- a/crates/runc-shim/Cargo.toml +++ b/crates/runc-shim/Cargo.toml @@ -31,6 +31,7 @@ serde = { version = "1.0.133", features = ["derive"] } serde_json = "1.0.74" oci-spec = "0.6.0" crossbeam = "0.8.1" +uuid = { version = "1.0.0", features = ["v4"] } # Async dependencies async-trait = { workspace = true, optional = true } diff --git a/crates/shim/src/asynchronous/console.rs b/crates/runc-shim/src/asynchronous/console.rs similarity index 95% rename from crates/shim/src/asynchronous/console.rs rename to crates/runc-shim/src/asynchronous/console.rs index a09026e..853e5e8 100644 --- a/crates/shim/src/asynchronous/console.rs +++ b/crates/runc-shim/src/asynchronous/console.rs @@ -16,14 +16,12 @@ use std::path::{Path, PathBuf}; +use containerd_shim::{io_error, util::mkdir, Error, Result}; use log::warn; use tokio::net::{UnixListener, UnixStream}; use uuid::Uuid; -use crate::{ - util::{mkdir, xdg_runtime_dir}, - Error, Result, -}; +use crate::common::xdg_runtime_dir; pub struct ConsoleSocket { pub listener: UnixListener, diff --git a/crates/runc-shim/src/asynchronous/mod.rs b/crates/runc-shim/src/asynchronous/mod.rs index 01a840f..cfc534e 100644 --- a/crates/runc-shim/src/asynchronous/mod.rs +++ b/crates/runc-shim/src/asynchronous/mod.rs @@ -42,6 +42,7 @@ use crate::{ common::{create_runc, has_shared_pid_namespace, ShimExecutor, GROUP_LABELS}, }; +mod console; mod container; mod runc; mod task; diff --git a/crates/runc-shim/src/asynchronous/runc.rs b/crates/runc-shim/src/asynchronous/runc.rs index 30f843e..14142e0 100644 --- a/crates/runc-shim/src/asynchronous/runc.rs +++ b/crates/runc-shim/src/asynchronous/runc.rs @@ -29,7 +29,6 @@ use async_trait::async_trait; use containerd_shim::{ api::{CreateTaskRequest, ExecProcessRequest, Options, Status}, asynchronous::{ - console::ConsoleSocket, monitor::{monitor_subscribe, monitor_unsubscribe, Subscription}, processes::{ProcessLifecycle, ProcessTemplate}, }, @@ -54,7 +53,10 @@ use tokio::{ io::{AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncWrite, BufReader}, }; -use super::container::{ContainerFactory, ContainerTemplate, ProcessFactory}; +use super::{ + console::ConsoleSocket, + container::{ContainerFactory, ContainerTemplate, ProcessFactory}, +}; use crate::common::{ check_kill_error, create_io, create_runc, get_spec_from_request, receive_socket, CreateConfig, Log, ProcessIO, ShimExecutor, INIT_PID_FILE, LOG_JSON_FILE, diff --git a/crates/runc-shim/src/common.rs b/crates/runc-shim/src/common.rs index fcae26b..1c37da3 100644 --- a/crates/runc-shim/src/common.rs +++ b/crates/runc-shim/src/common.rs @@ -14,7 +14,7 @@ limitations under the License. */ -use std::{io::IoSliceMut, ops::Deref, os::unix::io::RawFd, path::Path, sync::Arc}; +use std::{env, io::IoSliceMut, ops::Deref, os::unix::io::RawFd, path::Path, sync::Arc}; use containerd_shim::{ api::{ExecProcessRequest, Options}, @@ -232,3 +232,10 @@ pub fn has_shared_pid_namespace(spec: &Spec) -> bool { }, } } + +/// Returns a temp dir. If the environment variable "XDG_RUNTIME_DIR" is set, return its value. +/// Otherwise if `std::env::temp_dir()` failed, return current dir or return the temp dir depended on OS. +pub(crate) fn xdg_runtime_dir() -> String { + env::var("XDG_RUNTIME_DIR") + .unwrap_or_else(|_| env::temp_dir().to_str().unwrap_or(".").to_string()) +} diff --git a/crates/shim/src/synchronous/console.rs b/crates/runc-shim/src/synchronous/console.rs similarity index 95% rename from crates/shim/src/synchronous/console.rs rename to crates/runc-shim/src/synchronous/console.rs index fe1e318..6a708b5 100644 --- a/crates/shim/src/synchronous/console.rs +++ b/crates/runc-shim/src/synchronous/console.rs @@ -19,13 +19,11 @@ use std::{ path::{Path, PathBuf}, }; +use containerd_shim::{io_error, util::mkdir, Error, Result}; use log::warn; use uuid::Uuid; -use crate::{ - util::{mkdir, xdg_runtime_dir}, - Error, Result, -}; +use crate::common::xdg_runtime_dir; pub struct ConsoleSocket { pub listener: UnixListener, diff --git a/crates/runc-shim/src/synchronous/container.rs b/crates/runc-shim/src/synchronous/container.rs index 31bf550..5269dd3 100644 --- a/crates/runc-shim/src/synchronous/container.rs +++ b/crates/runc-shim/src/synchronous/container.rs @@ -31,7 +31,6 @@ use log::debug; use oci_spec::runtime::LinuxResources; use shim::{ api::*, - console::ConsoleSocket, error::{Error, Result}, io::Stdio, io_error, ioctl_set_winsz, other, other_error, @@ -41,6 +40,7 @@ use shim::{ }; use time::OffsetDateTime; +use super::console::ConsoleSocket; use crate::{ common::{receive_socket, ProcessIO}, synchronous::io::spawn_copy_for_tty, diff --git a/crates/runc-shim/src/synchronous/mod.rs b/crates/runc-shim/src/synchronous/mod.rs index 848cf03..8162157 100644 --- a/crates/runc-shim/src/synchronous/mod.rs +++ b/crates/runc-shim/src/synchronous/mod.rs @@ -18,6 +18,7 @@ use std::sync::Arc; use containerd_shim::ExitSignal; +mod console; mod container; mod io; mod runc; diff --git a/crates/runc-shim/src/synchronous/runc.rs b/crates/runc-shim/src/synchronous/runc.rs index 6efac9f..6cd832d 100644 --- a/crates/runc-shim/src/synchronous/runc.rs +++ b/crates/runc-shim/src/synchronous/runc.rs @@ -38,7 +38,6 @@ use oci_spec::runtime::LinuxResources; use runc::{Command, Spawner}; use shim::{ api::*, - console::ConsoleSocket, error::{Error, Result}, io::Stdio, monitor::{monitor_subscribe, wait_pid, Topic}, @@ -55,6 +54,7 @@ use shim::{ }; use time::OffsetDateTime; +use super::console::ConsoleSocket; use crate::{ common, common::{ diff --git a/crates/shim/Cargo.toml b/crates/shim/Cargo.toml index db682b3..3df9463 100644 --- a/crates/shim/Cargo.toml +++ b/crates/shim/Cargo.toml @@ -29,7 +29,6 @@ time = { version = "0.3.7", features = ["serde", "std"] } serde_json = "1.0.78" serde_derive = "1.0.136" serde = "1.0.136" -uuid = { version = "1.0.0", features = ["v4"] } signal-hook = "0.3.13" oci-spec = "0.6.0" prctl = "1.0.0" diff --git a/crates/shim/src/asynchronous/mod.rs b/crates/shim/src/asynchronous/mod.rs index 0add153..d154756 100644 --- a/crates/shim/src/asynchronous/mod.rs +++ b/crates/shim/src/asynchronous/mod.rs @@ -58,7 +58,6 @@ use crate::{ Config, StartOpts, SOCKET_FD, TTRPC_ADDRESS, }; -pub mod console; pub mod monitor; pub mod processes; pub mod publisher; diff --git a/crates/shim/src/lib.rs b/crates/shim/src/lib.rs index 6755417..c704dbd 100644 --- a/crates/shim/src/lib.rs +++ b/crates/shim/src/lib.rs @@ -101,7 +101,6 @@ macro_rules! cfg_async { cfg_not_async! { pub use crate::synchronous::*; - pub use crate::synchronous::console; pub use crate::synchronous::publisher; pub use protos::shim::shim_ttrpc::Task; pub use protos::ttrpc::TtrpcContext; @@ -109,7 +108,6 @@ cfg_not_async! { cfg_async! { pub use crate::asynchronous::*; - pub use crate::asynchronous::console; pub use crate::asynchronous::processes; pub use crate::asynchronous::publisher; pub use protos::shim_async::Task; diff --git a/crates/shim/src/synchronous/mod.rs b/crates/shim/src/synchronous/mod.rs index f20d29f..7fd5021 100644 --- a/crates/shim/src/synchronous/mod.rs +++ b/crates/shim/src/synchronous/mod.rs @@ -73,8 +73,6 @@ pub mod monitor; pub mod publisher; pub mod util; -pub mod console; - /// Helper structure that wraps atomic bool to signal shim server when to shutdown the TTRPC server. /// /// Shim implementations are responsible for calling [`Self::signal`]. diff --git a/crates/shim/src/util.rs b/crates/shim/src/util.rs index 6583524..8913e84 100644 --- a/crates/shim/src/util.rs +++ b/crates/shim/src/util.rs @@ -15,7 +15,6 @@ */ use std::{ - env, os::unix::io::RawFd, time::{SystemTime, UNIX_EPOCH}, }; @@ -166,13 +165,6 @@ pub fn convert_to_any(obj: Box) -> Result { Ok(any) } -/// Returns a temp dir. If the environment variable "XDG_RUNTIME_DIR" is set, return its value. -/// Otherwise if `std::env::temp_dir()` failed, return current dir or return the temp dir depended on OS. -pub(crate) fn xdg_runtime_dir() -> String { - env::var("XDG_RUNTIME_DIR") - .unwrap_or_else(|_| env::temp_dir().to_str().unwrap_or(".").to_string()) -} - pub trait IntoOption where Self: Sized,