@@ -24,19 +24,20 @@ import (
2424 k8sCommonBean "github.com/devtron-labs/common-lib/utils/k8s/commonBean"
2525 "github.com/devtron-labs/devtron/api/bean"
2626 helmBean "github.com/devtron-labs/devtron/api/helm-app/service/bean"
27- util2 "github.com/devtron-labs/devtron/internal/util"
27+ internalUtil "github.com/devtron-labs/devtron/internal/util"
2828 "github.com/devtron-labs/devtron/pkg/argoApplication"
2929 "github.com/devtron-labs/devtron/pkg/cluster"
3030 bean3 "github.com/devtron-labs/devtron/pkg/k8s/application/bean"
3131 "github.com/devtron-labs/devtron/util"
3232 "go.opentelemetry.io/otel"
3333 "go.uber.org/zap"
34+ apiV1 "k8s.io/api/core/v1"
3435 "k8s.io/apimachinery/pkg/api/errors"
3536 "k8s.io/apimachinery/pkg/runtime/schema"
3637 "k8s.io/apimachinery/pkg/types"
3738 "k8s.io/apimachinery/pkg/version"
3839 "k8s.io/client-go/kubernetes"
39- v1 "k8s.io/client-go/kubernetes/typed/core/v1"
40+ clientV1 "k8s.io/client-go/kubernetes/typed/core/v1"
4041 "k8s.io/client-go/rest"
4142 "net/http"
4243 "strconv"
@@ -46,15 +47,17 @@ import (
4647
4748type K8sCommonService interface {
4849 GetResource (ctx context.Context , request * ResourceRequestBean ) (resp * ResourceGetResponse , err error )
50+ GetDataFromConfigMaps (ctx context.Context , request * CmCsRequestBean ) (map [string ]* apiV1.ConfigMap , error )
51+ GetDataFromSecrets (ctx context.Context , request * CmCsRequestBean ) (map [string ]* apiV1.Secret , error )
4952 UpdateResource (ctx context.Context , request * ResourceRequestBean ) (resp * k8s.ManifestResponse , err error )
5053 DeleteResource (ctx context.Context , request * ResourceRequestBean ) (resp * k8s.ManifestResponse , err error )
5154 ListEvents (ctx context.Context , request * ResourceRequestBean ) (* k8s.EventsResponse , error )
5255 GetRestConfigByClusterId (ctx context.Context , clusterId int ) (* rest.Config , error , * cluster.ClusterBean )
5356 GetManifestsByBatch (ctx context.Context , request []ResourceRequestBean ) ([]BatchResourceResponse , error )
5457 FilterK8sResources (ctx context.Context , resourceTreeInf map [string ]interface {}, appDetail bean.AppDetailContainer , appId string , kindsToBeFiltered []string , externalArgoAppName string ) []ResourceRequestBean
5558 RotatePods (ctx context.Context , request * RotatePodRequest ) (* RotatePodResponse , error )
56- GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * v1 .CoreV1Client , error )
57- GetCoreClientByClusterIdForExternalArgoApps (req * cluster.EphemeralContainerRequest ) (* kubernetes.Clientset , * v1 .CoreV1Client , error )
59+ GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * clientV1 .CoreV1Client , error )
60+ GetCoreClientByClusterIdForExternalArgoApps (req * cluster.EphemeralContainerRequest ) (* kubernetes.Clientset , * clientV1 .CoreV1Client , error )
5861 GetK8sServerVersion (clusterId int ) (* version.Info , error )
5962 PortNumberExtraction (resp []BatchResourceResponse , resourceTree map [string ]interface {}) map [string ]interface {}
6063 GetRestConfigOfCluster (ctx context.Context , request * ResourceRequestBean ) (* rest.Config , error )
@@ -113,6 +116,54 @@ func (impl *K8sCommonServiceImpl) GetResource(ctx context.Context, request *Reso
113116 return response , nil
114117}
115118
119+ func (impl * K8sCommonServiceImpl ) GetDataFromConfigMaps (ctx context.Context , request * CmCsRequestBean ) (map [string ]* apiV1.ConfigMap , error ) {
120+ newCtx , span := otel .Tracer ("orchestrator" ).Start (ctx , "K8sCommonServiceImpl.GetDataFromConfigMaps" )
121+ defer span .End ()
122+ response := make (map [string ]* apiV1.ConfigMap , len (request .GetExternalCmList ()))
123+ if len (request .GetExternalCmList ()) == 0 {
124+ return response , nil
125+ }
126+ _ , v1Client , err := impl .GetCoreClientByClusterId (request .GetClusterId ())
127+ if err != nil {
128+ impl .logger .Errorw ("error in getting coreV1 client by clusterId" , "clusterId" , request .clusterId , "err" , err )
129+ return nil , err
130+ }
131+ // using for loop instead of getting all configMaps at once since request.GetExternalCmList() will be small
132+ for _ , cmName := range request .GetExternalCmList () {
133+ configMap , err := impl .K8sUtil .GetConfigMapWithCtx (newCtx , request .GetNamespace (), cmName , v1Client )
134+ if err != nil {
135+ impl .logger .Errorw ("error in getting configMap" , "namespace" , request .GetNamespace (), "cmName" , cmName , "err" , err )
136+ return nil , err
137+ }
138+ response [cmName ] = configMap
139+ }
140+ return response , nil
141+ }
142+
143+ func (impl * K8sCommonServiceImpl ) GetDataFromSecrets (ctx context.Context , request * CmCsRequestBean ) (map [string ]* apiV1.Secret , error ) {
144+ newCtx , span := otel .Tracer ("orchestrator" ).Start (ctx , "K8sCommonServiceImpl.GetDataFromConfigMaps" )
145+ defer span .End ()
146+ response := make (map [string ]* apiV1.Secret , len (request .GetExternalCmList ()))
147+ if len (request .GetExternalCsList ()) == 0 {
148+ return response , nil
149+ }
150+ _ , v1Client , err := impl .GetCoreClientByClusterId (request .GetClusterId ())
151+ if err != nil {
152+ impl .logger .Errorw ("error in getting coreV1 client by clusterId" , "clusterId" , request .clusterId , "err" , err )
153+ return nil , err
154+ }
155+ // using for loop instead of getting all secrets at once since request.GetExternalCsList() will be small
156+ for _ , csName := range request .GetExternalCsList () {
157+ secret , err := impl .K8sUtil .GetSecretWithCtx (newCtx , request .GetNamespace (), csName , v1Client )
158+ if err != nil {
159+ impl .logger .Errorw ("error in getting configMap" , "namespace" , request .namespace , "csName" , csName , "err" , err )
160+ return nil , err
161+ }
162+ response [csName ] = secret
163+ }
164+ return response , nil
165+ }
166+
116167func (impl * K8sCommonServiceImpl ) UpdateResource (ctx context.Context , request * ResourceRequestBean ) (* k8s.ManifestResponse , error ) {
117168 //getting rest config by clusterId
118169 clusterId := request .ClusterId
@@ -129,7 +180,7 @@ func (impl *K8sCommonServiceImpl) UpdateResource(ctx context.Context, request *R
129180 impl .logger .Errorw ("error in updating resource" , "err" , err , "clusterId" , clusterId )
130181 statusError , ok := err .(* errors.StatusError )
131182 if ok {
132- err = & util2 .ApiError {Code : "400" , HttpStatusCode : int (statusError .ErrStatus .Code ), UserMessage : statusError .Error ()}
183+ err = & internalUtil .ApiError {Code : "400" , HttpStatusCode : int (statusError .ErrStatus .Code ), UserMessage : statusError .Error ()}
133184 }
134185 return nil , err
135186 }
@@ -382,7 +433,7 @@ func (impl *K8sCommonServiceImpl) GetK8sServerVersion(clusterId int) (*version.I
382433 return k8sVersion , err
383434}
384435
385- func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * v1 .CoreV1Client , error ) {
436+ func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * clientV1 .CoreV1Client , error ) {
386437 clusterBean , err := impl .clusterService .FindById (clusterId )
387438 if err != nil {
388439 impl .logger .Errorw ("error occurred in finding clusterBean by Id" , "clusterId" , clusterId , "err" , err )
@@ -405,7 +456,7 @@ func (impl *K8sCommonServiceImpl) GetCoreClientByClusterId(clusterId int) (*kube
405456 return clientSet , v1Client , nil
406457}
407458
408- func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterIdForExternalArgoApps (req * cluster.EphemeralContainerRequest ) (* kubernetes.Clientset , * v1 .CoreV1Client , error ) {
459+ func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterIdForExternalArgoApps (req * cluster.EphemeralContainerRequest ) (* kubernetes.Clientset , * clientV1 .CoreV1Client , error ) {
409460 restConfig , err := impl .argoApplicationService .GetRestConfigForExternalArgo (context .Background (), req .ClusterId , req .ExternalArgoApplicationName )
410461 if err != nil {
411462 impl .logger .Errorw ("error in getting rest config" , "err" , err , "clusterId" , req .ClusterId , "externalArgoApplicationName" , req .ExternalArgoApplicationName )
0 commit comments