Skip to content

Commit bc8cecc

Browse files
Merge pull request #6871 from devtron-labs/vc-empty-ns-fix
misc: Vc empty ns fix
2 parents a46566b + 67ae9f1 commit bc8cecc

File tree

4 files changed

+79
-4
lines changed

4 files changed

+79
-4
lines changed

api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,21 @@ import (
2121
"encoding/json"
2222
"errors"
2323
"fmt"
24+
2425
models2 "github.com/devtron-labs/devtron/internal/sql/models"
2526
bean4 "github.com/devtron-labs/devtron/pkg/auth/user/bean"
2627
util3 "github.com/devtron-labs/devtron/pkg/auth/user/util"
2728
bean3 "github.com/devtron-labs/devtron/pkg/chart/bean"
2829

29-
devtronAppGitOpConfigBean "github.com/devtron-labs/devtron/pkg/chart/gitOpsConfig/bean"
30-
"github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning/repository"
3130
"io"
3231
"net/http"
3332
"strconv"
3433
"strings"
3534
"time"
3635

36+
devtronAppGitOpConfigBean "github.com/devtron-labs/devtron/pkg/chart/gitOpsConfig/bean"
37+
"github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning/repository"
38+
3739
bean2 "github.com/devtron-labs/devtron/api/bean"
3840
"github.com/devtron-labs/devtron/api/restHandler/common"
3941
"github.com/devtron-labs/devtron/internal/sql/repository/helper"
@@ -107,6 +109,7 @@ type DevtronAppDeploymentConfigRestHandler interface {
107109
GetDefaultDeploymentPipelineStrategy(w http.ResponseWriter, r *http.Request)
108110

109111
EnvConfigOverrideCreateNamespace(w http.ResponseWriter, r *http.Request)
112+
UpdateEmptyNamespaceInChartEnvConfigOverride(w http.ResponseWriter, r *http.Request)
110113

111114
DevtronAppDeploymentConfigRestHandlerEnt
112115
}
@@ -2062,6 +2065,36 @@ func (handler *PipelineConfigRestHandlerImpl) EnvConfigOverrideCreateNamespace(w
20622065
common.WriteJsonResp(w, err, createResp, http.StatusOK)
20632066
}
20642067

2068+
func (handler *PipelineConfigRestHandlerImpl) UpdateEmptyNamespaceInChartEnvConfigOverride(w http.ResponseWriter, r *http.Request) {
2069+
userId, err := handler.userAuthService.GetLoggedInUser(r)
2070+
if userId == 0 || err != nil {
2071+
common.HandleUnauthorized(w, r)
2072+
return
2073+
}
2074+
token := r.Header.Get("token")
2075+
2076+
// Check if user is super admin - this is a global operation
2077+
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionUpdate, "*"); !ok {
2078+
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), "Unauthorized User", http.StatusForbidden)
2079+
return
2080+
}
2081+
2082+
handler.Logger.Infow("request received, UpdateEmptyNamespaceInChartEnvConfigOverride", "userId", userId)
2083+
2084+
count, err := handler.propertiesConfigService.UpdateEmptyNamespaceInChartEnvConfigOverride(userId)
2085+
if err != nil {
2086+
handler.Logger.Errorw("service err, UpdateEmptyNamespaceInChartEnvConfigOverride", "err", err)
2087+
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
2088+
return
2089+
}
2090+
2091+
response := map[string]interface{}{
2092+
"message": "Namespace updated successfully from environment table",
2093+
"updatedCount": count,
2094+
}
2095+
common.WriteJsonResp(w, nil, response, http.StatusOK)
2096+
}
2097+
20652098
func (handler *PipelineConfigRestHandlerImpl) IsReadyToTrigger(w http.ResponseWriter, r *http.Request) {
20662099
token := r.Header.Get("token")
20672100
vars := mux.Vars(r)

api/router/app/pipeline/configure/PipelineConfigRouter.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ func (router PipelineConfigRouterImpl) InitPipelineConfigRouter(configRouter *mu
124124
configRouter.Path("/env/reset/{appId}/{environmentId}/{id}").HandlerFunc(router.restHandler.EnvConfigOverrideReset).Methods("DELETE")
125125
configRouter.Path("/env/namespace/{appId}/{environmentId}").HandlerFunc(router.restHandler.EnvConfigOverrideCreateNamespace).Methods("POST")
126126

127+
// this api was made for issue :- https://github.com/devtron-labs/sprint-tasks/issues/2692
128+
configRouter.Path("/env/namespace/populate-empty").HandlerFunc(router.restHandler.UpdateEmptyNamespaceInChartEnvConfigOverride).Methods("GET")
129+
127130
configRouter.Path("/cd-pipeline/workflow/history/{appId}/{environmentId}/{pipelineId}").HandlerFunc(router.restHandler.ListDeploymentHistory).Methods("GET")
128131
configRouter.Path("/cd-pipeline/workflow/logs/{appId}/{environmentId}/{pipelineId}/{workflowId}").HandlerFunc(router.restHandler.GetPrePostDeploymentLogs).Methods("GET")
129132
configRouter.Path("/cd-pipeline/workflow/trigger-info/{appId}/{environmentId}/{pipelineId}/{workflowRunnerId}").HandlerFunc(router.restHandler.FetchCdWorkflowDetails).Methods("GET")

internal/sql/repository/chartConfig/EnvConfigOverrideRepository.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package chartConfig
1818

1919
import (
20+
"time"
21+
2022
"github.com/devtron-labs/devtron/internal/sql/models"
2123
chartRepoRepository "github.com/devtron-labs/devtron/pkg/chartRepo/repository"
2224
"github.com/devtron-labs/devtron/pkg/cluster/environment/repository"
@@ -80,6 +82,8 @@ type EnvConfigOverrideRepository interface {
8082
// as the chartRepoRepository.Chart contains the reference chart(in bytes).
8183
GetAllOverridesForApp(appId int) ([]*EnvConfigOverride, error)
8284
GetDbConnection() *pg.DB
85+
// UpdateEmptyNamespaceInChartEnvConfigOverride updates namespace in chart_env_config_override from environment table for empty namespaces
86+
UpdateEmptyNamespaceInChartEnvConfigOverride(userId int32) (int, error)
8387
}
8488

8589
type EnvConfigOverrideRepositoryImpl struct {
@@ -401,3 +405,23 @@ func (r EnvConfigOverrideRepositoryImpl) GetAllOverridesForApp(appId int) ([]*En
401405
func (r EnvConfigOverrideRepositoryImpl) GetDbConnection() *pg.DB {
402406
return r.dbConnection
403407
}
408+
409+
func (r EnvConfigOverrideRepositoryImpl) UpdateEmptyNamespaceInChartEnvConfigOverride(userId int32) (int, error) {
410+
query := `UPDATE chart_env_config_override
411+
SET namespace = e.namespace,
412+
updated_by = ?,
413+
updated_on = ?
414+
FROM charts c
415+
INNER JOIN app a ON a.id = c.app_id
416+
INNER JOIN chart_env_config_override ce ON ce.chart_id = c.id
417+
INNER JOIN environment e ON e.id = ce.target_environment
418+
WHERE a.active = true
419+
AND (ce.namespace = '' OR ce.namespace IS NULL)
420+
AND chart_env_config_override.id = ce.id`
421+
422+
result, err := r.dbConnection.Exec(query, userId, time.Now())
423+
if err != nil {
424+
return 0, err
425+
}
426+
return result.RowsAffected(), nil
427+
}

pkg/pipeline/PropertiesConfig.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import (
2121
"encoding/json"
2222
errors2 "errors"
2323
"fmt"
24+
"net/http"
25+
"time"
26+
2427
"github.com/devtron-labs/devtron/internal/util"
2528
bean5 "github.com/devtron-labs/devtron/pkg/auth/user/bean"
2629
chartService "github.com/devtron-labs/devtron/pkg/chart"
@@ -38,8 +41,6 @@ import (
3841
repository5 "github.com/devtron-labs/devtron/pkg/variables/repository"
3942
globalUtil "github.com/devtron-labs/devtron/util"
4043
"go.opentelemetry.io/otel"
41-
"net/http"
42-
"time"
4344

4445
chartRepoRepository "github.com/devtron-labs/devtron/pkg/chartRepo/repository"
4546
"github.com/devtron-labs/devtron/pkg/sql"
@@ -68,6 +69,9 @@ type PropertiesConfigService interface {
6869
FetchEnvProperties(appId, envId, chartRefId int) (*bean4.EnvConfigOverride, error)
6970
ChangeChartRefForEnvConfigOverride(ctx context.Context, request *bean3.ChartRefChangeRequest, userId int32) (*bean.EnvironmentProperties, error)
7071

72+
// UpdateEmptyNamespaceInChartEnvConfigOverride updates namespace in chart_env_config_override from environment table for empty namespaces
73+
UpdateEmptyNamespaceInChartEnvConfigOverride(userId int32) (int, error)
74+
7175
PropertiesConfigServiceEnt
7276
}
7377
type PropertiesConfigServiceImpl struct {
@@ -805,3 +809,14 @@ func (impl *PropertiesConfigServiceImpl) createEnvConfigOverrideWithChart(ctx co
805809
}
806810
return createResp, nil
807811
}
812+
813+
func (impl *PropertiesConfigServiceImpl) UpdateEmptyNamespaceInChartEnvConfigOverride(userId int32) (int, error) {
814+
count, err := impl.envConfigRepo.UpdateEmptyNamespaceInChartEnvConfigOverride(userId)
815+
if err != nil {
816+
impl.logger.Errorw("error in updating namespace from environment table", "err", err)
817+
return 0, err
818+
}
819+
820+
impl.logger.Infow("successfully updated namespace for env config overrides from environment table", "count", count)
821+
return count, nil
822+
}

0 commit comments

Comments
 (0)