( version: TemplateVersion, onRequest?: (data: TemplateVersion) => void, )
| 322 | }; |
| 323 | |
| 324 | const waitBuildToBeFinished = async ( |
| 325 | version: TemplateVersion, |
| 326 | onRequest?: (data: TemplateVersion) => void, |
| 327 | ) => { |
| 328 | let data: TemplateVersion; |
| 329 | let jobStatus: ProvisionerJobStatus | undefined; |
| 330 | do { |
| 331 | // When pending we want to poll more frequently |
| 332 | await delay(jobStatus === "pending" ? 250 : 1000); |
| 333 | data = await API.getTemplateVersion(version.id); |
| 334 | onRequest?.(data); |
| 335 | jobStatus = data.job.status; |
| 336 | |
| 337 | if (jobStatus === "succeeded") { |
| 338 | return version.id; |
| 339 | } |
| 340 | } while (jobStatus === "pending" || jobStatus === "running"); |
| 341 | |
| 342 | // No longer pending/running, but didn't succeed |
| 343 | throw new JobError(data.job, version); |
| 344 | }; |
| 345 | |
| 346 | export class JobError extends Error { |
| 347 | public job: ProvisionerJob; |
no test coverage detected