Round 366: Vault-SSH ext, CertManager ext, SPIFFE ext, ACME ext, Keycloak ext (20 commands)

ober

3d880ec272f5bc1fb8862b87c7116567d6a55adf

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index c56bf29..0cba0ac 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 366 — Vault-SSH ext, CertManager ext, SPIFFE ext, ACME ext, Keycloak ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| vault-ssh-sign | :orange_circle: | Vault SSH: sign public key |
+| vault-ssh-verify | :orange_circle: | Vault SSH: verify certificate |
+| vault-ssh-role | :orange_circle: | Vault SSH: show role |
+| vault-ssh-ca | :orange_circle: | Vault SSH: show CA key |
+| certmanager-certs | :orange_circle: | CertManager: list certificates |
+| certmanager-issuers | :orange_circle: | CertManager: list issuers |
+| certmanager-orders | :orange_circle: | CertManager: list orders |
+| certmanager-challenges | :orange_circle: | CertManager: list challenges |
+| spiffe-entries | :orange_circle: | SPIFFE: list entries |
+| spiffe-agents | :orange_circle: | SPIFFE: list agents |
+| spiffe-bundles | :orange_circle: | SPIFFE: list trust bundles |
+| spiffe-health | :orange_circle: | SPIFFE: server health |
+| acme-register | :orange_circle: | ACME: register account |
+| acme-issue | :orange_circle: | ACME: issue certificate |
+| acme-renew | :orange_circle: | ACME: renew certificate |
+| acme-revoke | :orange_circle: | ACME: revoke certificate |
+| keycloak-realms | :orange_circle: | Keycloak: list realms |
+| keycloak-users | :orange_circle: | Keycloak: list users |
+| keycloak-clients | :orange_circle: | Keycloak: list clients |
+| keycloak-roles | :orange_circle: | Keycloak: list roles |
+
 ### Round 365 — ETCD ext, ZooKeeper ext, Patroni ext, Stolon ext, PGBouncer ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index adf8b13..2f68949 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -26277,3 +26277,53 @@
 (def (cmd-pgbouncer-reload app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "PGBouncer: reloading configuration")))
+
+;;; Round 366 — SPIFFE ext, ACME ext, Keycloak ext (batch 2)
+
+(def (cmd-spiffe-bundles app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SPIFFE: listing trust bundles")))
+
+(def (cmd-spiffe-health app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SPIFFE: checking server health")))
+
+(def (cmd-acme-register app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ACME register email: "
+      (lambda (email)
+        (echo-message! echo (str "ACME: registering account " email))))))
+
+(def (cmd-acme-issue app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ACME issue domain: "
+      (lambda (domain)
+        (echo-message! echo (str "ACME: issuing certificate for " domain))))))
+
+(def (cmd-acme-renew app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ACME renew domain: "
+      (lambda (domain)
+        (echo-message! echo (str "ACME: renewing certificate for " domain))))))
+
+(def (cmd-acme-revoke app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "ACME revoke domain: "
+      (lambda (domain)
+        (echo-message! echo (str "ACME: revoking certificate for " domain))))))
+
+(def (cmd-keycloak-realms app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Keycloak: listing realms")))
+
+(def (cmd-keycloak-users app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Keycloak: listing users")))
+
+(def (cmd-keycloak-clients app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Keycloak: listing clients")))
+
+(def (cmd-keycloak-roles app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Keycloak: listing roles")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 778e41e..4dcd062 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -27044,3 +27044,49 @@
 (def (cmd-patroni-switchover app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Patroni: initiating switchover")))
+
+;;; Round 366 — Vault-SSH ext, CertManager ext, SPIFFE ext, ACME ext, Keycloak ext (batch 1)
+
+(def (cmd-vault-ssh-sign app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Vault SSH sign public key: "
+      (lambda (key)
+        (echo-message! echo (str "Vault SSH: signing " key))))))
+
+(def (cmd-vault-ssh-verify app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vault SSH: verifying certificate")))
+
+(def (cmd-vault-ssh-role app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Vault SSH role: "
+      (lambda (role)
+        (echo-message! echo (str "Vault SSH: showing role " role))))))
+
+(def (cmd-vault-ssh-ca app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vault SSH: showing CA public key")))
+
+(def (cmd-certmanager-certs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CertManager: listing certificates")))
+
+(def (cmd-certmanager-issuers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CertManager: listing issuers")))
+
+(def (cmd-certmanager-orders app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CertManager: listing orders")))
+
+(def (cmd-certmanager-challenges app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CertManager: listing challenges")))
+
+(def (cmd-spiffe-entries app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SPIFFE: listing registration entries")))
+
+(def (cmd-spiffe-agents app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SPIFFE: listing agents")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 7150fc7..8d5004d 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9134,4 +9134,26 @@
   (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)
+
+  ;; Round 366 — Vault-SSH ext, CertManager ext, SPIFFE ext, ACME ext, Keycloak ext
+  (register-command! 'vault-ssh-sign cmd-vault-ssh-sign)
+  (register-command! 'vault-ssh-verify cmd-vault-ssh-verify)
+  (register-command! 'vault-ssh-role cmd-vault-ssh-role)
+  (register-command! 'vault-ssh-ca cmd-vault-ssh-ca)
+  (register-command! 'certmanager-certs cmd-certmanager-certs)
+  (register-command! 'certmanager-issuers cmd-certmanager-issuers)
+  (register-command! 'certmanager-orders cmd-certmanager-orders)
+  (register-command! 'certmanager-challenges cmd-certmanager-challenges)
+  (register-command! 'spiffe-entries cmd-spiffe-entries)
+  (register-command! 'spiffe-agents cmd-spiffe-agents)
+  (register-command! 'spiffe-bundles cmd-spiffe-bundles)
+  (register-command! 'spiffe-health cmd-spiffe-health)
+  (register-command! 'acme-register cmd-acme-register)
+  (register-command! 'acme-issue cmd-acme-issue)
+  (register-command! 'acme-renew cmd-acme-renew)
+  (register-command! 'acme-revoke cmd-acme-revoke)
+  (register-command! 'keycloak-realms cmd-keycloak-realms)
+  (register-command! 'keycloak-users cmd-keycloak-users)
+  (register-command! 'keycloak-clients cmd-keycloak-clients)
+  (register-command! 'keycloak-roles cmd-keycloak-roles)
 )