Skip to content

Commit b6d0530

Browse files
authored
Merge pull request #6887 from devtron-labs/fix/cluster-update-validation
fix: enhance validation and error handling in cluster update process
2 parents 951084b + 26ecc4e commit b6d0530

9 files changed

+19
-9
lines changed

client/argocdServer/repoCredsK8sClient/repoCreds.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ func (impl *RepositoryCredsK8sClientImpl) createOrUpdateArgoRepoSecret(argoK8sCo
105105
argoK8sConfig.AcdNamespace,
106106
uniqueSecretName,
107107
secretLabel,
108-
secretData)
108+
secretData,
109+
nil)
109110
if err != nil {
110111
impl.logger.Errorw("error in create/update argocd secret by name", "secretName", uniqueSecretName, "err", err)
111112
return err

cmd/external-app/wire_gen.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cluster/ClusterService.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ package cluster
1919
import (
2020
"context"
2121
"encoding/json"
22+
"errors"
2223
"fmt"
2324
"log"
25+
"net/http"
2426
"net/url"
2527
"sync"
2628
"time"
@@ -198,8 +200,8 @@ func (impl *ClusterServiceImpl) Save(parent context.Context, bean *bean.ClusterB
198200
}
199201

200202
existingModel, err := impl.clusterRepository.FindOne(bean.ClusterName)
201-
if err != nil && err != pg.ErrNoRows {
202-
impl.logger.Error(err)
203+
if err != nil && !errors.Is(err, pg.ErrNoRows) {
204+
impl.logger.Errorw("error in finding cluster for create", "clusterName", bean.ClusterName, "err", err)
203205
return nil, err
204206
}
205207
if existingModel.Id > 0 {
@@ -376,17 +378,23 @@ func (impl *ClusterServiceImpl) FindByIdsWithoutConfig(ids []int) ([]*bean.Clust
376378
func (impl *ClusterServiceImpl) Update(ctx context.Context, bean *bean.ClusterBean, userId int32) (*bean.ClusterBean, error) {
377379
model, err := impl.clusterRepository.FindById(bean.Id)
378380
if err != nil {
379-
impl.logger.Error(err)
381+
impl.logger.Errorw("error in fetching cluster", "clusterId", bean.Id, "err", err)
380382
return nil, err
381383
}
382384
existingModel, err := impl.clusterRepository.FindOne(bean.ClusterName)
383-
if err != nil && err != pg.ErrNoRows {
384-
impl.logger.Error(err)
385+
if err != nil && !errors.Is(err, pg.ErrNoRows) {
386+
impl.logger.Errorw("error in fetching cluster", "clusterName", bean.ClusterName, "err", err)
385387
return nil, err
386388
}
387389
if existingModel.Id > 0 && model.Id != existingModel.Id {
388390
impl.logger.Errorw("error on fetching cluster, duplicate", "name", bean.ClusterName)
389-
return nil, fmt.Errorf("cluster already exists")
391+
errMsg := fmt.Sprintf("cluster already exists with name %q", bean.ClusterName)
392+
return nil, util.NewApiError(http.StatusBadRequest, errMsg, errMsg)
393+
}
394+
if bean.ClusterName != model.ClusterName {
395+
impl.logger.Errorw("cluster name cannot be changed", "oldName", model.ClusterName, "newName", bean.ClusterName)
396+
errMsg := fmt.Sprintf("cluster name cannot be changed")
397+
return nil, util.NewApiError(http.StatusBadRequest, errMsg, errMsg)
390398
}
391399

392400
// check whether config modified or not, if yes create informer with updated config
@@ -417,7 +425,8 @@ func (impl *ClusterServiceImpl) Update(ctx context.Context, bean *bean.ClusterBe
417425
if bean.ServerUrl != model.ServerUrl || bean.InsecureSkipTLSVerify != model.InsecureSkipTlsVerify || dbConfigBearerToken != requestConfigBearerToken || dbConfigTlsKey != requestConfigTlsKey || dbConfigCertData != requestConfigCertData || dbConfigCAData != requestConfigCAData {
418426
if bean.ClusterName == clusterBean.DefaultCluster {
419427
impl.logger.Errorw("default_cluster is reserved by the system and cannot be updated, default_cluster", "name", bean.ClusterName)
420-
return nil, fmt.Errorf("default_cluster is reserved by the system and cannot be updated")
428+
errMsg := fmt.Sprintf("default_cluster is reserved by the system and cannot be updated")
429+
return nil, util.NewApiError(http.StatusBadRequest, errMsg, errMsg)
421430
}
422431
bean.HasConfigOrUrlChanged = true
423432
//validating config
File renamed without changes.
File renamed without changes.

scripts/sql/35004400_velero_backup_restore_tables.down.sql renamed to scripts/sql/34904400_velero_backup_restore_tables.down.sql

File renamed without changes.

scripts/sql/35004400_velero_backup_restore_tables.up.sql renamed to scripts/sql/34904400_velero_backup_restore_tables.up.sql

File renamed without changes.

scripts/sql/35104400_velero_installation_config.down.sql renamed to scripts/sql/35004400_velero_installation_config.down.sql

File renamed without changes.

scripts/sql/35104400_velero_installation_config.up.sql renamed to scripts/sql/35004400_velero_installation_config.up.sql

File renamed without changes.

0 commit comments

Comments
 (0)