From: Eshel Yaron Date: Sat, 27 Jul 2024 12:22:58 +0000 (+0200) Subject: New commands 'kubed{-transient}-apply' X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aefc0331456665a09461cf8bf53560873e7bfc0c;p=emacs.git New commands 'kubed{-transient}-apply' --- diff --git a/lisp/net/kubed-transient.el b/lisp/net/kubed-transient.el index d43594eb33d..5031869877b 100644 --- a/lisp/net/kubed-transient.el +++ b/lisp/net/kubed-transient.el @@ -43,11 +43,12 @@ (transient-define-prefix kubed-transient () "Perform Kubernetes operation." ["Actions" - ("c" "Create" kubed-transient-create) - ("r" "Run" kubed-transient-run) - ("a" "Attach" kubed-transient-attach) - ("d" "Diff" kubed-transient-diff) - ("e" "Exec" kubed-transient-exec) + ("+" "Create" kubed-transient-create) + ("*" "Apply" kubed-transient-apply) + ("r" "Run" kubed-transient-run) + ("a" "Attach" kubed-transient-attach) + ("d" "Diff" kubed-transient-diff) + ("e" "Exec" kubed-transient-exec) ("E" "Explain" kubed-explain) ("!" "Command line" kubed-kubectl-command)]) @@ -146,6 +147,19 @@ (transient-setup 'kubed-transient-create nil nil :scope '("create"))) +;;;###autoload +(transient-define-prefix kubed-transient-apply () + "Apply configuration to Kubernetes resource." + ["Options" + ("-f" "Definition file" "--filename=" + :reader kubed-transient-read-resource-definition-file-name)] + ["Actions" + ("*" "apply" kubed-apply) + ("!" "Command line" kubed-kubectl-command)] + (interactive) + (transient-setup 'kubed-transient-apply nil nil + :scope '("apply"))) + ;;;###autoload (transient-define-prefix kubed-transient-create-deployment () "Create Kubernetes deployment." diff --git a/lisp/net/kubed.el b/lisp/net/kubed.el index 9500733db19..93601a78074 100644 --- a/lisp/net/kubed.el +++ b/lisp/net/kubed.el @@ -1210,6 +1210,22 @@ completion candidates." (member (substring f (1+ (match-beginning 0))) '("yaml" "yml" "json")))))))) +;;;###autoload +(defun kubed-apply (config &optional kind) + "Apply CONFIG to Kubernetes resource of kind KIND." + (interactive + (list (or (seq-some + (lambda (arg) + (when (string-match "--filename=\\(.+\\)" arg) + (match-string 1 arg))) + (kubed-transient-args 'kubed-transient-apply)) + (kubed-read-resource-definition-file-name)))) + (let ((kind (or kind "resource"))) + (message "Applying Kubernetes %s configuration `%s'..." kind config) + (call-process kubed-kubectl-program nil nil nil + "apply" "-f" (expand-file-name config)) + (message "Applying Kubernetes %s configuration `%s'... Done." kind config))) + ;;;###autoload (defun kubed-create (definition &optional kind) "Create Kubernetes resource of kind KIND with definition DEFINITION." @@ -1714,8 +1730,9 @@ Interactively, prompt for COMMAND with completion for `kubectl' arguments." "U" #'kubed-update-all "A" #'kubed-all-namespaces-mode "+" #'kubed-create + "*" #'kubed-apply "R" #'kubed-run - "D" #'kubed-diff + "=" #'kubed-diff "E" #'kubed-explain "!" #'kubed-kubectl-command)