11const Env0ApiClient = require ( './api-client' ) ;
22const logger = require ( './logger' ) ;
33const { options } = require ( '../config/constants' ) ;
4- const { convertStringToBoolean, removeEmptyValuesFromObj } = require ( './general-utils' ) ;
4+ const { convertStringToBoolean, removeEmptyValuesFromObj, withRetry } = require ( './general-utils' ) ;
55const { isEmpty } = require ( 'lodash' ) ;
66
77const {
@@ -33,6 +33,18 @@ class DeployUtils {
3333 return await apiClient . callApi ( 'get' , `environments/deployments/${ deploymentLogId } ` ) ;
3434 }
3535
36+ async getDeploymentSteps ( deploymentLogId ) {
37+ return await apiClient . callApi ( 'get' , `deployments/${ deploymentLogId } /steps` )
38+ }
39+
40+ async getDeploymentStepLog ( deploymentLogId , stepName , startTime ) {
41+ return await apiClient . callApi (
42+ 'get' ,
43+ `deployments/${ deploymentLogId } /steps/${ stepName } /log` ,
44+ { params : { startTime } }
45+ )
46+ }
47+
3648 async updateEnvironment ( environment , data ) {
3749 await apiClient . callApi ( 'put' , `environments/${ environment . id } ` , { data } ) ;
3850 }
@@ -90,14 +102,12 @@ class DeployUtils {
90102 let startTime = undefined ;
91103
92104 do {
93- const steps = await apiClient . callApi ( 'get' , `deployments/ ${ deploymentLogId } /steps` ) ;
105+ const steps = await withRetry ( ( ) => this . getDeploymentSteps ( deploymentLogId ) ) ;
94106 const { status } = steps . find ( step => step . name === stepName ) ;
95107 const stepInProgress = status === 'IN_PROGRESS' ;
96108
97- const { events, nextStartTime, hasMoreLogs } = await apiClient . callApi (
98- 'get' ,
99- `deployments/${ deploymentLogId } /steps/${ stepName } /log` ,
100- { params : { startTime } }
109+ const { events, nextStartTime, hasMoreLogs } = await withRetry (
110+ ( ) => this . getDeploymentStepLog ( deploymentLogId , stepName , startTime )
101111 ) ;
102112
103113 events . forEach ( event => logger . info ( event . message ) ) ;
@@ -112,7 +122,7 @@ class DeployUtils {
112122 async processDeploymentSteps ( deploymentLogId , stepsToSkip ) {
113123 const doneSteps = [ ] ;
114124
115- const steps = await apiClient . callApi ( 'get' , `deployments/ ${ deploymentLogId } /steps` ) ;
125+ const steps = await this . getDeploymentSteps ( deploymentLogId ) ;
116126
117127 for ( const step of steps ) {
118128 const alreadyLogged = stepsToSkip . includes ( step . name ) ;
@@ -144,7 +154,7 @@ class DeployUtils {
144154 }
145155
146156 while ( true ) {
147- const { type, status } = await this . getDeployment ( deployment . id ) ;
157+ const { type, status } = await withRetry ( ( ) => this . getDeployment ( deployment . id ) ) ;
148158
149159 if ( status === 'QUEUED' ) logger . info ( 'Queued deployment is still waiting for earlier deployments to finish...' ) ;
150160
0 commit comments