@@ -25,6 +25,7 @@ import (
25
25
client "github.com/devtron-labs/devtron/api/helm-app/gRPC"
26
26
"github.com/devtron-labs/devtron/pkg/appStore/installedApp/service/FullMode"
27
27
"github.com/devtron-labs/devtron/pkg/appStore/installedApp/service/FullMode/resource"
28
+ "github.com/devtron-labs/devtron/pkg/bean"
28
29
"net/http"
29
30
"strconv"
30
31
"strings"
@@ -69,27 +70,30 @@ type InstalledAppRestHandler interface {
69
70
FetchResourceTree (w http.ResponseWriter , r * http.Request )
70
71
FetchResourceTreeForACDApp (w http.ResponseWriter , r * http.Request )
71
72
FetchNotesForArgoInstalledApp (w http.ResponseWriter , r * http.Request )
73
+ MigrateDeploymentTypeForChartStore (w http.ResponseWriter , r * http.Request )
74
+ TriggerChartStoreAppAfterMigration (w http.ResponseWriter , r * http.Request )
72
75
}
73
76
74
77
type InstalledAppRestHandlerImpl struct {
75
- Logger * zap.SugaredLogger
76
- userAuthService user.UserService
77
- enforcer casbin.Enforcer
78
- enforcerUtil rbac.EnforcerUtil
79
- enforcerUtilHelm rbac.EnforcerUtilHelm
80
- installedAppService FullMode.InstalledAppDBExtendedService
81
- installedAppResourceService resource.InstalledAppResourceService
82
- chartGroupService chartGroup.ChartGroupService
83
- validator * validator.Validate
84
- clusterService cluster.ClusterService
85
- acdServiceClient application.ServiceClient
86
- appStoreDeploymentService service.AppStoreDeploymentService
87
- helmAppClient client.HelmAppClient
88
- argoUserService argo.ArgoUserService
89
- cdApplicationStatusUpdateHandler cron.CdApplicationStatusUpdateHandler
90
- installedAppRepository repository.InstalledAppRepository
91
- K8sApplicationService application2.K8sApplicationService
92
- appCrudOperationService app2.AppCrudOperationService
78
+ Logger * zap.SugaredLogger
79
+ userAuthService user.UserService
80
+ enforcer casbin.Enforcer
81
+ enforcerUtil rbac.EnforcerUtil
82
+ enforcerUtilHelm rbac.EnforcerUtilHelm
83
+ installedAppService FullMode.InstalledAppDBExtendedService
84
+ installedAppResourceService resource.InstalledAppResourceService
85
+ chartGroupService chartGroup.ChartGroupService
86
+ validator * validator.Validate
87
+ clusterService cluster.ClusterService
88
+ acdServiceClient application.ServiceClient
89
+ appStoreDeploymentService service.AppStoreDeploymentService
90
+ helmAppClient client.HelmAppClient
91
+ argoUserService argo.ArgoUserService
92
+ cdApplicationStatusUpdateHandler cron.CdApplicationStatusUpdateHandler
93
+ installedAppRepository repository.InstalledAppRepository
94
+ K8sApplicationService application2.K8sApplicationService
95
+ appCrudOperationService app2.AppCrudOperationService
96
+ installedAppDeploymentTypeChangeService FullMode.InstalledAppDeploymentTypeChangeService
93
97
}
94
98
95
99
func NewInstalledAppRestHandlerImpl (Logger * zap.SugaredLogger , userAuthService user.UserService ,
@@ -100,25 +104,27 @@ func NewInstalledAppRestHandlerImpl(Logger *zap.SugaredLogger, userAuthService u
100
104
helmAppClient client.HelmAppClient , argoUserService argo.ArgoUserService ,
101
105
cdApplicationStatusUpdateHandler cron.CdApplicationStatusUpdateHandler ,
102
106
installedAppRepository repository.InstalledAppRepository ,
103
- appCrudOperationService app2.AppCrudOperationService ) * InstalledAppRestHandlerImpl {
107
+ appCrudOperationService app2.AppCrudOperationService ,
108
+ installedAppDeploymentTypeChangeService FullMode.InstalledAppDeploymentTypeChangeService ) * InstalledAppRestHandlerImpl {
104
109
return & InstalledAppRestHandlerImpl {
105
- Logger : Logger ,
106
- userAuthService : userAuthService ,
107
- enforcer : enforcer ,
108
- enforcerUtil : enforcerUtil ,
109
- enforcerUtilHelm : enforcerUtilHelm ,
110
- installedAppService : installedAppService ,
111
- installedAppResourceService : installedAppResourceService ,
112
- chartGroupService : chartGroupService ,
113
- validator : validator ,
114
- clusterService : clusterService ,
115
- acdServiceClient : acdServiceClient ,
116
- appStoreDeploymentService : appStoreDeploymentService ,
117
- helmAppClient : helmAppClient ,
118
- argoUserService : argoUserService ,
119
- cdApplicationStatusUpdateHandler : cdApplicationStatusUpdateHandler ,
120
- installedAppRepository : installedAppRepository ,
121
- appCrudOperationService : appCrudOperationService ,
110
+ Logger : Logger ,
111
+ userAuthService : userAuthService ,
112
+ enforcer : enforcer ,
113
+ enforcerUtil : enforcerUtil ,
114
+ enforcerUtilHelm : enforcerUtilHelm ,
115
+ installedAppService : installedAppService ,
116
+ installedAppResourceService : installedAppResourceService ,
117
+ chartGroupService : chartGroupService ,
118
+ validator : validator ,
119
+ clusterService : clusterService ,
120
+ acdServiceClient : acdServiceClient ,
121
+ appStoreDeploymentService : appStoreDeploymentService ,
122
+ helmAppClient : helmAppClient ,
123
+ argoUserService : argoUserService ,
124
+ cdApplicationStatusUpdateHandler : cdApplicationStatusUpdateHandler ,
125
+ installedAppRepository : installedAppRepository ,
126
+ appCrudOperationService : appCrudOperationService ,
127
+ installedAppDeploymentTypeChangeService : installedAppDeploymentTypeChangeService ,
122
128
}
123
129
}
124
130
func (handler * InstalledAppRestHandlerImpl ) FetchAppOverview (w http.ResponseWriter , r * http.Request ) {
@@ -843,3 +849,93 @@ func (handler *InstalledAppRestHandlerImpl) fetchResourceTreeWithHibernateForACD
843
849
cn , _ := w .(http.CloseNotifier )
844
850
handler .installedAppResourceService .FetchResourceTreeWithHibernateForACD (ctx , cn , appDetail )
845
851
}
852
+
853
+ func (handler * InstalledAppRestHandlerImpl ) MigrateDeploymentTypeForChartStore (w http.ResponseWriter , r * http.Request ) {
854
+ userId , err := handler .userAuthService .GetLoggedInUser (r )
855
+ if userId == 0 || err != nil {
856
+ common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
857
+ return
858
+ }
859
+
860
+ decoder := json .NewDecoder (r .Body )
861
+ var migrateAndTriggerReq * bean.DeploymentAppTypeChangeRequest
862
+ err = decoder .Decode (& migrateAndTriggerReq )
863
+ if err != nil {
864
+ handler .Logger .Errorw ("request err, MigrateDeploymentTypeForChartStore" , "payload" , migrateAndTriggerReq , "err" , err )
865
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
866
+ return
867
+ }
868
+ migrateAndTriggerReq .UserId = userId
869
+
870
+ err = handler .validator .Struct (migrateAndTriggerReq )
871
+ if err != nil {
872
+ handler .Logger .Errorw ("validation err, MigrateDeploymentTypeForChartStore" , "payload" , migrateAndTriggerReq , "err" , err )
873
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
874
+ return
875
+ }
876
+
877
+ token := r .Header .Get ("token" )
878
+
879
+ if ok := handler .enforcer .Enforce (token , casbin .ResourceHelmApp , casbin .ActionDelete , "*" ); ! ok {
880
+ common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
881
+ return
882
+ }
883
+
884
+ resp , err := handler .installedAppDeploymentTypeChangeService .MigrateDeploymentType (r .Context (), migrateAndTriggerReq )
885
+ if err != nil {
886
+ handler .Logger .Errorw (err .Error (),
887
+ "payload" , migrateAndTriggerReq ,
888
+ "err" , err )
889
+
890
+ common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
891
+ return
892
+ }
893
+ common .WriteJsonResp (w , nil , resp , http .StatusOK )
894
+ return
895
+ }
896
+
897
+ func (handler * InstalledAppRestHandlerImpl ) TriggerChartStoreAppAfterMigration (w http.ResponseWriter , r * http.Request ) {
898
+ userId , err := handler .userAuthService .GetLoggedInUser (r )
899
+ if userId == 0 || err != nil {
900
+ common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
901
+ return
902
+ }
903
+
904
+ decoder := json .NewDecoder (r .Body )
905
+ var deploymentAppTriggerRequest * bean.DeploymentAppTypeChangeRequest
906
+ err = decoder .Decode (& deploymentAppTriggerRequest )
907
+ if err != nil {
908
+ handler .Logger .Errorw ("request err, TriggerChartStoreAppAfterMigration" , "payload" , deploymentAppTriggerRequest , "err" , err )
909
+
910
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
911
+ return
912
+ }
913
+ deploymentAppTriggerRequest .UserId = userId
914
+
915
+ err = handler .validator .Struct (deploymentAppTriggerRequest )
916
+ if err != nil {
917
+ handler .Logger .Errorw ("validation err, TriggerChartStoreAppAfterMigration" , "payload" , deploymentAppTriggerRequest , "err" , err )
918
+
919
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
920
+ return
921
+ }
922
+
923
+ token := r .Header .Get ("token" )
924
+
925
+ if ok := handler .enforcer .Enforce (token , casbin .ResourceHelmApp , casbin .ActionCreate , "*" ); ! ok {
926
+ common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
927
+ return
928
+ }
929
+
930
+ resp , err := handler .installedAppDeploymentTypeChangeService .TriggerAfterMigration (r .Context (), deploymentAppTriggerRequest )
931
+ if err != nil {
932
+ handler .Logger .Errorw (err .Error (),
933
+ "payload" , deploymentAppTriggerRequest ,
934
+ "err" , err )
935
+
936
+ common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
937
+ return
938
+ }
939
+ common .WriteJsonResp (w , nil , resp , http .StatusOK )
940
+ return
941
+ }
0 commit comments