(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'VERSION_FILE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'VERSION_FILE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VERSION_FILE='> name:VERSION_FILE)
          op: assign_op.Equal
          rhs: {(DQ <version.txt>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name VERSION_CONTENTS>
                              var_name: VERSION_CONTENTS
                              suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name VERSION_CONTENTS))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name VERSION_FILE))}
                )
              ]
              do_fork: T
            )
          ]
          spids: [148 164]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-f>}
                        {(DQ (${ Id.VSub_Name VERSION_FILE))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'2.2.1/etcd2'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name VERSION_FILE))}
                )
              ]
              do_fork: T
            )
          ]
          spids: [185 202]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'VERSION_CONTENTS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'VERSION_CONTENTS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VERSION_CONTENTS='> name:VERSION_CONTENTS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <cat>
                      more_env: []
                      words: [{<cat>} {(${ Id.VSub_Name VERSION_FILE)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ETCD_VERSION='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ETCD_VERSION='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETCD_VERSION='> name:ETCD_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName VERSION_CONTENTS)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d>} {(SQ <'/'>)} {<-f>} {<1>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ETCD_API='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ETCD_API='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETCD_API='> name:ETCD_API)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName VERSION_CONTENTS)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d>} {(SQ <'/'>)} {<-f>} {<2>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'NAME='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'NAME='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAME='> name:NAME)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name NAME>
                  var_name: NAME
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: 
                        {<etcd-> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <hostname>
                                more_env: []
                                words: [{<hostname>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  right: <Id.Right_DollarBrace '}'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'etcd_port='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'etcd_port='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etcd_port='> name:etcd_port)
          op: assign_op.Equal
          rhs: {<2379>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'event_etcd_port='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'event_etcd_port='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'event_etcd_port='> name:event_etcd_port)
          op: assign_op.Equal
          rhs: {<4002>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <wait_for_etcd_up>
      name: wait_for_etcd_up
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'port='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'port='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port='> name:port)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'health_ok='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'health_ok='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'health_ok='> name:health_ok)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'{'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                        <health> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <': '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <true> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <seq>
                            more_env: []
                            words: [{<seq>} {<120>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'health='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'health='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'health='> name:health)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <curl>
                                    more_env: []
                                    words: [
                                      {<curl>}
                                      {<--silent>}
                                      {<http> <Id.Lit_Colon ':'> <'//127.0.0.1'> <Id.Lit_Colon ':'> 
                                        (${ Id.VSub_Name port) <'/health'>
                                      }
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name health))}
                                        {<Id.Lit_Equals '='> <Id.Lit_Equals '='>}
                                        {(DQ (${ Id.VSub_Name health_ok))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [388 410]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<1>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <wait_for_cluster_healthy>
      name: wait_for_cluster_healthy
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <seq>
                            more_env: []
                            words: [{<seq>} {<120>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'cs_status='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'cs_status='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'cs_status='>
                                  name: cs_status
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <kubectl>
                                        more_env: []
                                        words: [
                                          {<kubectl>}
                                          {<get>}
                                          {<componentstatuses>}
                                          {<-o>}
                                          {<template>}
                                          {<--template> <Id.Lit_Equals '='> 
                                            (SQ 
                                              <
'{{range .items}}{{with index .conditions 0}}{{.type}}:{{.status}}{{end}}{{"\\n"}}{{end}}'
                                              >
                                            )
                                          }
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'componentstatuses='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'componentstatuses='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'componentstatuses='>
                                  name: componentstatuses
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            blame_tok: <echo>
                                            more_env: []
                                            words: [{<echo>} {(DQ (${ Id.VSub_Name cs_status))}]
                                            redirects: []
                                            do_fork: T
                                          )
                                          (command.Simple
                                            blame_tok: <grep>
                                            more_env: []
                                            words: [{<grep>} {<-c>} {(SQ <'Healthy:'>)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                        ops: [<Id.Op_Pipe _>]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'healthy='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'healthy='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'healthy='> name:healthy)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            blame_tok: <echo>
                                            more_env: []
                                            words: [{<echo>} {(DQ (${ Id.VSub_Name cs_status))}]
                                            redirects: []
                                            do_fork: T
                                          )
                                          (command.Simple
                                            blame_tok: <grep>
                                            more_env: []
                                            words: [{<grep>} {<-c>} {(SQ <'Healthy:True'>)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                        ops: [<Id.Op_Pipe _>]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name componentstatuses))}
                                        {<-eq>}
                                        {(DQ (${ Id.VSub_Name healthy))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [538 559]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<1>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <wait_for_etcd_and_apiserver_down>
      name: wait_for_etcd_and_apiserver_down
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <seq>
                            more_env: []
                            words: [{<seq>} {<120>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'etcd='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'etcd='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etcd='> name:etcd)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <docker>
                                        more_env: []
                                        words: [{<docker>} {<ps>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<etcd>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<-v>} {<etcd-empty-dir>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<-v>} {<etcd-monitor>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'apiserver='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'apiserver='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apiserver='> name:apiserver)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <docker>
                                        more_env: []
                                        words: [{<docker>} {<ps>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<apiserver>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name etcd))}
                                        {<-eq>}
                                        {(DQ <0>)}
                                        {<-a>}
                                        {(DQ (${ Id.VSub_Name apiserver))}
                                        {<-eq>}
                                        {(DQ <0>)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [679 712]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<1>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MANIFEST_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MANIFEST_DIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MANIFEST_DIR='> name:MANIFEST_DIR)
          op: assign_op.Equal
          rhs: {(DQ <'/etc/kubernetes/manifests'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MANIFEST_BACKUP_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MANIFEST_BACKUP_DIR='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'MANIFEST_BACKUP_DIR='>
              name: MANIFEST_BACKUP_DIR
            )
          op: assign_op.Equal
          rhs: {(DQ <'/etc/kubernetes/manifests-backups'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <mkdir>
      more_env: []
      words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(DQ <'Moving etcd(s) & apiserver manifest files to '> (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <mv>
          more_env: []
          words: [
            {<mv>}
            {(DQ (${ Id.VSub_Name MANIFEST_DIR) <'/kube-apiserver.manifest'>)}
            {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple blame_tok:<true> more_env:[] words:[{<true>}] redirects:[] do_fork:T)
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <mv>
          more_env: []
          words: [
            {<mv>}
            {(DQ (${ Id.VSub_Name MANIFEST_DIR) <'/etcd.manifest'>)}
            {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple blame_tok:<true> more_env:[] words:[{<true>}] redirects:[] do_fork:T)
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <mv>
          more_env: []
          words: [
            {<mv>}
            {(DQ (${ Id.VSub_Name MANIFEST_DIR) <'/etcd-events.manifest'>)}
            {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple blame_tok:<true> more_env:[] words:[{<true>}] redirects:[] do_fork:T)
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Waiting for etcd and kube-apiserver to be down'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <wait_for_etcd_and_apiserver_down>
                          more_env: []
                          words: [{<wait_for_etcd_and_apiserver_down>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Downing etcd and apiserver failed'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [846 853]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BACKUP_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BACKUP_DIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BACKUP_DIR='> name:BACKUP_DIR)
          op: assign_op.Equal
          rhs: {(DQ <'/var/tmp/backup'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name BACKUP_DIR))}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ (${ Id.VSub_Name ETCD_API))}
                        {<Id.Lit_Equals '='> <Id.Lit_Equals '='>}
                        {(DQ <etcd2>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Preparing etcd backup data for restore'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'Copying data to '> (${ Id.VSub_Name BACKUP_DIR) <' and restoring there'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/member/snap'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/member/wal'>)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [
                    {<mv>}
                    {<Id.Lit_Star '*'> <.snap>}
                    {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/member/snap/'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [
                {<mv>}
                {<Id.Lit_Star '*'> <.wal>}
                {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/member/wal/'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'Starting etcd '> (${ Id.VSub_Name ETCD_VERSION) <' to restore data'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'image='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'image='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'image='> name:image)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <docker>
                            more_env: []
                            words: [
                              {<docker>}
                              {<run>}
                              {<-d>}
                              {<-v>}
                              {(${ Id.VSub_Name BACKUP_DIR) <Id.Lit_Colon ':'> <'/var/etcd/data'>}
                              {<--net> <Id.Lit_Equals '='> <host>}
                              {<-p>}
                              {(${ Id.VSub_Name etcd_port) <Id.Lit_Colon ':'> 
                                (${ Id.VSub_Name etcd_port)
                              }
                              {(DQ <'gcr.io/google_containers/etcd:'> (${ Id.VSub_Name ETCD_VERSION))}
                              {<'/bin/sh'>}
                              {<-c>}
                              {
                                (DQ 
                                  <
'/usr/local/bin/etcd --data-dir /var/etcd/data --force-new-cluster'
                                  >
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_QMark '?'))}
                                {<-ne>}
                                {(DQ <0>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Docker container didn\'t started correctly'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1079 1096]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Container '> (${ Id.VSub_Name image) 
                    <' created, waiting for etcd to report as healthy'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <wait_for_etcd_up>
                                  more_env: []
                                  words: [{<wait_for_etcd_up>} {(DQ (${ Id.VSub_Name etcd_port))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Etcd didn\'t come back correctly'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1126 1139]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Etcd healthy - killing '> (${ Id.VSub_Name image) <' container'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <docker>
              more_env: []
              words: [{<docker>} {<kill>} {(DQ (${ Id.VSub_Name image))}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [895 915]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ (${ Id.VSub_Name ETCD_API))}
                        {<Id.Lit_Equals '='> <Id.Lit_Equals '='>}
                        {(DQ <etcd3>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Preparing etcd snapshot for restore'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name BACKUP_DIR))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'Copying data to '> (${ Id.VSub_Name BACKUP_DIR) <' and restoring there'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'number_files='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'number_files='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'number_files='> name:number_files)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <find>
                                more_env: []
                                words: [
                                  {<find>}
                                  {<.>}
                                  {<-maxdepth>}
                                  {<1>}
                                  {<-type>}
                                  {<f>}
                                  {<-name>}
                                  {(DQ <'*.db'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <wc>
                                more_env: []
                                words: [{<wc>} {<-l>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ (${ Id.VSub_Name number_files))}
                                {<-ne>}
                                {(DQ <1>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Incorrect number of *.db files - expected 1'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1263 1282]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<Id.Lit_Star '*'> <.db>} {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'snapshot='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'snapshot='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'snapshot='> name:snapshot)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <ls>
                              more_env: []
                              words: [{<ls>} {(${ Id.VSub_Name BACKUP_DIR)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'image='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'image='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'image='> name:image)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <docker>
                            more_env: []
                            words: [
                              {<docker>}
                              {<run>}
                              {<-d>}
                              {<-v>}
                              {(${ Id.VSub_Name BACKUP_DIR) <Id.Lit_Colon ':'> <'/var/tmp/backup'>}
                              {<--env>}
                              {<Id.Lit_VarLike 'ETCDCTL_API='> <3>}
                              {(DQ <'gcr.io/google_containers/etcd:'> (${ Id.VSub_Name ETCD_VERSION))}
                              {<'/bin/sh'>}
                              {<-c>}
                              {
                                (DQ <'/usr/local/bin/etcdctl snapshot restore '> 
                                  (${ Id.VSub_Name BACKUP_DIR) <'/'> (${ Id.VSub_Name snapshot) <' --name '> (${ Id.VSub_Name NAME) <' --initial-cluster '> 
                                  (${ Id.VSub_Name NAME) <'=http://localhost:2380; mv /'> (${ Id.VSub_Name NAME) <'.etcd/member /var/tmp/backup/'>
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_QMark '?'))}
                                {<-ne>}
                                {(DQ <0>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Docker container didn\'t started correctly'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1400 1417]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Prepare container exit code: '> 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <docker>
                          more_env: []
                          words: [{<docker>} {<wait>} {(${ Id.VSub_Name image)}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {(DQ (${ Id.VSub_Name BACKUP_DIR) <'/'> (${ Id.VSub_Name snapshot))}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1183 1203]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <cp>
      more_env: []
      words: [{<cp>} {(DQ (${ Id.VSub_Name VERSION_FILE))} {(DQ (${ Id.VSub_Name BACKUP_DIR))}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [
        {<export>}
        {<Id.Lit_VarLike 'CVM='> 
          (CommandSub
            left_token: <Id.Left_DollarParen '$('>
            child: 
              (command.CommandList
                children: [
                  (command.Sentence
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <curl>
                            more_env: []
                            words: [
                              {<curl>}
                              {(DQ <'http://metadata/computeMetadata/v1/instance/attributes/'>)}
                              {<-H>}
                              {(DQ <'Metadata-Flavor: Google'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <grep>
                            more_env: []
                            words: [{<grep>} {<-q>} {<gci>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_PipeAmp _>]
                      )
                    terminator: <Id.Op_Semi _>
                  )
                  (command.Simple
                    blame_tok: <echo>
                    more_env: []
                    words: [{<echo>} {($ Id.VSub_QMark '?')}]
                    redirects: []
                    do_fork: T
                  )
                ]
              )
            right: <Id.Eof_RParen _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ ($ Id.VSub_DollarName CVM))}
                          right: {(DQ <1>)}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'MNT_DISK='> (DQ <'/mnt/master-pd'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1519 1536]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <export>
          more_env: []
          words: [{<export>} {<Id.Lit_VarLike 'MNT_DISK='> (DQ <'/mnt/disks/master-pd'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name MNT_DISK) <'/var/etcd-corrupted'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mkdir>
      more_env: []
      words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name MNT_DISK) <'/var/etcd-corrupted'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(DQ <'Saving corrupted data to '> (${ Id.VSub_Name MNT_DISK) <'/var/etcd-corrupted'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mv>
      more_env: []
      words: [{<mv>} {<'/var/etcd/data'>} {(DQ (${ Id.VSub_Name MNT_DISK) <'/var/etcd-corrupted'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Copying restored data to /var/etcd/data'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mv>
      more_env: []
      words: [{<mv>} {(DQ (${ Id.VSub_Name BACKUP_DIR))} {<'/var/etcd/data'>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name RESET_EVENT_ETCD>
                              var_name: RESET_EVENT_ETCD
                              suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<Id.Lit_Equals '='> <Id.Lit_Equals '='>}
                        {(DQ <true>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Removing event-etcd corrupted data'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EVENTS_CORRUPTED_DIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EVENTS_CORRUPTED_DIR='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'EVENTS_CORRUPTED_DIR='>
                      name: EVENTS_CORRUPTED_DIR
                    )
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name MNT_DISK) <'/var/etcd-events-corrupted'>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name EVENTS_CORRUPTED_DIR))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name EVENTS_CORRUPTED_DIR))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<'/var/etcd/data-events'>} {(DQ (${ Id.VSub_Name EVENTS_CORRUPTED_DIR))}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1626 1647]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Restarting etcd and apiserver from restored snapshot'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mv>
      more_env: []
      words: [
        {<mv>}
        {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR)) <'/'> <Id.Lit_Star '*'>}
        {(DQ (${ Id.VSub_Name MANIFEST_DIR) <'/'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name MANIFEST_BACKUP_DIR))}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Waiting for etcd to come back'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <wait_for_etcd_up>
                          more_env: []
                          words: [{<wait_for_etcd_up>} {(DQ (${ Id.VSub_Name etcd_port))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Etcd didn\'t come back correctly'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1751 1764]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Waiting for event etcd to come back'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <wait_for_etcd_up>
                          more_env: []
                          words: [{<wait_for_etcd_up>} {(DQ (${ Id.VSub_Name event_etcd_port))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Event etcd didn\'t come back correctly'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1790 1803]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Waiting for apiserver to come back'>)}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <wait_for_cluster_healthy>
                          more_env: []
                          words: [{<wait_for_cluster_healthy>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Apiserver didn\'t come back correctly'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1829 1836]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Cluster successfully restored!'>)}]
      redirects: []
      do_fork: T
    )
  ]
)