From: Michael Albinus Date: Wed, 28 Jun 2023 14:53:01 +0000 (+0200) Subject: Adapt Tramp's kubernetes integration X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c5d6102313076b83526dc79bfb563621671fb70b;p=emacs.git Adapt Tramp's kubernetes integration * doc/misc/tramp.texi (Inline methods): Shorten kubernetes entry. (Kubernetes setup): New node. (Top, Configuration): Add it to the menu. * lisp/net/tramp-container.el (tramp-kubernetes--context-namespace): Adapt dpcstring. (tramp-kubernetes-connection-local-default-profile) (tramp-kubernetes-connection-local-default-variables) (tramp-flatpak-connection-local-default-profile) (tramp-flatpak-connection-local-default-variables): Rename. * lisp/net/tramp.el (tramp-expand-args): Use `tramp-compat-take'. * test/lisp/net/tramp-tests.el (tramp-test34-connection-local-variables) (tramp-test34-explicit-shell-file-name): Don't let-bind `connection-local-profile-alist' and `connection-local-criteria-alist'. --- diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 01f46865a39..27145c3cca1 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -142,6 +142,7 @@ on the remote host. * Ssh setup:: Ssh setup hints. * FUSE setup:: @acronym{FUSE} setup hints. * Android shell setup:: Android shell setup hints. +* Kubernetes setup:: Kubernetes setup hints. * Auto-save File Lock and Backup:: Auto-save, File Lock and Backup. * Keeping files encrypted:: Protect remote files by encryption. @@ -700,6 +701,7 @@ on the remote host. * Ssh setup:: Ssh setup hints. * FUSE setup:: @acronym{FUSE} setup hints. * Android shell setup:: Android shell setup hints. +* Kubernetes setup:: Kubernetes setup hints. * Auto-save File Lock and Backup:: Auto-save, File Lock and Backup. * Keeping files encrypted:: Protect remote files by encryption. @@ -921,16 +923,10 @@ if desired. @cindex method @option{kubernetes} @cindex @option{kubernetes} method -Integration for containers in Kubernetes pods. The host name is a pod -name returned by @samp{kubectl get pods}, or -@samp{@var{container}.@var{pod}} if an explicit container name shall -be used. Otherwise, the first container in a pod is used. - -@vindex tramp-kubernetes-context -@vindex tramp-kubernetes-namespace -If another Kubernetes context or namespace shall be used, configure -the user options @code{tramp-kubernetes-context} and -@code{tramp-kubernetes-namespace}. +Integration for containers in Kubernetes pods. The host name is +@samp{@var{pod}}, or @samp{@var{container}.@var{pod}} if an +explicit container name shall be used. Otherwise, the first container +in a pod is used. This method does not support user names. @@ -3122,6 +3118,29 @@ Open a remote connection with the more concise command @kbd{C-x C-f @end itemize +@node Kubernetes setup +@section Kubernetes setup hints + +With the @option{kubernetes} method, containers in Kubernetes pods can +be accessed. The host name is a pod name returned by @samp{kubectl +get pods}, or @samp{@var{container}.@var{pod}} if an explicit +container name shall be used. Otherwise, the first container in a pod +is used. + +Sometimes, asynchronous processes for a host without a dedicated +container name show a warning like @samp{Defaulted container +"container1" out of: container1, container2}. This can be mitigated +by setting the pod annotation +@samp{kubectl.kubernetes.io/default-container} to a proper value +(@samp{container1} in this example). + +@vindex tramp-kubernetes-context +@vindex tramp-kubernetes-namespace +@value{tramp} uses the default Kubernetes context and namespace. If +another context or namespace shall be used, configure the user options +@code{tramp-kubernetes-context} and @code{tramp-kubernetes-namespace}. + + @node Auto-save File Lock and Backup @section Auto-save, File Lock and Backup configuration @cindex auto-save diff --git a/lisp/net/tramp-container.el b/lisp/net/tramp-container.el index 6e8d28a3016..7f8d4473ad7 100644 --- a/lisp/net/tramp-container.el +++ b/lisp/net/tramp-container.el @@ -256,7 +256,7 @@ Obey `tramp-kubernetes-context'" ;;;###tramp-autoload (defun tramp-kubernetes--context-namespace (vec) - "The kubectl options for context and namespace." + "The kubectl options for context and namespace as string." (mapconcat #'identity `(,(when-let ((context (tramp-kubernetes--current-context vec))) @@ -404,7 +404,7 @@ see its function help for a description of the format." ;; Default connection-local variables for Tramp. - (defconst tramp-container-connection-local-default-kubernetes-variables + (defconst tramp-kubernetes-connection-local-default-variables '((tramp-config-check . tramp-kubernetes--current-context-data) ;; This variable will be eval'ed in `tramp-expand-args'. (tramp-extra-expand-args @@ -414,24 +414,24 @@ see its function help for a description of the format." "Default connection-local variables for remote kubernetes connections.") (connection-local-set-profile-variables - 'tramp-container-connection-local-default-kubernetes-profile - tramp-container-connection-local-default-kubernetes-variables) + 'tramp-kubernetes-connection-local-default-profile + tramp-kubernetes-connection-local-default-variables) (connection-local-set-profiles `(:application tramp :protocol ,tramp-kubernetes-method) - 'tramp-container-connection-local-default-kubernetes-profile) + 'tramp-kubernetes-connection-local-default-profile) - (defconst tramp-container-connection-local-default-flatpak-variables + (defconst tramp-flatpak-connection-local-default-variables `((tramp-remote-path . ,(cons "/app/bin" tramp-remote-path))) "Default connection-local variables for remote flatpak connections.") (connection-local-set-profile-variables - 'tramp-container-connection-local-default-flatpak-profile - tramp-container-connection-local-default-flatpak-variables) + 'tramp-flatpak-connection-local-default-profile + tramp-flatpak-connection-local-default-variables) (connection-local-set-profiles `(:application tramp :protocol ,tramp-flatpak-method) - 'tramp-container-connection-local-default-flatpak-profile)) + 'tramp-flatpak-connection-local-default-profile)) (add-hook 'tramp-unload-hook (lambda () diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index cbd4e1611eb..f64abbcf06e 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4968,7 +4968,8 @@ a connection-local variable." ;; Merge both spec lists. Remove duplicate entries. (while spec-list (unless (member (car spec-list) extra-spec-list) - (setq extra-spec-list (append (take 2 spec-list) extra-spec-list))) + (setq extra-spec-list + (append (tramp-compat-take 2 spec-list) extra-spec-list))) (setq spec-list (cddr spec-list))) (setq spec (apply #'format-spec-make extra-spec-list)) ;; Expand format spec. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index a2e57e468c1..45bcf23f790 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -6136,8 +6136,7 @@ INPUT, if non-nil, is a string sent to the process." (inhibit-message t) kill-buffer-query-functions (clpa connection-local-profile-alist) - (clca connection-local-criteria-alist) - connection-local-profile-alist connection-local-criteria-alist) + (clca connection-local-criteria-alist)) (unwind-protect (progn (make-directory tmp-name1) @@ -6219,8 +6218,7 @@ INPUT, if non-nil, is a string sent to the process." (let ((default-directory ert-remote-temporary-file-directory) explicit-shell-file-name kill-buffer-query-functions (clpa connection-local-profile-alist) - (clca connection-local-criteria-alist) - connection-local-profile-alist connection-local-criteria-alist) + (clca connection-local-criteria-alist)) (unwind-protect (progn (connection-local-set-profile-variables