Skip to content

Commit 43990e2

Browse files
authored
support get values yaml from other type repo in openapi (#4531)
Signed-off-by: Patrick Zhao <zhaoyu@koderover.com>
1 parent 8434269 commit 43990e2

3 files changed

Lines changed: 74 additions & 12 deletions

File tree

pkg/microservice/aslan/core/environment/handler/openapi.go

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,23 @@ import (
2323
"fmt"
2424
"io"
2525
"net/http"
26+
"os"
27+
"path"
2628
"strconv"
2729
"strings"
2830

2931
"github.com/gin-gonic/gin"
3032
"k8s.io/apimachinery/pkg/util/sets"
3133

34+
"github.com/koderover/zadig/v2/pkg/microservice/aslan/config"
3235
commonrepo "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/mongodb"
3336
commonservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service"
37+
"github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/command"
3438
fsservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/fs"
3539
commonutil "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/util"
3640
"github.com/koderover/zadig/v2/pkg/microservice/aslan/core/environment/service"
37-
codehostdb "github.com/koderover/zadig/v2/pkg/microservice/systemconfig/core/codehost/repository/mongodb"
3841
"github.com/koderover/zadig/v2/pkg/setting"
42+
"github.com/koderover/zadig/v2/pkg/shared/client/systemconfig"
3943
internalhandler "github.com/koderover/zadig/v2/pkg/shared/handler"
4044
e "github.com/koderover/zadig/v2/pkg/tool/errors"
4145
"github.com/koderover/zadig/v2/pkg/types"
@@ -2231,20 +2235,43 @@ func OpenAPIAddHelmServicesToEnv(c *gin.Context) {
22312235

22322236
valuesData := &commonservice.ValuesDataArgs{}
22332237
if service.ImportValuesFromGit != nil {
2234-
codehostID, err := codehostdb.NewCodehostColl().GetCodeHostByAlias(service.ImportValuesFromGit.CodehostName)
2238+
codeHost, err := systemconfig.New().GetCodeHostByAlias(service.ImportValuesFromGit.CodehostName)
22352239
if err != nil {
2236-
ctx.RespErr = e.ErrInvalidParam.AddDesc(fmt.Sprintf("codehost %s not found", service.ImportValuesFromGit.CodehostName))
2240+
ctx.RespErr = e.ErrInvalidParam.AddDesc(fmt.Sprintf("failed to get codehost %s, err: %s", service.ImportValuesFromGit.CodehostName, err))
22372241
return
22382242
}
22392243

2240-
autoSyncYamlBytes, err := fsservice.DownloadFileFromSource(&fsservice.DownloadFromSourceArgs{
2241-
CodehostID: codehostID.ID,
2242-
Namespace: service.ImportValuesFromGit.Namespace,
2243-
Owner: service.ImportValuesFromGit.Namespace,
2244-
Repo: service.ImportValuesFromGit.Repo,
2245-
Branch: service.ImportValuesFromGit.Branch,
2246-
Path: service.ImportValuesFromGit.ValuePath,
2247-
})
2244+
var autoSyncYamlBytes []byte
2245+
if codeHost.Type == setting.SourceFromOther {
2246+
service.ImportValuesFromGit.AutoSync = false
2247+
err = command.RunGitCmds(
2248+
codeHost,
2249+
service.ImportValuesFromGit.Namespace,
2250+
service.ImportValuesFromGit.Namespace,
2251+
service.ImportValuesFromGit.Repo,
2252+
service.ImportValuesFromGit.Branch,
2253+
"origin",
2254+
)
2255+
if err != nil {
2256+
ctx.RespErr = e.ErrInvalidParam.AddDesc(fmt.Sprintf("failed to sync git repo for values yaml, err: %s", err))
2257+
return
2258+
}
2259+
repoPath := path.Join(config.S3StoragePath(), service.ImportValuesFromGit.Repo, service.ImportValuesFromGit.ValuePath)
2260+
autoSyncYamlBytes, err = os.ReadFile(repoPath)
2261+
if err != nil {
2262+
ctx.RespErr = e.ErrInvalidParam.AddDesc(fmt.Sprintf("failed to read values yaml from synced repo, path: %s, err: %s", repoPath, err))
2263+
return
2264+
}
2265+
} else {
2266+
autoSyncYamlBytes, err = fsservice.DownloadFileFromSource(&fsservice.DownloadFromSourceArgs{
2267+
CodehostID: codeHost.ID,
2268+
Namespace: service.ImportValuesFromGit.Namespace,
2269+
Owner: service.ImportValuesFromGit.Namespace,
2270+
Repo: service.ImportValuesFromGit.Repo,
2271+
Branch: service.ImportValuesFromGit.Branch,
2272+
Path: service.ImportValuesFromGit.ValuePath,
2273+
})
2274+
}
22482275
if err != nil {
22492276
ctx.RespErr = e.ErrInvalidParam.AddDesc(fmt.Sprintf("failed to download auto sync yaml, err: %s", err))
22502277
return
@@ -2254,7 +2281,7 @@ func OpenAPIAddHelmServicesToEnv(c *gin.Context) {
22542281

22552282
valuesData = &commonservice.ValuesDataArgs{
22562283
GitRepoConfig: &commonservice.RepoConfig{
2257-
CodehostID: codehostID.ID,
2284+
CodehostID: codeHost.ID,
22582285
Owner: service.ImportValuesFromGit.Namespace,
22592286
Namespace: service.ImportValuesFromGit.Namespace,
22602287
Repo: service.ImportValuesFromGit.Repo,

pkg/microservice/systemconfig/core/codehost/service/codehost.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ func GetCodeHost(id int, ignoreDelete bool, _ *zap.SugaredLogger) (*models.CodeH
171171
return mongodb.NewCodehostColl().GetCodeHostByID(id, ignoreDelete)
172172
}
173173

174+
func GetCodeHostByAlias(alias string) (*models.CodeHost, error) {
175+
return mongodb.NewCodehostColl().GetCodeHostByAlias(alias)
176+
}
177+
174178
type state struct {
175179
CodeHostID int `json:"code_host_id"`
176180
RedirectURL string `json:"redirect_url"`

pkg/shared/client/systemconfig/codehost.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,37 @@ func GetCodeHostInfo(opt *Option) (*CodeHost, error) {
7070
return New().GetCodeHostByAddressAndOwner(opt.Address, opt.Namespace, opt.CodeHostType)
7171
}
7272

73+
func (c *Client) GetCodeHostByAlias(alias string) (*CodeHost, error) {
74+
resp, err := codehostservice.GetCodeHostByAlias(alias)
75+
if err != nil {
76+
return nil, err
77+
}
78+
res := &CodeHost{
79+
ID: resp.ID,
80+
Address: resp.Address,
81+
Type: resp.Type,
82+
AccessToken: resp.AccessToken,
83+
RefreshToken: resp.RefreshToken,
84+
Namespace: resp.Namespace,
85+
Region: resp.Region,
86+
AccessKey: resp.ApplicationId,
87+
SecretKey: resp.ClientSecret,
88+
Username: resp.Username,
89+
Password: resp.Password,
90+
DisableSSL: resp.DisableSSL,
91+
EnableProxy: resp.EnableProxy,
92+
UpdatedAt: resp.UpdatedAt,
93+
Alias: resp.Alias,
94+
AuthType: resp.AuthType,
95+
SSHKey: resp.SSHKey,
96+
PrivateAccessToken: resp.PrivateAccessToken,
97+
P4Host: resp.P4Host,
98+
P4Port: resp.P4Port,
99+
}
100+
101+
return res, nil
102+
}
103+
73104
func (c *Client) GetCodeHost(id int) (*CodeHost, error) {
74105
resp, err := codehostservice.GetCodeHost(id, false, log.SugaredLogger())
75106
if err != nil {

0 commit comments

Comments
 (0)