Skip to content

Commit a5b95c9

Browse files
committed
add retry command
1 parent a69c3f5 commit a5b95c9

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

src/server/routes/webhooks/args.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ generate_parser!(pub enum Command {
122122
name: Option<String> = "name",
123123
})
124124

125+
"retry" => Retry(RetryArgs {
126+
name: Option<String> = "name",
127+
})
128+
125129
"reload-acl" => ReloadACL(ReloadACLArgs {})
126130

127131
_ => Edit(EditArgs {

src/server/routes/webhooks/commands.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ use crate::experiments::{CapLints, CrateSelect, Experiment, GitHubIssue, Mode, S
44
use crate::prelude::*;
55
use crate::server::github::Issue;
66
use crate::server::messages::{Label, Message};
7-
use crate::server::routes::webhooks::args::{AbortArgs, EditArgs, RetryReportArgs, RunArgs};
7+
use crate::server::routes::webhooks::args::{
8+
AbortArgs, EditArgs, RetryArgs, RetryReportArgs, RunArgs,
9+
};
810
use crate::server::Data;
911

1012
pub fn ping(data: &Data, issue: &Issue) -> Fallible<()> {
@@ -108,6 +110,31 @@ pub fn retry_report(data: &Data, issue: &Issue, args: RetryReportArgs) -> Fallib
108110
}
109111
}
110112

113+
pub fn retry(data: &Data, issue: &Issue, args: RetryArgs) -> Fallible<()> {
114+
let name = get_name(&data.db, issue, args.name)?;
115+
116+
if let Some(mut experiment) = Experiment::get(&data.db, &name)? {
117+
if experiment.status != Status::Failed {
118+
bail!("Experiment **`{}`** didn't fail!", name);
119+
}
120+
121+
experiment.set_status(&data.db, Status::Queued)?;
122+
data.reports_worker.wake();
123+
124+
Message::new()
125+
.line(
126+
"hammer_and_wrench",
127+
format!("Experiment **`{}`** queued again.", name),
128+
)
129+
.set_label(Label::ExperimentQueued)
130+
.send(&issue.url, data)?;
131+
132+
Ok(())
133+
} else {
134+
bail!("an experiment named **`{}`** doesn't exist!", name);
135+
}
136+
}
137+
111138
pub fn abort(data: &Data, issue: &Issue, args: AbortArgs) -> Fallible<()> {
112139
let name = get_name(&data.db, issue, args.name)?;
113140

src/server/routes/webhooks/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ fn process_command(
111111
commands::retry_report(data, issue, args)?;
112112
}
113113

114+
Command::Retry(args) => {
115+
commands::retry(data, issue, args)?;
116+
}
117+
114118
Command::Abort(args) => {
115119
commands::abort(data, issue, args)?;
116120
}

0 commit comments

Comments
 (0)