Skip to content

Commit 580e8ab

Browse files
authored
repo url and name handling with argocd (#5445)
1 parent ce9a46f commit 580e8ab

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

client/argocdServer/ArgoClientWrapperService.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ type ArgoClientWrapperService interface {
9393

9494
// GetGitOpsRepoName returns the GitOps repository name, configured for the argoCd app
9595
GetGitOpsRepoName(ctx context.Context, appName string) (gitOpsRepoName string, err error)
96+
97+
GetGitOpsRepoURL(ctx context.Context, appName string) (gitOpsRepoURL string, err error)
9698
}
9799

98100
type ArgoClientWrapperServiceImpl struct {
@@ -290,6 +292,20 @@ func (impl *ArgoClientWrapperServiceImpl) GetGitOpsRepoName(ctx context.Context,
290292
return gitOpsRepoName, fmt.Errorf("unable to get any ArgoCd application '%s'", appName)
291293
}
292294

295+
func (impl *ArgoClientWrapperServiceImpl) GetGitOpsRepoURL(ctx context.Context, appName string) (gitOpsRepoName string, err error) {
296+
acdApplication, err := impl.acdClient.Get(ctx, &application2.ApplicationQuery{Name: &appName})
297+
if err != nil {
298+
impl.logger.Errorw("no argo app exists", "acdAppName", appName, "err", err)
299+
return gitOpsRepoName, err
300+
}
301+
// safety checks nil pointers
302+
if acdApplication != nil && acdApplication.Spec.Source != nil {
303+
gitOpsRepoUrl := acdApplication.Spec.Source.RepoURL
304+
return gitOpsRepoUrl, nil
305+
}
306+
return "", fmt.Errorf("unable to get any ArgoCd application '%s'", appName)
307+
}
308+
293309
// createRepoInArgoCd is the wrapper function to Create Repository in ArgoCd
294310
func (impl *ArgoClientWrapperServiceImpl) createRepoInArgoCd(ctx context.Context, gitOpsRepoUrl string) error {
295311
repo := &v1alpha1.Repository{

pkg/appStore/installedApp/service/AppStoreDeploymentService.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -607,15 +607,14 @@ func (impl *AppStoreDeploymentServiceImpl) UpdateInstalledApp(ctx context.Contex
607607
installedAppDeploymentAction := adapter.NewInstalledAppDeploymentAction(installedApp.DeploymentAppType)
608608
// migrate installedApp.GitOpsRepoName to installedApp.GitOpsRepoUrl
609609
if util.IsAcdApp(installedApp.DeploymentAppType) &&
610-
len(installedApp.GitOpsRepoName) != 0 &&
611610
len(installedApp.GitOpsRepoUrl) == 0 {
612-
//as the installedApp.GitOpsRepoName is not an empty string; migrate installedApp.GitOpsRepoName to installedApp.GitOpsRepoUrl
613-
gitRepoUrl, err := impl.fullModeDeploymentService.GetGitRepoUrl(installedApp.GitOpsRepoName)
611+
gitRepoUrl, err := impl.fullModeDeploymentService.GetAcdAppGitOpsRepoURL(installedApp.App.AppName, installedApp.Environment.Name)
614612
if err != nil {
615613
impl.logger.Errorw("error in GitOps repository url migration", "err", err)
616614
return nil, err
617615
}
618616
installedApp.GitOpsRepoUrl = gitRepoUrl
617+
installedApp.GitOpsRepoName = impl.gitOpsConfigReadService.GetGitOpsRepoNameFromUrl(gitRepoUrl)
619618
}
620619
// migration ends
621620

pkg/appStore/installedApp/service/FullMode/deployment/InstalledAppArgoCdService.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type InstalledAppArgoCdService interface {
4646
// UpdateAndSyncACDApps this will update chart info in acd app if required in case of mono repo migration and will refresh argo app
4747
UpdateAndSyncACDApps(installAppVersionRequest *appStoreBean.InstallAppVersionDTO, ChartGitAttribute *commonBean.ChartGitAttribute, isMonoRepoMigrationRequired bool, ctx context.Context, tx *pg.Tx) error
4848
DeleteACD(acdAppName string, ctx context.Context, isNonCascade bool) error
49+
GetAcdAppGitOpsRepoURL(appName string, environmentName string) (string, error)
4950
}
5051

5152
func (impl *FullModeDeploymentServiceImpl) GetAcdAppGitOpsRepoName(appName string, environmentName string) (string, error) {
@@ -230,3 +231,15 @@ func (impl *FullModeDeploymentServiceImpl) patchAcdApp(ctx context.Context, inst
230231
}
231232
return nil
232233
}
234+
235+
func (impl *FullModeDeploymentServiceImpl) GetAcdAppGitOpsRepoURL(appName string, environmentName string) (string, error) {
236+
acdToken, err := impl.argoUserService.GetLatestDevtronArgoCdUserToken()
237+
if err != nil {
238+
impl.Logger.Errorw("error in getting acd token", "err", err)
239+
return "", err
240+
}
241+
ctx := context.Background()
242+
ctx = context.WithValue(ctx, "token", acdToken)
243+
acdAppName := fmt.Sprintf("%s-%s", appName, environmentName)
244+
return impl.argoClientWrapperService.GetGitOpsRepoURL(ctx, acdAppName)
245+
}

0 commit comments

Comments
 (0)