api2/node/tasks: add optional until filter

so that users select specific time ranges with 'since' and 'until'
(e.g. a single day)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2020-10-30 15:02:14 +01:00 committed by Thomas Lamprecht
parent f66565203a
commit c1fa057cce
1 changed files with 13 additions and 0 deletions

View File

@ -301,6 +301,11 @@ fn stop_task(
description: "Only list tasks since this UNIX epoch.", description: "Only list tasks since this UNIX epoch.",
optional: true, optional: true,
}, },
until: {
type: i64,
description: "Only list tasks until this UNIX epoch.",
optional: true,
},
typefilter: { typefilter: {
optional: true, optional: true,
type: String, type: String,
@ -334,6 +339,7 @@ pub fn list_tasks(
running: bool, running: bool,
userfilter: Option<String>, userfilter: Option<String>,
since: Option<i64>, since: Option<i64>,
until: Option<i64>,
typefilter: Option<String>, typefilter: Option<String>,
statusfilter: Option<Vec<TaskStateType>>, statusfilter: Option<Vec<TaskStateType>>,
param: Value, param: Value,
@ -352,6 +358,13 @@ pub fn list_tasks(
let limit = if limit > 0 { limit as usize } else { usize::MAX }; let limit = if limit > 0 { limit as usize } else { usize::MAX };
let result: Vec<TaskListItem> = list let result: Vec<TaskListItem> = list
.skip_while(|info| {
match (info, until) {
(Ok(info), Some(until)) => info.upid.starttime > until,
(Ok(_), None) => false,
(Err(_), _) => false,
}
})
.take_while(|info| { .take_while(|info| {
match (info, since) { match (info, since) {
(Ok(info), Some(since)) => info.upid.starttime > since, (Ok(info), Some(since)) => info.upid.starttime > since,