Skip to content

Commit d52be33

Browse files
Merge pull request #5980 from devtron-labs/release-candidate-v0.20.0
misc: Release candidate v0.20.0
2 parents 8cd7ab0 + a846895 commit d52be33

File tree

153 files changed

+5179
-2017
lines changed

Some content is hidden

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

153 files changed

+5179
-2017
lines changed

Wire.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func InitializeApp() (*App, error) {
202202
terminal.TerminalWireSet,
203203
build.BuildWireSet,
204204
deployment2.DeploymentWireSet,
205-
argoApplication.ArgoApplicationWireSet,
205+
argoApplication.ArgoApplicationWireSetFull,
206206
fluxApplication.FluxApplicationWireSet,
207207
eventProcessor.EventProcessorWireSet,
208208
workflow3.WorkflowWireSet,

api/appStore/AppStoreRouter.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,6 @@ func (router AppStoreRouterImpl) Init(configRouter *mux.Router) {
8383
HandlerFunc(router.deployRestHandler.CheckAppExists).Methods("POST")
8484
configRouter.Path("/group/install").
8585
HandlerFunc(router.deployRestHandler.DeployBulk).Methods("POST")
86-
configRouter.Path("/installed-app/detail").Queries("installed-app-id", "{installed-app-id}").Queries("env-id", "{env-id}").
87-
HandlerFunc(router.deployRestHandler.FetchAppDetailsForInstalledApp).
88-
Methods("GET")
8986
configRouter.Path("/installed-app/delete/{installedAppId}/non-cascade").
9087
HandlerFunc(router.deployRestHandler.DeleteArgoInstalledAppWithNonCascade).
9188
Methods("DELETE")

api/appStore/InstalledAppRestHandler.go

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ import (
4949
"github.com/devtron-labs/devtron/pkg/auth/authorisation/casbin"
5050
"github.com/devtron-labs/devtron/pkg/auth/user"
5151
"github.com/devtron-labs/devtron/pkg/cluster"
52-
bean3 "github.com/devtron-labs/devtron/pkg/deployment/common/bean"
5352
"github.com/devtron-labs/devtron/util"
5453
"github.com/devtron-labs/devtron/util/argo"
5554
"github.com/devtron-labs/devtron/util/rbac"
@@ -65,7 +64,6 @@ type InstalledAppRestHandler interface {
6564
DeployBulk(w http.ResponseWriter, r *http.Request)
6665
CheckAppExists(w http.ResponseWriter, r *http.Request)
6766
DefaultComponentInstallation(w http.ResponseWriter, r *http.Request)
68-
FetchAppDetailsForInstalledApp(w http.ResponseWriter, r *http.Request)
6967
DeleteArgoInstalledAppWithNonCascade(w http.ResponseWriter, r *http.Request)
7068
FetchAppDetailsForInstalledAppV2(w http.ResponseWriter, r *http.Request)
7169
FetchResourceTree(w http.ResponseWriter, r *http.Request)
@@ -692,90 +690,6 @@ func (handler *InstalledAppRestHandlerImpl) checkNotesAuth(token string, appName
692690
return ok
693691
}
694692

695-
func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledApp(w http.ResponseWriter, r *http.Request) {
696-
userId, err := handler.userAuthService.GetLoggedInUser(r)
697-
if userId == 0 || err != nil {
698-
common.WriteJsonResp(w, err, nil, http.StatusUnauthorized)
699-
return
700-
}
701-
702-
vars := mux.Vars(r)
703-
installedAppId, err := strconv.Atoi(vars["installed-app-id"])
704-
if err != nil {
705-
handler.Logger.Errorw("request err, FetchAppDetailsForInstalledApp", "err", err, "installedAppId", installedAppId)
706-
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
707-
return
708-
}
709-
token := r.Header.Get("token")
710-
envId, err := strconv.Atoi(vars["env-id"])
711-
if err != nil {
712-
handler.Logger.Errorw("request err, FetchAppDetailsForInstalledApp", "err", err, "installedAppId", installedAppId, "envId", envId)
713-
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
714-
return
715-
}
716-
handler.Logger.Infow("request payload, FetchAppDetailsForInstalledApp, app store", "installedAppId", installedAppId, "envId", envId)
717-
718-
installedApp, err := handler.installedAppService.GetInstalledAppById(installedAppId)
719-
if err == pg.ErrNoRows {
720-
common.WriteJsonResp(w, err, "App not found in database", http.StatusBadRequest)
721-
return
722-
}
723-
if util3.IsExternalChartStoreApp(installedApp.App.DisplayName) {
724-
//this is external app case where app_name is a unique identifier, and we want to fetch resource based on display_name
725-
handler.installedAppService.ChangeAppNameToDisplayNameForInstalledApp(installedApp)
726-
}
727-
728-
appDetail, err := handler.installedAppService.FindAppDetailsForAppstoreApplication(installedAppId, envId)
729-
if err != nil {
730-
handler.Logger.Errorw("service err, FetchAppDetailsForInstalledApp, app store", "err", err, "installedAppId", installedAppId, "envId", envId)
731-
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
732-
return
733-
}
734-
735-
//rbac block starts from here
736-
object, object2 := handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(appDetail.AppName, appDetail.EnvironmentId)
737-
738-
var ok bool
739-
740-
if object2 == "" {
741-
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object)
742-
} else {
743-
ok = handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object) || handler.enforcer.Enforce(token, casbin.ResourceHelmApp, casbin.ActionGet, object2)
744-
}
745-
746-
if !ok {
747-
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), nil, http.StatusForbidden)
748-
return
749-
}
750-
//rback block ends here
751-
resourceTreeAndNotesContainer := bean2.AppDetailsContainer{}
752-
resourceTreeAndNotesContainer.ResourceTree = map[string]interface{}{}
753-
754-
if len(installedApp.App.AppName) > 0 && len(installedApp.Environment.Name) > 0 {
755-
err = handler.fetchResourceTree(w, r, &resourceTreeAndNotesContainer, *installedApp, appDetail.DeploymentConfig, "", "")
756-
if appDetail.DeploymentAppType == util2.PIPELINE_DEPLOYMENT_TYPE_ACD {
757-
apiError, ok := err.(*util2.ApiError)
758-
if ok && apiError != nil {
759-
if apiError.Code == constants.AppDetailResourceTreeNotFound && installedApp.DeploymentAppDeleteRequest == true {
760-
// TODO refactoring: should be performed through nats
761-
err = handler.appStoreDeploymentService.MarkGitOpsInstalledAppsDeletedIfArgoAppIsDeleted(installedAppId, envId)
762-
appDeleteErr, appDeleteErrOk := err.(*util2.ApiError)
763-
if appDeleteErrOk && appDeleteErr != nil {
764-
handler.Logger.Errorw(appDeleteErr.InternalMessage)
765-
return
766-
}
767-
}
768-
}
769-
} else if err != nil {
770-
common.WriteJsonResp(w, fmt.Errorf("error in fetching resource tree"), nil, http.StatusInternalServerError)
771-
return
772-
}
773-
}
774-
appDetail.ResourceTree = resourceTreeAndNotesContainer.ResourceTree
775-
appDetail.Notes = resourceTreeAndNotesContainer.Notes
776-
common.WriteJsonResp(w, nil, appDetail, http.StatusOK)
777-
}
778-
779693
func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledAppV2(w http.ResponseWriter, r *http.Request) {
780694
userId, err := handler.userAuthService.GetLoggedInUser(r)
781695
if userId == 0 || err != nil {
@@ -820,6 +734,8 @@ func (handler *InstalledAppRestHandlerImpl) FetchAppDetailsForInstalledAppV2(w h
820734
}
821735

822736
func (handler *InstalledAppRestHandlerImpl) FetchResourceTree(w http.ResponseWriter, r *http.Request) {
737+
token := r.Header.Get("token")
738+
ctx := context.WithValue(r.Context(), "token", token)
823739
userId, err := handler.userAuthService.GetLoggedInUser(r)
824740
if userId == 0 || err != nil {
825741
common.WriteJsonResp(w, err, nil, http.StatusUnauthorized)
@@ -853,7 +769,6 @@ func (handler *InstalledAppRestHandlerImpl) FetchResourceTree(w http.ResponseWri
853769
common.WriteJsonResp(w, nil, nil, http.StatusOK)
854770
return
855771
}
856-
token := r.Header.Get("token")
857772
object, object2 := handler.enforcerUtil.GetHelmObjectByAppNameAndEnvId(installedApp.App.AppName, installedApp.EnvironmentId)
858773
var ok bool
859774
if object2 == "" {
@@ -876,7 +791,8 @@ func (handler *InstalledAppRestHandlerImpl) FetchResourceTree(w http.ResponseWri
876791
resourceTreeAndNotesContainer.ResourceTree = map[string]interface{}{}
877792

878793
if len(installedApp.App.AppName) > 0 && len(installedApp.Environment.Name) > 0 {
879-
err = handler.fetchResourceTree(w, r, &resourceTreeAndNotesContainer, *installedApp, appDetail.DeploymentConfig, appDetail.HelmReleaseInstallStatus, appDetail.Status)
794+
cn, _ := w.(http.CloseNotifier)
795+
err = handler.installedAppResourceService.FetchResourceTree(ctx, cn, &resourceTreeAndNotesContainer, *installedApp, appDetail.DeploymentConfig, appDetail.HelmReleaseInstallStatus, appDetail.Status)
880796
if appDetail.DeploymentAppType == util2.PIPELINE_DEPLOYMENT_TYPE_ACD {
881797
//resource tree has been fetched now prepare to sync application deployment status with this resource tree call
882798
handler.syncDeploymentStatusWithResourceTreeCall(appDetail)
@@ -968,13 +884,6 @@ func (handler *InstalledAppRestHandlerImpl) FetchResourceTreeForACDApp(w http.Re
968884
common.WriteJsonResp(w, err, appDetail, http.StatusOK)
969885
}
970886

971-
func (handler *InstalledAppRestHandlerImpl) fetchResourceTree(w http.ResponseWriter, r *http.Request, resourceTreeAndNotesContainer *bean2.AppDetailsContainer, installedApp repository.InstalledApps, deploymentConfig *bean3.DeploymentConfig, helmReleaseInstallStatus string, status string) error {
972-
ctx := r.Context()
973-
cn, _ := w.(http.CloseNotifier)
974-
err := handler.installedAppResourceService.FetchResourceTree(ctx, cn, resourceTreeAndNotesContainer, installedApp, deploymentConfig, helmReleaseInstallStatus, status)
975-
return err
976-
}
977-
978887
func (handler *InstalledAppRestHandlerImpl) fetchResourceTreeWithHibernateForACD(w http.ResponseWriter, r *http.Request, appDetail *bean2.AppDetailContainer) {
979888
ctx := r.Context()
980889
cn, _ := w.(http.CloseNotifier)

api/appbean/AppDetail.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,10 @@ type Secret struct {
179179
}
180180

181181
type ConfigMapSecretDataVolumeUsageConfig struct {
182-
MountPath string `json:"mountPath"`
183-
SubPath bool `json:"subPath"`
184-
FilePermission string `json:"filePermission"`
182+
MountPath string `json:"mountPath"`
183+
SubPath bool `json:"subPath"`
184+
FilePermission string `json:"filePermission"`
185+
ESOSubPath []string `json:"esoSubPath"`
185186
}
186187

187188
type ExternalSecret struct {

api/argoApplication/wire_argoApplication.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,21 @@ import (
2222
"github.com/google/wire"
2323
)
2424

25-
var ArgoApplicationWireSet = wire.NewSet(
25+
var ArgoApplicationWireSetFull = wire.NewSet(
26+
read.NewArgoApplicationReadServiceImpl,
27+
wire.Bind(new(read.ArgoApplicationReadService), new(*read.ArgoApplicationReadServiceImpl)),
28+
29+
argoApplication.NewArgoApplicationServiceExtendedServiceImpl,
30+
wire.Bind(new(argoApplication.ArgoApplicationService), new(*argoApplication.ArgoApplicationServiceExtendedImpl)),
31+
32+
NewArgoApplicationRestHandlerImpl,
33+
wire.Bind(new(ArgoApplicationRestHandler), new(*ArgoApplicationRestHandlerImpl)),
34+
35+
NewArgoApplicationRouterImpl,
36+
wire.Bind(new(ArgoApplicationRouter), new(*ArgoApplicationRouterImpl)),
37+
)
38+
39+
var ArgoApplicationWireSetEA = wire.NewSet(
2640
read.NewArgoApplicationReadServiceImpl,
2741
wire.Bind(new(read.ArgoApplicationReadService), new(*read.ArgoApplicationReadServiceImpl)),
2842

api/auth/user/UserRestHandler.go

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,7 @@ func (handler UserRestHandlerImpl) checkRBACForUserCreate(token string, requestS
11901190
}
11911191

11921192
func (handler UserRestHandlerImpl) checkRBACForUserUpdate(token string, userInfo *bean.UserInfo, isUserAlreadySuperAdmin bool, eliminatedRoleFilters,
1193-
eliminatedGroupRoles []*repository.RoleModel) (isAuthorised bool, err error) {
1193+
eliminatedGroupRoles []*repository.RoleModel, mapOfExistingUserRoleGroup map[string]bool) (isAuthorised bool, err error) {
11941194
isActionUserSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionGet, "*")
11951195
requestSuperAdmin := userInfo.SuperAdmin
11961196
if (requestSuperAdmin || isUserAlreadySuperAdmin) && !isActionUserSuperAdmin {
@@ -1241,33 +1241,37 @@ func (handler UserRestHandlerImpl) checkRBACForUserUpdate(token string, userInfo
12411241
}
12421242
}
12431243
if len(roleGroups) > 0 { // auth check inside groups
1244-
groupRoles, err := handler.roleGroupService.FetchRolesForUserRoleGroups(roleGroups)
1245-
if err != nil && err != pg.ErrNoRows {
1246-
handler.logger.Errorw("service err, UpdateUser", "err", err, "payload", roleGroups)
1247-
return false, err
1248-
}
1249-
if len(groupRoles) > 0 {
1250-
for _, groupRole := range groupRoles {
1251-
switch {
1252-
case groupRole.Action == bean.ACTION_SUPERADMIN:
1253-
isAuthorised = isActionUserSuperAdmin
1254-
case groupRole.AccessType == bean.APP_ACCESS_TYPE_HELM || groupRole.Entity == bean2.EntityJobs:
1255-
isAuthorised = isActionUserSuperAdmin
1256-
case len(groupRole.Team) > 0:
1257-
isAuthorised = handler.enforcer.Enforce(token, casbin.ResourceUser, casbin.ActionCreate, groupRole.Team)
1258-
case groupRole.Entity == bean.CLUSTER_ENTITIY:
1259-
isAuthorised = handler.userCommonService.CheckRbacForClusterEntity(groupRole.Cluster, groupRole.Namespace, groupRole.Group, groupRole.Kind, groupRole.Resource, token, handler.CheckManagerAuth)
1260-
case groupRole.Entity == bean.CHART_GROUP_ENTITY:
1261-
isAuthorised = true
1262-
default:
1263-
isAuthorised = false
1264-
}
1265-
if !isAuthorised {
1266-
return false, nil
1244+
//filter out roleGroups (existing has to be ignore while checking rbac)
1245+
filteredRoleGroups := util2.FilterRoleGroupIfAlreadyPresent(roleGroups, mapOfExistingUserRoleGroup)
1246+
if len(filteredRoleGroups) > 0 {
1247+
groupRoles, err := handler.roleGroupService.FetchRolesForUserRoleGroups(roleGroups)
1248+
if err != nil && err != pg.ErrNoRows {
1249+
handler.logger.Errorw("service err, UpdateUser", "err", err, "filteredRoleGroups", filteredRoleGroups)
1250+
return false, err
1251+
}
1252+
if len(groupRoles) > 0 {
1253+
for _, groupRole := range groupRoles {
1254+
switch {
1255+
case groupRole.Action == bean.ACTION_SUPERADMIN:
1256+
isAuthorised = isActionUserSuperAdmin
1257+
case groupRole.AccessType == bean.APP_ACCESS_TYPE_HELM || groupRole.Entity == bean2.EntityJobs:
1258+
isAuthorised = isActionUserSuperAdmin
1259+
case len(groupRole.Team) > 0:
1260+
isAuthorised = handler.enforcer.Enforce(token, casbin.ResourceUser, casbin.ActionCreate, groupRole.Team)
1261+
case groupRole.Entity == bean.CLUSTER_ENTITIY:
1262+
isAuthorised = handler.userCommonService.CheckRbacForClusterEntity(groupRole.Cluster, groupRole.Namespace, groupRole.Group, groupRole.Kind, groupRole.Resource, token, handler.CheckManagerAuth)
1263+
case groupRole.Entity == bean.CHART_GROUP_ENTITY:
1264+
isAuthorised = true
1265+
default:
1266+
isAuthorised = false
1267+
}
1268+
if !isAuthorised {
1269+
return false, nil
1270+
}
12671271
}
1272+
} else {
1273+
isAuthorised = false
12681274
}
1269-
} else {
1270-
isAuthorised = false
12711275
}
12721276
}
12731277
}

api/auth/user/util/util.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,25 @@
1616

1717
package util
1818

19+
import (
20+
"github.com/devtron-labs/devtron/api/bean"
21+
"github.com/devtron-labs/devtron/pkg/auth/user/helper"
22+
)
23+
1924
func IsGroupsPresent(groups []string) bool {
2025
if len(groups) > 0 {
2126
return true
2227
}
2328
return false
2429
}
30+
31+
func FilterRoleGroupIfAlreadyPresent(roleGroups []bean.UserRoleGroup, mapOfExistingUserRoleGroup map[string]bool) []bean.UserRoleGroup {
32+
finalRoleGroups := make([]bean.UserRoleGroup, 0, len(roleGroups))
33+
for _, roleGrp := range roleGroups {
34+
if _, ok := mapOfExistingUserRoleGroup[helper.GetCasbinNameFromRoleGroupName(roleGrp.RoleGroup.Name)]; !ok {
35+
finalRoleGroups = append(finalRoleGroups, roleGrp)
36+
}
37+
}
38+
return finalRoleGroups
39+
40+
}

api/bean/ConfigMapAndSecret.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ type ConfigSecretMap struct {
5454
RoleARN string `json:"roleARN"`
5555
SecretData json.RawMessage `json:"secretData,omitempty"`
5656
SubPath bool `json:"subPath"`
57+
ESOSubPath []string `json:"esoSubPath"`
5758
FilePermission string `json:"filePermission"`
5859
}
5960

@@ -70,7 +71,7 @@ func (configSecretJson *ConfigSecretJson) SetReferencedSecrets(secrets []ConfigS
7071
configSecretJson.Secrets = util.GetReferencedArray(secrets)
7172
}
7273

73-
func (ConfigSecretRootJson) GetTransformedDataForSecretData(data string, mode util.SecretTransformMode) (string, error) {
74+
func GetTransformedDataForSecretData(data string, mode util.SecretTransformMode) (string, error) {
7475
secretsJson := ConfigSecretRootJson{}
7576
err := json.Unmarshal([]byte(data), &secretsJson)
7677
if err != nil {

api/helm-app/service/HelmAppService.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"errors"
2222
"fmt"
2323
"github.com/devtron-labs/common-lib/utils/k8s"
24+
"github.com/devtron-labs/common-lib/utils/k8s/commonBean"
2425
"github.com/devtron-labs/devtron/api/helm-app/bean"
2526
"github.com/devtron-labs/devtron/api/helm-app/gRPC"
2627
"github.com/devtron-labs/devtron/api/helm-app/models"
@@ -234,15 +235,15 @@ func (impl *HelmAppServiceImpl) GetClusterConf(clusterId int) (*gRPC.ClusterConf
234235
}
235236
config := &gRPC.ClusterConfig{
236237
ApiServerUrl: cluster.ServerUrl,
237-
Token: cluster.Config[k8s.BearerToken],
238+
Token: cluster.Config[commonBean.BearerToken],
238239
ClusterId: int32(cluster.Id),
239240
ClusterName: cluster.ClusterName,
240241
InsecureSkipTLSVerify: cluster.InsecureSkipTLSVerify,
241242
}
242243
if cluster.InsecureSkipTLSVerify == false {
243-
config.KeyData = cluster.Config[k8s.TlsKey]
244-
config.CertData = cluster.Config[k8s.CertData]
245-
config.CaData = cluster.Config[k8s.CertificateAuthorityData]
244+
config.KeyData = cluster.Config[commonBean.TlsKey]
245+
config.CertData = cluster.Config[commonBean.CertData]
246+
config.CaData = cluster.Config[commonBean.CertificateAuthorityData]
246247
}
247248
return config, nil
248249
}
@@ -1095,15 +1096,15 @@ func (impl *HelmAppServiceImpl) listApplications(ctx context.Context, clusterIds
10951096
for _, clusterDetail := range clusters {
10961097
config := &gRPC.ClusterConfig{
10971098
ApiServerUrl: clusterDetail.ServerUrl,
1098-
Token: clusterDetail.Config[k8s.BearerToken],
1099+
Token: clusterDetail.Config[commonBean.BearerToken],
10991100
ClusterId: int32(clusterDetail.Id),
11001101
ClusterName: clusterDetail.ClusterName,
11011102
InsecureSkipTLSVerify: clusterDetail.InsecureSkipTLSVerify,
11021103
}
11031104
if clusterDetail.InsecureSkipTLSVerify == false {
1104-
config.KeyData = clusterDetail.Config[k8s.TlsKey]
1105-
config.CertData = clusterDetail.Config[k8s.CertData]
1106-
config.CaData = clusterDetail.Config[k8s.CertificateAuthorityData]
1105+
config.KeyData = clusterDetail.Config[commonBean.TlsKey]
1106+
config.CertData = clusterDetail.Config[commonBean.CertData]
1107+
config.CaData = clusterDetail.Config[commonBean.CertificateAuthorityData]
11071108
}
11081109
req.Clusters = append(req.Clusters, config)
11091110
}

api/restHandler/CoreAppRestHandler.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ func (handler CoreAppRestHandlerImpl) buildAppConfigMaps(appId int, envId int, c
891891
}
892892
var dataObj map[string]interface{}
893893
if data != nil {
894-
err := json.Unmarshal([]byte(data), &dataObj)
894+
err := json.Unmarshal(data, &dataObj)
895895
if err != nil {
896896
handler.logger.Errorw("service err, un-marshaling of data fail in config map", "err", err, "appId", appId)
897897
return nil, err, http.StatusInternalServerError
@@ -1041,6 +1041,7 @@ func (handler CoreAppRestHandlerImpl) buildAppSecrets(appId int, envId int, secr
10411041
globalSecret.DataVolumeUsageConfig = &appBean.ConfigMapSecretDataVolumeUsageConfig{
10421042
SubPath: secret.SubPath,
10431043
FilePermission: secret.FilePermission,
1044+
ESOSubPath: secret.ESOSubPath,
10441045
}
10451046
considerGlobalDefaultData := envId > 0 && secret.Data == nil
10461047
if considerGlobalDefaultData {
@@ -1486,6 +1487,7 @@ func (handler CoreAppRestHandlerImpl) createGlobalSecrets(appId int, userId int3
14861487
secretData.MountPath = dataVolumeUsageConfig.MountPath
14871488
secretData.SubPath = dataVolumeUsageConfig.SubPath
14881489
secretData.FilePermission = dataVolumeUsageConfig.FilePermission
1490+
secretData.ESOSubPath = dataVolumeUsageConfig.ESOSubPath
14891491
}
14901492

14911493
if secret.IsExternal {
@@ -1989,6 +1991,7 @@ func (handler CoreAppRestHandlerImpl) createEnvSecret(appId int, userId int32, e
19891991
secretData.MountPath = secretOverrideDataVolumeUsageConfig.MountPath
19901992
secretData.SubPath = secretOverrideDataVolumeUsageConfig.SubPath
19911993
secretData.FilePermission = secretOverrideDataVolumeUsageConfig.FilePermission
1994+
secretData.ESOSubPath = secretOverrideDataVolumeUsageConfig.ESOSubPath
19921995
}
19931996
var secretDataRequest []*bean2.ConfigData
19941997
secretDataRequest = append(secretDataRequest, secretData)

0 commit comments

Comments
 (0)