@@ -19,8 +19,10 @@ package cluster
1919import (
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
376378func (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
0 commit comments