From dbe625471d08f84a9298dff69c30928eff320cb0 Mon Sep 17 00:00:00 2001 From: Tino Rusch Date: Wed, 8 Jan 2025 10:25:47 +0100 Subject: [PATCH 1/2] add gevulot client infrastructure for rescheduling tasks --- src/builders.rs | 16 ++++++++++++++++ src/task_client.rs | 21 ++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/builders.rs b/src/builders.rs index b4b0b38..36699c5 100644 --- a/src/builders.rs +++ b/src/builders.rs @@ -436,3 +436,19 @@ impl MsgSudoFreezeAccountBuilder { }) } } + +#[derive(Builder)] +pub struct MsgRescheduleTask { + pub creator: String, + pub task_id: String, +} + +impl MsgRescheduleTaskBuilder { + pub fn into_message(&self) -> Result { + let msg = self.build().map_err(|e| Error::EncodeError(e.to_string()))?; + Ok(gevulot::MsgRescheduleTask { + creator: msg.creator, + id: msg.task_id, + }) + } +} diff --git a/src/task_client.rs b/src/task_client.rs index 16a0857..b1eee80 100644 --- a/src/task_client.rs +++ b/src/task_client.rs @@ -7,7 +7,7 @@ use crate::{ proto::gevulot::gevulot::{ MsgAcceptTask, MsgAcceptTaskResponse, MsgCreateTask, MsgCreateTaskResponse, MsgDeclineTask, MsgDeclineTaskResponse, MsgDeleteTask, MsgDeleteTaskResponse, MsgFinishTask, - MsgFinishTaskResponse, + MsgFinishTaskResponse, MsgRescheduleTask, MsgRescheduleTaskResponse, }, }; @@ -191,4 +191,23 @@ impl TaskClient { .await?; Ok(resp) } + + /// Reschedules a task. + /// + /// # Arguments + /// + /// * `msg` - The message containing the task ID to reschedule. + /// + /// # Returns + /// + /// A Result containing the response or an error. + pub async fn reschedule(&mut self, msg: MsgRescheduleTask) -> Result { + let resp: MsgRescheduleTaskResponse = self + .base_client + .write() + .await + .send_msg_sync(msg, "") + .await?; + Ok(resp) + } } From 9501e71a9793139b2a685199e179b0076709e186 Mon Sep 17 00:00:00 2001 From: Tino Rusch Date: Wed, 8 Jan 2025 10:46:39 +0100 Subject: [PATCH 2/2] cargo fmt + clippy --- src/builders.rs | 4 +++- src/events.rs | 2 +- src/runtime_config.rs | 2 +- src/signer.rs | 8 ++------ src/task_client.rs | 5 ++++- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/builders.rs b/src/builders.rs index 36699c5..f64f48a 100644 --- a/src/builders.rs +++ b/src/builders.rs @@ -445,7 +445,9 @@ pub struct MsgRescheduleTask { impl MsgRescheduleTaskBuilder { pub fn into_message(&self) -> Result { - let msg = self.build().map_err(|e| Error::EncodeError(e.to_string()))?; + let msg = self + .build() + .map_err(|e| Error::EncodeError(e.to_string()))?; Ok(gevulot::MsgRescheduleTask { creator: msg.creator, id: msg.task_id, diff --git a/src/events.rs b/src/events.rs index 2359fe9..8caac69 100644 --- a/src/events.rs +++ b/src/events.rs @@ -789,7 +789,7 @@ mod tests { assert_eq!(event.block_height, Height::from(1000u32)); assert_eq!(event.cid, "QmYwMXeEc3Z64vqcPXx8p8Y8Y5tE9Y5sYW42FZ1U87Y"); assert_eq!(event.worker_id, "worker1"); - assert_eq!(event.success, true); + assert!(event.success); assert_eq!(event.id, "123"); } else { panic!("Unexpected event type"); diff --git a/src/runtime_config.rs b/src/runtime_config.rs index 1b50ac6..f547569 100644 --- a/src/runtime_config.rs +++ b/src/runtime_config.rs @@ -305,7 +305,7 @@ mod tests { assert_eq!(result.mounts[0].fstype, None); assert_eq!(result.mounts[0].flags, None); assert_eq!(result.mounts[0].data, None); - assert_eq!(result.default_mounts, true); + assert!(result.default_mounts); assert_eq!(result.kernel_modules, vec!["nvidia".to_string()]); assert_eq!(result.debug_exit, Some(DebugExit::default_x86())); assert_eq!(result.bootcmd, vec![vec!["echo", "booting"]]); diff --git a/src/signer.rs b/src/signer.rs index e535a0f..048738c 100644 --- a/src/signer.rs +++ b/src/signer.rs @@ -46,15 +46,11 @@ impl Signer { derivation: Option<&str>, password: Option<&str>, ) -> Result<(SigningKey, PublicKey, AccountId)> { - let derivation = if let Some(derivation) = derivation { - derivation - } else { - "m/44'/118'/0'/0/0" - }; + let derivation = derivation.unwrap_or("m/44'/118'/0'/0/0"); let mnemonic = Mnemonic::new(phrase, Language::English)?; let pri = XPrv::derive_from_path( - &mnemonic.to_seed(password.unwrap_or("")), + mnemonic.to_seed(password.unwrap_or("")), &derivation.parse()?, )?; let private_key = SigningKey::from(pri); diff --git a/src/task_client.rs b/src/task_client.rs index b1eee80..e6a7abd 100644 --- a/src/task_client.rs +++ b/src/task_client.rs @@ -201,7 +201,10 @@ impl TaskClient { /// # Returns /// /// A Result containing the response or an error. - pub async fn reschedule(&mut self, msg: MsgRescheduleTask) -> Result { + pub async fn reschedule( + &mut self, + msg: MsgRescheduleTask, + ) -> Result { let resp: MsgRescheduleTaskResponse = self .base_client .write()