From 1044126dd9021d16f8639b4c562ab50ce8fd63b8 Mon Sep 17 00:00:00 2001
From: Óscar Nájera <hi@oscarnajera.com>
Date: Fri, 8 Jul 2022 18:09:21 +0200
Subject: cmk problems isolate

---
 elisp/cmk.el | 74 +++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 38 insertions(+), 36 deletions(-)

diff --git a/elisp/cmk.el b/elisp/cmk.el
index 0451dd4..1a6729d 100644
--- a/elisp/cmk.el
+++ b/elisp/cmk.el
@@ -20,17 +20,16 @@
 ;;; Code:
 (require 'dash)
 
-(let* ((buffer "CMK")
-       (close (kill-buffer buffer))
-       (cmks (make-network-process
+(let* ((cmks (make-network-process
               :name "Checkmk"
               :remote "/tmp/ingridcmk.socket"
               ;; :coding '(binary . binary)
-              :buffer buffer
+              :buffer "CMK"
               ;; :filter (lambda (_process string)
               ;;           (message "%S" string))
               :sentinel (lambda (process event)
-                          (message "Process: %s had the event '%s'" process event)))))
+                          (message "Process: %s had the event '%s'" process event)
+                          (kill-buffer (process-buffer process))))))
   ;; (process-send-string cmks "GET hosts\nColumns: address name\n\n")
   ;;   (process-send-string cmks
   ;;                        "GET log
@@ -41,6 +40,7 @@
   ;; Filter: class = 8
   ;; Or: 3\n\n")
 
+  (with-current-buffer (process-buffer cmks) (erase-buffer))
   (process-send-string cmks "GET services
 Columns: service_state host_name service_description service_last_state_change service_plugin_output
 Filter: service_state = 0
@@ -63,37 +63,39 @@ Negate:\n\n")
   (accept-process-output cmks 0.1)
   (with-current-buffer (process-buffer cmks)
     (goto-char (point-min))
-    (setq tabulated-list-entries nil)
-    (while (not (eobp))
-      (let* ((row
-              (split-string (buffer-substring-no-properties (point) (line-end-position)) ";"))
-             (state (pcase (string-to-number (car row))
-                      (1 (propertize "WARN" 'face 'font-lock-warning-face))
-                      (2 (propertize "CRIT" 'face 'font-lock-keyword-face))
-                      (a (number-to-string a))))
-             (date (->> (nth 3 row)
-                        (string-to-number)
-                        (seconds-to-time)
-                        (format-time-string "%Y-%m-%d %H:%M")))
-             (msg (->> (nth 4 row)
-                       (replace-regexp-in-string (rx "(" (+ "!") ")") ""))))
-        (push (list (count-lines 1 (point))
-                    (vector state (cadr row)
-                            (caddr row)
-                            date msg)) tabulated-list-entries))
-      (forward-line))
-    (erase-buffer)
-    (tabulated-list-mode)
-    (setq tabulated-list-format `[("STATE" 5 t)
-                                  ("HOST" 9 t)
-                                  ("Service" 20 t)
-                                  ("when" 16)
-                                  ("Message" 18 t)
-                                  ])
-    (setq tabulated-list-sort-key '("STATE" . nil))
-    (tabulated-list-init-header)
-    (tabulated-list-print)
-    (display-buffer (current-buffer))))
+    (let (data)
+      (while (not (eobp))
+        (let* ((row
+                (split-string (buffer-substring-no-properties (point) (line-end-position)) ";"))
+               (state (pcase (string-to-number (car row))
+                        (1 (propertize "WARN" 'face 'font-lock-warning-face))
+                        (2 (propertize "CRIT" 'face 'font-lock-keyword-face))
+                        (a (number-to-string a))))
+               (date (->> (nth 3 row)
+                          (string-to-number)
+                          (seconds-to-time)
+                          (format-time-string "%Y-%m-%d %H:%M")))
+               (msg (->> (nth 4 row)
+                         (replace-regexp-in-string (rx "(" (+ "!") ")") ""))))
+          (push (list (count-lines 1 (point))
+                      (vector state (cadr row)
+                              (caddr row)
+                              date msg)) data))
+        (forward-line))
+      (with-current-buffer (get-buffer-create "CMK Problems")
+        (erase-buffer)
+        (tabulated-list-mode)
+        (setq tabulated-list-format `[("STATE" 5 t)
+                                      ("HOST" 9 t)
+                                      ("Service" 20 t)
+                                      ("Since" 16)
+                                      ("Message" 18 t)
+                                      ])
+        (setq tabulated-list-sort-key '("STATE" . nil))
+        (setq tabulated-list-entries data)
+        (tabulated-list-init-header)
+        (tabulated-list-print)
+        (display-buffer (current-buffer))))))
 
 
 (provide 'cmk)
-- 
cgit v1.2.3