Round 365: ETCD ext, ZooKeeper ext, Patroni ext, Stolon ext, PGBouncer ext (20 commands)

ober

dbdb52ae04d81d184fb8b41d378a7988c1a3ac46

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 6c88370..c56bf29 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 365 — ETCD ext, ZooKeeper ext, Patroni ext, Stolon ext, PGBouncer ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| etcd-get | :orange_circle: | ETCD: get key |
+| etcd-put | :orange_circle: | ETCD: put key |
+| etcd-members | :orange_circle: | ETCD: list members |
+| etcd-health | :orange_circle: | ETCD: check health |
+| zookeeper-stat | :orange_circle: | ZooKeeper: server stats |
+| zookeeper-ls | :orange_circle: | ZooKeeper: list path |
+| zookeeper-get | :orange_circle: | ZooKeeper: get node |
+| zookeeper-set | :orange_circle: | ZooKeeper: set node |
+| patroni-list | :orange_circle: | Patroni: list members |
+| patroni-switchover | :orange_circle: | Patroni: switchover |
+| patroni-failover | :orange_circle: | Patroni: failover |
+| patroni-history | :orange_circle: | Patroni: failover history |
+| stolon-status | :orange_circle: | Stolon: cluster status |
+| stolon-clusterdata | :orange_circle: | Stolon: cluster data |
+| stolon-update | :orange_circle: | Stolon: update spec |
+| stolon-init | :orange_circle: | Stolon: initialize cluster |
+| pgbouncer-show-pools | :orange_circle: | PGBouncer: connection pools |
+| pgbouncer-show-stats | :orange_circle: | PGBouncer: statistics |
+| pgbouncer-show-databases | :orange_circle: | PGBouncer: databases |
+| pgbouncer-reload | :orange_circle: | PGBouncer: reload config |
+
 ### Round 364 — MinIO ext, SeaweedFS ext, Ceph ext, GlusterFS ext, LongHorn ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 99550e9..adf8b13 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -26235,3 +26235,45 @@
 (def (cmd-longhorn-replica app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Longhorn: listing replicas")))
+
+;;; Round 365 — Patroni ext, Stolon ext, PGBouncer ext (batch 2)
+
+(def (cmd-patroni-failover app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Patroni: initiating failover")))
+
+(def (cmd-patroni-history app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Patroni: showing failover history")))
+
+(def (cmd-stolon-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Stolon: showing cluster status")))
+
+(def (cmd-stolon-clusterdata app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Stolon: showing cluster data")))
+
+(def (cmd-stolon-update app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Stolon: updating cluster spec")))
+
+(def (cmd-stolon-init app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Stolon: initializing cluster")))
+
+(def (cmd-pgbouncer-show-pools app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PGBouncer: showing connection pools")))
+
+(def (cmd-pgbouncer-show-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PGBouncer: showing statistics")))
+
+(def (cmd-pgbouncer-show-databases app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PGBouncer: showing databases")))
+
+(def (cmd-pgbouncer-reload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PGBouncer: reloading configuration")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index d319507..778e41e 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26992,3 +26992,55 @@
 (def (cmd-ceph-osd app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Ceph: listing OSDs")))
+
+;;; Round 365 — ETCD ext, ZooKeeper ext, Patroni ext, Stolon ext, PGBouncer ext (batch 1)
+
+(def (cmd-etcd-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ETCD get key: "
+      (lambda (key)
+        (echo-message! echo (str "ETCD: getting key " key))))))
+
+(def (cmd-etcd-put app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ETCD put key: "
+      (lambda (key)
+        (echo-message! echo (str "ETCD: putting key " key))))))
+
+(def (cmd-etcd-members app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ETCD: listing cluster members")))
+
+(def (cmd-etcd-health app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ETCD: checking cluster health")))
+
+(def (cmd-zookeeper-stat app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ZooKeeper: showing server stats")))
+
+(def (cmd-zookeeper-ls app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ZooKeeper ls path: "
+      (lambda (path)
+        (echo-message! echo (str "ZooKeeper: listing " path))))))
+
+(def (cmd-zookeeper-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ZooKeeper get path: "
+      (lambda (path)
+        (echo-message! echo (str "ZooKeeper: getting " path))))))
+
+(def (cmd-zookeeper-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ZooKeeper set path: "
+      (lambda (path)
+        (echo-message! echo (str "ZooKeeper: setting " path))))))
+
+(def (cmd-patroni-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Patroni: listing cluster members")))
+
+(def (cmd-patroni-switchover app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Patroni: initiating switchover")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 74997fe..7150fc7 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9112,4 +9112,26 @@
   (register-command! 'longhorn-backup cmd-longhorn-backup)
   (register-command! 'longhorn-engine cmd-longhorn-engine)
   (register-command! 'longhorn-replica cmd-longhorn-replica)
+
+  ;; Round 365 — ETCD ext, ZooKeeper ext, Patroni ext, Stolon ext, PGBouncer ext
+  (register-command! 'etcd-get cmd-etcd-get)
+  (register-command! 'etcd-put cmd-etcd-put)
+  (register-command! 'etcd-members cmd-etcd-members)
+  (register-command! 'etcd-health cmd-etcd-health)
+  (register-command! 'zookeeper-stat cmd-zookeeper-stat)
+  (register-command! 'zookeeper-ls cmd-zookeeper-ls)
+  (register-command! 'zookeeper-get cmd-zookeeper-get)
+  (register-command! 'zookeeper-set cmd-zookeeper-set)
+  (register-command! 'patroni-list cmd-patroni-list)
+  (register-command! 'patroni-switchover cmd-patroni-switchover)
+  (register-command! 'patroni-failover cmd-patroni-failover)
+  (register-command! 'patroni-history cmd-patroni-history)
+  (register-command! 'stolon-status cmd-stolon-status)
+  (register-command! 'stolon-clusterdata cmd-stolon-clusterdata)
+  (register-command! 'stolon-update cmd-stolon-update)
+  (register-command! 'stolon-init cmd-stolon-init)
+  (register-command! 'pgbouncer-show-pools cmd-pgbouncer-show-pools)
+  (register-command! 'pgbouncer-show-stats cmd-pgbouncer-show-stats)
+  (register-command! 'pgbouncer-show-databases cmd-pgbouncer-show-databases)
+  (register-command! 'pgbouncer-reload cmd-pgbouncer-reload)
 )