src/client/task_log.rs: move display_task_log into extra file
This commit is contained in:
		
							
								
								
									
										52
									
								
								src/client/task_log.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/client/task_log.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
			
		||||
use failure::*;
 | 
			
		||||
use serde_json::json;
 | 
			
		||||
 | 
			
		||||
use super::HttpClient;
 | 
			
		||||
 | 
			
		||||
pub async fn display_task_log(
 | 
			
		||||
    client: HttpClient,
 | 
			
		||||
    upid_str: &str,
 | 
			
		||||
    strip_date: bool,
 | 
			
		||||
) -> Result<(), Error> {
 | 
			
		||||
 | 
			
		||||
    let path = format!("api2/json/nodes/localhost/tasks/{}/log", upid_str);
 | 
			
		||||
 | 
			
		||||
    let mut start = 1;
 | 
			
		||||
    let limit = 500;
 | 
			
		||||
 | 
			
		||||
    loop {
 | 
			
		||||
        let param = json!({ "start": start, "limit": limit, "test-status": true });
 | 
			
		||||
        let result = client.get(&path, Some(param)).await?;
 | 
			
		||||
 | 
			
		||||
        let active = result["active"].as_bool().unwrap();
 | 
			
		||||
        let total = result["total"].as_u64().unwrap();
 | 
			
		||||
        let data = result["data"].as_array().unwrap();
 | 
			
		||||
 | 
			
		||||
        let lines = data.len();
 | 
			
		||||
 | 
			
		||||
        for item in data {
 | 
			
		||||
            let n = item["n"].as_u64().unwrap();
 | 
			
		||||
            let t = item["t"].as_str().unwrap();
 | 
			
		||||
            if n != start { bail!("got wrong line number in response data ({} != {}", n, start); }
 | 
			
		||||
             if strip_date && t.len() > 27 && &t[25..27] == ": " {
 | 
			
		||||
                let line = &t[27..];
 | 
			
		||||
                println!("{}", line);
 | 
			
		||||
            } else {
 | 
			
		||||
                println!("{}", t);
 | 
			
		||||
            }
 | 
			
		||||
            start += 1;
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
        if start > total {
 | 
			
		||||
            if active {
 | 
			
		||||
                std::thread::sleep(std::time::Duration::from_millis(1000));
 | 
			
		||||
            } else {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            if lines != limit { bail!("got wrong number of lines from server ({} != {})", lines, limit); }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user