66 MessageUtilities
77} from "@scramjet/model" ;
88import { development } from "@scramjet/sth-config" ;
9- import { CommunicationChannel as CC , RunnerExitCode , RunnerMessageCode } from "@scramjet/symbols" ;
9+ import { CommunicationChannel as CC , RunnerMessageCode } from "@scramjet/symbols" ;
1010import {
1111 APIRoute ,
1212 AppConfig ,
@@ -45,6 +45,7 @@ import { ObjLogger } from "@scramjet/obj-logger";
4545import { RunnerConnectInfo } from "@scramjet/types/src/runner-connect" ;
4646import { cancellableDefer , CancellablePromise , defer , promiseTimeout , TypedEmitter } from "@scramjet/utility" ;
4747import { ReasonPhrases } from "http-status-codes" ;
48+ import { mapRunnerExitCode } from "./utils" ;
4849
4950/**
5051 * @TODO : Runner exits after 10secs and k8s client checks status every 500ms so we need to give it some time
@@ -239,7 +240,7 @@ export class CSIController extends TypedEmitter<Events> {
239240
240241 async main ( ) {
241242 this . status = InstanceStatus . RUNNING ;
242- this . logger . trace ( "Instance started " , this . status ) ;
243+ this . logger . trace ( "Main. Current status: " , this . status ) ;
243244
244245 let code = - 1 ;
245246
@@ -315,7 +316,7 @@ export class CSIController extends TypedEmitter<Events> {
315316 } ;
316317
317318 this . instancePromise = instanceMain ( )
318- . then ( ( exitcode ) => this . mapRunnerExitCode ( exitcode ) )
319+ . then ( ( exitcode ) => mapRunnerExitCode ( exitcode , this . sequence ) )
319320 . catch ( ( error ) => {
320321 this . logger . error ( "Instance promise rejected" , error ) ;
321322 this . initResolver ?. rej ( error ) ;
@@ -336,74 +337,6 @@ export class CSIController extends TypedEmitter<Events> {
336337 } ) ;
337338 }
338339
339- // eslint-disable-next-line complexity
340- private mapRunnerExitCode ( exitcode : number ) : Promise <
341- { message : string , exitcode : number , status : InstanceStatus }
342- > {
343- // eslint-disable-next-line default-case
344- switch ( exitcode ) {
345- case RunnerExitCode . INVALID_ENV_VARS : {
346- return Promise . reject ( {
347- message : "Runner was started with invalid configuration. This is probably a bug in STH." ,
348- exitcode : RunnerExitCode . INVALID_ENV_VARS ,
349- status : InstanceStatus . ERRORED
350- } ) ;
351- }
352- case RunnerExitCode . PODS_LIMIT_REACHED : {
353- return Promise . reject ( {
354- message : "Instance limit reached" ,
355- exitcode : RunnerExitCode . PODS_LIMIT_REACHED ,
356- status : InstanceStatus . ERRORED
357- } ) ;
358- }
359- case RunnerExitCode . INVALID_SEQUENCE_PATH : {
360- return Promise . reject ( {
361- message : `Sequence entrypoint path ${ this . sequence . config . entrypointPath } is invalid. ` +
362- "Check `main` field in Sequence package.json" ,
363- exitcode : RunnerExitCode . INVALID_SEQUENCE_PATH ,
364- status : InstanceStatus . ERRORED
365- } ) ;
366- }
367- case RunnerExitCode . SEQUENCE_FAILED_ON_START : {
368- return Promise . reject ( {
369- message : "Sequence failed on start" ,
370- exitcode : RunnerExitCode . SEQUENCE_FAILED_ON_START ,
371- status : InstanceStatus . ERRORED
372- } ) ;
373- }
374- case RunnerExitCode . SEQUENCE_FAILED_DURING_EXECUTION : {
375- return Promise . reject ( {
376- message : "Sequence failed during execution" ,
377- exitcode : RunnerExitCode . SEQUENCE_FAILED_DURING_EXECUTION ,
378- status : InstanceStatus . ERRORED
379- } ) ;
380- }
381- case RunnerExitCode . SEQUENCE_UNPACK_FAILED : {
382- return Promise . reject ( {
383- message : "Sequence unpack failed" ,
384- exitcode : RunnerExitCode . SEQUENCE_UNPACK_FAILED ,
385- status : InstanceStatus . ERRORED
386- } ) ;
387- }
388- case RunnerExitCode . KILLED : {
389- return Promise . resolve ( {
390- message : "Instance killed" , exitcode : RunnerExitCode . KILLED , status : InstanceStatus . COMPLETED
391- } ) ;
392- }
393- case RunnerExitCode . STOPPED : {
394- return Promise . resolve ( {
395- message : "Instance stopped" , exitcode : RunnerExitCode . STOPPED , status : InstanceStatus . COMPLETED
396- } ) ;
397- }
398- }
399-
400- if ( exitcode > 0 ) {
401- return Promise . reject ( { message : "Runner failed" , exitcode, status : InstanceStatus . ERRORED } ) ;
402- }
403-
404- return Promise . resolve ( { message : "Instance completed" , exitcode, status : InstanceStatus . COMPLETED } ) ;
405- }
406-
407340 async cleanup ( ) {
408341 await this . instanceAdapter . cleanup ( ) ;
409342
0 commit comments