refactor(#1474): group journalctl read args into a journalquery struct
This commit is contained in:
parent
98660d134a
commit
f751c4495f
7 changed files with 77 additions and 116 deletions
|
|
@ -579,14 +579,15 @@ pub async fn dispatch_host_journal(
|
|||
tracing::info!(%agent, machine = %c, %n, "get_host_journal (container)");
|
||||
return match crate::priv_client::read_container_journal(
|
||||
c,
|
||||
n,
|
||||
false,
|
||||
hive_sh4re::priv_proto::JournalOutput::Short,
|
||||
unit.clone(),
|
||||
priority.as_ref().map(|p| p.as_str().to_owned()),
|
||||
grep.clone(),
|
||||
since.clone(),
|
||||
until.clone(),
|
||||
hive_sh4re::priv_proto::JournalQuery {
|
||||
lines: n,
|
||||
unit: unit.clone(),
|
||||
priority: priority.as_ref().map(|p| p.as_str().to_owned()),
|
||||
grep: grep.clone(),
|
||||
since: since.clone(),
|
||||
until: until.clone(),
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1225,14 +1225,13 @@ async fn get_journal(
|
|||
};
|
||||
match crate::priv_client::read_container_journal(
|
||||
&prefixed,
|
||||
lines,
|
||||
true,
|
||||
hive_sh4re::priv_proto::JournalOutput::ShortIso,
|
||||
unit,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
hive_sh4re::priv_proto::JournalQuery {
|
||||
lines,
|
||||
boot: true,
|
||||
output: hive_sh4re::priv_proto::JournalOutput::ShortIso,
|
||||
unit,
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1450,14 +1450,10 @@ async fn container_journal_tail(container: &str) -> String {
|
|||
// is delegated to hive-priv (hive-c0re itself runs unprivileged).
|
||||
let res = crate::priv_client::read_container_journal(
|
||||
container,
|
||||
40,
|
||||
false,
|
||||
hive_sh4re::priv_proto::JournalOutput::Short,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
hive_sh4re::priv_proto::JournalQuery {
|
||||
lines: 40,
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
.await;
|
||||
match res {
|
||||
|
|
|
|||
|
|
@ -233,14 +233,10 @@ async fn dispatch(req: &ManagerRequest, coord: &Arc<Coordinator>) -> ManagerResp
|
|||
tracing::info!(%agent, %machine, %n, "manager: get_logs");
|
||||
match crate::priv_client::read_container_journal(
|
||||
&machine,
|
||||
n,
|
||||
false,
|
||||
hive_sh4re::priv_proto::JournalOutput::Short,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
hive_sh4re::priv_proto::JournalQuery {
|
||||
lines: n,
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
use anyhow::{Context as _, Result, bail};
|
||||
use hive_sh4re::priv_proto::{
|
||||
BindMount, JournalOutput, NetworkIsolation, PRIV_SOCK, PrivEvent, PrivRequest, PrivResponse,
|
||||
BindMount, JournalQuery, NetworkIsolation, PRIV_SOCK, PrivEvent, PrivRequest, PrivResponse,
|
||||
PrivStream,
|
||||
};
|
||||
use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};
|
||||
|
|
@ -162,29 +162,14 @@ pub async fn list_containers() -> Result<String> {
|
|||
/// Read a container's journal via the root helper (`journalctl -M`).
|
||||
/// Returns `(stdout, stderr)`; a non-zero journalctl exit is reported in
|
||||
/// `stderr` rather than as an `Err`, so callers can surface either.
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub async fn read_container_journal(
|
||||
container: &str,
|
||||
lines: u32,
|
||||
boot: bool,
|
||||
output: JournalOutput,
|
||||
unit: Option<String>,
|
||||
priority: Option<String>,
|
||||
grep: Option<String>,
|
||||
since: Option<String>,
|
||||
until: Option<String>,
|
||||
query: JournalQuery,
|
||||
) -> Result<(String, String)> {
|
||||
check(
|
||||
call(&PrivRequest::ReadContainerJournal {
|
||||
container: container.to_owned(),
|
||||
lines,
|
||||
boot,
|
||||
output,
|
||||
unit,
|
||||
priority,
|
||||
grep,
|
||||
since,
|
||||
until,
|
||||
query,
|
||||
})
|
||||
.await?,
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue