@@ -24,19 +24,20 @@ import (
24
24
k8sCommonBean "github.com/devtron-labs/common-lib/utils/k8s/commonBean"
25
25
"github.com/devtron-labs/devtron/api/bean"
26
26
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"
28
28
"github.com/devtron-labs/devtron/pkg/argoApplication"
29
29
"github.com/devtron-labs/devtron/pkg/cluster"
30
30
bean3 "github.com/devtron-labs/devtron/pkg/k8s/application/bean"
31
31
"github.com/devtron-labs/devtron/util"
32
32
"go.opentelemetry.io/otel"
33
33
"go.uber.org/zap"
34
+ apiV1 "k8s.io/api/core/v1"
34
35
"k8s.io/apimachinery/pkg/api/errors"
35
36
"k8s.io/apimachinery/pkg/runtime/schema"
36
37
"k8s.io/apimachinery/pkg/types"
37
38
"k8s.io/apimachinery/pkg/version"
38
39
"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"
40
41
"k8s.io/client-go/rest"
41
42
"net/http"
42
43
"strconv"
@@ -46,15 +47,17 @@ import (
46
47
47
48
type K8sCommonService interface {
48
49
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 )
49
52
UpdateResource (ctx context.Context , request * ResourceRequestBean ) (resp * k8s.ManifestResponse , err error )
50
53
DeleteResource (ctx context.Context , request * ResourceRequestBean ) (resp * k8s.ManifestResponse , err error )
51
54
ListEvents (ctx context.Context , request * ResourceRequestBean ) (* k8s.EventsResponse , error )
52
55
GetRestConfigByClusterId (ctx context.Context , clusterId int ) (* rest.Config , error , * cluster.ClusterBean )
53
56
GetManifestsByBatch (ctx context.Context , request []ResourceRequestBean ) ([]BatchResourceResponse , error )
54
57
FilterK8sResources (ctx context.Context , resourceTreeInf map [string ]interface {}, appDetail bean.AppDetailContainer , appId string , kindsToBeFiltered []string , externalArgoAppName string ) []ResourceRequestBean
55
58
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 )
58
61
GetK8sServerVersion (clusterId int ) (* version.Info , error )
59
62
PortNumberExtraction (resp []BatchResourceResponse , resourceTree map [string ]interface {}) map [string ]interface {}
60
63
GetRestConfigOfCluster (ctx context.Context , request * ResourceRequestBean ) (* rest.Config , error )
@@ -113,6 +116,54 @@ func (impl *K8sCommonServiceImpl) GetResource(ctx context.Context, request *Reso
113
116
return response , nil
114
117
}
115
118
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
+
116
167
func (impl * K8sCommonServiceImpl ) UpdateResource (ctx context.Context , request * ResourceRequestBean ) (* k8s.ManifestResponse , error ) {
117
168
//getting rest config by clusterId
118
169
clusterId := request .ClusterId
@@ -129,7 +180,7 @@ func (impl *K8sCommonServiceImpl) UpdateResource(ctx context.Context, request *R
129
180
impl .logger .Errorw ("error in updating resource" , "err" , err , "clusterId" , clusterId )
130
181
statusError , ok := err .(* errors.StatusError )
131
182
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 ()}
133
184
}
134
185
return nil , err
135
186
}
@@ -382,7 +433,7 @@ func (impl *K8sCommonServiceImpl) GetK8sServerVersion(clusterId int) (*version.I
382
433
return k8sVersion , err
383
434
}
384
435
385
- func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * v1 .CoreV1Client , error ) {
436
+ func (impl * K8sCommonServiceImpl ) GetCoreClientByClusterId (clusterId int ) (* kubernetes.Clientset , * clientV1 .CoreV1Client , error ) {
386
437
clusterBean , err := impl .clusterService .FindById (clusterId )
387
438
if err != nil {
388
439
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
405
456
return clientSet , v1Client , nil
406
457
}
407
458
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 ) {
409
460
restConfig , err := impl .argoApplicationService .GetRestConfigForExternalArgo (context .Background (), req .ClusterId , req .ExternalArgoApplicationName )
410
461
if err != nil {
411
462
impl .logger .Errorw ("error in getting rest config" , "err" , err , "clusterId" , req .ClusterId , "externalArgoApplicationName" , req .ExternalArgoApplicationName )
0 commit comments