@@ -23,9 +23,12 @@ import (
2323	"github.com/devtron-labs/common-lib/async" 
2424	informerBean "github.com/devtron-labs/common-lib/informer" 
2525	"github.com/devtron-labs/common-lib/utils/k8s/commonBean" 
26+ 	configMap2 "github.com/devtron-labs/common-lib/utils/k8s/configMap" 
27+ 	bean3 "github.com/devtron-labs/devtron/pkg/argoApplication/bean" 
2628	"github.com/devtron-labs/devtron/pkg/cluster/adapter" 
2729	"github.com/devtron-labs/devtron/pkg/cluster/bean" 
2830	repository2 "github.com/devtron-labs/devtron/pkg/cluster/environment/repository" 
31+ 	"github.com/devtron-labs/devtron/pkg/cluster/helper" 
2932	"github.com/devtron-labs/devtron/pkg/cluster/read" 
3033	cronUtil "github.com/devtron-labs/devtron/util/cron" 
3134	"github.com/robfig/cron/v3" 
@@ -231,22 +234,9 @@ func (impl *ClusterServiceImpl) Save(parent context.Context, bean *bean.ClusterB
231234		impl .SyncNsInformer (bean )
232235	}
233236	impl .logger .Info ("saving secret for cluster informer" )
234- 	k8sClient , err  :=  impl .K8sUtil .GetCoreV1ClientInCluster ()
235- 	if  err  !=  nil  {
236- 		impl .logger .Errorw ("error in getting k8s Client in cluster" , "err" , err , "clusterName" , bean .ClusterName )
237- 		return  bean , nil 
238- 	}
239- 	//creating cluster secret, this secret will be read informer in kubelink to know that a new cluster has been added 
240- 	secretName  :=  ParseSecretNameForKubelinkInformer (bean .Id )
241- 
242- 	data  :=  make (map [string ][]byte )
243- 	data [informerBean .SecretFieldClusterId ] =  []byte (fmt .Sprintf ("%v" , bean .Id ))
244- 	data [informerBean .SecretFieldAction ] =  []byte (informerBean .ClusterActionAdd )
245- 	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 
246- 	// TODO Asutosh: Why not UPSERT ?? 
247- 	_ , err  =  impl .K8sUtil .CreateSecret (clusterBean .DefaultNamespace , data , secretName , informerBean .ClusterModifyEventSecretType , k8sClient , nil , nil )
248- 	if  err  !=  nil  {
249- 		impl .logger .Errorw ("error in creating secret for informers" , "secretName" , secretName , "err" , err )
237+ 	cmData , labels  :=  helper .CreateClusterModifyEventData (bean .Id , informerBean .ClusterActionAdd )
238+ 	if  err  =  impl .upsertClusterConfigMap (bean , cmData , labels ); err  !=  nil  {
239+ 		impl .logger .Errorw ("error upserting cluster secret" , "cmData" , cmData , "err" , err )
250240		return  bean , nil 
251241	}
252242	return  bean , nil 
@@ -473,42 +463,40 @@ func (impl *ClusterServiceImpl) Update(ctx context.Context, bean *bean.ClusterBe
473463	}
474464	impl .logger .Infow ("saving secret for cluster informer" )
475465	if  bean .HasConfigOrUrlChanged  {
476- 		data  :=  make (map [string ][]byte )
477- 		data [informerBean .SecretFieldClusterId ] =  []byte (fmt .Sprintf ("%v" , bean .Id ))
478- 		data [informerBean .SecretFieldAction ] =  []byte (informerBean .ClusterActionUpdate )
479- 		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 
480- 		if  err  =  impl .upsertClusterSecret (bean , data ); err  !=  nil  {
481- 			impl .logger .Errorw ("error upserting cluster secret" , "data" , data , "err" , err )
466+ 		cmData , labels  :=  helper .CreateClusterModifyEventData (bean .Id , informerBean .ClusterActionUpdate )
467+ 		if  err  =  impl .upsertClusterConfigMap (bean , cmData , labels ); err  !=  nil  {
468+ 			impl .logger .Errorw ("error upserting cluster secret" , "cmData" , cmData , "err" , err )
482469			// TODO Asutosh: why error is not propagated ?? 
483470			return  bean , nil 
484471		}
485472	}
486473	return  bean , nil 
487474}
488475
489- func  (impl  * ClusterServiceImpl ) upsertClusterSecret (bean  * bean.ClusterBean , data   map [string ][] byte ) error  {
476+ func  (impl  * ClusterServiceImpl ) upsertClusterConfigMap (bean  * bean.ClusterBean , data ,  labels   map [string ]string ) error  {
490477	k8sClient , err  :=  impl .K8sUtil .GetCoreV1ClientInCluster ()
491478	if  err  !=  nil  {
492479		impl .logger .Errorw ("error in getting k8s client" , "err" , err )
493480		return  err 
494481	}
495- 	// below secret  will act as an event for informer running on a secret object in kubelink and kubewatch 
496- 	secretName  :=  ParseSecretNameForKubelinkInformer (bean .Id )
497- 	secret , err  :=  impl .K8sUtil .GetSecret ( clusterBean . DefaultNamespace ,  secretName , k8sClient )
482+ 	// below cm  will act as an event for informer running on a secret object in kubelink and kubewatch 
483+ 	cmName  :=  ParseCmNameForK8sInformerOnClusterEvent (bean .Id )
484+ 	configMap , err  :=  impl .K8sUtil .GetConfigMap ( bean3 . DevtronCDNamespae ,  cmName , k8sClient )
498485	if  err  !=  nil  &&  ! k8sError .IsNotFound (err ) {
499- 		impl .logger .Errorw ("error in getting cluster secret " , "secretName " , secretName , "err" , err )
486+ 		impl .logger .Errorw ("error in getting cluster config map " , "cmName " , cmName , "err" , err )
500487		return  err 
501488	} else  if  k8sError .IsNotFound (err ) {
502- 		_ , err  =  impl .K8sUtil .CreateSecret ( clusterBean . DefaultNamespace ,  data ,  secretName ,  informerBean . ClusterModifyEventSecretType , k8sClient , nil ,  nil )
489+ 		_ , err  =  impl .K8sUtil .CreateConfigMapObject ( cmName ,  bean3 . DevtronCDNamespae , k8sClient , configMap2 . WithData ( data ),  configMap2 . WithLabels ( labels ) )
503490		if  err  !=  nil  {
504- 			impl .logger .Errorw ("error in creating secret  for informers " , "secretName " , secretName , "err" , err )
491+ 			impl .logger .Errorw ("error in creating cm object  for informer " , "cmName " , cmName , "err" , err )
505492			return  err 
506493		}
507494	} else  {
508- 		secret .Data  =  data 
509- 		secret , err  =  impl .K8sUtil .UpdateSecret (clusterBean .DefaultNamespace , secret , k8sClient )
495+ 		configMap .Labels  =  labels 
496+ 		configMap .Data  =  data 
497+ 		configMap , err  =  impl .K8sUtil .UpdateConfigMap (bean3 .DevtronCDNamespae , configMap , k8sClient )
510498		if  err  !=  nil  {
511- 			impl .logger .Errorw ("error in updating secret  for informers" , "secretName " , secretName , "err" , err )
499+ 			impl .logger .Errorw ("error in updating cm  for informers" , "cmName " , cmName , "err" , err )
512500			return  err 
513501		}
514502	}
0 commit comments