From 81faf84bbc3352caf71a76cb4da97baef2409512 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Fri, 21 Jun 2024 16:38:27 +0800 Subject: [PATCH] fix(apigateway): compose environment without k8s service (#20617) --- pkg/mcclient/modules/webconsole/mod_webconsole.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/mcclient/modules/webconsole/mod_webconsole.go b/pkg/mcclient/modules/webconsole/mod_webconsole.go index 77fb2676e4..9b2d59ab21 100644 --- a/pkg/mcclient/modules/webconsole/mod_webconsole.go +++ b/pkg/mcclient/modules/webconsole/mod_webconsole.go @@ -155,10 +155,8 @@ func (m WebConsoleManager) doCloudShell(s *mcclient.ClientSession, info *webcons query.Add(jsonutils.NewString("system"), "scope") query.Add(jsonutils.NewString("system-default"), "name") clusters, err := k8s.KubeClusters.List(adminSession, query) - if err != nil { - return nil, errors.Wrap(err, "KubeClusters") - } - if len(clusters.Data) == 0 { + + climcSshConnect := func(s *mcclient.ClientSession) (jsonutils.JSONObject, error) { // maybe running in docker compose environment, so try to use ssh way if data, err := m.DoClimcSshConnect(s, "climc", 22); err != nil { return nil, httperrors.NewNotFoundError(errors.Wrap(err, "cluster system-default not found, try to use ssh way").Error()) @@ -166,6 +164,15 @@ func (m WebConsoleManager) doCloudShell(s *mcclient.ClientSession, info *webcons return data, nil } } + if err != nil { + if errors.Cause(err) == errors.ErrNotFound && strings.Contains(err.Error(), "No such service k8s") { + return climcSshConnect(s) + } + return nil, errors.Wrap(err, "KubeClusters") + } + if len(clusters.Data) == 0 { + return climcSshConnect(s) + } clusterId, _ := clusters.Data[0].GetString("id") if len(clusterId) == 0 { return nil, httperrors.NewNotFoundError("cluster system-default no id")