@@ -3,6 +3,7 @@ package app
33import (
44 "fmt"
55 "github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
6+ "github.com/devtron-labs/devtron/internal/util"
67 "github.com/devtron-labs/devtron/pkg/user"
78 "github.com/go-pg/pg"
89 "go.uber.org/zap"
@@ -47,6 +48,7 @@ type PipelineTimelineDetailDto struct {
4748 Timelines []* PipelineStatusTimelineDto `json:"timelines"`
4849 StatusLastFetchedAt time.Time `json:"statusLastFetchedAt"`
4950 StatusFetchCount int `json:"statusFetchCount"`
51+ WfrStatus string `json:"wfrStatus"`
5052}
5153
5254type PipelineStatusTimelineDto struct {
@@ -120,62 +122,68 @@ func (impl *PipelineStatusTimelineServiceImpl) FetchTimelines(appId, envId, wfrI
120122 var triggeredBy int32
121123 var deploymentStartedOn time.Time
122124 var deploymentFinishedOn time.Time
125+ var wfrStatus string
126+ var deploymentAppType string
127+ var err error
128+ wfr := & pipelineConfig.CdWorkflowRunner {}
123129 if wfrId == 0 {
124130 //fetch latest wfr by app and env
125- wfr , err : = impl .cdWorkflowRepository .FindLatestWfrByAppIdAndEnvironmentId (appId , envId )
131+ wfr , err = impl .cdWorkflowRepository .FindLatestWfrByAppIdAndEnvironmentId (appId , envId )
126132 if err != nil {
127133 impl .logger .Errorw ("error in getting wfr by appId and envId" , "err" , err , "appId" , appId , "envId" , envId )
128134 return nil , err
129135 }
130136 wfrId = wfr .Id
131- deploymentStartedOn = wfr .StartedOn
132- deploymentFinishedOn = wfr .FinishedOn
133- triggeredBy = wfr .TriggeredBy
134137 } else {
135138 //fetch latest wfr by id
136- wfr , err : = impl .cdWorkflowRepository .FindWorkflowRunnerById (wfrId )
139+ wfr , err = impl .cdWorkflowRepository .FindWorkflowRunnerById (wfrId )
137140 if err != nil {
138141 impl .logger .Errorw ("error in getting wfr by appId and envId" , "err" , err , "appId" , appId , "envId" , envId )
139142 return nil , err
140143 }
141- deploymentStartedOn = wfr .StartedOn
142- deploymentFinishedOn = wfr .FinishedOn
143- triggeredBy = wfr .TriggeredBy
144144 }
145-
145+ deploymentStartedOn = wfr .StartedOn
146+ deploymentFinishedOn = wfr .FinishedOn
147+ triggeredBy = wfr .TriggeredBy
148+ wfrStatus = wfr .Status
149+ deploymentAppType = wfr .CdWorkflow .Pipeline .DeploymentAppType
146150 triggeredByUser , err := impl .userService .GetById (triggeredBy )
147151 if err != nil {
148152 impl .logger .Errorw ("error in getting user detail by id" , "err" , err , "userId" , triggeredBy )
149153 return nil , err
150154 }
151- timelines , err := impl .pipelineStatusTimelineRepository .FetchTimelinesByWfrId (wfrId )
152- if err != nil {
153- impl .logger .Errorw ("error in getting timelines by wfrId" , "err" , err , "wfrId" , wfrId )
154- return nil , err
155- }
156155 var timelineDtos []* PipelineStatusTimelineDto
157- for _ , timeline := range timelines {
158- var timelineResourceDetails []* SyncStageResourceDetailDto
159- if timeline .Status == pipelineConfig .TIMELINE_STATUS_KUBECTL_APPLY_STARTED {
160- timelineResourceDetails , err = impl .pipelineStatusTimelineResourcesService .GetTimelineResourcesForATimeline (timeline .CdWorkflowRunnerId )
161- if err != nil && err != pg .ErrNoRows {
162- impl .logger .Errorw ("error in getting timeline resources details" , "err" , err , "cdWfrId" , timeline .CdWorkflowRunnerId )
163- return nil , err
156+ var statusLastFetchedAt time.Time
157+ var statusFetchCount int
158+ if util .IsAcdApp (deploymentAppType ) {
159+ timelines , err := impl .pipelineStatusTimelineRepository .FetchTimelinesByWfrId (wfrId )
160+ if err != nil {
161+ impl .logger .Errorw ("error in getting timelines by wfrId" , "err" , err , "wfrId" , wfrId )
162+ return nil , err
163+ }
164+ for _ , timeline := range timelines {
165+ var timelineResourceDetails []* SyncStageResourceDetailDto
166+ if timeline .Status == pipelineConfig .TIMELINE_STATUS_KUBECTL_APPLY_STARTED {
167+ timelineResourceDetails , err = impl .pipelineStatusTimelineResourcesService .GetTimelineResourcesForATimeline (timeline .CdWorkflowRunnerId )
168+ if err != nil && err != pg .ErrNoRows {
169+ impl .logger .Errorw ("error in getting timeline resources details" , "err" , err , "cdWfrId" , timeline .CdWorkflowRunnerId )
170+ return nil , err
171+ }
172+ }
173+ timelineDto := & PipelineStatusTimelineDto {
174+ Id : timeline .Id ,
175+ CdWorkflowRunnerId : timeline .CdWorkflowRunnerId ,
176+ Status : timeline .Status ,
177+ StatusTime : timeline .StatusTime ,
178+ StatusDetail : timeline .StatusDetail ,
179+ ResourceDetails : timelineResourceDetails ,
164180 }
181+ timelineDtos = append (timelineDtos , timelineDto )
165182 }
166- timelineDto := & PipelineStatusTimelineDto {
167- Id : timeline .Id ,
168- CdWorkflowRunnerId : timeline .CdWorkflowRunnerId ,
169- Status : timeline .Status ,
170- StatusTime : timeline .StatusTime ,
171- StatusDetail : timeline .StatusDetail ,
172- ResourceDetails : timelineResourceDetails ,
183+ statusLastFetchedAt , statusFetchCount , err = impl .pipelineStatusSyncDetailService .GetSyncTimeAndCountByCdWfrId (wfrId )
184+ if err != nil {
185+ impl .logger .Errorw ("error in getting pipeline status fetchTime and fetchCount by cdWfrId" , "err" , err , "cdWfrId" , wfrId )
173186 }
174- timelineDtos = append (timelineDtos , timelineDto )
175- }
176- statusLastFetchedAt , statusFetchCount , err := impl .pipelineStatusSyncDetailService .GetSyncTimeAndCountByCdWfrId (wfrId )
177- if err != nil {
178- impl .logger .Errorw ("error in getting pipeline status fetchTime and fetchCount by cdWfrId" , "err" , err , "cdWfrId" , wfrId )
179187 }
180188 timelineDetail := & PipelineTimelineDetailDto {
181189 TriggeredBy : triggeredByUser .EmailId ,
@@ -184,6 +192,7 @@ func (impl *PipelineStatusTimelineServiceImpl) FetchTimelines(appId, envId, wfrI
184192 Timelines : timelineDtos ,
185193 StatusLastFetchedAt : statusLastFetchedAt ,
186194 StatusFetchCount : statusFetchCount ,
195+ WfrStatus : wfrStatus ,
187196 }
188197 return timelineDetail , nil
189198}
0 commit comments