From 1c811714f0764ae5dfac993597e2a7fa5d61dc34 Mon Sep 17 00:00:00 2001 From: Gireesh Naidu Date: Fri, 28 Jul 2023 14:33:35 +0530 Subject: [PATCH 1/2] nil ptr fix --- api/restHandler/AppListingRestHandler.go | 23 ++++++++++--------- .../deployment/service/InstalledAppService.go | 20 ++++++++-------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/api/restHandler/AppListingRestHandler.go b/api/restHandler/AppListingRestHandler.go index 4696b021aa0..4f11fb35df5 100644 --- a/api/restHandler/AppListingRestHandler.go +++ b/api/restHandler/AppListingRestHandler.go @@ -1520,17 +1520,6 @@ func (handler AppListingRestHandlerImpl) fetchResourceTree(w http.ResponseWriter ctx = context.WithValue(ctx, "token", acdToken) start := time.Now() resp, err := handler.application.ResourceTree(ctx, query) - //we currently add appId and envId as labels for devtron apps deployed via acd - label := fmt.Sprintf("appId=%v,envId=%v", cdPipeline.AppId, cdPipeline.EnvironmentId) - pods, err := handler.k8sApplicationService.GetPodListByLabel(cdPipeline.Environment.ClusterId, cdPipeline.Environment.Namespace, label) - if err != nil { - handler.logger.Errorw("error in getting pods by label", "err", err, "clusterId", cdPipeline.Environment.ClusterId, "namespace", cdPipeline.Environment.Namespace, "label", label) - return resourceTree, err - } - ephemeralContainersMap := bean2.ExtractEphemeralContainers(pods) - for _, metaData := range resp.PodMetadata { - metaData.EphemeralContainers = ephemeralContainersMap[metaData.Name] - } elapsed := time.Since(start) if err != nil { handler.logger.Errorw("service err, FetchAppDetailsV2, resource tree", "err", err, "app", appId, "env", envId) @@ -1543,6 +1532,18 @@ func (handler AppListingRestHandlerImpl) fetchResourceTree(w http.ResponseWriter } handler.logger.Debugw("FetchAppDetailsV2, time elapsed in fetching application for environment ", "elapsed", elapsed, "appId", appId, "envId", envId) + //we currently add appId and envId as labels for devtron apps deployed via acd + label := fmt.Sprintf("appId=%v,envId=%v", cdPipeline.AppId, cdPipeline.EnvironmentId) + pods, err := handler.k8sApplicationService.GetPodListByLabel(cdPipeline.Environment.ClusterId, cdPipeline.Environment.Namespace, label) + if err != nil { + handler.logger.Errorw("error in getting pods by label", "err", err, "clusterId", cdPipeline.Environment.ClusterId, "namespace", cdPipeline.Environment.Namespace, "label", label) + return resourceTree, err + } + ephemeralContainersMap := bean2.ExtractEphemeralContainers(pods) + for _, metaData := range resp.PodMetadata { + metaData.EphemeralContainers = ephemeralContainersMap[metaData.Name] + } + if resp.Status == string(health.HealthStatusHealthy) { status, err := handler.appListingService.ISLastReleaseStopType(appId, envId) if err != nil { diff --git a/pkg/appStore/deployment/service/InstalledAppService.go b/pkg/appStore/deployment/service/InstalledAppService.go index 1137027898c..4d65ccc1d19 100644 --- a/pkg/appStore/deployment/service/InstalledAppService.go +++ b/pkg/appStore/deployment/service/InstalledAppService.go @@ -1275,16 +1275,6 @@ func (impl InstalledAppServiceImpl) fetchResourceTreeForACD(rctx context.Context defer cancel() start := time.Now() resp, err := impl.acdClient.ResourceTree(ctx, query) - label := fmt.Sprintf("app.kubernetes.io/instance=%s", deploymentAppName) - pods, err := impl.k8sApplicationService.GetPodListByLabel(clusterId, namespace, label) - if err != nil { - impl.logger.Errorw("error in getting pods by label", "err", err, "clusterId", clusterId, "namespace", namespace, "label", label) - return resourceTree, err - } - ephemeralContainersMap := bean3.ExtractEphemeralContainers(pods) - for _, metaData := range resp.PodMetadata { - metaData.EphemeralContainers = ephemeralContainersMap[metaData.Name] - } elapsed := time.Since(start) impl.logger.Debugf("Time elapsed %s in fetching app-store installed application %s for environment %s", elapsed, deploymentAppName, envId) if err != nil { @@ -1296,6 +1286,16 @@ func (impl InstalledAppServiceImpl) fetchResourceTreeForACD(rctx context.Context } return resourceTree, err } + label := fmt.Sprintf("app.kubernetes.io/instance=%s", deploymentAppName) + pods, err := impl.k8sApplicationService.GetPodListByLabel(clusterId, namespace, label) + if err != nil { + impl.logger.Errorw("error in getting pods by label", "err", err, "clusterId", clusterId, "namespace", namespace, "label", label) + return resourceTree, err + } + ephemeralContainersMap := bean3.ExtractEphemeralContainers(pods) + for _, metaData := range resp.PodMetadata { + metaData.EphemeralContainers = ephemeralContainersMap[metaData.Name] + } // TODO: using this resp.Status to update in app_status table resourceTree = util3.InterfaceToMapAdapter(resp) go func() { From b0ded37557e5fc2f5111a9dc5311d708c9ea0ade Mon Sep 17 00:00:00 2001 From: Gireesh Naidu Date: Fri, 28 Jul 2023 14:42:31 +0530 Subject: [PATCH 2/2] log --- api/restHandler/AppListingRestHandler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/restHandler/AppListingRestHandler.go b/api/restHandler/AppListingRestHandler.go index 4f11fb35df5..4c4d2b30488 100644 --- a/api/restHandler/AppListingRestHandler.go +++ b/api/restHandler/AppListingRestHandler.go @@ -1521,6 +1521,7 @@ func (handler AppListingRestHandlerImpl) fetchResourceTree(w http.ResponseWriter start := time.Now() resp, err := handler.application.ResourceTree(ctx, query) elapsed := time.Since(start) + handler.logger.Debugw("FetchAppDetailsV2, time elapsed in fetching application for environment ", "elapsed", elapsed, "appId", appId, "envId", envId) if err != nil { handler.logger.Errorw("service err, FetchAppDetailsV2, resource tree", "err", err, "app", appId, "env", envId) err = &util.ApiError{ @@ -1530,7 +1531,6 @@ func (handler AppListingRestHandlerImpl) fetchResourceTree(w http.ResponseWriter } return resourceTree, err } - handler.logger.Debugw("FetchAppDetailsV2, time elapsed in fetching application for environment ", "elapsed", elapsed, "appId", appId, "envId", envId) //we currently add appId and envId as labels for devtron apps deployed via acd label := fmt.Sprintf("appId=%v,envId=%v", cdPipeline.AppId, cdPipeline.EnvironmentId)