Projects
Eulaceura:Mainline:GA
lib-shim-v2
_service:obs_scm:0004-simplify-Store-api-remove...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0004-simplify-Store-api-remove-unnecessary-validation.patch of Package lib-shim-v2
From 442dd4ecbccdec2a84dd3f5c91dc947d560bcc37 Mon Sep 17 00:00:00 2001 From: suoxiaocong <suoxiaocong@kylinos.cn> Date: Tue, 10 May 2022 16:21:32 +0800 Subject: [PATCH 1/4] simplify Store api, remove unnecessary validation move container_id into struct Store, makes api more readable --- src/client/client.rs | 62 +++++++++++++++++--------------------------- src/lib.rs | 22 +++++++--------- 2 files changed, 34 insertions(+), 50 deletions(-) diff --git a/src/client/client.rs b/src/client/client.rs index 3f231f2..aa1c7c1 100644 --- a/src/client/client.rs +++ b/src/client/client.rs @@ -25,6 +25,7 @@ use ttrpc::client::Client; #[derive(Clone)] pub struct Store { conn: Client, + container_id: String, timeout: i64, } @@ -101,6 +102,7 @@ pub fn new_conn(container_id: &String, addr: &String) -> Result<()> { container_id.clone(), Store { conn: Client::new(fd), + container_id: container_id.clone(), timeout: 0, }, ); @@ -140,19 +142,18 @@ impl ValidateTool { impl Store { pub fn create( &self, - container_id: &String, bundle: &String, terminal: bool, stdin: &String, stdout: &String, stderr: &String, ) -> Result<i32> { - ValidateTool {}.str_empty(container_id)?.str_empty(bundle)?; + ValidateTool {}.str_empty(bundle)?; let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::CreateTaskRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_bundle(bundle.clone()); req.set_terminal(terminal); req.set_stdin(stdin.clone()); @@ -166,13 +167,12 @@ impl Store { Ok(resp.pid as i32) } - pub fn start(&self, container_id: &String, exec_id: &String) -> Result<i32> { - ValidateTool {}.str_empty(container_id)?; + pub fn start(&self, exec_id: &String) -> Result<i32> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::StartRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_exec_id(exec_id.clone()); let resp = client @@ -185,18 +185,14 @@ impl Store { #[allow(unused)] pub fn kill( &self, - container_id: &String, - exec_id: &String, signal: u32, all: bool, ) -> Result<()> { - ValidateTool {}.str_empty(container_id)?; let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::KillRequest::new(); - req.set_id(container_id.clone()); - // unused variable: exec_id + req.set_id(self.container_id.clone()); req.set_signal(signal); req.set_all(all); @@ -207,13 +203,12 @@ impl Store { Ok(()) } - pub fn delete(&self, container_id: &String, exec_id: &String) -> Result<DeleteResponse> { - ValidateTool {}.str_empty(container_id)?; + pub fn delete(&self, exec_id: &String) -> Result<DeleteResponse> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::DeleteRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_exec_id(exec_id.clone()); let resp = client @@ -226,13 +221,12 @@ impl Store { }) } - pub fn shutdown(&self, container_id: &String) -> Result<()> { - ValidateTool {}.str_empty(container_id)?; + pub fn shutdown(&self) -> Result<()> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::ShutdownRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); client .shutdown(&req, self.timeout) @@ -243,7 +237,6 @@ impl Store { pub fn exec( &self, - container_id: &String, exec_id: &String, terminal: bool, stdin: &String, @@ -252,13 +245,12 @@ impl Store { spec: &[u8], ) -> Result<()> { ValidateTool {} - .str_empty(container_id)? .str_empty(exec_id)?; let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::ExecProcessRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_exec_id(exec_id.clone()); req.set_terminal(terminal); req.set_stdin(stdin.clone()); @@ -281,17 +273,15 @@ impl Store { pub fn resize_pty( &self, - container_id: &String, exec_id: &String, height: u32, width: u32, ) -> Result<()> { - ValidateTool {}.str_empty(container_id)?; let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::ResizePtyRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_exec_id(exec_id.clone()); req.set_height(height); req.set_width(width); @@ -303,13 +293,12 @@ impl Store { Ok(()) } - pub fn pause(&self, container_id: &String) -> Result<()> { - ValidateTool {}.str_empty(container_id)?; + pub fn pause(&self) -> Result<()> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::PauseRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); client .pause(&req, self.timeout) @@ -318,13 +307,12 @@ impl Store { Ok(()) } - pub fn resume(&self, container_id: &String) -> Result<()> { - ValidateTool {}.str_empty(container_id)?; + pub fn resume(&self) -> Result<()> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::ResumeRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); client .resume(&req, self.timeout) @@ -333,20 +321,19 @@ impl Store { Ok(()) } - pub fn state(&self, container_id: &String) -> Result<State> { - ValidateTool {}.str_empty(container_id)?; + pub fn state(&self) -> Result<State> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::StateRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); let resp = client .state(&req, self.timeout) .map_err(shim_error!(e, "ttrpc call state failed"))?; Ok(State { - id: container_id.clone(), + id: self.container_id.clone(), pid: resp.pid, status: match resp.status { shim_v2_status::CREATED => Status::CreatedStatus, @@ -364,11 +351,11 @@ impl Store { }) } - pub fn pids(&self, container_id: &String) -> Result<i32> { + pub fn pids(&self) -> Result<i32> { let c = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::PidsRequest::new(); - req.id = container_id.clone(); + req.id = self.container_id.clone(); let resp = c .pids(&req, self.timeout) @@ -378,13 +365,12 @@ impl Store { Ok(process.pid as i32) } - pub fn wait(&self, container_id: &String, exec_id: &String) -> Result<i32> { - ValidateTool {}.str_empty(container_id)?; + pub fn wait(&self, exec_id: &String) -> Result<i32> { let client = protocols::shim_ttrpc::TaskClient::new(self.conn.clone()); let mut req = protocols::shim::WaitRequest::new(); - req.set_id(container_id.clone()); + req.set_id(self.container_id.clone()); req.set_exec_id(exec_id.clone()); let resp = client diff --git a/src/lib.rs b/src/lib.rs index 7a7d453..b46d800 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -80,7 +80,6 @@ pub extern "C" fn shim_v2_create( .and_then(|client| { client .create( - &r_container_id, &r_bundle, terminal, &r_stdin, @@ -110,7 +109,7 @@ pub extern "C" fn shim_v2_start( get_conn(&r_container_id) .and_then(|client| { client - .start(&r_container_id, &r_exec_id) + .start(&r_exec_id) .map(|process_pid| { *pid = process_pid; println!("lib-shim-v2::start::{}:: done.", r_container_id); @@ -135,7 +134,7 @@ pub extern "C" fn shim_v2_kill( get_conn(&r_container_id) .and_then(|client| { client - .kill(&r_container_id, &r_exec_id, signal, all) + .kill(signal, all) .map(|_| { println!("lib-shim-v2::kill::{}:: done.", r_container_id); 0 @@ -163,7 +162,7 @@ pub extern "C" fn shim_v2_delete( println!("lib-shim-v2::delete::{}:: [{}]", r_container_id, r_exec_id); get_conn(&r_container_id) .and_then(|client| { - client.delete(&r_container_id, &r_exec_id).map(|response| { + client.delete(&r_exec_id).map(|response| { resp.exit_status = response.exit_status; resp.pid = response.pid; println!("lib-shim-v2::delete::{}:: done.", r_container_id); @@ -182,7 +181,7 @@ pub extern "C" fn shim_v2_shutdown(container_id: *const c_char) -> c_int { println!("lib-shim-v2::shutdown::{}::", r_container_id); get_conn(&r_container_id) .and_then(|client| { - client.shutdown(&r_container_id).map(|_| { + client.shutdown().map(|_| { println!("lib-shim-v2::shutdown::{}:: done.", r_container_id); 0 }) @@ -222,7 +221,6 @@ pub extern "C" fn shim_v2_exec( .and_then(|client| { client .exec( - &r_container_id, &r_exec_id, terminal, &r_stdin, @@ -256,7 +254,7 @@ pub extern "C" fn shim_v2_resize_pty( get_conn(&r_container_id) .and_then(|client| { client - .resize_pty(&r_container_id, &r_exec_id, height, width) + .resize_pty(&r_exec_id, height, width) .map(|_| { println!("lib-shim-v2::resize_pty::{}:: done.", r_container_id); 0 @@ -277,7 +275,7 @@ pub extern "C" fn shim_v2_pause(container_id: *const c_char) -> c_int { println!("lib-shim-v2::pause::{}::", r_container_id); get_conn(&r_container_id) .and_then(|client| { - client.pause(&r_container_id).map(|_| { + client.pause().map(|_| { println!("lib-shim-v2::pause::{}:: done.", r_container_id); 0 }) @@ -294,7 +292,7 @@ pub extern "C" fn shim_v2_resume(container_id: *const c_char) -> c_int { println!("lib-shim-v2::resume::{}::", r_container_id); get_conn(&r_container_id) .and_then(|client| { - client.resume(&r_container_id).map(|_| { + client.resume().map(|_| { println!("lib-shim-v2::resume::{}:: done.", r_container_id); 0 }) @@ -361,7 +359,7 @@ pub extern "C" fn shim_v2_state(container_id: *const c_char, state: &mut State) println!("lib-shim-v2::state::{}::", r_container_id); get_conn(&r_container_id) .and_then(|client| { - client.state(&r_container_id).map(|container_state| { + client.state().map(|container_state| { state.copy(container_state); println!("lib-shim-v2::state::{}:: done.", r_container_id); 0 @@ -379,7 +377,7 @@ pub extern "C" fn shim_v2_pids(container_id: *const c_char, pid: &mut c_int) -> println!("in rutst::shim_v2_pids::{}:: start.", r_container_id); get_conn(&r_container_id) .and_then(|client| { - client.pids(&r_container_id).map(|process_pid| { + client.pids().map(|process_pid| { *pid = process_pid; println!("in rust::shim_v2_pids::{}:: done", r_container_id); 0 @@ -401,7 +399,7 @@ pub extern "C" fn shim_v2_wait( println!("lib-shim-v2::wait::{}:: [{}]", r_container_id, r_exec_id); get_conn(&r_container_id) .and_then(|client| { - client.wait(&r_container_id, &r_exec_id).map(|exit_code| { + client.wait(&r_exec_id).map(|exit_code| { *exit_status = exit_code; println!("lib-shim-v2::wait::{}:: done.", r_container_id); 0 -- 2.40.1
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2