diff --git a/client/argocdServer/ArgoClientWrapperService.go b/client/argocdServer/ArgoClientWrapperService.go index bfc32f0cf9..86d316b94d 100644 --- a/client/argocdServer/ArgoClientWrapperService.go +++ b/client/argocdServer/ArgoClientWrapperService.go @@ -93,6 +93,8 @@ type ArgoClientWrapperService interface { // GetGitOpsRepoName returns the GitOps repository name, configured for the argoCd app GetGitOpsRepoName(ctx context.Context, appName string) (gitOpsRepoName string, err error) + + GetGitOpsRepoURL(ctx context.Context, appName string) (gitOpsRepoURL string, err error) } type ArgoClientWrapperServiceImpl struct { @@ -290,6 +292,20 @@ func (impl *ArgoClientWrapperServiceImpl) GetGitOpsRepoName(ctx context.Context, return gitOpsRepoName, fmt.Errorf("unable to get any ArgoCd application '%s'", appName) } +func (impl *ArgoClientWrapperServiceImpl) GetGitOpsRepoURL(ctx context.Context, appName string) (gitOpsRepoName string, err error) { + acdApplication, err := impl.acdClient.Get(ctx, &application2.ApplicationQuery{Name: &appName}) + if err != nil { + impl.logger.Errorw("no argo app exists", "acdAppName", appName, "err", err) + return gitOpsRepoName, err + } + // safety checks nil pointers + if acdApplication != nil && acdApplication.Spec.Source != nil { + gitOpsRepoUrl := acdApplication.Spec.Source.RepoURL + return gitOpsRepoUrl, nil + } + return "", fmt.Errorf("unable to get any ArgoCd application '%s'", appName) +} + // createRepoInArgoCd is the wrapper function to Create Repository in ArgoCd func (impl *ArgoClientWrapperServiceImpl) createRepoInArgoCd(ctx context.Context, gitOpsRepoUrl string) error { repo := &v1alpha1.Repository{ diff --git a/pkg/appStore/installedApp/service/AppStoreDeploymentService.go b/pkg/appStore/installedApp/service/AppStoreDeploymentService.go index b522192e17..e52165a16c 100644 --- a/pkg/appStore/installedApp/service/AppStoreDeploymentService.go +++ b/pkg/appStore/installedApp/service/AppStoreDeploymentService.go @@ -607,15 +607,14 @@ func (impl *AppStoreDeploymentServiceImpl) UpdateInstalledApp(ctx context.Contex installedAppDeploymentAction := adapter.NewInstalledAppDeploymentAction(installedApp.DeploymentAppType) // migrate installedApp.GitOpsRepoName to installedApp.GitOpsRepoUrl if util.IsAcdApp(installedApp.DeploymentAppType) && - len(installedApp.GitOpsRepoName) != 0 && len(installedApp.GitOpsRepoUrl) == 0 { - //as the installedApp.GitOpsRepoName is not an empty string; migrate installedApp.GitOpsRepoName to installedApp.GitOpsRepoUrl - gitRepoUrl, err := impl.fullModeDeploymentService.GetGitRepoUrl(installedApp.GitOpsRepoName) + gitRepoUrl, err := impl.fullModeDeploymentService.GetAcdAppGitOpsRepoURL(installedApp.App.AppName, installedApp.Environment.Name) if err != nil { impl.logger.Errorw("error in GitOps repository url migration", "err", err) return nil, err } installedApp.GitOpsRepoUrl = gitRepoUrl + installedApp.GitOpsRepoName = impl.gitOpsConfigReadService.GetGitOpsRepoNameFromUrl(gitRepoUrl) } // migration ends diff --git a/pkg/appStore/installedApp/service/FullMode/deployment/InstalledAppArgoCdService.go b/pkg/appStore/installedApp/service/FullMode/deployment/InstalledAppArgoCdService.go index 8f86b7a193..18e1b95b8f 100644 --- a/pkg/appStore/installedApp/service/FullMode/deployment/InstalledAppArgoCdService.go +++ b/pkg/appStore/installedApp/service/FullMode/deployment/InstalledAppArgoCdService.go @@ -46,6 +46,7 @@ type InstalledAppArgoCdService interface { // UpdateAndSyncACDApps this will update chart info in acd app if required in case of mono repo migration and will refresh argo app UpdateAndSyncACDApps(installAppVersionRequest *appStoreBean.InstallAppVersionDTO, ChartGitAttribute *commonBean.ChartGitAttribute, isMonoRepoMigrationRequired bool, ctx context.Context, tx *pg.Tx) error DeleteACD(acdAppName string, ctx context.Context, isNonCascade bool) error + GetAcdAppGitOpsRepoURL(appName string, environmentName string) (string, error) } func (impl *FullModeDeploymentServiceImpl) GetAcdAppGitOpsRepoName(appName string, environmentName string) (string, error) { @@ -230,3 +231,15 @@ func (impl *FullModeDeploymentServiceImpl) patchAcdApp(ctx context.Context, inst } return nil } + +func (impl *FullModeDeploymentServiceImpl) GetAcdAppGitOpsRepoURL(appName string, environmentName string) (string, error) { + acdToken, err := impl.argoUserService.GetLatestDevtronArgoCdUserToken() + if err != nil { + impl.Logger.Errorw("error in getting acd token", "err", err) + return "", err + } + ctx := context.Background() + ctx = context.WithValue(ctx, "token", acdToken) + acdAppName := fmt.Sprintf("%s-%s", appName, environmentName) + return impl.argoClientWrapperService.GetGitOpsRepoURL(ctx, acdAppName) +}