api2/node/tasks: change limit behaviour when it is 0

instead of returning 0 elements (which does not really make sense anyway),
change it so that there is no limit anymore (besides usize::MAX)

this is technically a breaking change for the api, but i guess
no one is using limit=0 for anything sensible anyway

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2020-10-30 15:02:11 +01:00 committed by Thomas Lamprecht
parent fa31f4c54c
commit e7dd169fdf
1 changed files with 4 additions and 3 deletions

View File

@ -271,7 +271,7 @@ fn stop_task(
}, },
limit: { limit: {
type: u64, type: u64,
description: "Only list this amount of tasks.", description: "Only list this amount of tasks. (0 means no limit)",
default: 50, default: 50,
optional: true, optional: true,
}, },
@ -328,6 +328,7 @@ pub fn list_tasks(
let store = param["store"].as_str(); let store = param["store"].as_str();
let list = TaskListInfoIterator::new(running)?; let list = TaskListInfoIterator::new(running)?;
let limit = if limit > 0 { limit as usize } else { usize::MAX };
let result: Vec<TaskListItem> = list let result: Vec<TaskListItem> = list
.take_while(|info| !info.is_err()) .take_while(|info| !info.is_err())
@ -372,11 +373,11 @@ pub fn list_tasks(
Some(info.into()) Some(info.into())
}).skip(start as usize) }).skip(start as usize)
.take(limit as usize) .take(limit)
.collect(); .collect();
let mut count = result.len() + start as usize; let mut count = result.len() + start as usize;
if result.len() > 0 && result.len() >= limit as usize { // we have a 'virtual' entry as long as we have any new if result.len() > 0 && result.len() >= limit { // we have a 'virtual' entry as long as we have any new
count += 1; count += 1;
} }