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 }   + 
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