unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
@ 2022-12-03  9:20 Michael Albinus
  2022-12-05 14:05 ` Filipp Gunbin
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus @ 2022-12-03  9:20 UTC (permalink / raw)
  To: 59797; +Cc: Filipp Gunbin


Hi,

Now we have kubernetes integrated in Tramp. We can access pods like
"/kubernetes:POD:/path/to/file".

However, kubernetes can much more. For all services (like pods) it
creates DNS entries "<service-name>.<namespace-name>.svc.cluster.local".
Should'nt we support this? It means should we allow to access kubernetes
pods like "/kubernetes:POD.NAMESPACE:/path/to/file", including
completion for namespace names?

Best regards, Michael.


In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.17.6) of 2022-11-29 built on gandalf
Repository revision: 7939184f8e0370e7a3397d492812c6d202c2a193
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12201005
System Description: Fedora Linux 37 (Workstation Edition)

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LIBOTF LIBSELINUX LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8

Major mode: Lisp Interaction

Minor modes in effect:
  display-time-mode: t
  shell-dirtrack-mode: t
  delete-selection-mode: t
  icomplete-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/albinus/src/elpa/packages/debbugs/debbugs hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs
/home/albinus/src/elpa/packages/debbugs/debbugs-org hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-org
/home/albinus/src/elpa/packages/debbugs/debbugs-gnu hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-gnu
/home/albinus/src/elpa/packages/debbugs/debbugs-guix hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-guix
/home/albinus/src/elpa/packages/debbugs/debbugs-browse hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-browse
/home/albinus/src/elpa/packages/debbugs/debbugs-pkg hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-pkg
/home/albinus/src/elpa/packages/debbugs/debbugs-autoloads hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-autoloads
/home/albinus/src/elpa/packages/debbugs/debbugs-compat hides /home/albinus/.emacs.d/elpa/debbugs-0.34/debbugs-compat
/home/albinus/src/tramp/lisp/tramp-sh hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-sh
/home/albinus/src/tramp/lisp/tramp-compat hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-compat
/home/albinus/src/tramp/lisp/tramp hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp
/home/albinus/src/tramp/lisp/tramp-rclone hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-rclone
/home/albinus/src/tramp/lisp/tramp-cmds hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-cmds
/home/albinus/src/tramp/lisp/tramp-gvfs hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-gvfs
/home/albinus/src/tramp/lisp/tramp-uu hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-uu
/home/albinus/src/tramp/lisp/tramp-crypt hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-crypt
/home/albinus/src/tramp/lisp/tramp-integration hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-integration
/home/albinus/src/tramp/lisp/tramp-archive hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-archive
/home/albinus/src/tramp/lisp/tramp-fuse hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-fuse
/home/albinus/src/tramp/lisp/tramp-adb hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-adb
/home/albinus/src/tramp/lisp/trampver hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/trampver
/home/albinus/src/tramp/lisp/tramp-ftp hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-ftp
/home/albinus/src/tramp/lisp/tramp-smb hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-smb
/home/albinus/src/tramp/lisp/tramp-cache hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-cache
/home/albinus/src/tramp/lisp/tramp-sudoedit hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-sudoedit
/home/albinus/src/tramp/lisp/tramp-sshfs hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-sshfs
/home/albinus/src/tramp/lisp/tramp-loaddefs hides /home/albinus/.emacs.d/elpa/tramp-2.5.3.3/tramp-loaddefs
/home/albinus/src/elpa/packages/tramp-theme/tramp-theme-autoloads hides /home/albinus/.emacs.d/elpa/tramp-theme-0.2/tramp-theme-autoloads
/home/albinus/src/elpa/packages/tramp-theme/tramp-theme hides /home/albinus/.emacs.d/elpa/tramp-theme-0.2/tramp-theme
/home/albinus/src/elpa/packages/tramp-theme/tramp-theme-pkg hides /home/albinus/.emacs.d/elpa/tramp-theme-0.2/tramp-theme-pkg
/home/albinus/src/tramp/lisp/tramp-sh hides /usr/local/share/emacs/site-lisp/tramp-sh
/home/albinus/src/tramp/lisp/tramp-cmds hides /usr/local/share/emacs/site-lisp/tramp-cmds
/home/albinus/src/tramp/lisp/tramp-gvfs hides /usr/local/share/emacs/site-lisp/tramp-gvfs
/home/albinus/src/tramp/lisp/tramp-ftp hides /usr/local/share/emacs/site-lisp/tramp-ftp
/home/albinus/src/tramp/lisp/tramp-crypt hides /usr/local/share/emacs/site-lisp/tramp-crypt
/home/albinus/src/tramp/lisp/tramp-adb hides /usr/local/share/emacs/site-lisp/tramp-adb
/home/albinus/src/tramp/lisp/tramp hides /usr/local/share/emacs/site-lisp/tramp
/home/albinus/src/tramp/lisp/tramp-cache hides /usr/local/share/emacs/site-lisp/tramp-cache
/home/albinus/src/tramp/lisp/tramp-rclone hides /usr/local/share/emacs/site-lisp/tramp-rclone
/home/albinus/src/tramp/lisp/tramp-compat hides /usr/local/share/emacs/site-lisp/tramp-compat
/home/albinus/src/tramp/lisp/tramp-integration hides /usr/local/share/emacs/site-lisp/tramp-integration
/home/albinus/src/tramp/lisp/tramp-archive hides /usr/local/share/emacs/site-lisp/tramp-archive
/home/albinus/src/tramp/lisp/tramp-sudoedit hides /usr/local/share/emacs/site-lisp/tramp-sudoedit
/home/albinus/src/tramp/lisp/tramp-loaddefs hides /usr/local/share/emacs/site-lisp/tramp-loaddefs
/home/albinus/src/tramp/lisp/tramp-uu hides /usr/local/share/emacs/site-lisp/tramp-uu
/home/albinus/src/tramp/lisp/tramp-smb hides /usr/local/share/emacs/site-lisp/tramp-smb
/home/albinus/src/tramp/lisp/trampver hides /usr/local/share/emacs/site-lisp/trampver
/home/albinus/.emacs.d/elpa/auth-source-pass-20210210.1908/auth-source-pass hides /home/albinus/src/emacs/lisp/auth-source-pass
/home/albinus/.emacs.d/elpa/transient-20221119.1503/transient hides /home/albinus/src/emacs/lisp/transient
/home/albinus/src/tramp/lisp/tramp-sh hides /home/albinus/src/emacs/lisp/net/tramp-sh
/home/albinus/src/tramp/lisp/tramp-fuse hides /home/albinus/src/emacs/lisp/net/tramp-fuse
/home/albinus/src/tramp/lisp/tramp-cmds hides /home/albinus/src/emacs/lisp/net/tramp-cmds
/home/albinus/src/tramp/lisp/tramp-container hides /home/albinus/src/emacs/lisp/net/tramp-container
/home/albinus/src/tramp/lisp/tramp-gvfs hides /home/albinus/src/emacs/lisp/net/tramp-gvfs
/home/albinus/src/tramp/lisp/tramp-ftp hides /home/albinus/src/emacs/lisp/net/tramp-ftp
/home/albinus/src/tramp/lisp/tramp-crypt hides /home/albinus/src/emacs/lisp/net/tramp-crypt
/home/albinus/src/tramp/lisp/tramp-adb hides /home/albinus/src/emacs/lisp/net/tramp-adb
/home/albinus/src/tramp/lisp/tramp hides /home/albinus/src/emacs/lisp/net/tramp
/home/albinus/src/tramp/lisp/tramp-cache hides /home/albinus/src/emacs/lisp/net/tramp-cache
/home/albinus/src/tramp/lisp/tramp-rclone hides /home/albinus/src/emacs/lisp/net/tramp-rclone
/home/albinus/src/tramp/lisp/tramp-compat hides /home/albinus/src/emacs/lisp/net/tramp-compat
/home/albinus/src/tramp/lisp/tramp-integration hides /home/albinus/src/emacs/lisp/net/tramp-integration
/home/albinus/src/tramp/lisp/tramp-archive hides /home/albinus/src/emacs/lisp/net/tramp-archive
~/lisp/dbus hides /home/albinus/src/emacs/lisp/net/dbus
/home/albinus/src/tramp/lisp/tramp-sudoedit hides /home/albinus/src/emacs/lisp/net/tramp-sudoedit
/home/albinus/src/tramp/lisp/tramp-loaddefs hides /home/albinus/src/emacs/lisp/net/tramp-loaddefs
/home/albinus/src/tramp/lisp/tramp-uu hides /home/albinus/src/emacs/lisp/net/tramp-uu
/home/albinus/src/tramp/lisp/tramp-sshfs hides /home/albinus/src/emacs/lisp/net/tramp-sshfs
/home/albinus/src/tramp/lisp/tramp-smb hides /home/albinus/src/emacs/lisp/net/tramp-smb
/home/albinus/src/tramp/lisp/trampver hides /home/albinus/src/emacs/lisp/net/trampver

Features:
(shadow sort mail-extr emacsbug pop3 utf-7 nndraft nnmh nnml
network-stream nsm gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig
gnus-cache gnus-sum shr pixel-fill kinsoku url-file svg dom nnnil
smtpmail gnus-demon nntp gnus-group gnus-undo gnus-start gnus-dbus dbus
xml gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
gnus-range message sendmail yank-media puny rfc822 mml mml-sec epa
derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader
gnus-win gnus nnheader gnus-util text-property-search mail-utils range
mm-util mail-prsvr face-remap ob-shell ob ob-tangle ol org-src ob-ref
ob-lob ob-table ob-exp ob-comint ob-core ob-eval org-keys oc org-compat
advice org-macs vc vc-dispatcher time tramp-cache time-stamp tramp-sh
lxd-tramp lxc-tramp tramp tramp-loaddefs trampver tramp-integration
cus-edit pp cus-load wid-edit files-x tramp-compat rx warnings icons
shell pcomplete comint ansi-osc ansi-color ring parse-time iso8601
time-date ls-lisp format-spec delsel ido jka-compr icomplete dired
dired-loaddefs debbugs-autoloads
recentf-remove-sudo-tramp-prefix-autoloads relint-autoloads
transient-autoloads markdown-mode-autoloads direnv-autoloads
alert-autoloads dired-rsync-autoloads dockerfile-mode-autoloads
auth-source-xoauth2-autoloads yaml-mode-autoloads
auto-virtualenv-autoloads flycheck-autoloads projectile-autoloads
f-autoloads ghub-autoloads compat-autoloads xr-autoloads
pylint-autoloads dash-autoloads clojure-mode-autoloads envrc-autoloads
helm-autoloads helm-core-autoloads async-autoloads info
jarchive-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 184847 16944)
 (symbols 48 20233 0)
 (strings 32 65431 4443)
 (string-bytes 1 2209670)
 (vectors 16 35283)
 (vector-slots 8 400831 12797)
 (floats 8 251 354)
 (intervals 56 323 0)
 (buffers 984 12))





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2022-12-03  9:20 bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration Michael Albinus
@ 2022-12-05 14:05 ` Filipp Gunbin
  2022-12-05 15:54   ` Michael Albinus
  0 siblings, 1 reply; 15+ messages in thread
From: Filipp Gunbin @ 2022-12-05 14:05 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 59797

Hi,

My motivation behind adding limited k8s support to Tramp was to be able
to login into pod.  A service is a more high-level abstraction, you
cannot log into service, as there're some particular pods behind it.
From my limited knowledge and experience of k8s, listing pods in the
current namespace is ok.  We could add more scenarios when the need
arises.

Filipp





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2022-12-05 14:05 ` Filipp Gunbin
@ 2022-12-05 15:54   ` Michael Albinus
  2022-12-06 13:56     ` Filipp Gunbin
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus @ 2022-12-05 15:54 UTC (permalink / raw)
  To: Filipp Gunbin; +Cc: 59797

Filipp Gunbin <fgunbin@fastmail.fm> writes:

> Hi,

Hi Filipp,

> My motivation behind adding limited k8s support to Tramp was to be able
> to login into pod.  A service is a more high-level abstraction, you
> cannot log into service, as there're some particular pods behind it.
> From my limited knowledge and experience of k8s, listing pods in the
> current namespace is ok.  We could add more scenarios when the need
> arises.

I don't speak about services in general. I speak about pods.

Imagine, you have "pod1" in your current context, and "pod2" in another
namespace, call it "another-namespace".

"kubectl get pods" shows you "pod1". "kubectl get pods --namespace
another-namespace" shows you "pod2".

"kubectl exec pod1 -it -- /bin/sh" access pod1 in your current
context. This is what we use when we access via remote file name syntax
"/kubernetes:pod1:".

pod2 is not accessible in your current context. But you could apply
"kubectl exec pod2 -it --namespace another-namespace -- /bin/sh". This
is what I mean with remote-file name syntax "/kubernetes:pod1.another-namespace:".

Is this possible?

> Filipp

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2022-12-05 15:54   ` Michael Albinus
@ 2022-12-06 13:56     ` Filipp Gunbin
  2022-12-06 15:13       ` Michael Albinus
  0 siblings, 1 reply; 15+ messages in thread
From: Filipp Gunbin @ 2022-12-06 13:56 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 59797

Hi Michael,

On 05/12/2022 16:54 +0100, Michael Albinus wrote:

>> My motivation behind adding limited k8s support to Tramp was to be able
>> to login into pod.  A service is a more high-level abstraction, you
>> cannot log into service, as there're some particular pods behind it.
>> From my limited knowledge and experience of k8s, listing pods in the
>> current namespace is ok.  We could add more scenarios when the need
>> arises.
>
> I don't speak about services in general. I speak about pods.
>
> Imagine, you have "pod1" in your current context, and "pod2" in another
> namespace, call it "another-namespace".
>
> "kubectl get pods" shows you "pod1". "kubectl get pods --namespace
> another-namespace" shows you "pod2".
>
> "kubectl exec pod1 -it -- /bin/sh" access pod1 in your current
> context. This is what we use when we access via remote file name syntax
> "/kubernetes:pod1:".
>
> pod2 is not accessible in your current context. But you could apply
> "kubectl exec pod2 -it --namespace another-namespace -- /bin/sh". This
> is what I mean with remote-file name syntax "/kubernetes:pod1.another-namespace:".
>
> Is this possible?

Maybe, and there's "get pods -A" which lists all pods.  This will be
limited to current "context" in k8s meaning (covering all namespaces in
it).  I could look into this in detail in few weeks, if you'd like me
to.  It's quite a busy time at work now :-)

Filipp





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2022-12-06 13:56     ` Filipp Gunbin
@ 2022-12-06 15:13       ` Michael Albinus
  2023-06-23 19:47         ` Michael Albinus
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus @ 2022-12-06 15:13 UTC (permalink / raw)
  To: Filipp Gunbin; +Cc: 59797

Filipp Gunbin <fgunbin@fastmail.fm> writes:

> Hi Michael,

Hi Filipp,

>> Is this possible?
>
> Maybe, and there's "get pods -A" which lists all pods.  This will be
> limited to current "context" in k8s meaning (covering all namespaces in
> it).  I could look into this in detail in few weeks, if you'd like me
> to.  It's quite a busy time at work now :-)

Take your time. Emacs 29.1 is on its release path, so any feature change
won't be pushed there. We could plan it for Emacs 29.2.

> Filipp

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2022-12-06 15:13       ` Michael Albinus
@ 2023-06-23 19:47         ` Michael Albinus
  2023-07-02  8:37           ` Michael Albinus
       [not found]           ` <m1cyn4cq38.fsf@eshelyaron.com>
  0 siblings, 2 replies; 15+ messages in thread
From: Michael Albinus @ 2023-06-23 19:47 UTC (permalink / raw)
  To: Filipp Gunbin; +Cc: 59797, Aaron Gonzales, Warren Lynn

Michael Albinus <michael.albinus@gmx.de> writes:

Hi,

>> Maybe, and there's "get pods -A" which lists all pods.  This will be
>> limited to current "context" in k8s meaning (covering all namespaces in
>> it).  I could look into this in detail in few weeks, if you'd like me
>> to.  It's quite a busy time at work now :-)
>
> Take your time. Emacs 29.1 is on its release path, so any feature change
> won't be pushed there. We could plan it for Emacs 29.2.

Finally, I've taken the stab and implemented something along these
lines. It is a little bit different from earlier proposals.

- You can now specify a container in the host name, dotted notation.
  "/kubernetes:container.pod:" accesses the given container. If it is
  not specified, as in "/kubernetes:pod:", the first container is taken.

- You can now specify different context and namespace. Change the new
  user options tramp-kubernetes-context or tramp-kubernetes-namespace
  for this effect.

Everything pushed to the Emacs and Tramp master repositories. The target
is now Tramp 2.7 / Emacs 30. Comments welcome :-)

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2023-06-23 19:47         ` Michael Albinus
@ 2023-07-02  8:37           ` Michael Albinus
       [not found]           ` <m1cyn4cq38.fsf@eshelyaron.com>
  1 sibling, 0 replies; 15+ messages in thread
From: Michael Albinus @ 2023-07-02  8:37 UTC (permalink / raw)
  To: Filipp Gunbin; +Cc: 59797-done, Aaron Gonzales, Warren Lynn

Version: 30.1

Michael Albinus <michael.albinus@gmx.de> writes:

Hi,

> Everything pushed to the Emacs and Tramp master repositories. The target
> is now Tramp 2.7 / Emacs 30. Comments welcome :-)

No further comments, so I'm closing the bug.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
       [not found]           ` <m1cyn4cq38.fsf@eshelyaron.com>
@ 2024-07-23 12:29             ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-23 12:59               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-23 12:29 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

Eshel Yaron <me@eshelyaron.com> writes:

> Hi Michael,

Hi Eshel,

> Michael Albinus <michael.albinus@gmx.de> writes:
>
>> Now we have kubernetes integrated in Tramp. We can access pods like
>> "/kubernetes:POD:/path/to/file".
>>
>> However, kubernetes can much more. For all services (like pods) it
>> creates DNS entries "<service-name>.<namespace-name>.svc.cluster.local".
>> Should'nt we support this? It means should we allow to access kubernetes
>> pods like "/kubernetes:POD.NAMESPACE:/path/to/file", including
>> completion for namespace names?
>
> [...]
>
>> Finally, I've taken the stab and implemented something along these
>> lines. It is a little bit different from earlier proposals.
>>
>> - You can now specify a container in the host name, dotted notation.
>>   "/kubernetes:container.pod:" accesses the given container. If it is
>>   not specified, as in "/kubernetes:pod:", the first container is taken.
>>
>> - You can now specify different context and namespace. Change the new
>>   user options tramp-kubernetes-context or tramp-kubernetes-namespace
>>   for this effect.
>>
>> Everything pushed to the Emacs and Tramp master repositories. The target
>> is now Tramp 2.7 / Emacs 30. Comments welcome :-)
>
> Sorry for not chiming in when this discussion was still ongoing, and
> thank you for your work on the Kubernetes integration.  I use it a lot.
>
> Would it be possible the reconsider adding an optional namespace to
> Tramp's Kubernetes file name syntax?  I'm thinking of something like
> "/kubernetes:[CONTAINER.]POD[.NAMESPACE]:/...".

Possible. However, the syntax is ambiguous. If we have "/kubernetes:name1.name2:/..."
it isn't clear what they are. name1 could be a container, and name2 a pod. Or
name1 is a pod, and name2 is a namespace. Could we agree on another
delimiter between POD and NAMESPACE?

> My use case is that I want to start Dired for a (container in a) pod in
> another namespace.  I can almost get there if I temporarily bind
> tramp-kubernetes-namespace around the call to dired, but the binding
> doesn't carry on to subsequent operations in the Dired buffer.  So an
> explicit namespace in default-directory could help, I think.

I see, it makes sense. My practical kubernetes experience is sparse; I
would exploit you while implementing. At least for tests.

Note also, that Emacs 30 is in pretest. Any such feature change will be
targeted to Emacs 31 / Tramp 2.8.

> Best,
>
> Eshel

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-23 12:29             ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-23 12:59               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-23 14:13                 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-23 12:59 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

Michael Albinus <michael.albinus@gmx.de> writes:

> Eshel Yaron <me@eshelyaron.com> writes:
>
>> Hi Michael,
>
> Hi Eshel,
>
>> Michael Albinus <michael.albinus@gmx.de> writes:
>>
>>> Now we have kubernetes integrated in Tramp. We can access pods like
>>> "/kubernetes:POD:/path/to/file".
>>>
>>> However, kubernetes can much more. For all services (like pods) it
>>> creates DNS entries "<service-name>.<namespace-name>.svc.cluster.local".
>>> Should'nt we support this? It means should we allow to access kubernetes
>>> pods like "/kubernetes:POD.NAMESPACE:/path/to/file", including
>>> completion for namespace names?
>>
>> [...]
>>
>>> Finally, I've taken the stab and implemented something along these
>>> lines. It is a little bit different from earlier proposals.
>>>
>>> - You can now specify a container in the host name, dotted notation.
>>>   "/kubernetes:container.pod:" accesses the given container. If it is
>>>   not specified, as in "/kubernetes:pod:", the first container is taken.
>>>
>>> - You can now specify different context and namespace. Change the new
>>>   user options tramp-kubernetes-context or tramp-kubernetes-namespace
>>>   for this effect.
>>>
>>> Everything pushed to the Emacs and Tramp master repositories. The target
>>> is now Tramp 2.7 / Emacs 30. Comments welcome :-)
>>
>> Sorry for not chiming in when this discussion was still ongoing, and
>> thank you for your work on the Kubernetes integration.  I use it a lot.
>>
>> Would it be possible the reconsider adding an optional namespace to
>> Tramp's Kubernetes file name syntax?  I'm thinking of something like
>> "/kubernetes:[CONTAINER.]POD[.NAMESPACE]:/...".
>
> Possible. However, the syntax is ambiguous. If we have "/kubernetes:name1.name2:/..."
> it isn't clear what they are. name1 could be a container, and name2 a pod. Or
> name1 is a pod, and name2 is a namespace. Could we agree on another
> delimiter between POD and NAMESPACE?

You're absolutely right.  AFAIU from the Kubernetes documentation[0],
non-alphanumeric characters other than "-" and "." should be safe.
Maybe "@" would be the most natural choice?  "+" could work too I think.

>> My use case is that I want to start Dired for a (container in a) pod in
>> another namespace.  I can almost get there if I temporarily bind
>> tramp-kubernetes-namespace around the call to dired, but the binding
>> doesn't carry on to subsequent operations in the Dired buffer.  So an
>> explicit namespace in default-directory could help, I think.
>
> I see, it makes sense. My practical kubernetes experience is sparse; I
> would exploit you while implementing. At least for tests.

SGTM.

> Note also, that Emacs 30 is in pretest. Any such feature change will be
> targeted to Emacs 31 / Tramp 2.8.

Of course, that's fine.

Thank you!


[0] https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
    https://kubernetes.io/docs/concepts/overview/working-with-objects/names/





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-23 12:59               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-23 14:13                 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-24 16:48                   ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-23 14:13 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

Eshel Yaron <me@eshelyaron.com> writes:

Hi Eshel,

>> Possible. However, the syntax is ambiguous. If we have "/kubernetes:name1.name2:/..."
>> it isn't clear what they are. name1 could be a container, and name2 a pod. Or
>> name1 is a pod, and name2 is a namespace. Could we agree on another
>> delimiter between POD and NAMESPACE?
>
> You're absolutely right.  AFAIU from the Kubernetes documentation[0],
> non-alphanumeric characters other than "-" and "." should be safe.
> Maybe "@" would be the most natural choice?  "+" could work too I think.

"@" is already used for the "user@host" notation in Tramp. We shouldn't
confuse users with another meaning in parallel. "+" might be OK, let's
start with it. It will be a Lisp constant, we can change it any time
later. So we have "/kubernetes:[CONTAINER.]POD[+NAMESPACE]:/..." now.

(If somebody has another proposal: it's time to stand up)

> Thank you!

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-23 14:13                 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-24 16:48                   ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-24 17:30                     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-24 16:48 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

[-- Attachment #1: Type: text/plain, Size: 1416 bytes --]

Michael Albinus <michael.albinus@gmx.de> writes:

Hi Eshel,

>> You're absolutely right.  AFAIU from the Kubernetes documentation[0],
>> non-alphanumeric characters other than "-" and "." should be safe.
>> Maybe "@" would be the most natural choice?  "+" could work too I think.
>
> "@" is already used for the "user@host" notation in Tramp. We shouldn't
> confuse users with another meaning in parallel. "+" might be OK, let's
> start with it. It will be a Lisp constant, we can change it any time
> later. So we have "/kubernetes:[CONTAINER.]POD[+NAMESPACE]:/..." now.

I gave it a first try. It turns out, that "+" is a bad choice, because
it doesn't belong to tramp-host-regexp. I would need to rewrite host
name handling in Tramp just for that, which is not desirable.

tramp-host-regexp is "[%._[:alnum:]-]+". So we could take either "%" or
"_" as namespace delimiter. I've decided for "%"; a complete remote file
name for kubernetes is now "/kubernetes:[CONTAINER.]POD[%NAMESPACE]:/path/to/file".

It works OK acc to my basic tests. I have appended the patch; I would
really appreciate if you could give it more testing in your production
environment. Please sync first with the Emacs or Tramp git repo; this
morning I've pushed other changes there.

What's left is file name completion for namespaces. I'm undecided
whether we need this in practice; let's see how it goes as-it-is.

Best regards, Michael.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 4078 bytes --]

diff --git a/lisp/tramp-container.el b/lisp/tramp-container.el
index 02512e64..e211a017 100644
--- a/lisp/tramp-container.el
+++ b/lisp/tramp-container.el
@@ -50,18 +50,14 @@
 ;;
 ;; Open file in a Kubernetes container:
 ;;
-;;     C-x C-f /kubernetes:[CONTAINER.]POD:/path/to/file
+;;     C-x C-f /kubernetes:[CONTAINER.]POD[%NAMESPACE]:/path/to/file
 ;;
 ;; Where:
 ;;     POD           is the pod to connect to.
 ;;     CONTAINER     is the container to connect to (optional).
 ;;		     By default, the first container in that pod will
 ;;		     be used.
-;;
-;; Completion for POD and accessing it operate in the current
-;; namespace, use this command to change it:
-;;
-;; "kubectl config set-context --current --namespace=<name>"
+;;     NAMESPACE     is the namespace to be used (optional).
 ;;
 ;;
 ;;
@@ -152,7 +148,9 @@ If it is nil, the default context will be used."
                  (string)))

 (defcustom tramp-kubernetes-namespace "default"
-  "Namespace of Kubernetes."
+  "Namespace of Kubernetes.
+If it is nil, the current namespace will be used.  An explicit NAMESPACE
+in the remote file name host part will override it."
   :group 'tramp
   :version "30.1"
   :type 'string)
@@ -324,10 +322,18 @@ see its function help for a description of the format."
 	    (push (concat elt "." (car line)) names)))
 	(mapcar (lambda (name) (list nil name)) (delq nil names))))))

+;; <https://kubernetes.io/docs/concepts/overview/working-with-objects/names/>
+;; `lower' could also match non-ascii letters.  But since this regexp
+;; is only used for strings matching `tramp-host-regexp', this doesn't
+;; hurt.
+(defconst tramp-kubernetes--name-regexp (rx (** 1 63 (any lower digit "-")))
+  "Regexp matching kubernetes names.")
+
 (defconst tramp-kubernetes--host-name-regexp
-  (rx (? (group (regexp tramp-host-regexp)) ".")
-      (group (regexp tramp-host-regexp)))
-  "The CONTAINER.POD syntax of kubernetes host names in Tramp.")
+  (rx bos (? (group (regexp tramp-kubernetes--name-regexp)) ".")
+      (group (regexp tramp-kubernetes--name-regexp))
+      (? "%" (group (regexp tramp-kubernetes--name-regexp))) eos)
+  "The CONTAINER.POD%NAMESPACE syntax of kubernetes host names in Tramp.")

 ;;;###tramp-autoload
 (defun tramp-kubernetes--container (vec)
@@ -345,6 +351,15 @@ see its function help for a description of the format."
 	     (match-string 2 host)))
       ""))

+;;;###tramp-autoload
+(defun tramp-kubernetes--namespace (vec)
+  "Extract the namespace from a kubernetes host name in VEC."
+  (or (when-let ((_ vec)
+		 (host (tramp-file-name-host vec)))
+	(and (string-match tramp-kubernetes--host-name-regexp host)
+	     (match-string 3 host)))
+      tramp-kubernetes-namespace ""))
+
 ;; We must change `vec' and `default-directory' to the previous hop,
 ;; in order to run `process-file' in a proper environment.
 (defmacro tramp-skeleton-kubernetes-vector (vec &rest body)
@@ -400,8 +415,8 @@ Obey `tramp-kubernetes-context'"
    #'identity
    `(,(when-let ((context (tramp-kubernetes--current-context vec)))
 	(format "--context=%s" context))
-     ,(when tramp-kubernetes-namespace
-	(format "--namespace=%s" tramp-kubernetes-namespace)))
+     ,(when-let ((namespace (tramp-kubernetes--namespace vec)))
+	(format "--namespace=%s" namespace)))
    " "))

 ;;;###tramp-autoload
@@ -617,9 +632,9 @@ see its function help for a description of the format."
      ;; This variable will be eval'ed in `tramp-expand-args'.
      (tramp-extra-expand-args
       . (?a (tramp-kubernetes--container (car tramp-current-connection))
-	    ?h (tramp-kubernetes--pod (car tramp-current-connection))
-	    ?x (tramp-kubernetes--context-namespace
-		(car tramp-current-connection)))))
+	 ?h (tramp-kubernetes--pod (car tramp-current-connection))
+	 ?x (tramp-kubernetes--context-namespace
+	     (car tramp-current-connection)))))
    "Default connection-local variables for remote kubernetes connections.")

  (connection-local-set-profile-variables

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-24 16:48                   ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-24 17:30                     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-25  8:20                       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-24 17:30 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

Hi Michael,

Michael Albinus <michael.albinus@gmx.de> writes:

> I gave it a first try. It turns out, that "+" is a bad choice, because
> it doesn't belong to tramp-host-regexp. I would need to rewrite host
> name handling in Tramp just for that, which is not desirable.
>
> tramp-host-regexp is "[%._[:alnum:]-]+". So we could take either "%" or
> "_" as namespace delimiter. I've decided for "%"; a complete remote file
> name for kubernetes is now "/kubernetes:[CONTAINER.]POD[%NAMESPACE]:/path/to/file".

Makes sense.  Thank you for tackling it so promptly!

> It works OK acc to my basic tests. I have appended the patch; I would
> really appreciate if you could give it more testing in your production
> environment. Please sync first with the Emacs or Tramp git repo; this
> morning I've pushed other changes there.

From a quick test, this mostly works fine.  There's one issue (typo?) in
tramp-kubernetes--namespace that causes a regression when there's no
explicit namespace and tramp-kubernetes-namespace is nil, it returns an
empty string instead of nil.

> What's left is file name completion for namespaces. I'm undecided
> whether we need this in practice; let's see how it goes as-it-is.

It's not very crucial for me, FWIW.


Cheers,

Eshel





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-24 17:30                     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-25  8:20                       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-25 10:48                         ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-25  8:20 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

[-- Attachment #1: Type: text/plain, Size: 585 bytes --]

Eshel Yaron <me@eshelyaron.com> writes:

> Hi Michael,

Hi Eshel,

> From a quick test, this mostly works fine.  There's one issue (typo?) in
> tramp-kubernetes--namespace that causes a regression when there's no
> explicit namespace and tramp-kubernetes-namespace is nil, it returns an
> empty string instead of nil.

I'fixed this, see appended revised patch. I've changed also the default
value of tramp-kubernetes-namespace to nil; we shouldn't assume that
everybody wants "default" as default.

Could you give it a short test, please?

> Cheers,
>
> Eshel

Best regards, Michael.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 4822 bytes --]

diff --git a/lisp/tramp-container.el b/lisp/tramp-container.el
index 02512e64..bd5736e6 100644
--- a/lisp/tramp-container.el
+++ b/lisp/tramp-container.el
@@ -50,18 +50,14 @@
 ;;
 ;; Open file in a Kubernetes container:
 ;;
-;;     C-x C-f /kubernetes:[CONTAINER.]POD:/path/to/file
+;;     C-x C-f /kubernetes:[CONTAINER.]POD[%NAMESPACE]:/path/to/file
 ;;
 ;; Where:
 ;;     POD           is the pod to connect to.
 ;;     CONTAINER     is the container to connect to (optional).
 ;;		     By default, the first container in that pod will
 ;;		     be used.
-;;
-;; Completion for POD and accessing it operate in the current
-;; namespace, use this command to change it:
-;;
-;; "kubectl config set-context --current --namespace=<name>"
+;;     NAMESPACE     is the namespace to be used (optional).
 ;;
 ;;
 ;;
@@ -151,10 +147,12 @@ If it is nil, the default context will be used."
   :type '(choice (const :tag "Use default" nil)
                  (string)))

-(defcustom tramp-kubernetes-namespace "default"
-  "Namespace of Kubernetes."
+(defcustom tramp-kubernetes-namespace nil
+  "Namespace of Kubernetes.
+If it is nil, the current namespace will be used.  An explicit NAMESPACE
+in the remote file name host part will override it."
   :group 'tramp
-  :version "30.1"
+  :version "31.1"
   :type 'string)

 ;;;###tramp-autoload
@@ -324,10 +322,18 @@ see its function help for a description of the format."
 	    (push (concat elt "." (car line)) names)))
 	(mapcar (lambda (name) (list nil name)) (delq nil names))))))

+;; <https://kubernetes.io/docs/concepts/overview/working-with-objects/names/>
+;; `lower' could also match non-ascii letters.  But since this regexp
+;; is only used for strings matching `tramp-host-regexp', this doesn't
+;; hurt.
+(defconst tramp-kubernetes--name-regexp (rx (** 1 63 (any lower digit "-")))
+  "Regexp matching kubernetes names.")
+
 (defconst tramp-kubernetes--host-name-regexp
-  (rx (? (group (regexp tramp-host-regexp)) ".")
-      (group (regexp tramp-host-regexp)))
-  "The CONTAINER.POD syntax of kubernetes host names in Tramp.")
+  (rx bos (? (group (regexp tramp-kubernetes--name-regexp)) ".")
+      (group (regexp tramp-kubernetes--name-regexp))
+      (? "%" (group (regexp tramp-kubernetes--name-regexp))) eos)
+  "The CONTAINER.POD%NAMESPACE syntax of kubernetes host names in Tramp.")

 ;;;###tramp-autoload
 (defun tramp-kubernetes--container (vec)
@@ -345,6 +351,16 @@ see its function help for a description of the format."
 	     (match-string 2 host)))
       ""))

+;;;###tramp-autoload
+(defun tramp-kubernetes--namespace (vec)
+  "Extract the namespace from a kubernetes host name in VEC.
+Use `tramp-kubernetes-namespace' otherwise."
+  (or (when-let ((_ vec)
+		 (host (tramp-file-name-host vec)))
+	(and (string-match tramp-kubernetes--host-name-regexp host)
+	     (match-string 3 host)))
+      tramp-kubernetes-namespace))
+
 ;; We must change `vec' and `default-directory' to the previous hop,
 ;; in order to run `process-file' in a proper environment.
 (defmacro tramp-skeleton-kubernetes-vector (vec &rest body)
@@ -355,6 +371,11 @@ BODY is the backend specific code."
 	   (cond
 	    ((null ,vec) tramp-null-hop)
 	    ((equal (tramp-file-name-method ,vec) tramp-kubernetes-method)
+	     ;; Sanity check.  We don't support `user' or `port' in
+	     ;; kubernetes file names.
+	     (when (or (tramp-file-name-user-domain ,vec)
+		       (tramp-file-name-port ,vec))
+	       (tramp-user-error ,vec "Wrong kubernetes file name syntax"))
 	     (if (tramp-file-name-hop ,vec)
 		 (tramp-dissect-hop-name (tramp-file-name-hop ,vec))
 	       tramp-null-hop))
@@ -400,8 +421,8 @@ Obey `tramp-kubernetes-context'"
    #'identity
    `(,(when-let ((context (tramp-kubernetes--current-context vec)))
 	(format "--context=%s" context))
-     ,(when tramp-kubernetes-namespace
-	(format "--namespace=%s" tramp-kubernetes-namespace)))
+     ,(when-let ((namespace (tramp-kubernetes--namespace vec)))
+	(format "--namespace=%s" namespace)))
    " "))

 ;;;###tramp-autoload
@@ -617,9 +638,9 @@ see its function help for a description of the format."
      ;; This variable will be eval'ed in `tramp-expand-args'.
      (tramp-extra-expand-args
       . (?a (tramp-kubernetes--container (car tramp-current-connection))
-	    ?h (tramp-kubernetes--pod (car tramp-current-connection))
-	    ?x (tramp-kubernetes--context-namespace
-		(car tramp-current-connection)))))
+	 ?h (tramp-kubernetes--pod (car tramp-current-connection))
+	 ?x (tramp-kubernetes--context-namespace
+	     (car tramp-current-connection)))))
    "Default connection-local variables for remote kubernetes connections.")

  (connection-local-set-profile-variables

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-25  8:20                       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-25 10:48                         ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-07-25 11:42                           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 15+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-25 10:48 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Aaron Gonzales, 59797, Filipp Gunbin, Warren Lynn

Michael Albinus <michael.albinus@gmx.de> writes:

> I'fixed this, see appended revised patch. I've changed also the default
> value of tramp-kubernetes-namespace to nil; we shouldn't assume that
> everybody wants "default" as default.

Looks good.  (I think the custom type of tramp-kubernetes-namespace may
need updating because it currently only permits string values.)

> Could you give it a short test, please?

I tried it with Dired, M-x shell, C-x C-f, remote file name completion,
everything seems to work well!


Thanks,

Eshel





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration
  2024-07-25 10:48                         ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-25 11:42                           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-25 11:42 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: Aaron Gonzales, 59797-done, Filipp Gunbin, Warren Lynn

Version: 31.1

Eshel Yaron <me@eshelyaron.com> writes:

Hi Eshel,

> Looks good.  (I think the custom type of tramp-kubernetes-namespace may
> need updating because it currently only permits string values.)

Good catch! I've fixed this.

> I tried it with Dired, M-x shell, C-x C-f, remote file name completion,
> everything seems to work well!

Thanks for the tests! I've pushed the patch to both Emacs and Tramp git
repositories, closing the bug.

> Thanks,
>
> Eshel

Best regards, Michael.





^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-07-25 11:42 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-03  9:20 bug#59797: 30.0.50; [wishlist] Using namespaces in Tramp's kubernetes integration Michael Albinus
2022-12-05 14:05 ` Filipp Gunbin
2022-12-05 15:54   ` Michael Albinus
2022-12-06 13:56     ` Filipp Gunbin
2022-12-06 15:13       ` Michael Albinus
2023-06-23 19:47         ` Michael Albinus
2023-07-02  8:37           ` Michael Albinus
     [not found]           ` <m1cyn4cq38.fsf@eshelyaron.com>
2024-07-23 12:29             ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-23 12:59               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-23 14:13                 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-24 16:48                   ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-24 17:30                     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-25  8:20                       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-25 10:48                         ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-25 11:42                           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).