[pve-devel] [PATCH v4 proxmox 16/69] notify: add example for template rendering

Lukas Wagner l.wagner at proxmox.com
Thu Jul 20 16:31:43 CEST 2023


Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
---
 proxmox-notify/examples/render.rs | 63 +++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 proxmox-notify/examples/render.rs

diff --git a/proxmox-notify/examples/render.rs b/proxmox-notify/examples/render.rs
new file mode 100644
index 00000000..5c1f2b2d
--- /dev/null
+++ b/proxmox-notify/examples/render.rs
@@ -0,0 +1,63 @@
+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": 1024 * 1024,
+                },
+                {
+                    "vmid": 1002,
+                    "size": 2048 * 1024,
+                }
+            ]
+        }
+    });
+
+    let output = render_template(TemplateRenderer::Html, TEMPLATE, Some(&properties))?;
+    println!("{output}");
+
+    let output = render_template(TemplateRenderer::Plaintext, TEMPLATE, Some(&properties))?;
+    println!("{output}");
+
+    Ok(())
+}
-- 
2.39.2






More information about the pve-devel mailing list