Skip to content

Commit ac40615

Browse files
Fix: Default component release name refactor (#1345)
* default chart component release name refactored * environment name modification for default charts * fix complete for default component release name
1 parent a4e1b40 commit ac40615

File tree

5 files changed

+121
-16
lines changed

5 files changed

+121
-16
lines changed

internal/util/ChartService.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package util
1919

2020
import (
2121
"fmt"
22+
appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
2223
"github.com/devtron-labs/devtron/util"
2324
"io/ioutil"
2425
"math/rand"
@@ -43,7 +44,7 @@ type ChartWorkingDir string
4344
type ChartTemplateService interface {
4445
CreateChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string) (*ChartValues, *ChartGitAttribute, error)
4546
GetChartVersion(location string) (string, error)
46-
CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, appName string) (string, *ChartGitAttribute, error)
47+
CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, installAppVersionRequest *appStoreBean.InstallAppVersionDTO) (string, *ChartGitAttribute, error)
4748
GitPull(clonedDir string, repoUrl string, appStoreName string) error
4849
GetGitOpsRepoName(appName string) string
4950
GetGitOpsRepoNameFromUrl(gitRepoUrl string) string
@@ -322,7 +323,7 @@ func (impl ChartTemplateServiceImpl) getDir() string {
322323
return strconv.FormatInt(r1, 10)
323324
}
324325

325-
func (impl ChartTemplateServiceImpl) CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, appName string) (string, *ChartGitAttribute, error) {
326+
func (impl ChartTemplateServiceImpl) CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, installAppVersionRequest *appStoreBean.InstallAppVersionDTO) (string, *ChartGitAttribute, error) {
326327
chartMetaData.ApiVersion = "v2" // ensure always v2
327328
dir := impl.getDir()
328329
chartDir := filepath.Join(string(impl.chartWorkingDir), dir)
@@ -345,7 +346,7 @@ func (impl ChartTemplateServiceImpl) CreateChartProxy(chartMetaData *chart.Metad
345346
return "", nil, err
346347
}
347348

348-
chartGitAttr, err := impl.createAndPushToGitChartProxy(chartMetaData.Name, templateName, version, chartDir, envName, appName)
349+
chartGitAttr, err := impl.createAndPushToGitChartProxy(chartMetaData.Name, templateName, version, chartDir, envName, installAppVersionRequest)
349350
if err != nil {
350351
impl.logger.Errorw("error in pushing chart to git ", "path", archivePath, "err", err)
351352
return "", nil, err
@@ -362,11 +363,14 @@ func (impl ChartTemplateServiceImpl) CreateChartProxy(chartMetaData *chart.Metad
362363
return valuesYaml, chartGitAttr, nil
363364
}
364365

365-
func (impl ChartTemplateServiceImpl) createAndPushToGitChartProxy(appStoreName, baseTemplateName, version, tmpChartLocation string, envName string, appName string) (chartGitAttribute *ChartGitAttribute, err error) {
366+
func (impl ChartTemplateServiceImpl) createAndPushToGitChartProxy(appStoreName, baseTemplateName, version, tmpChartLocation string, envName string, installAppVersionRequest *appStoreBean.InstallAppVersionDTO) (chartGitAttribute *ChartGitAttribute, err error) {
366367
//baseTemplateName replace whitespace
367368
space := regexp.MustCompile(`\s+`)
368369
appStoreName = space.ReplaceAllString(appStoreName, "-")
369-
gitOpsRepoName := impl.GetGitOpsRepoName(appStoreName)
370+
if len(installAppVersionRequest.GitOpsRepoName) == 0 {
371+
gitOpsRepoName := impl.GetGitOpsRepoName(appStoreName)
372+
installAppVersionRequest.GitOpsRepoName = gitOpsRepoName
373+
}
370374
gitOpsConfigBitbucket, err := impl.gitFactory.gitOpsRepository.GetGitOpsConfigByProvider(BITBUCKET_PROVIDER)
371375
if err != nil {
372376
if err == pg.ErrNoRows {
@@ -377,14 +381,14 @@ func (impl ChartTemplateServiceImpl) createAndPushToGitChartProxy(appStoreName,
377381
return nil, err
378382
}
379383
}
380-
repoUrl, _, detailedError := impl.gitFactory.Client.CreateRepository(gitOpsRepoName, "helm chart for "+gitOpsRepoName, gitOpsConfigBitbucket.BitBucketWorkspaceId, gitOpsConfigBitbucket.BitBucketProjectKey)
384+
repoUrl, _, detailedError := impl.gitFactory.Client.CreateRepository(installAppVersionRequest.GitOpsRepoName, "helm chart for "+installAppVersionRequest.GitOpsRepoName, gitOpsConfigBitbucket.BitBucketWorkspaceId, gitOpsConfigBitbucket.BitBucketProjectKey)
381385
for _, err := range detailedError.StageErrorMap {
382386
if err != nil {
383-
impl.logger.Errorw("error in creating git project", "name", gitOpsRepoName, "err", err)
387+
impl.logger.Errorw("error in creating git project", "name", installAppVersionRequest.GitOpsRepoName, "err", err)
384388
return nil, err
385389
}
386390
}
387-
chartDir := fmt.Sprintf("%s-%s", appName, impl.getDir())
391+
chartDir := fmt.Sprintf("%s-%s", installAppVersionRequest.AppName, impl.getDir())
388392
clonedDir := impl.gitFactory.gitService.GetCloneDirectory(chartDir)
389393
if _, err := os.Stat(clonedDir); os.IsNotExist(err) {
390394
clonedDir, err = impl.gitFactory.gitService.Clone(repoUrl, chartDir)
@@ -399,7 +403,7 @@ func (impl ChartTemplateServiceImpl) createAndPushToGitChartProxy(appStoreName,
399403
}
400404
}
401405

402-
acdAppName := fmt.Sprintf("%s-%s", appName, envName)
406+
acdAppName := fmt.Sprintf("%s-%s", installAppVersionRequest.AppName, envName)
403407
dir := filepath.Join(clonedDir, acdAppName)
404408
err = os.MkdirAll(dir, os.ModePerm)
405409
if err != nil {

pkg/appStore/AppStoreDeploymentService.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ type InstalledAppService interface {
7575
performDeployStage(appId int) (*appStoreBean.InstallAppVersionDTO, error)
7676
CheckAppExists(appNames []*appStoreBean.AppNames) ([]*appStoreBean.AppNames, error)
7777
DeployDefaultChartOnCluster(bean *cluster2.ClusterBean, userId int32) (bool, error)
78-
DeployDefaultComponent(chartGroupInstallRequest *appStoreBean.ChartGroupInstallRequest) (*appStoreBean.ChartGroupInstallAppRes, error)
7978
FindAppDetailsForAppstoreApplication(installedAppId, envId int) (bean2.AppDetailContainer, error)
8079
}
8180

@@ -469,6 +468,7 @@ func (impl InstalledAppServiceImpl) GetInstalledAppVersion(id int) (*appStoreBea
469468
AppStoreId: app.AppStoreApplicationVersion.AppStoreId,
470469
AppStoreName: app.AppStoreApplicationVersion.AppStore.Name,
471470
Deprecated: app.AppStoreApplicationVersion.Deprecated,
471+
GitOpsRepoName: app.InstalledApp.GitOpsRepoName,
472472
}
473473
return installAppVersion, err
474474
}
@@ -859,7 +859,7 @@ func (impl *InstalledAppServiceImpl) Subscribe() error {
859859
func (impl *InstalledAppServiceImpl) DeployDefaultChartOnCluster(bean *cluster2.ClusterBean, userId int32) (bool, error) {
860860
// STEP 1 - create environment with name "devton"
861861
impl.logger.Infow("STEP 1", "create environment for cluster component", bean)
862-
envName := fmt.Sprintf("%s-%s", bean.ClusterName, DEFAULT_ENVIRONMENT_OR_NAMESPACE_OR_PROJECT)
862+
envName := fmt.Sprintf("%d-%s", bean.Id, DEFAULT_ENVIRONMENT_OR_NAMESPACE_OR_PROJECT)
863863
env, err := impl.envService.FindOne(envName)
864864
if err != nil && err != pg.ErrNoRows {
865865
return false, err
@@ -944,7 +944,7 @@ func (impl *InstalledAppServiceImpl) DeployDefaultChartOnCluster(bean *cluster2.
944944
return false, err
945945
}
946946
chartGroupInstallChartRequest := &appStoreBean.ChartGroupInstallChartRequest{
947-
AppName: fmt.Sprintf("%s-%s-%s", bean.ClusterName, env.Environment, item.Name),
947+
AppName: fmt.Sprintf("%d-%d-%s", bean.Id, env.Id, item.Name),
948948
EnvironmentId: env.Id,
949949
ValuesOverrideYaml: item.Values,
950950
AppStoreVersion: appStore.AppStoreApplicationVersionId,
@@ -982,8 +982,8 @@ func (impl InstalledAppServiceImpl) DeployDefaultComponent(chartGroupInstallRequ
982982
// raise nats event
983983

984984
var installAppVersionDTOList []*appStoreBean.InstallAppVersionDTO
985-
for _, chartGroupInstall := range chartGroupInstallRequest.ChartGroupInstallChartRequest {
986-
installAppVersionDTO, err := impl.requestBuilderForBulkDeployment(chartGroupInstall, chartGroupInstallRequest.ProjectId, chartGroupInstallRequest.UserId)
985+
for _, installRequest := range chartGroupInstallRequest.ChartGroupInstallChartRequest {
986+
installAppVersionDTO, err := impl.requestBuilderForBulkDeployment(installRequest, chartGroupInstallRequest.ProjectId, chartGroupInstallRequest.UserId)
987987
if err != nil {
988988
impl.logger.Errorw("DeployBulk, error in request builder", "err", err)
989989
return nil, err
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package appStore
2+
3+
import (
4+
"github.com/devtron-labs/devtron/client/argocdServer"
5+
"github.com/devtron-labs/devtron/client/argocdServer/application"
6+
repository2 "github.com/devtron-labs/devtron/client/argocdServer/repository"
7+
"github.com/devtron-labs/devtron/client/pubsub"
8+
repository3 "github.com/devtron-labs/devtron/internal/sql/repository"
9+
"github.com/devtron-labs/devtron/internal/sql/repository/app"
10+
"github.com/devtron-labs/devtron/internal/util"
11+
appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
12+
appStoreDeployment "github.com/devtron-labs/devtron/pkg/appStore/deployment"
13+
appStoreDeploymentFullMode "github.com/devtron-labs/devtron/pkg/appStore/deployment/fullMode"
14+
appStoreDiscoverRepository "github.com/devtron-labs/devtron/pkg/appStore/discover/repository"
15+
appStoreRepository "github.com/devtron-labs/devtron/pkg/appStore/repository"
16+
appStoreValues "github.com/devtron-labs/devtron/pkg/appStore/values"
17+
"github.com/devtron-labs/devtron/pkg/cluster"
18+
"github.com/devtron-labs/devtron/pkg/cluster/repository"
19+
"github.com/devtron-labs/devtron/pkg/team"
20+
"github.com/devtron-labs/devtron/pkg/user"
21+
util2 "github.com/devtron-labs/devtron/pkg/util"
22+
"go.uber.org/zap"
23+
"testing"
24+
)
25+
26+
func TestInstalledAppServiceImpl_DeployDefaultChartOnCluster(t *testing.T) {
27+
type fields struct {
28+
logger *zap.SugaredLogger
29+
installedAppRepository appStoreRepository.InstalledAppRepository
30+
chartTemplateService util.ChartTemplateService
31+
refChartDir appStoreBean.RefChartProxyDir
32+
repositoryService repository2.ServiceClient
33+
appStoreApplicationVersionRepository appStoreDiscoverRepository.AppStoreApplicationVersionRepository
34+
environmentRepository repository.EnvironmentRepository
35+
teamRepository team.TeamRepository
36+
appRepository app.AppRepository
37+
acdClient application.ServiceClient
38+
appStoreValuesService appStoreValues.AppStoreValuesService
39+
pubsubClient *pubsub.PubSubClient
40+
tokenCache *util2.TokenCache
41+
chartGroupDeploymentRepository appStoreRepository.ChartGroupDeploymentRepository
42+
envService cluster.EnvironmentService
43+
ArgoK8sClient argocdServer.ArgoK8sClient
44+
gitFactory *util.GitFactory
45+
aCDAuthConfig *util2.ACDAuthConfig
46+
gitOpsRepository repository3.GitOpsConfigRepository
47+
userService user.UserService
48+
appStoreDeploymentService appStoreDeployment.AppStoreDeploymentService
49+
appStoreDeploymentFullModeService appStoreDeploymentFullMode.AppStoreDeploymentFullModeService
50+
}
51+
type args struct {
52+
bean *cluster.ClusterBean
53+
userId int32
54+
}
55+
tests := []struct {
56+
name string
57+
fields fields
58+
args args
59+
want bool
60+
wantErr bool
61+
}{
62+
// TODO: Add test cases.
63+
}
64+
for _, tt := range tests {
65+
t.Run(tt.name, func(t *testing.T) {
66+
impl := &InstalledAppServiceImpl{
67+
logger: tt.fields.logger,
68+
installedAppRepository: tt.fields.installedAppRepository,
69+
chartTemplateService: tt.fields.chartTemplateService,
70+
refChartDir: tt.fields.refChartDir,
71+
repositoryService: tt.fields.repositoryService,
72+
appStoreApplicationVersionRepository: tt.fields.appStoreApplicationVersionRepository,
73+
environmentRepository: tt.fields.environmentRepository,
74+
teamRepository: tt.fields.teamRepository,
75+
appRepository: tt.fields.appRepository,
76+
acdClient: tt.fields.acdClient,
77+
appStoreValuesService: tt.fields.appStoreValuesService,
78+
pubsubClient: tt.fields.pubsubClient,
79+
tokenCache: tt.fields.tokenCache,
80+
chartGroupDeploymentRepository: tt.fields.chartGroupDeploymentRepository,
81+
envService: tt.fields.envService,
82+
ArgoK8sClient: tt.fields.ArgoK8sClient,
83+
gitFactory: tt.fields.gitFactory,
84+
aCDAuthConfig: tt.fields.aCDAuthConfig,
85+
gitOpsRepository: tt.fields.gitOpsRepository,
86+
userService: tt.fields.userService,
87+
appStoreDeploymentService: tt.fields.appStoreDeploymentService,
88+
appStoreDeploymentFullModeService: tt.fields.appStoreDeploymentFullModeService,
89+
}
90+
got, err := impl.DeployDefaultChartOnCluster(tt.args.bean, tt.args.userId)
91+
if (err != nil) != tt.wantErr {
92+
t.Errorf("DeployDefaultChartOnCluster() error = %v, wantErr %v", err, tt.wantErr)
93+
return
94+
}
95+
if got != tt.want {
96+
t.Errorf("DeployDefaultChartOnCluster() got = %v, want %v", got, tt.want)
97+
}
98+
})
99+
}
100+
}

pkg/appStore/deployment/AppStoreDeploymentService.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ func (impl AppStoreDeploymentServiceImpl) AppStoreDeployOperationDB(installAppVe
134134
installedAppModel.Active = true
135135
if util2.GetDevtronVersion().ServerMode == util2.SERVER_MODE_FULL {
136136
installedAppModel.GitOpsRepoName = impl.GetGitOpsRepoName(appStoreAppVersion.AppStore.Name)
137+
installAppVersionRequest.GitOpsRepoName = installedAppModel.GitOpsRepoName
137138
}
138139
installedApp, err := impl.installedAppRepository.CreateInstalledApp(installedAppModel, tx)
139140
if err != nil {

pkg/appStore/deployment/fullMode/AppStoreDeploymentFullModeService.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (impl AppStoreDeploymentFullModeServiceImpl) AppStoreDeployOperationGIT(ins
123123
Name: appStoreAppVersion.AppStore.Name,
124124
Version: "1.0.1",
125125
}
126-
_, chartGitAttr, err := impl.chartTemplateService.CreateChartProxy(chartMeta, chartPath, template, appStoreAppVersion.Version, environment.Name, installAppVersionRequest.AppName)
126+
_, chartGitAttr, err := impl.chartTemplateService.CreateChartProxy(chartMeta, chartPath, template, appStoreAppVersion.Version, environment.Name, installAppVersionRequest)
127127
if err != nil {
128128
return nil, nil, err
129129
}
@@ -151,7 +151,7 @@ func (impl AppStoreDeploymentFullModeServiceImpl) AppStoreDeployOperationGIT(ins
151151
return nil, nil, err
152152
}
153153

154-
gitOpsRepoName:=impl.chartTemplateService.GetGitOpsRepoName(chartMeta.Name)
154+
gitOpsRepoName := impl.chartTemplateService.GetGitOpsRepoName(chartMeta.Name)
155155
requirmentYamlConfig := &util.ChartConfig{
156156
FileName: appStoreBean.REQUIREMENTS_YAML_FILE,
157157
FileContent: string(requirementDependenciesByte),

0 commit comments

Comments
 (0)