From 85fc86a67e59515d0a94f9ac850b924f7661b84e Mon Sep 17 00:00:00 2001 From: ioito Date: Wed, 12 Apr 2023 16:32:53 +0800 Subject: [PATCH] fix(region): support import private k8s --- pkg/compute/models/kube_clusters.go | 66 +++++++++++++++++------------ 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/pkg/compute/models/kube_clusters.go b/pkg/compute/models/kube_clusters.go index 142472b665..24199d5fe3 100644 --- a/pkg/compute/models/kube_clusters.go +++ b/pkg/compute/models/kube_clusters.go @@ -218,37 +218,47 @@ func (self *SKubeCluster) ImportOrUpdate(ctx context.Context, userCred mcclient. } func (self *SKubeCluster) doRemoteImport(ctx context.Context, s *mcclient.ClientSession, userCred mcclient.TokenCredential, ext cloudprovider.ICloudKubeCluster) error { - config, err := ext.GetKubeConfig(false, 0) - if err != nil { - return errors.Wrapf(err, "GetKubeConfig") - } + var importFunc = func(isPrivate bool) error { + config, err := ext.GetKubeConfig(isPrivate, 0) + if err != nil { + return errors.Wrapf(err, "GetKubeConfig") + } - params := map[string]interface{}{ - "name": self.Name, - "project_domain_id": self.DomainId, - "domain_id": self.DomainId, - "mode": "import", - "external_cluster_id": self.GetId(), - "resource_type": "guest", - "import_data": map[string]interface{}{ - "kubeconfig": config.Config, - }, - } - resp, err := k8s.KubeClusters.Create(s, jsonutils.Marshal(params)) - if err != nil { - return errors.Wrapf(err, "Create") - } - id, err := resp.GetString("id") - if err != nil { - return errors.Wrapf(err, "resp.GetId") - } - if _, err := db.Update(self, func() error { - self.ExternalClusterId = id + params := map[string]interface{}{ + "name": self.Name, + "project_domain_id": self.DomainId, + "domain_id": self.DomainId, + "mode": "import", + "external_cluster_id": self.GetId(), + "resource_type": "guest", + "import_data": map[string]interface{}{ + "kubeconfig": config.Config, + }, + } + resp, err := k8s.KubeClusters.Create(s, jsonutils.Marshal(params)) + if err != nil { + return errors.Wrapf(err, "Create") + } + id, err := resp.GetString("id") + if err != nil { + return errors.Wrapf(err, "resp.GetId") + } + if _, err := db.Update(self, func() error { + self.ExternalClusterId = id + return nil + }); err != nil { + return errors.Wrapf(err, "db.Update") + } return nil - }); err != nil { - return errors.Wrapf(err, "db.Update") } - return nil + var err error + for _, isPrivate := range []bool{true, false} { + err = importFunc(isPrivate) + if err == nil { + return nil + } + } + return err } func (self *SKubeCluster) doRemoteUpdate(ctx context.Context, s *mcclient.ClientSession, userCred mcclient.TokenCredential, ext cloudprovider.ICloudKubeCluster) error {