forked from Proxmox/proxmox
df4858e989
This will be useful later for system mail forwarding, where the content of the mail should be forwarded unchanged. This moves notification properties into this new type and calls them 'data'. They will exclusively used for template rendering. `Notification` will receive a separate field for metadata, which will be useful for notification filtering. This decouples template rendering and filtering, which enables us to be very precise about which metadata fields we allow to be used in filters. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
64 lines
1.6 KiB
Rust
64 lines
1.6 KiB
Rust
use proxmox_notify::renderer::{render_template, TemplateRenderer};
|
|
use proxmox_notify::Error;
|
|
|
|
use serde_json::json;
|
|
|
|
const TEMPLATE: &str = r#"
|
|
{{ heading-1 "Backup Report"}}
|
|
A backup job on host {{host}} was run.
|
|
|
|
{{ heading-2 "Guests"}}
|
|
{{ table table }}
|
|
The total size of all backups is {{human-bytes total-size}}.
|
|
|
|
The backup job took {{duration total-time}}.
|
|
|
|
{{ heading-2 "Logs"}}
|
|
{{ verbatim-monospaced logs}}
|
|
|
|
{{ heading-2 "Objects"}}
|
|
{{ object table }}
|
|
"#;
|
|
|
|
fn main() -> Result<(), Error> {
|
|
let properties = json!({
|
|
"host": "pali",
|
|
"logs": "100: starting backup\n100: backup failed",
|
|
"total-size": 1024 * 1024 + 2048 * 1024,
|
|
"total-time": 100,
|
|
"table": {
|
|
"schema": {
|
|
"columns": [
|
|
{
|
|
"label": "VMID",
|
|
"id": "vmid"
|
|
},
|
|
{
|
|
"label": "Size",
|
|
"id": "size",
|
|
"renderer": "human-bytes"
|
|
}
|
|
],
|
|
},
|
|
"data" : [
|
|
{
|
|
"vmid": 1001,
|
|
"size": "1048576"
|
|
},
|
|
{
|
|
"vmid": 1002,
|
|
"size": 2048 * 1024,
|
|
}
|
|
]
|
|
}
|
|
});
|
|
|
|
let output = render_template(TemplateRenderer::Html, TEMPLATE, &properties)?;
|
|
println!("{output}");
|
|
|
|
let output = render_template(TemplateRenderer::Plaintext, TEMPLATE, &properties)?;
|
|
println!("{output}");
|
|
|
|
Ok(())
|
|
}
|