From 59e224518a7e1feb17ed3cbf77473c044906ed48 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 8 Apr 2021 18:19:23 +0800 Subject: [PATCH 1/3] region: guests: sshable: more friendly fail reason for proxy_forward --- pkg/compute/models/guest_sshable.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/compute/models/guest_sshable.go b/pkg/compute/models/guest_sshable.go index bed889bcae..a0dbbeff38 100644 --- a/pkg/compute/models/guest_sshable.go +++ b/pkg/compute/models/guest_sshable.go @@ -30,6 +30,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" cloudproxy_module "yunion.io/x/onecloud/pkg/mcclient/modules/cloudproxy" + "yunion.io/x/onecloud/pkg/util/httputils" ssh_util "yunion.io/x/onecloud/pkg/util/ssh" ) @@ -173,9 +174,15 @@ func (guest *SGuest) GetDetailsSshable( } } } else { + var reason string + if jce, ok := err.(*httputils.JSONClientError); ok { + reason = jce.Details + } else { + reason = err.Error() + } tryData.AddMethodTried(compute_api.GuestSshableMethodData{ Method: compute_api.MethodProxyForward, - Reason: err.Error(), + Reason: reason, }) } } From 188cac1fdb6aa1b4a23c3b79842e9626954f5a1d Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 12 Apr 2021 16:52:07 +0800 Subject: [PATCH 2/3] region: guests: sshable: return early on sshable=true --- pkg/compute/models/guest_sshable.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/compute/models/guest_sshable.go b/pkg/compute/models/guest_sshable.go index a0dbbeff38..c6f37c71a1 100644 --- a/pkg/compute/models/guest_sshable.go +++ b/pkg/compute/models/guest_sshable.go @@ -298,6 +298,7 @@ func (guest *SGuest) sshableTry( if client, err := conf.ConnectContext(ctx); err == nil { defer client.Close() methodData.Sshable = true + ok = true } else { methodData.Reason = err.Error() } From 042a5728183a853791f03c34f231de4f0986dfc4 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 12 Apr 2021 17:33:42 +0800 Subject: [PATCH 3/3] region: guests: sshable: only check sshable state when in running state --- pkg/compute/models/guest_sshable.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/compute/models/guest_sshable.go b/pkg/compute/models/guest_sshable.go index c6f37c71a1..662a94a3a2 100644 --- a/pkg/compute/models/guest_sshable.go +++ b/pkg/compute/models/guest_sshable.go @@ -72,6 +72,10 @@ func (guest *SGuest) GetDetailsSshable( userCred mcclient.TokenCredential, query jsonutils.JSONObject, ) (jsonutils.JSONObject, error) { + if guest.Status != compute_api.VM_RUNNING { + return nil, httperrors.NewBadRequestError("server sshable state can only be checked when in running state") + } + tryData := &GuestSshableTryData{ User: "cloudroot", }