(CommandList children: [ (FuncDef name: main body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children:[(C {(healthy)} {(60)})] negated:True) terminator: <Op_Semi ";"> ) ] action: [ (C {(stop_docker)}) (C {(start_docker)}) (C {(echo)} {(DQ ("waiting 30s for startup"))}) (C {(sleep)} {(30)}) (C {(healthy)} {(60)}) ] spids: [-1 70] ) ] spids: [-1 96] ) (While cond: [(Sentence child:(C {(healthy)}) terminator:<Op_Semi ";">)] body: (DoGroup children:[(C {(sleep)} {(10)})] spids:[105113]) ) (C {(echo)} {(DQ ("Docker failed!"))}) (C {(exit)} {(2)}) ] spids: [58] ) spids: [54 57] ) (FuncDef name: healthy body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max_retry_sec) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [147] ) ] spids: [147] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:starttime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s)})] ) left_token: <Left_CommandSub "$("> spids: [158 164] ) } spids: [157] ) ] spids: [157] ) (While cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(timeout)} {(60)} {(docker)} {(ps)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [179] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolUnary op_id: BoolUnary_z child: {(DQ ($ VSub_Name "$max_retry_sec"))} ) right: (BoolBinary op_id: BoolBinary_gt left: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(Lit_Other "+") (Lit_Other "%") (s) } ) ] ) left_token: <Left_CommandSub "$("> spids: [201 207] ) } ) right: (ArithVarRef name:starttime) ) spids: [199 214] ) } right: {(DQ ($ VSub_Name "$max_retry_sec"))} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("docker ps did not succeed"))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(2)} ) ] spids: [-1 225] ) ] else_action: [(C {(echo)} {(DQ ("waiting 5s before retry"))}) (C {(sleep)} {(5)})] spids: [240 255] ) ] spids: [184 258] ) ) (C {(echo)} {(DQ ("docker is healthy"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [144] ) spids: [140 143] ) (FuncDef name: stop_docker body: (BraceGroup children: [ (C {(/etc/init.d/docker)} {(stop)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:starttime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s)})] ) left_token: <Left_Backtick "`"> spids: [292 298] ) } spids: [291] ) ] spids: [291] ) (While cond: [ (Sentence child: (SimpleCommand words: [{(pidof)} {(docker)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[307])] ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currenttime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s)})] ) left_token: <Left_Backtick "`"> spids: [316 322] ) } spids: [315] ) ] spids: [315] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:elapsedtime) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:currenttime) right: (ArithVarRef name:starttime) ) ) ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name "$elapsedtime")} {(-gt)} {(60)}) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("attempting to kill docker process with sigkill signal"))}) (AndOr children: [ (C {(kill)} {(-9)} { (CommandSubPart command_list: (CommandList children:[(C {(pidof)} {(docker)})]) left_token: <Left_Backtick "`"> spids: [368 372] ) } ) (C {(sleep)} {(10)}) ] op_id: Op_DPipe ) ] spids: [-1 354] ) ] else_action: [(C {(echo)} {(DQ ("waiting clean shutdown"))}) (C {(sleep)} {(10)})] spids: [381 396] ) ] spids: [312 399] ) ) ] spids: [279] ) spids: [275 278] ) (FuncDef name: start_docker body: (BraceGroup children: [ (C {(echo)} {(DQ ("docker is not running. starting docker"))}) (C {(rm)} {(-rf)} {(/var/lib/docker/network)}) (C {(/etc/init.d/docker)} {(start)}) ] spids: [408] ) spids: [404 407] ) (C {(main)}) ] )