Skip to content

Commit f62c263

Browse files
Ash-expkartik-579nishant-dprakash100198
authored
chore: App Store refactoring v2 (#4580)
* removed registerInArgo multiple impls * extracted app metrics code * migrated envLevel app metrics code to new service * chore: Removed unused jira and migration integration (#4498) * removed unsued jira integration * removed test-suite-code * db migration conf removal * chore: removed unused injection * chore: removed dead code * added: migration script --------- Co-authored-by: Ash-exp <[email protected]> * chore: App store dead code cleanup and restructuring (#4497) * moved chart-group in seperate code * removed unused dependency * removed dead code * extracted resource tree * moved notes * resource movement * removed unused code * removed unused dependency * commit methods * extracted status update * chore: clean up unused dead code * updated: EA mode docker file * updated: migration number --------- Co-authored-by: Ash-exp <[email protected]> * chart ref refactoring * removed infra metrics db calls * moved app metrics repositories from /internal to /pkg * moved: const and types to bean * removed: unused const * review comments * migrated some methods from chartService to chartRefService * added dt validation service interface * minor refactoring * moved validation method - 1 * wip * removed redundant appMetrics req obj * moved app metrics bindings to wireset * removed multiple dead code * remove redundant dependency * moved ChartGroup router and rest handler to respective folder * stage 1 * gitOps refactoring * moved gitClient code to a common wrapper service * chore: AppStoreDeployment Install flow refactoring * review changes * wip * fix for unsupported charts * refactoring: App Store deployment services * minor cleanup * renamed remote package to git * renamed gitOpsRemoteOpService If and impl * migrated usages of gitService to gitOperationService * shifted git service and all gitOps clients to pkg * gitops repository usages refactor * refactored gitOpsRepository usages * gitlab client creation refactoring * renamed util/ChartService * reverted renaming changes * reverted renaming changes * reverted renaming changes * wip * wip * removed typo * changes * changes * chore: sanity after ent sync * added: todo comment * fix: new api added for getting ciPipelineDetails by only ciPipelineId for CLI (#3708) * new api added for getting ciPipelineDetails by only ciPipelineId * appName field added in ci-pipeline struct * appType field added in ci-pipeline struct * code review comments incorporation --------- Co-authored-by: kartik-579 <[email protected]> Co-authored-by: Nishant <[email protected]> Co-authored-by: nishant <[email protected]> Co-authored-by: Prakash <[email protected]>
1 parent 5272d9e commit f62c263

File tree

74 files changed

+2095
-2028
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+2095
-2028
lines changed

Wire.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ import (
8989
"github.com/devtron-labs/devtron/pkg/appStatus"
9090
"github.com/devtron-labs/devtron/pkg/appStore/chartGroup"
9191
repository4 "github.com/devtron-labs/devtron/pkg/appStore/chartGroup/repository"
92-
appStoreDeploymentFullMode "github.com/devtron-labs/devtron/pkg/appStore/deployment/fullMode"
9392
"github.com/devtron-labs/devtron/pkg/appStore/deployment/service"
9493
appStoreDeploymentGitopsTool "github.com/devtron-labs/devtron/pkg/appStore/deployment/tool"
9594
"github.com/devtron-labs/devtron/pkg/appWorkflow"
@@ -720,8 +719,6 @@ func InitializeApp() (*App, error) {
720719
delete2.NewDeleteServiceFullModeImpl,
721720
wire.Bind(new(delete2.DeleteServiceFullMode), new(*delete2.DeleteServiceFullModeImpl)),
722721

723-
appStoreDeploymentFullMode.NewAppStoreDeploymentFullModeServiceImpl,
724-
wire.Bind(new(appStoreDeploymentFullMode.AppStoreDeploymentFullModeService), new(*appStoreDeploymentFullMode.AppStoreDeploymentFullModeServiceImpl)),
725722
appStoreDeploymentGitopsTool.NewAppStoreDeploymentArgoCdServiceImpl,
726723
wire.Bind(new(appStoreDeploymentGitopsTool.AppStoreDeploymentArgoCdService), new(*appStoreDeploymentGitopsTool.AppStoreDeploymentArgoCdServiceImpl)),
727724
// util2.NewGoJsonSchemaCustomFormatChecker,

api/appStore/InstalledAppRestHandler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import (
2222
"encoding/json"
2323
"errors"
2424
"fmt"
25+
client "github.com/devtron-labs/devtron/api/helm-app/gRPC"
2526
"net/http"
2627
"strconv"
2728
"strings"
2829
"time"
2930

3031
bean2 "github.com/devtron-labs/devtron/api/bean"
31-
client "github.com/devtron-labs/devtron/api/helm-app"
3232
openapi "github.com/devtron-labs/devtron/api/helm-app/openapiClient"
3333
"github.com/devtron-labs/devtron/api/restHandler/common"
3434
"github.com/devtron-labs/devtron/client/argocdServer/application"

api/appStore/deployment/AppStoreDeploymentRestHandler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"encoding/json"
2323
"errors"
2424
"fmt"
25+
service2 "github.com/devtron-labs/devtron/api/helm-app/service"
2526
"net/http"
2627
"strconv"
2728
"strings"
@@ -67,15 +68,15 @@ type AppStoreDeploymentRestHandlerImpl struct {
6768
appStoreDeploymentService service.AppStoreDeploymentService
6869
appStoreDeploymentServiceC appStoreDeploymentCommon.AppStoreDeploymentCommonService
6970
validator *validator.Validate
70-
helmAppService client.HelmAppService
71+
helmAppService service2.HelmAppService
7172
helmAppRestHandler client.HelmAppRestHandler
7273
argoUserService argo.ArgoUserService
7374
attributesService attributes.AttributesService
7475
}
7576

7677
func NewAppStoreDeploymentRestHandlerImpl(Logger *zap.SugaredLogger, userAuthService user.UserService,
7778
enforcer casbin.Enforcer, enforcerUtil rbac.EnforcerUtil, enforcerUtilHelm rbac.EnforcerUtilHelm, appStoreDeploymentService service.AppStoreDeploymentService,
78-
validator *validator.Validate, helmAppService client.HelmAppService, appStoreDeploymentServiceC appStoreDeploymentCommon.AppStoreDeploymentCommonService,
79+
validator *validator.Validate, helmAppService service2.HelmAppService, appStoreDeploymentServiceC appStoreDeploymentCommon.AppStoreDeploymentCommonService,
7980
argoUserService argo.ArgoUserService, attributesService attributes.AttributesService) *AppStoreDeploymentRestHandlerImpl {
8081
return &AppStoreDeploymentRestHandlerImpl{
8182
Logger: Logger,

api/appStore/deployment/CommonDeploymentRestHandler.go

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"context"
2222
"encoding/json"
2323
"fmt"
24+
service2 "github.com/devtron-labs/devtron/api/helm-app/service"
2425
"net/http"
2526
"strconv"
2627
"time"
@@ -31,7 +32,6 @@ import (
3132
"github.com/devtron-labs/devtron/api/restHandler/common"
3233
"github.com/devtron-labs/devtron/internal/util"
3334
appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
34-
appStoreDeploymentCommon "github.com/devtron-labs/devtron/pkg/appStore/deployment/common"
3535
"github.com/devtron-labs/devtron/pkg/appStore/deployment/service"
3636
"github.com/devtron-labs/devtron/pkg/auth/authorisation/casbin"
3737
"github.com/devtron-labs/devtron/pkg/auth/user"
@@ -51,35 +51,33 @@ type CommonDeploymentRestHandler interface {
5151
}
5252

5353
type CommonDeploymentRestHandlerImpl struct {
54-
Logger *zap.SugaredLogger
55-
userAuthService user.UserService
56-
enforcer casbin.Enforcer
57-
enforcerUtil rbac.EnforcerUtil
58-
enforcerUtilHelm rbac.EnforcerUtilHelm
59-
appStoreDeploymentService service.AppStoreDeploymentService
60-
appStoreDeploymentServiceC appStoreDeploymentCommon.AppStoreDeploymentCommonService
61-
validator *validator.Validate
62-
helmAppService client.HelmAppService
63-
helmAppRestHandler client.HelmAppRestHandler
64-
argoUserService argo.ArgoUserService
54+
Logger *zap.SugaredLogger
55+
userAuthService user.UserService
56+
enforcer casbin.Enforcer
57+
enforcerUtil rbac.EnforcerUtil
58+
enforcerUtilHelm rbac.EnforcerUtilHelm
59+
appStoreDeploymentService service.AppStoreDeploymentService
60+
validator *validator.Validate
61+
helmAppService service2.HelmAppService
62+
helmAppRestHandler client.HelmAppRestHandler
63+
argoUserService argo.ArgoUserService
6564
}
6665

6766
func NewCommonDeploymentRestHandlerImpl(Logger *zap.SugaredLogger, userAuthService user.UserService,
6867
enforcer casbin.Enforcer, enforcerUtil rbac.EnforcerUtil, enforcerUtilHelm rbac.EnforcerUtilHelm, appStoreDeploymentService service.AppStoreDeploymentService,
69-
validator *validator.Validate, helmAppService client.HelmAppService, appStoreDeploymentServiceC appStoreDeploymentCommon.AppStoreDeploymentCommonService,
68+
validator *validator.Validate, helmAppService service2.HelmAppService,
7069
helmAppRestHandler client.HelmAppRestHandler, argoUserService argo.ArgoUserService) *CommonDeploymentRestHandlerImpl {
7170
return &CommonDeploymentRestHandlerImpl{
72-
Logger: Logger,
73-
userAuthService: userAuthService,
74-
enforcer: enforcer,
75-
enforcerUtil: enforcerUtil,
76-
enforcerUtilHelm: enforcerUtilHelm,
77-
appStoreDeploymentService: appStoreDeploymentService,
78-
validator: validator,
79-
helmAppService: helmAppService,
80-
appStoreDeploymentServiceC: appStoreDeploymentServiceC,
81-
helmAppRestHandler: helmAppRestHandler,
82-
argoUserService: argoUserService,
71+
Logger: Logger,
72+
userAuthService: userAuthService,
73+
enforcer: enforcer,
74+
enforcerUtil: enforcerUtil,
75+
enforcerUtilHelm: enforcerUtilHelm,
76+
appStoreDeploymentService: appStoreDeploymentService,
77+
validator: validator,
78+
helmAppService: helmAppService,
79+
helmAppRestHandler: helmAppRestHandler,
80+
argoUserService: argoUserService,
8381
}
8482
}
8583
func (handler *CommonDeploymentRestHandlerImpl) getAppOfferingMode(installedAppId string, appId string) (string, *appStoreBean.InstallAppVersionDTO, error) {
@@ -91,7 +89,7 @@ func (handler *CommonDeploymentRestHandlerImpl) getAppOfferingMode(installedAppI
9189
err = &util.ApiError{HttpStatusCode: http.StatusBadRequest, UserMessage: "invalid app id"}
9290
return appOfferingMode, installedAppDto, err
9391
}
94-
installedAppDto, err = handler.appStoreDeploymentServiceC.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
92+
installedAppDto, err = handler.appStoreDeploymentService.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
9593
if err != nil {
9694
err = &util.ApiError{HttpStatusCode: http.StatusBadRequest, UserMessage: "unable to find app in database"}
9795
return appOfferingMode, installedAppDto, err
@@ -117,7 +115,7 @@ func (handler *CommonDeploymentRestHandlerImpl) getAppOfferingMode(installedAppI
117115
err = &util.ApiError{HttpStatusCode: http.StatusBadRequest, UserMessage: "invalid installed app id"}
118116
return appOfferingMode, installedAppDto, err
119117
}
120-
installedAppDto, err = handler.appStoreDeploymentServiceC.GetInstalledAppByInstalledAppId(installedAppId)
118+
installedAppDto, err = handler.appStoreDeploymentService.GetInstalledAppByInstalledAppId(installedAppId)
121119
if err != nil {
122120
err = &util.ApiError{HttpStatusCode: http.StatusBadRequest, UserMessage: "unable to find app in database"}
123121
return appOfferingMode, installedAppDto, err

api/bean/GitOpsConfig.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type GitOpsConfigDto struct {
1313
BitBucketWorkspaceId string `json:"bitBucketWorkspaceId"`
1414
BitBucketProjectKey string `json:"bitBucketProjectKey"`
1515

16+
// TODO refactoring: create different struct for internal fields
1617
GitRepoName string `json:"gitRepoName"`
1718
UserEmailId string `json:"userEmailId"`
1819
Description string `json:"description"`

api/helm-app/HelmAppRestHandler.go

Lines changed: 34 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"context"
55
"encoding/json"
66
"errors"
7+
"github.com/devtron-labs/devtron/api/helm-app/bean"
8+
service2 "github.com/devtron-labs/devtron/api/helm-app/service"
9+
"github.com/devtron-labs/devtron/pkg/appStore/deployment/service"
710
"net/http"
811
"strconv"
912
"strings"
@@ -14,8 +17,6 @@ import (
1417
openapi2 "github.com/devtron-labs/devtron/api/openapi/openapiClient"
1518
"github.com/devtron-labs/devtron/api/restHandler/common"
1619
"github.com/devtron-labs/devtron/internal/util"
17-
appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
18-
appStoreDeploymentCommon "github.com/devtron-labs/devtron/pkg/appStore/deployment/common"
1920
"github.com/devtron-labs/devtron/pkg/attributes"
2021
"github.com/devtron-labs/devtron/pkg/auth/authorisation/casbin"
2122
"github.com/devtron-labs/devtron/pkg/auth/user"
@@ -43,31 +44,32 @@ const HELM_APP_ACCESS_COUNTER = "HelmAppAccessCounter"
4344
const HELM_APP_UPDATE_COUNTER = "HelmAppUpdateCounter"
4445

4546
type HelmAppRestHandlerImpl struct {
46-
logger *zap.SugaredLogger
47-
helmAppService HelmAppService
48-
enforcer casbin.Enforcer
49-
clusterService cluster.ClusterService
50-
enforcerUtil rbac.EnforcerUtilHelm
51-
appStoreDeploymentCommonService appStoreDeploymentCommon.AppStoreDeploymentCommonService
52-
userAuthService user.UserService
53-
attributesService attributes.AttributesService
54-
serverEnvConfig *serverEnvConfig.ServerEnvConfig
47+
logger *zap.SugaredLogger
48+
helmAppService service2.HelmAppService
49+
enforcer casbin.Enforcer
50+
clusterService cluster.ClusterService
51+
enforcerUtil rbac.EnforcerUtilHelm
52+
appStoreDeploymentService service.AppStoreDeploymentService
53+
userAuthService user.UserService
54+
attributesService attributes.AttributesService
55+
serverEnvConfig *serverEnvConfig.ServerEnvConfig
5556
}
5657

5758
func NewHelmAppRestHandlerImpl(logger *zap.SugaredLogger,
58-
helmAppService HelmAppService, enforcer casbin.Enforcer,
59-
clusterService cluster.ClusterService, enforcerUtil rbac.EnforcerUtilHelm, appStoreDeploymentCommonService appStoreDeploymentCommon.AppStoreDeploymentCommonService,
59+
helmAppService service2.HelmAppService, enforcer casbin.Enforcer,
60+
clusterService cluster.ClusterService, enforcerUtil rbac.EnforcerUtilHelm,
61+
appStoreDeploymentService service.AppStoreDeploymentService,
6062
userAuthService user.UserService, attributesService attributes.AttributesService, serverEnvConfig *serverEnvConfig.ServerEnvConfig) *HelmAppRestHandlerImpl {
6163
return &HelmAppRestHandlerImpl{
62-
logger: logger,
63-
helmAppService: helmAppService,
64-
enforcer: enforcer,
65-
clusterService: clusterService,
66-
enforcerUtil: enforcerUtil,
67-
appStoreDeploymentCommonService: appStoreDeploymentCommonService,
68-
userAuthService: userAuthService,
69-
attributesService: attributesService,
70-
serverEnvConfig: serverEnvConfig,
64+
logger: logger,
65+
helmAppService: helmAppService,
66+
enforcer: enforcer,
67+
clusterService: clusterService,
68+
enforcerUtil: enforcerUtil,
69+
appStoreDeploymentService: appStoreDeploymentService,
70+
userAuthService: userAuthService,
71+
attributesService: attributesService,
72+
serverEnvConfig: serverEnvConfig,
7173
}
7274
}
7375

@@ -118,15 +120,15 @@ func (handler *HelmAppRestHandlerImpl) GetApplicationDetail(w http.ResponseWrite
118120
return
119121
}
120122

121-
installedApp, err := handler.appStoreDeploymentCommonService.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
123+
installedApp, err := handler.appStoreDeploymentService.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
122124
if err != nil {
123125
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
124126
return
125127
}
126128

127-
res := &AppDetailAndInstalledAppInfo{
129+
res := &bean.AppDetailAndInstalledAppInfo{
128130
AppDetail: appdetail,
129-
InstalledAppInfo: convertToInstalledAppInfo(installedApp),
131+
InstalledAppInfo: bean.ConvertToInstalledAppInfo(installedApp),
130132
}
131133

132134
common.WriteJsonResp(w, err, res, http.StatusOK)
@@ -219,15 +221,15 @@ func (handler *HelmAppRestHandlerImpl) GetReleaseInfo(w http.ResponseWriter, r *
219221
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
220222
return
221223
}
222-
223-
installedApp, err := handler.appStoreDeploymentCommonService.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
224+
installedApp, err := handler.appStoreDeploymentService.GetInstalledAppByClusterNamespaceAndName(appIdentifier.ClusterId, appIdentifier.Namespace, appIdentifier.ReleaseName)
224225
if err != nil {
225226
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
226227
return
227228
}
228-
res := &ReleaseAndInstalledAppInfo{
229+
230+
res := &bean.ReleaseAndInstalledAppInfo{
229231
ReleaseInfo: releaseInfo,
230-
InstalledAppInfo: convertToInstalledAppInfo(installedApp),
232+
InstalledAppInfo: bean.ConvertToInstalledAppInfo(installedApp),
231233
}
232234

233235
common.WriteJsonResp(w, err, res, http.StatusOK)
@@ -306,7 +308,7 @@ func (handler *HelmAppRestHandlerImpl) DeleteApplication(w http.ResponseWriter,
306308
// validate if the devtron-operator helm release, block that for deletion
307309
if appIdentifier.ReleaseName == handler.serverEnvConfig.DevtronHelmReleaseName &&
308310
appIdentifier.Namespace == handler.serverEnvConfig.DevtronHelmReleaseNamespace &&
309-
appIdentifier.ClusterId == DEFAULT_CLUSTER_ID {
311+
appIdentifier.ClusterId == bean.DEFAULT_CLUSTER_ID {
310312
common.WriteJsonResp(w, errors.New("cannot delete this default helm app"), nil, http.StatusForbidden)
311313
return
312314
}
@@ -323,7 +325,7 @@ func (handler *HelmAppRestHandlerImpl) DeleteApplication(w http.ResponseWriter,
323325
}
324326

325327
func (handler *HelmAppRestHandlerImpl) UpdateApplication(w http.ResponseWriter, r *http.Request) {
326-
request := &UpdateApplicationRequestDto{}
328+
request := &bean.UpdateApplicationRequestDto{}
327329
decoder := json.NewDecoder(r.Body)
328330
err := decoder.Decode(request)
329331
if err != nil {
@@ -346,7 +348,7 @@ func (handler *HelmAppRestHandlerImpl) UpdateApplication(w http.ResponseWriter,
346348
return
347349
}
348350
//RBAC enforcer Ends
349-
request.SourceAppType = SOURCE_EXTERNAL_HELM_APP
351+
request.SourceAppType = bean.SOURCE_EXTERNAL_HELM_APP
350352
// update application externally
351353
res, err := handler.helmAppService.UpdateApplication(r.Context(), appIdentifier, request)
352354
if err != nil {
@@ -422,57 +424,3 @@ func (handler *HelmAppRestHandlerImpl) SaveHelmAppDetailsViewedTelemetryData(w h
422424
common.WriteJsonResp(w, err, nil, http.StatusOK)
423425

424426
}
425-
426-
func convertToInstalledAppInfo(installedApp *appStoreBean.InstallAppVersionDTO) *InstalledAppInfo {
427-
if installedApp == nil {
428-
return nil
429-
}
430-
431-
chartInfo := installedApp.InstallAppVersionChartDTO
432-
433-
return &InstalledAppInfo{
434-
AppId: installedApp.AppId,
435-
EnvironmentName: installedApp.EnvironmentName,
436-
AppOfferingMode: installedApp.AppOfferingMode,
437-
InstalledAppId: installedApp.InstalledAppId,
438-
InstalledAppVersionId: installedApp.InstalledAppVersionId,
439-
AppStoreChartId: chartInfo.AppStoreChartId,
440-
ClusterId: installedApp.ClusterId,
441-
EnvironmentId: installedApp.EnvironmentId,
442-
AppStoreChartRepoName: chartInfo.InstallAppVersionChartRepoDTO.RepoName,
443-
AppStoreChartName: chartInfo.ChartName,
444-
TeamId: installedApp.TeamId,
445-
TeamName: installedApp.TeamName,
446-
}
447-
}
448-
449-
type AppDetailAndInstalledAppInfo struct {
450-
InstalledAppInfo *InstalledAppInfo `json:"installedAppInfo"`
451-
AppDetail *AppDetail `json:"appDetail"`
452-
}
453-
454-
type ReleaseAndInstalledAppInfo struct {
455-
InstalledAppInfo *InstalledAppInfo `json:"installedAppInfo"`
456-
ReleaseInfo *ReleaseInfo `json:"releaseInfo"`
457-
}
458-
459-
type DeploymentHistoryAndInstalledAppInfo struct {
460-
InstalledAppInfo *InstalledAppInfo `json:"installedAppInfo"`
461-
DeploymentHistory []*HelmAppDeploymentDetail `json:"deploymentHistory"`
462-
}
463-
464-
type InstalledAppInfo struct {
465-
AppId int `json:"appId"`
466-
InstalledAppId int `json:"installedAppId"`
467-
InstalledAppVersionId int `json:"installedAppVersionId"`
468-
AppStoreChartId int `json:"appStoreChartId"`
469-
EnvironmentName string `json:"environmentName"`
470-
AppOfferingMode string `json:"appOfferingMode"`
471-
ClusterId int `json:"clusterId"`
472-
EnvironmentId int `json:"environmentId"`
473-
AppStoreChartRepoName string `json:"appStoreChartRepoName"`
474-
AppStoreChartName string `json:"appStoreChartName"`
475-
TeamId int `json:"teamId"`
476-
TeamName string `json:"teamName"`
477-
DeploymentType string `json:"deploymentType"`
478-
}

api/helm-app/bean.go

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)