@@ -22,9 +22,11 @@ import (
22
22
"fmt"
23
23
informerBean "github.com/devtron-labs/common-lib/informer"
24
24
"github.com/devtron-labs/common-lib/utils/k8s/commonBean"
25
+ bean3 "github.com/devtron-labs/devtron/pkg/argoApplication/bean"
25
26
"github.com/devtron-labs/devtron/pkg/cluster/adapter"
26
27
"github.com/devtron-labs/devtron/pkg/cluster/bean"
27
28
repository2 "github.com/devtron-labs/devtron/pkg/cluster/environment/repository"
29
+ "github.com/devtron-labs/devtron/pkg/cluster/helper"
28
30
"github.com/devtron-labs/devtron/pkg/cluster/read"
29
31
cronUtil "github.com/devtron-labs/devtron/util/cron"
30
32
"github.com/robfig/cron/v3"
@@ -227,22 +229,9 @@ func (impl *ClusterServiceImpl) Save(parent context.Context, bean *bean.ClusterB
227
229
impl .SyncNsInformer (bean )
228
230
}
229
231
impl .logger .Info ("saving secret for cluster informer" )
230
- k8sClient , err := impl .K8sUtil .GetCoreV1ClientInCluster ()
231
- if err != nil {
232
- impl .logger .Errorw ("error in getting k8s Client in cluster" , "err" , err , "clusterName" , bean .ClusterName )
233
- return bean , nil
234
- }
235
- //creating cluster secret, this secret will be read informer in kubelink to know that a new cluster has been added
236
- secretName := ParseSecretNameForKubelinkInformer (bean .Id )
237
-
238
- data := make (map [string ][]byte )
239
- data [informerBean .SecretFieldClusterId ] = []byte (fmt .Sprintf ("%v" , bean .Id ))
240
- data [informerBean .SecretFieldAction ] = []byte (informerBean .ClusterActionAdd )
241
- data [clusterBean .SecretFieldUpdatedOn ] = []byte (time .Now ().String ()) // this field will ensure that informer detects change as other fields can be constant even if cluster config changes
242
- // TODO Asutosh: Why not UPSERT ??
243
- _ , err = impl .K8sUtil .CreateSecret (clusterBean .DefaultNamespace , data , secretName , informerBean .ClusterModifyEventSecretType , k8sClient , nil , nil )
244
- if err != nil {
245
- impl .logger .Errorw ("error in creating secret for informers" , "secretName" , secretName , "err" , err )
232
+ cmData , labels := helper .CreateClusterModifyEventData (bean .Id , informerBean .ClusterActionAdd )
233
+ if err = impl .upsertClusterConfigMap (bean , cmData , labels ); err != nil {
234
+ impl .logger .Errorw ("error upserting cluster secret" , "cmData" , cmData , "err" , err )
246
235
return bean , nil
247
236
}
248
237
return bean , nil
@@ -469,42 +458,39 @@ func (impl *ClusterServiceImpl) Update(ctx context.Context, bean *bean.ClusterBe
469
458
}
470
459
impl .logger .Infow ("saving secret for cluster informer" )
471
460
if bean .HasConfigOrUrlChanged {
472
- data := make (map [string ][]byte )
473
- data [informerBean .SecretFieldClusterId ] = []byte (fmt .Sprintf ("%v" , bean .Id ))
474
- data [informerBean .SecretFieldAction ] = []byte (informerBean .ClusterActionUpdate )
475
- data [clusterBean .SecretFieldUpdatedOn ] = []byte (time .Now ().String ()) // this field will ensure that informer detects change as other fields can be constant even if cluster config changes
476
- if err = impl .upsertClusterSecret (bean , data ); err != nil {
477
- impl .logger .Errorw ("error upserting cluster secret" , "data" , data , "err" , err )
461
+ cmData , labels := helper .CreateClusterModifyEventData (bean .Id , informerBean .ClusterActionUpdate )
462
+ if err = impl .upsertClusterConfigMap (bean , cmData , labels ); err != nil {
463
+ impl .logger .Errorw ("error upserting cluster secret" , "cmData" , cmData , "err" , err )
478
464
// TODO Asutosh: why error is not propagated ??
479
465
return bean , nil
480
466
}
481
467
}
482
468
return bean , nil
483
469
}
484
470
485
- func (impl * ClusterServiceImpl ) upsertClusterSecret (bean * bean.ClusterBean , data map [string ][] byte ) error {
471
+ func (impl * ClusterServiceImpl ) upsertClusterConfigMap (bean * bean.ClusterBean , data , labels map [string ]string ) error {
486
472
k8sClient , err := impl .K8sUtil .GetCoreV1ClientInCluster ()
487
473
if err != nil {
488
474
impl .logger .Errorw ("error in getting k8s client" , "err" , err )
489
475
return err
490
476
}
491
- // below secret will act as an event for informer running on a secret object in kubelink and kubewatch
492
- secretName := ParseSecretNameForKubelinkInformer (bean .Id )
493
- secret , err := impl .K8sUtil .GetSecret ( clusterBean . DefaultNamespace , secretName , k8sClient )
477
+ // below cm will act as an event for informer running on a secret object in kubelink and kubewatch
478
+ cmName := ParseCmNameForK8sInformerOnClusterEvent (bean .Id )
479
+ configMap , err := impl .K8sUtil .GetConfigMap ( bean3 . DevtronCDNamespae , cmName , k8sClient )
494
480
if err != nil && ! k8sError .IsNotFound (err ) {
495
- impl .logger .Errorw ("error in getting cluster secret " , "secretName " , secretName , "err" , err )
481
+ impl .logger .Errorw ("error in getting cluster config map " , "cmName " , cmName , "err" , err )
496
482
return err
497
483
} else if k8sError .IsNotFound (err ) {
498
- _ , err = impl .K8sUtil .CreateSecret ( clusterBean . DefaultNamespace , data , secretName , informerBean . ClusterModifyEventSecretType , k8sClient , nil , nil )
484
+ _ , err = impl .K8sUtil .CreateConfigMapObject ( bean3 . DevtronCDNamespae , data , cmName , k8sClient , labels , nil )
499
485
if err != nil {
500
- impl .logger .Errorw ("error in creating secret for informers " , "secretName " , secretName , "err" , err )
486
+ impl .logger .Errorw ("error in creating cm object for informer " , "cmName " , cmName , "err" , err )
501
487
return err
502
488
}
503
489
} else {
504
- secret .Data = data
505
- secret , err = impl .K8sUtil .UpdateSecret ( clusterBean . DefaultNamespace , secret , k8sClient )
490
+ configMap .Data = data
491
+ configMap , err = impl .K8sUtil .UpdateConfigMap ( bean3 . DevtronCDNamespae , configMap , k8sClient )
506
492
if err != nil {
507
- impl .logger .Errorw ("error in updating secret for informers" , "secretName " , secretName , "err" , err )
493
+ impl .logger .Errorw ("error in updating cm for informers" , "cmName " , cmName , "err" , err )
508
494
return err
509
495
}
510
496
}
@@ -602,15 +588,6 @@ func (impl *ClusterServiceImpl) DeleteFromDb(bean *bean.ClusterBean, userId int3
602
588
impl .logger .Errorw ("error in deleting cluster" , "id" , bean .Id , "err" , err )
603
589
return "" , err
604
590
}
605
- k8sClient , err := impl .K8sUtil .GetCoreV1ClientInCluster ()
606
- if err != nil {
607
- impl .logger .Errorw ("error in getting in cluster k8s client" , "err" , err , "clusterName" , bean .ClusterName )
608
- return "" , nil
609
- }
610
- // TODO Asutosh: why we maintain this duplicate code ??
611
- secretName := ParseSecretNameForKubelinkInformer (bean .Id )
612
- err = impl .K8sUtil .DeleteSecret (clusterBean .DefaultNamespace , secretName , k8sClient )
613
- impl .logger .Errorw ("error in deleting secret" , "error" , err )
614
591
return existingCluster .ClusterName , nil
615
592
}
616
593
0 commit comments