From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Filipp Gunbin Newsgroups: gmane.emacs.devel Subject: Re: master 55eabe96c9: ; Improve manual for Tramp kubernetes method Date: Tue, 25 Oct 2022 02:42:32 +0300 Message-ID: References: <166637666472.14803.2269230477358344016@vcs2.savannah.gnu.org> <20221021182424.F0E84C00B0F@vcs2.savannah.gnu.org> <87tu3w6v74.fsf@gmx.de> <87a65l6z0l.fsf@gmx.de> <875yg96xu8.fsf@gmx.de> <871qqx6oi5.fsf@gmx.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25244"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-devel@gnu.org To: Michael Albinus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Oct 25 01:48:59 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1on7Bh-0006ME-3U for ged-emacs-devel@m.gmane-mx.org; Tue, 25 Oct 2022 01:48:58 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1on79N-0005rp-4s; Mon, 24 Oct 2022 19:46:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on75e-00008p-12 for emacs-devel@gnu.org; Mon, 24 Oct 2022 19:42:46 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on75b-0003QO-FT for emacs-devel@gnu.org; Mon, 24 Oct 2022 19:42:41 -0400 Original-Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 4A071320051E; Mon, 24 Oct 2022 19:42:37 -0400 (EDT) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Mon, 24 Oct 2022 19:42:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= cc:cc:content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to; s=fm3; t=1666654956; x=1666741356; bh=IiymDJvqJx fuWyP8i2Wd4JaXqwrm0s7KklQIhHmm7Nw=; b=Etwj49Ak+mSIagR0W8cZuYV6oU FHNJdscACLeU4lgQ1XYdCT5VAnJpjMJbxa/K2z4TgEpx8dr1YhwifG/hJLbUzZG6 DDM+9kqAguHIcO/BI3q/8VED0jMCwHoCX0IwOds8Tu5q2clv9enu1vCIZ4mnkVeP RvO09NEkiURwAyWdE723ciisuBLH7qwt7SRLGmC/85lGmy48ewZ3Tv9ZIW/TNRLa M//9zzM2BXJYEaAzH18yE69U5CgvBAejn/iQph97Btjfa0k7xdNQMkS5ij2O+Tgk aNcmwvLfou4SJMLNGfWlqSsbiWjLZdQ5A1UZQ1lo9fRYRRi9aVjOvRackBWA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1666654956; x=1666741356; bh=IiymDJvqJxfuWyP8i2Wd4JaXqwrm 0s7KklQIhHmm7Nw=; b=HhyyWspKkDBWBvm9ij5zhA1HWbUiLIqe39CWWXMo+zFT lHWTGqOX6i2/uhZ/rLzKj8kVCBMqYlBtgnlnrnHy1no07QQcd8p6MGFy6uFxBlC0 fr+fMXAE4Az3iShcxtSko2w4FbCQZifO7n/u0ZWy/NHIG8cPVaTN2zYxE9G0MkEs ZqrQPooZHMclyoiRvzz7q99YpXjeOixMtriVGfuynB4ydu83LbBNpXCBmbcc3hIj dAM7FoGCwrJ8yB6aiyPWMfNNgIrxPa4PZ790EWI9LcYNP/76pKiqtF48jOoeNrtY U6mX6k26X6nMtzOvVggCc5l24foQXHdxmBVAvFhx9g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrgedthedgvdeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefujghffgffkfggtgesthdtredttdertdenucfhrhhomhephfhilhhi phhpucfiuhhnsghinhcuoehfghhunhgsihhnsehfrghsthhmrghilhdrfhhmqeenucggtf frrghtthgvrhhnpeffhfejveeiieeiudetgfehffelieevfeeffedtkeelheeludefueeu udehveeiffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehfghhunhgsihhnsehfrghsthhmrghilhdrfhhm X-ME-Proxy: Feedback-ID: id48c41f1:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 24 Oct 2022 19:42:35 -0400 (EDT) In-Reply-To: <871qqx6oi5.fsf@gmx.de> (Michael Albinus's message of "Mon, 24 Oct 2022 20:54:42 +0200") Mail-Followup-To: Michael Albinus , emacs-devel@gnu.org Received-SPF: pass client-ip=64.147.123.21; envelope-from=fgunbin@fastmail.fm; helo=wout5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "Emacs-devel" Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:298432 Archived-At: Hi Michael, Generally it works, thank you very much! Test case: 1) kubectl config set-context --current --namespace=main 2) dired /kubernetes:myapp-67cd597654-wxdjn:/ 3) tramp-cleanup-this-connection 4) kubectl config set-context --current --namespace= 5) again dired /kubernetes:myapp-67cd597654-wxdjn:/ - I get an error and cache is cleared However, now auto-completing /kubernetes: shows this, why 2? --8<---------------cut here---------------start------------->8--- In this buffer, type RET to select the completion near point. 2 possible completions: kubernetes: --8<---------------cut here---------------end--------------->8--- Another issue: if at step 5 I instead use existing dired window and type, say, "i" on a subdirectory, then I get the same-looking error, but the Tramp cache is not cleared (perhaps this is not Kubernetes-specific). Also please see comments below. On 24/10/2022 20:54 +0200, Michael Albinus wrote: > Michael Albinus writes: > > Hi Filipp, > >>> Yep, but I would recommend "kubectl config view --context=$(kubectl >>> config current-context) -o json". We don't need the information about >>> other context. >> >> Oops. The better way is "kubectl config view -o json --minify". > > Patch is appended, could you pls test? > > Best regards, Michael. > > diff --git a/lisp/tramp-container.el b/lisp/tramp-container.el > index e104babe..5603fa0f 100644 > --- a/lisp/tramp-container.el > +++ b/lisp/tramp-container.el > @@ -130,6 +130,15 @@ see its function help for a description of the format." > (list nil name)) > names))) > > +(defun tramp-kubernetes--current-context-data (vec) > + "Return current context data as JSON string." > + (with-temp-buffer > + (when (zerop > + (tramp-call-process > + vec tramp-kubernetes-program nil t nil > + "config" "view" "--minify" "-o" "json")) > + (buffer-string)))) > + Let's remove --minify. Also, maybe save the checksum (simple md5 would do it), not the full listing? The listing may contain sensitive data (for example, mine shows my OAuth id token). > ;;;###tramp-autoload > (defvar tramp-default-remote-shell) ;; Silence byte compiler. > > @@ -165,6 +174,7 @@ see its function help for a description of the format." > ("-it") > ("--") > ("%l"))) > + (tramp-config-check tramp-kubernetes--current-context-data) > (tramp-remote-shell ,tramp-default-remote-shell) > (tramp-remote-shell-login ("-l")) > (tramp-remote-shell-args ("-i" "-c")))) > diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el > index d74afc84..39043482 100644 > --- a/lisp/tramp-sh.el > +++ b/lisp/tramp-sh.el > @@ -4472,7 +4472,8 @@ process to set up. VEC specifies the connection." > ;; Check whether the output of "uname -sr" has been changed. If > ;; yes, this is a strong indication that we must expire all > ;; connection properties. We start again with > - ;; `tramp-maybe-open-connection', it will be caught there. > + ;; `tramp-maybe-open-connection', it will be caught there. The same > + ;; check will be applied with the function kept in`tramp-config-check'. > (tramp-message vec 5 "Checking system information") > (let* ((old-uname (tramp-get-connection-property vec "uname")) > (uname > @@ -4481,8 +4482,23 @@ process to set up. VEC specifies the connection." > old-uname > (tramp-set-connection-property > vec "uname" > - (tramp-send-command-and-read vec "echo \\\"`uname -sr`\\\""))))) > - (when (and (stringp old-uname) (not (string-equal old-uname uname))) > + (tramp-send-command-and-read vec "echo \\\"`uname -sr`\\\"")))) > + (config-check-function > + (tramp-get-method-parameter vec 'tramp-config-check)) > + (old-config-check > + (and config-check-function > + (tramp-get-connection-property vec "config-check-data"))) > + (config-check > + (and config-check-function > + ;; If we are in `make-process', we don't need to recompute. > + (if (and old-config-check > + (tramp-get-connection-property vec "process-name")) > + old-config-check > + (tramp-set-connection-property > + vec "config-check-data" > + (tramp-compat-funcall config-check-function vec)))))) > + (when (and (stringp old-uname) (stringp uname) > + (not (string-equal old-uname uname))) > (tramp-message > vec 3 > "Connection reset, because remote host changed from `%s' to `%s'" > @@ -4490,6 +4506,15 @@ process to set up. VEC specifies the connection." > ;; We want to keep the password. > (tramp-cleanup-connection vec t t) > (throw 'uname-changed (tramp-maybe-open-connection vec))) > + (when (and (stringp old-config-check) (stringp config-check) > + (not (string-equal old-config-check config-check))) > + (tramp-message > + vec 3 > + "Connection reset, because remote configuration changed from `%s' to `%s'" > + old-config-check config-check) Currently, we'll get huge config listings here (at the level 3)? If we change to checksums, that'd be not very useful. So perhaps don't output those strings? > + ;; We want to keep the password. > + (tramp-cleanup-connection vec t t) > + (throw 'uname-changed (tramp-maybe-open-connection vec))) > > ;; Try to set up the coding system correctly. > ;; CCC this can't be the right way to do it. Hm. > diff --git a/lisp/tramp.el b/lisp/tramp.el > index 57063154..933bac7e 100644 > --- a/lisp/tramp.el > +++ b/lisp/tramp.el > @@ -281,6 +281,13 @@ pair of the form (KEY VALUE). The following KEYs are defined: > Until now, just \"ssh\"-based, \"sshfs\"-based and > \"adb\"-based methods do. > > + * `tramp-config-check' > + A function to be called with one argument, VEC. It should > + return a string which is used to check, whether the Comma not needed? > + configuration of the remote host has been changed (which > + would require to flush the cache data). This string is kept > + as connection property \"config-check-data\". > + > * `tramp-copy-program' > This specifies the name of the program to use for remotely copying > the file; this might be the absolute filename of scp or the name of Also, my added paragraph in manual can be removed now. Thanks. Filipp