Skip to content
Merged
Show file tree
Hide file tree
Changes from 172 commits
Commits
Show all changes
173 commits
Select commit Hold shift + click to select a range
808bdee
wip ia optimise
gireesh-naidu Mar 29, 2023
c20a6f3
wip
gireesh-naidu Mar 29, 2023
c33cd18
added otel
gireesh-naidu Mar 29, 2023
a708524
ci workflow status fetch optimised
gireesh-naidu Mar 29, 2023
8ef2fe0
new api to fetch all module and it's status
prakash100198 Mar 29, 2023
ebccd66
optimized query
gireesh-naidu Mar 29, 2023
82cc6ce
ModuleService_test file with test cases added
prakash100198 Mar 29, 2023
69e130c
Merge branch 'main' into fetch-all-installed-module-api
prakash100198 Mar 29, 2023
8adafe6
resources status added in response object and test cases modified acc…
prakash100198 Mar 29, 2023
95c3ea5
Merge branch 'main' into fetch-all-installed-module-api
prakash100198 Mar 29, 2023
c721bc6
test commit
gireesh-naidu Mar 29, 2023
4e85194
app wfs api optimized
kripanshdevtron Mar 29, 2023
3081905
made the ci and cd workflow status fetch async
gireesh-naidu Mar 29, 2023
2583e7d
test commit
gireesh-naidu Mar 29, 2023
1e1af86
Other env min API integrated
prakash100198 Mar 29, 2023
4576faf
Merge branch 'main' into fetch-all-installed-module-api
prakash100198 Mar 29, 2023
45a53db
Merge branch 'main' into other-env-api-optimization
prakash100198 Mar 29, 2023
f3262f6
Merge branch 'other-env-api-optimization' into prakash-common-branch
prakash100198 Mar 29, 2023
f8b9808
trigger view ci config commit
kripanshdevtron Mar 29, 2023
3a5ec30
optimised query
gireesh-naidu Mar 29, 2023
b6a814a
fix
gireesh-naidu Mar 29, 2023
54e9fb8
Merge branch 'main' into rbac-autocomplete-app-api-optimization
gireesh-naidu Mar 29, 2023
298dc02
workflow trigger view API
kripanshdevtron Mar 30, 2023
5b7d981
Merge branch 'wf-status-optimisation' into build-deploy-page-api-wf-s…
gireesh-naidu Mar 30, 2023
f9a1a01
mock generation error fix
gireesh-naidu Mar 30, 2023
5259a68
external ci check added
kripanshdevtron Mar 30, 2023
db1c67d
Merge branch 'build-deploy-page-api-optimized' into build-deploy-page…
kripanshdevtron Mar 30, 2023
8ccf250
further optimization for other-env api
prakash100198 Mar 30, 2023
dceed53
Merge branch 'other-env-api-optimization' into prakash-common-branch
prakash100198 Mar 30, 2023
b01338e
no pipeline exists handling
kripanshdevtron Mar 30, 2023
006bcb2
no pipeline exists handling
kripanshdevtron Mar 30, 2023
7f71d71
fix: optimize get cd artifacts
vishal-dt Mar 30, 2023
52290ac
wip
iamayushm Mar 30, 2023
2492990
external ci optimization
iamayushm Mar 30, 2023
29b87ec
optimization for ci-pipeline-minified api
prakash100198 Mar 30, 2023
edf393f
app detail optimized
vikramdevtron Mar 30, 2023
68f5fa2
app listing optimization WIP
gireesh-naidu Mar 30, 2023
8c458f1
Merge branch 'main' into other-env-api-optimization
prakash100198 Mar 30, 2023
5de5950
Merge branch 'main' into fetch-all-installed-module-api
prakash100198 Mar 30, 2023
071c7ee
Merge branch 'fetch-all-installed-module-api' into prakash-common-branch
prakash100198 Mar 30, 2023
882abdd
Merge branch 'other-env-api-optimization' into prakash-common-branch
prakash100198 Mar 30, 2023
412d78d
Merge branch 'optimize-ci-pipeline-min-api' into prakash-common-branch
prakash100198 Mar 30, 2023
a51bdc4
random commit
prakash100198 Mar 30, 2023
91eb23c
fix
gireesh-naidu Mar 31, 2023
3d8b9b9
appCount fix
gireesh-naidu Mar 31, 2023
e3a0841
super admin fix
gireesh-naidu Mar 31, 2023
5c1ecdd
fix
gireesh-naidu Mar 31, 2023
ba483ca
clone-test-commit
gireesh-naidu Mar 31, 2023
2b4d337
Optimization of fetching cd pipelines api
prakash100198 Mar 31, 2023
4b0a094
Merge branch 'deployment-history-fetch-cd-pipeline-api-optimization' …
prakash100198 Mar 31, 2023
f884c12
Merge branch 'main' into optimize-app-detail
vikramdevtron Mar 31, 2023
5c87303
optimzation
vikramdevtron Mar 31, 2023
0aaea57
rewrite optimized code
vishal-dt Mar 31, 2023
1836ecc
Merge branch 'main' into app_grouping_opt
iamayushm Mar 31, 2023
8c0339e
refactored and optimized ciArtifactRepository code
vishal-dt Mar 31, 2023
5141cc2
fix method signature issue
vishal-dt Mar 31, 2023
44e5805
template override and materials info
kripanshdevtron Mar 31, 2023
3c5fe1d
RBAC enforcer applied on token for super admin check instead of direc…
prakash100198 Mar 31, 2023
7cf066c
api error ignore
kripanshdevtron Mar 31, 2023
28a7ad7
pipeline repo mock updated
kripanshdevtron Mar 31, 2023
a6eac8d
Merge branch 'main' into installed-app-list-api-optimization
prakash100198 Mar 31, 2023
7a82d50
merged with main
vikramdevtron Mar 31, 2023
cb8fa0c
added db migration script for optimization
vikramdevtron Mar 31, 2023
1b574b3
Email batch enforcer applied for faster rbac enforcing
prakash100198 Mar 31, 2023
e3f4786
App list page autocomplete api calls merged into one
prakash100198 Mar 31, 2023
5360dcb
remove get artifacts service method
vishal-dt Apr 1, 2023
a67bbe7
fix sql error
vishal-dt Apr 1, 2023
63d4ac7
add limit to fetch ci artifacts sql query
vishal-dt Apr 1, 2023
baa12f1
optimised app listing on app_name search
gireesh-naidu Apr 1, 2023
d323c2c
Merge branch 'main' into app-listing-optimize
gireesh-naidu Apr 1, 2023
577e71e
further optimization, removed joins of env and cluster table
prakash100198 Apr 1, 2023
9431cd9
Merge branch 'main' into fetch-all-installed-module-api
prakash100198 Apr 1, 2023
e13077f
Merge branch 'main' into optimize-ci-pipeline-min-api
prakash100198 Apr 1, 2023
6229cc4
Merge branch 'main' into other-env-api-optimization
prakash100198 Apr 1, 2023
487c4ab
Merge branch 'main' into deployment-history-fetch-cd-pipeline-api-opt…
prakash100198 Apr 1, 2023
83081f0
Merge branch 'main' into prakash-common-branch
prakash100198 Apr 1, 2023
e5a35a0
Merge branch 'fetch-all-installed-module-api' into prakash-common-branch
prakash100198 Apr 1, 2023
cd482b7
Merge branch 'optimize-ci-pipeline-min-api' into prakash-common-branch
prakash100198 Apr 1, 2023
f9d2b8d
Merge branch 'other-env-api-optimization' into prakash-common-branch
prakash100198 Apr 1, 2023
370339c
Merge branch 'deployment-history-fetch-cd-pipeline-api-optimization' …
prakash100198 Apr 1, 2023
5f84df4
Merge branch 'installed-app-list-api-optimization' into prakash-commo…
prakash100198 Apr 1, 2023
dc0a7eb
Merge branch 'user-permission-helm-api-optimization' into prakash-com…
prakash100198 Apr 1, 2023
cb8a2c3
Merge branch 'app-list-autocomplete-api-calls-merge' into prakash-com…
prakash100198 Apr 1, 2023
3ceafbe
Merge branch 'build-deploy-page-api-optimized' into build-deploy-page…
kripanshdevtron Apr 1, 2023
f6c50c5
Merge branch 'api-optimization' into build-deploy-page-api-wf-status-…
kripanshdevtron Apr 1, 2023
1a3b8c9
minor refactoring
prakash100198 Apr 1, 2023
04e6d48
Merge branch 'app-list-autocomplete-api-calls-merge' into prakash-com…
prakash100198 Apr 1, 2023
73a5a80
merge prakash-common-branch into api-optimization
prakash100198 Apr 1, 2023
e656493
Merge branch 'main' of https://github.com/devtron-labs/devtron into f…
vishal-dt Apr 1, 2023
1d781c4
new API ChartRepoListMin
subhashish-devtron Mar 30, 2023
4b9409c
minor changes
subhashish-devtron Mar 30, 2023
545dd56
Merge branch 'fix-optimize-get-artifacts' of https://github.com/devtr…
vishal-dt Apr 1, 2023
e7d8ff4
merge app_detail_optimization
iamayushm Apr 1, 2023
435bc84
minor fix
prakash100198 Apr 1, 2023
7a3203d
minor fix
prakash100198 Apr 1, 2023
3d3dbbb
merge api optimization
iamayushm Apr 1, 2023
20d2258
correcting api call
iamayushm Apr 1, 2023
7e220aa
apps filtering logic fix
kripanshdevtron Apr 1, 2023
4bea009
Merge branch 'build-deploy-page-api-optimized' into build-deploy-page…
kripanshdevtron Apr 1, 2023
8b640ff
Merge branch 'build-deploy-page-api-wf-status-api-optimized' into api…
kripanshdevtron Apr 1, 2023
1e5575a
Merge branch 'api-optimization' into app_grouping_opt
vikramdevtron Apr 1, 2023
588ff46
getting app count in single query
gireesh-naidu Apr 1, 2023
c6c0c2f
external link single api
iamayushm Apr 1, 2023
c5aef16
external ci index out bond error fix
vikramdevtron Apr 1, 2023
674979d
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
vikramdevtron Apr 1, 2023
dbffa61
added new verify v2 api
vikramdevtron Apr 1, 2023
6dd8103
query build fix
gireesh-naidu Apr 1, 2023
e6c5062
fix
gireesh-naidu Apr 1, 2023
45a0018
refactor code
gireesh-naidu Apr 1, 2023
71578e2
merge app-listing-optimization
gireesh-naidu Apr 1, 2023
b117481
app grouping environment listing fix
vikramdevtron Apr 2, 2023
c5184a1
fix
gireesh-naidu Apr 2, 2023
aa155bc
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 2, 2023
3d02500
app count query fix
gireesh-naidu Apr 2, 2023
ac10dbf
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 2, 2023
fbcbedc
nil ptr fix
gireesh-naidu Apr 2, 2023
cea53a6
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 2, 2023
f0f67ea
sort order fix
gireesh-naidu Apr 2, 2023
b8160f2
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 2, 2023
29bf75e
overvability in app grouping listing
vikramdevtron Apr 3, 2023
d1dea39
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
vikramdevtron Apr 3, 2023
4ab75b8
app grouping obsevability added
vikramdevtron Apr 3, 2023
d63eb75
merge app/autocomplete
gireesh-naidu Apr 3, 2023
c78cfa1
cluster Id added in env response
prakash100198 Apr 3, 2023
3150bf0
Merge branch 'app-list-autocomplete-api-calls-merge' into api-optimiz…
prakash100198 Apr 3, 2023
ce46734
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
prakash100198 Apr 3, 2023
4a545b7
minor fix
prakash100198 Apr 3, 2023
b001491
rbac optimiation on deployment status for app grouping
vikramdevtron Apr 3, 2023
03da0bb
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
vikramdevtron Apr 3, 2023
fe49d80
empty env list at the time of app creation handling
prakash100198 Apr 3, 2023
9c87f7b
Merge branch 'other-env-api-optimization' into api-optimization
prakash100198 Apr 3, 2023
8ceee83
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
prakash100198 Apr 3, 2023
cc745b7
nil pointer check
prakash100198 Apr 3, 2023
3a61e77
Merge branch 'deployment-history-fetch-cd-pipeline-api-optimization' …
prakash100198 Apr 3, 2023
b8c5fb1
combined both versions of appListing
gireesh-naidu Apr 3, 2023
986d103
clusterId field added in env response
prakash100198 Apr 3, 2023
cada689
made previous api compatible with new FE changes
gireesh-naidu Apr 3, 2023
c30da67
merge app-listing-optimize branch
gireesh-naidu Apr 3, 2023
748a42f
Merge branch 'main' into api-optimization
vikramdevtron Apr 4, 2023
d2d1345
optimize external ci fetch
vikramdevtron Apr 4, 2023
e993542
feat: external helm app release cache (#3225)
iamayushm Apr 4, 2023
ad81f71
fix: hibernating status
iamayushm Apr 4, 2023
5ce8c7e
empty envs with cluster or namepsace selected
gireesh-naidu Apr 4, 2023
315b19a
empty envs with cluster or namepsace selected
gireesh-naidu Apr 5, 2023
2a421f9
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 5, 2023
e0db292
ci and cd pipeline fetch further optimizations
vikramdevtron Apr 5, 2023
b7299cf
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
vikramdevtron Apr 5, 2023
c0e77b3
pipeline strategy removed from response
vikramdevtron Apr 5, 2023
cb8fb85
fixing hibernating status
iamayushm Apr 5, 2023
67184e5
removing redundant logic
iamayushm Apr 5, 2023
6092aba
reduced packet size for app grouping
vikramdevtron Apr 5, 2023
029dd29
optimize deployment timeline
vikramdevtron Apr 5, 2023
3bfafe4
removed clone app test code
gireesh-naidu Apr 6, 2023
5cfe357
parent ci-pipeline status fix
gireesh-naidu Apr 6, 2023
14ff2f9
external ci fix added for bulk fetch
vikramdevtron Apr 7, 2023
c70fb89
made limit and offset query part conditional
gireesh-naidu Apr 7, 2023
cb49390
added new api for app grouping app list
gireesh-naidu Apr 7, 2023
bb929a5
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 7, 2023
17550c5
apply rbac
gireesh-naidu Apr 7, 2023
3cce4d0
end point created
gireesh-naidu Apr 7, 2023
a7dd800
sending apps count
gireesh-naidu Apr 7, 2023
816f960
parent AppId for linked ci pipeline
kripanshdevtron Apr 7, 2023
7a78d91
Merge branch 'api-optimization' of https://github.com/devtron-labs/de…
kripanshdevtron Apr 7, 2023
5fe3ecc
made params optional
gireesh-naidu Apr 7, 2023
a6c356a
Merge branch 'app-listing-optimize' into api-optimization
gireesh-naidu Apr 7, 2023
7780c31
appId missing bug fix in deployment status api
gireesh-naidu Apr 7, 2023
88ba6e9
review changes
vikramdevtron Apr 10, 2023
5a3a75a
optimized applications list for app configuration on grouping
vikramdevtron Apr 10, 2023
898e3e1
error handling
vikramdevtron Apr 10, 2023
80dece0
code review changes
gireesh-naidu Apr 11, 2023
316a67f
fixed scan results issue
vikramdevtron Apr 12, 2023
c37237e
fixed scan results issue
vikramdevtron Apr 12, 2023
dd80778
Merge branch 'main' into api-optimization
vikramdevtron Apr 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions api/appStore/AppStoreRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ func (router AppStoreRouterImpl) Init(configRouter *mux.Router) {
configRouter.Path("/installed-app/detail").Queries("installed-app-id", "{installed-app-id}").Queries("env-id", "{env-id}").
HandlerFunc(router.deployRestHandler.FetchAppDetailsForInstalledApp).
Methods("GET")
configRouter.Path("/installed-app/detail/resource-tree").Queries("installed-app-id", "{installed-app-id}").Queries("env-id", "{env-id}").
HandlerFunc(router.deployRestHandler.FetchResourceTree).
Methods("GET")
configRouter.Path("/installed-app/resource/hibernate").Queries("installed-app-id", "{installed-app-id}").Queries("env-id", "{env-id}").
HandlerFunc(router.deployRestHandler.FetchResourceTreeForACDApp).
Methods("GET")
Expand Down
84 changes: 55 additions & 29 deletions api/appStore/InstalledAppRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
"github.com/devtron-labs/devtron/internal/middleware"
util2 "github.com/devtron-labs/devtron/internal/util"
appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
"github.com/devtron-labs/devtron/pkg/appStore/deployment/repository"
"github.com/devtron-labs/devtron/pkg/appStore/deployment/service"
"github.com/devtron-labs/devtron/pkg/cluster"
"github.com/devtron-labs/devtron/pkg/user"
Expand All @@ -53,6 +54,7 @@ type InstalledAppRestHandler interface {
CheckAppExists(w http.ResponseWriter, r *http.Request)
DefaultComponentInstallation(w http.ResponseWriter, r *http.Request)
FetchAppDetailsForInstalledApp(w http.ResponseWriter, r *http.Request)
FetchResourceTree(w http.ResponseWriter, r *http.Request)
FetchResourceTreeForACDApp(w http.ResponseWriter, r *http.Request)
FetchNotesForArgoInstalledApp(w http.ResponseWriter, r *http.Request)
}
Expand Down Expand Up @@ -194,12 +196,7 @@ func (handler InstalledAppRestHandlerImpl) GetAllInstalledApp(w http.ResponseWri
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
isActionUserSuperAdmin, err := handler.userAuthService.IsSuperAdmin(int(userId))
if err != nil {
handler.Logger.Errorw("request err, GetAllInstalledApp", "err", err, "userId", userId)
common.WriteJsonResp(w, err, "Failed to check is super admin", http.StatusInternalServerError)
return
}
isActionUserSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, "*")
if isActionUserSuperAdmin {
common.WriteJsonResp(w, err, res, http.StatusOK)
return
Expand Down Expand Up @@ -442,7 +439,6 @@ func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledApp(w htt
common.WriteJsonResp(w, err, nil, http.StatusUnauthorized)
return
}

vars := mux.Vars(r)
installedAppId, err := strconv.Atoi(vars["installed-app-id"])
if err != nil {
Expand All @@ -458,13 +454,6 @@ func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledApp(w htt
return
}
handler.Logger.Infow("request payload, FetchAppDetailsForInstalledApp, app store", "installedAppId", installedAppId, "envId", envId)

err = handler.installedAppService.CheckAppExistsByInstalledAppId(installedAppId)
if err == pg.ErrNoRows {
common.WriteJsonResp(w, err, "App not found in database", http.StatusBadRequest)
return
}

appDetail, err := handler.installedAppService.FindAppDetailsForAppstoreApplication(installedAppId, envId)
if err != nil {
handler.Logger.Errorw("service err, FetchAppDetailsForInstalledApp, app store", "err", err, "installedAppId", installedAppId, "envId", envId)
Expand All @@ -474,30 +463,71 @@ func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledApp(w htt

//rbac block starts from here
object, object2 := handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(appDetail.AppName, appDetail.EnvironmentId)

var ok bool

if object2 == "" {
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object)
} else {
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object2)
}
if !ok {
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), nil, http.StatusForbidden)
return
}
common.WriteJsonResp(w, nil, appDetail, http.StatusOK)
}

func (handler *InstalledAppRestHandlerImpl) FetchResourceTree(w http.ResponseWriter, r *http.Request) {
userId, err := handler.userAuthService.GetLoggedInUser(r)
if userId == 0 || err != nil {
common.WriteJsonResp(w, err, nil, http.StatusUnauthorized)
return
}

vars := mux.Vars(r)
installedAppId, err := strconv.Atoi(vars["installed-app-id"])
if err != nil {
handler.Logger.Errorw("request err, FetchAppDetailsForInstalledApp", "err", err, "installedAppId", installedAppId)
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
}
envId, err := strconv.Atoi(vars["env-id"])
if err != nil {
handler.Logger.Errorw("request err, FetchAppDetailsForInstalledApp", "err", err, "installedAppId", installedAppId, "envId", envId)
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
}
handler.Logger.Infow("request payload, FetchAppDetailsForInstalledApp, app store", "installedAppId", installedAppId, "envId", envId)
installedApp, err := handler.installedAppService.CheckAppExistsByInstalledAppId(installedAppId)
if err == pg.ErrNoRows {
common.WriteJsonResp(w, err, "App not found in database", http.StatusBadRequest)
return
}
token := r.Header.Get("token")
object, object2 := handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedApp.App.AppName, installedApp.EnvironmentId)
var ok bool
if object2 == "" {
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object)
} else {
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object2)
}
if !ok {
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), nil, http.StatusForbidden)
return
}
//rback block ends here
if len(appDetail.AppName) > 0 && len(appDetail.EnvironmentName) > 0 {
err = handler.fetchResourceTree(w, r, &appDetail)
if appDetail.DeploymentAppType == util2.PIPELINE_DEPLOYMENT_TYPE_ACD {

resourceTreeAndNotesContainer := bean2.ResourceTreeAndNotesContainer{}
resourceTreeAndNotesContainer.ResourceTree = map[string]interface{}{}

if len(installedApp.App.AppName) > 0 && len(installedApp.Environment.Name) > 0 {
err = handler.fetchResourceTree(w, r, &resourceTreeAndNotesContainer, *installedApp)
if installedApp.DeploymentAppType == util2.PIPELINE_DEPLOYMENT_TYPE_ACD {
apiError, ok := err.(*util2.ApiError)
if ok && apiError != nil {
if apiError.Code == constants.AppDetailResourceTreeNotFound && appDetail.DeploymentAppDeleteRequest == true {
if apiError.Code == constants.AppDetailResourceTreeNotFound && installedApp.DeploymentAppDeleteRequest == true {
err = handler.installedAppService.MarkGitOpsInstalledAppsDeletedIfArgoAppIsDeleted(installedAppId, envId)
appDeleteErr, appDeleteErrOk := err.(*util2.ApiError)
if appDeleteErrOk && appDeleteErr != nil {
common.WriteJsonResp(w, fmt.Errorf(appDeleteErr.InternalMessage), nil, appDeleteErr.HttpStatusCode)
handler.Logger.Errorw(appDeleteErr.InternalMessage)
return
}
}
Expand All @@ -506,12 +536,8 @@ func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledApp(w htt
common.WriteJsonResp(w, fmt.Errorf("error in fetching resource tree"), nil, http.StatusInternalServerError)
return
}

} else {
appDetail.ResourceTree = map[string]interface{}{}
handler.Logger.Warnw("appName and envName not found - avoiding resource tree call", "app", appDetail.AppName, "env", appDetail.EnvironmentName)
}
common.WriteJsonResp(w, nil, appDetail, http.StatusOK)
common.WriteJsonResp(w, nil, resourceTreeAndNotesContainer, http.StatusOK)
}

func (handler *InstalledAppRestHandlerImpl) FetchResourceTreeForACDApp(w http.ResponseWriter, r *http.Request) {
Expand Down Expand Up @@ -569,10 +595,10 @@ func (handler *InstalledAppRestHandlerImpl) FetchResourceTreeForACDApp(w http.Re
common.WriteJsonResp(w, err, appDetail, http.StatusOK)
}

func (handler *InstalledAppRestHandlerImpl) fetchResourceTree(w http.ResponseWriter, r *http.Request, appDetail *bean2.AppDetailContainer) error {
func (handler *InstalledAppRestHandlerImpl) fetchResourceTree(w http.ResponseWriter, r *http.Request, resourceTreeAndNotesContainer *bean2.ResourceTreeAndNotesContainer, installedApp repository.InstalledApps) error {
ctx := r.Context()
cn, _ := w.(http.CloseNotifier)
_, err := handler.installedAppService.FetchResourceTree(ctx, cn, appDetail)
err := handler.installedAppService.FetchResourceTree(ctx, cn, resourceTreeAndNotesContainer, installedApp)
return err
}

Expand Down
5 changes: 5 additions & 0 deletions api/bean/AppView.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ type AppEnvironmentContainer struct {
Active bool `json:"-"`
TeamId int `json:"teamId"`
TeamName string `json:"teamName"`
TotalCount int `json:"-"`
}

type DeploymentDetailContainer struct {
Expand Down Expand Up @@ -160,6 +161,10 @@ type AppDetailContainer struct {
ResourceTree map[string]interface{} `json:"resourceTree,omitempty"`
Notes string `json:"notes,omitempty"`
}
type ResourceTreeAndNotesContainer struct {
ResourceTree map[string]interface{} `json:"resourceTree,omitempty"`
Notes string `json:"notes,omitempty"`
}
type Notes struct {
Notes string `json:"gitOpsNotes,omitempty"`
}
Expand Down
25 changes: 24 additions & 1 deletion api/chartRepo/ChartRepositoryRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type ChartBinary struct {
type ChartRepositoryRestHandler interface {
GetChartRepoById(w http.ResponseWriter, r *http.Request)
GetChartRepoList(w http.ResponseWriter, r *http.Request)
GetChartRepoListMin(w http.ResponseWriter, r *http.Request)
CreateChartRepo(w http.ResponseWriter, r *http.Request)
UpdateChartRepo(w http.ResponseWriter, r *http.Request)
ValidateChartRepo(w http.ResponseWriter, r *http.Request)
Expand Down Expand Up @@ -115,13 +116,35 @@ func (handler *ChartRepositoryRestHandlerImpl) GetChartRepoList(w http.ResponseW
handler.Logger.Infow("request payload, GetChartRepoList, app store")
res, err := handler.chartRepositoryService.GetChartRepoList()

if err != nil {
handler.Logger.Errorw("service err, GetChartRepoList, app store", "err", err, "userId", userId)
handler.Logger.Debug(res)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}

err = handler.attributesService.UpdateKeyValueByOne(CHART_STORE_VISITED_COUNTER)
// ignoring error here since it shouldn't break the main call. logging it instead
handler.Logger.Errorw("service err, GetChartRepoList, app store, update visited counter", "err", err, "userId", userId)

common.WriteJsonResp(w, err, res, http.StatusOK)
}

func (handler *ChartRepositoryRestHandlerImpl) GetChartRepoListMin(w http.ResponseWriter, r *http.Request) {
userId, err := handler.userAuthService.GetLoggedInUser(r)
if userId == 0 || err != nil {
common.WriteJsonResp(w, err, nil, http.StatusUnauthorized)
return
}
handler.Logger.Infow("request payload, GetChartRepoListMin, app store")
res, err := handler.chartRepositoryService.GetChartRepoListMin()

if err != nil {
handler.Logger.Errorw("service err, GetChartRepoList, app store", "err", err, "userId", userId)
handler.Logger.Errorw("service err, GetChartRepoListMin, app store", "err", err, "userId", userId)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}

common.WriteJsonResp(w, err, res, http.StatusOK)
}

Expand Down
2 changes: 2 additions & 0 deletions api/chartRepo/ChartRepositoryRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ func (router ChartRepositoryRouterImpl) Init(configRouter *mux.Router) {
HandlerFunc(router.chartRepositoryRestHandler.TriggerChartSyncManual).Methods("POST")
configRouter.Path("/list").
HandlerFunc(router.chartRepositoryRestHandler.GetChartRepoList).Methods("GET")
configRouter.Path("/list/min").
HandlerFunc(router.chartRepositoryRestHandler.GetChartRepoListMin).Methods("GET")
configRouter.Path("/{id}").
HandlerFunc(router.chartRepositoryRestHandler.GetChartRepoById).Methods("GET")
configRouter.Path("/create").
Expand Down
16 changes: 15 additions & 1 deletion api/cluster/EnvironmentRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,13 @@ func (impl EnvironmentRestHandlerImpl) GetCombinedEnvironmentListForDropDown(w h
return
}
token := r.Header.Get("token")
clusters, err := impl.environmentClusterMappingsService.GetCombinedEnvironmentListForDropDown(token, isActionUserSuperAdmin, impl.CheckAuthorizationForGlobalEnvironment)
userEmailId, err := impl.userService.GetEmailFromToken(token)
if err != nil {
impl.logger.Errorw("error in getting user emailId from token", "userId", userId, "token", token)
common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized)
return
}
clusters, err := impl.environmentClusterMappingsService.GetCombinedEnvironmentListForDropDown(userEmailId, isActionUserSuperAdmin, impl.CheckAuthorizationByEmailInBatchForGlobalEnvironment)
if err != nil {
impl.logger.Errorw("service err, GetCombinedEnvironmentListForDropDown", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
Expand All @@ -366,6 +372,14 @@ func (impl EnvironmentRestHandlerImpl) GetCombinedEnvironmentListForDropDown(w h
common.WriteJsonResp(w, err, clusters, http.StatusOK)
}

func (handler EnvironmentRestHandlerImpl) CheckAuthorizationByEmailInBatchForGlobalEnvironment(emailId string, object []string) map[string]bool {
var objectResult map[string]bool
if len(object) > 0 {
objectResult = handler.enforcer.EnforceByEmailInBatch(emailId, casbin.ResourceGlobalEnvironment, casbin.ActionGet, object)
}
return objectResult
}

func (handler EnvironmentRestHandlerImpl) CheckAuthorizationForGlobalEnvironment(token string, object string) bool {
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobalEnvironment, casbin.ActionGet, strings.ToLower(object)); !ok {
return false
Expand Down
22 changes: 14 additions & 8 deletions api/externalLink/ExternalLinkRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,21 +146,28 @@ func (impl ExternalLinkRestHandlerImpl) GetExternalLinks(w http.ResponseWriter,
linkType := v.Get("type")
identifier := v.Get("identifier")

externalLinkAndMonitoringTools := externalLink.ExternalLinkAndMonitoringToolDTO{}
externalLinks := []*externalLink.ExternalLinkDto{}

tools, err := impl.externalLinkService.GetAllActiveTools()
if err != nil && err != pg.ErrNoRows {
impl.logger.Errorw("service err, GetAllActiveTools", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
token := r.Header.Get("token")
if len(identifier) == 0 && len(linkType) == 0 && len(clusterId) == 0 {
if ok := impl.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionGet, "*"); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
return
}
clusterIdNumber := 0
res, err := impl.externalLinkService.FetchAllActiveLinksByLinkIdentifier(nil, clusterIdNumber)
externalLinks, err = impl.externalLinkService.FetchAllActiveLinksByLinkIdentifier(nil, clusterIdNumber)
if err != nil {
impl.logger.Errorw("service err, FetchAllActive", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
common.WriteJsonResp(w, err, res, http.StatusOK)
return

} else if len(identifier) != 0 && len(linkType) != 0 { //api to get external links from app-level external links tab and from app-details page
clusterIdNumber := 0
Expand All @@ -177,18 +184,17 @@ func (impl ExternalLinkRestHandlerImpl) GetExternalLinks(w http.ResponseWriter,
Identifier: identifier,
ClusterId: 0,
}
res, err := impl.externalLinkService.FetchAllActiveLinksByLinkIdentifier(linkIdentifier, clusterIdNumber)
externalLinks, err = impl.externalLinkService.FetchAllActiveLinksByLinkIdentifier(linkIdentifier, clusterIdNumber)
if err != nil {
impl.logger.Errorw("service err, FetchAllActive", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
common.WriteJsonResp(w, err, res, http.StatusOK)
return
}
externalLinkAndMonitoringTools.ExternalLinks = externalLinks
externalLinkAndMonitoringTools.Tools = tools

impl.logger.Errorw("invalid request, FetchAllActive external links", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
common.WriteJsonResp(w, err, externalLinkAndMonitoringTools, http.StatusOK)
return

}
Expand Down
8 changes: 6 additions & 2 deletions api/module/ModuleRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,12 @@ func (impl ModuleRestHandlerImpl) GetModuleInfo(w http.ResponseWriter, r *http.R
params := mux.Vars(r)
moduleName := params["name"]
if len(moduleName) == 0 {
impl.logger.Error("module name is not supplied")
common.WriteJsonResp(w, errors.New("module name is not supplied"), nil, http.StatusBadRequest)
res, err := impl.moduleService.GetAllModuleInfo()
if err != nil {
impl.logger.Errorw("service err, GetAllModuleInfo", "err", err)
return
}
common.WriteJsonResp(w, err, res, http.StatusOK)
return
}

Expand Down
1 change: 1 addition & 0 deletions api/module/ModuleRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ func NewModuleRouterImpl(moduleRestHandler ModuleRestHandler) *ModuleRouterImpl

func (impl ModuleRouterImpl) Init(configRouter *mux.Router) {
configRouter.Path("").HandlerFunc(impl.moduleRestHandler.GetModuleInfo).Queries("name", "{name}").Methods("GET")
Copy link
Contributor Author

@kripanshdevtron kripanshdevtron Apr 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need this if we have below API??

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested the api route, golang didn't take queries as optional, but I wanted to make it optional, that's why I had put it there

configRouter.Path("").HandlerFunc(impl.moduleRestHandler.GetModuleInfo).Methods("GET")
configRouter.Path("/config").HandlerFunc(impl.moduleRestHandler.GetModuleConfig).Queries("name", "{name}").Methods("GET")
configRouter.Path("").HandlerFunc(impl.moduleRestHandler.HandleModuleAction).Queries("name", "{name}").Methods("POST")
}
Loading