(CommandList
  children: [
    (C {(echo)} {(DQ ("this is not working yet"))})
    (C {(exit)})
    (C {(source)} {(./virtualbox_env.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:UP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {($ VSub_Name "$VBM")} {(showvminfo)} {(bcpc-bootstrap)})
                          (C {(grep)} {(-i)} {(State)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick "`">
                spids: [34 48]
              )
            }
          spids: [33]
        )
      ]
      spids: [33]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalNot
                      child: 
                        (BoolBinary
                          op_id: BoolBinary_EqualTilde
                          left: {($ VSub_Name "$UP")}
                          right: {(running)}
                        )
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {($ VSub_Name "$VBM")} {(startvm)} {(bcpc-bootstrap)}) (C {(sleep)} {(30)})]
          spids: [-1 65]
        )
      ]
      else_action: [(C {(echo)} {(DQ ("bcpc-bootstrap is running"))})]
      spids: [86 95]
    )
    (C {(./vm-to-cluster.sh)} {(bloomberg.com)})
    (While
      cond: [
        (Sentence
          child: (C {(read)} {(HOSTNAME)} {(MACADDR)} {(IPADDR)} {(ILOIPADDR)} {(DOMAIN)} {(ROLE)})
          terminator: <Op_Semi ";">
        )
      ]
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {($ VSub_Name "$HOSTNAME")}
                              right: {(DQ (end))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Break break>)
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 136]
                )
              ]
              spids: [-1 143]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {(DQ ($ VSub_Name "$HOSTNAME"))}
                              right: {(bcpc-bootstrap)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NATADDR)
                          op: Equal
                          rhs: {($ VSub_Name "$IPADDR")}
                          spids: [164]
                        )
                      ]
                      spids: [164]
                    )
                    (C {(echo)} 
                      {
                        (DQ ("bcpc-bootstrap is currently at (NAT) address ") ($ VSub_Name "$NATADDR"))
                      }
                    )
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [-1 161]
                )
              ]
              spids: [-1 179]
            )
          ]
          spids: [118 181]
        )
      redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(cluster.txt)} spids:[183])]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name "$NATADDR")}))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Couldn't find the bootstrap node's IP address"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 198]
        )
      ]
      else_action: [
        (ForEach
          iter_name: ATTEMPT
          iter_words: [{(A)} {(B)} {(C)} {(D)} {(E)} {(F)} {(G)}]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (DBracket expr:(WordTest w:{(DQ ($ VSub_Number "$1"))}))
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:HOST)
                              op: Equal
                              rhs: {(DQ ($ VSub_Number "$1"))}
                              spids: [254]
                            )
                          ]
                          spids: [254]
                        )
                      ]
                      spids: [-1 251]
                    )
                  ]
                  else_action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:HOST)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$NATADDR"))}
                          spids: [263]
                        )
                      ]
                      spids: [263]
                    )
                  ]
                  spids: [260 269]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (SimpleCommand
                              words: [{(hash)} {(fping)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [278]
                                )
                              ]
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:UP)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(fping)} {(-aq)} {(${ VSub_Name HOST)})
                                              (C {(awk)} {(SQ <"{print $1}">)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick "`">
                                    spids: [286 302]
                                  )
                                }
                              spids: [285]
                            )
                          ]
                          spids: [285]
                        )
                      ]
                      spids: [-1 282]
                    )
                  ]
                  else_action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UP)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(ping)} {(-c)} {(1)} {(${ VSub_Name HOST)})
                                          (C {(grep)} {(ttl)})
                                          (C {(cut)} {(-f4)} {(-d) (DQ (" "))})
                                          (C {(cut)} {(-f1)} {(-d) (DQ (":"))})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick "`">
                                spids: [309 346]
                              )
                            }
                          spids: [308]
                        )
                      ]
                      spids: [308]
                    )
                  ]
                  spids: [305 349]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name "$UP"))})
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (C {(echo)} {(DQ ("VM is not up yet or is unreachable"))})
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DBracket
                                      expr: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {($ VSub_Name "$ATTEMPT")}
                                          right: {(G)}
                                        )
                                    )
                                  terminator: <Op_Semi ";">
                                )
                              ]
                              action: [
                                (C {(echo)} 
                                  {(DQ ("Maybe machine needs rework. Rerun this when it's up"))}
                                )
                                (C {(exit)} {(1)})
                              ]
                              spids: [-1 388]
                            )
                          ]
                          spids: [-1 403]
                        )
                        (C {(sleep)} {(5)})
                      ]
                      spids: [-1 365]
                    )
                  ]
                  else_action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [411 417]
                )
              ]
              spids: [237 420]
            )
          spids: [221 235]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:SSHCOMMON)
              op: Equal
              rhs: 
                {
                  (DQ 
                    (
"-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no"
                    )
                  )
                }
              spids: [423]
            )
          ]
          spids: [423]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:SSHCMD)
              op: Equal
              rhs: {(DQ ("ssh ") ($ VSub_Name "$SSHCOMMON"))}
              spids: [429]
            )
          ]
          spids: [429]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:SCPCMD)
              op: Equal
              rhs: {(DQ ("scp ") ($ VSub_Name "$SSHCOMMON"))}
              spids: [436]
            )
          ]
          spids: [436]
        )
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (SimpleCommand
                      words: [{(hash)} {(sshpass)}]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[449])]
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:EDITED)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-t)} 
                                    {(ubuntu) (Lit_Other "@") ($ VSub_Name "$HOST")} {(DQ ("echo ubuntu | sudo -S grep 'Static interfaces' /etc/network/interfaces"))}
                                  )
                                ]
                              )
                            left_token: <Left_Backtick "`">
                            spids: [457 475]
                          )
                        }
                      spids: [456]
                    )
                  ]
                  spids: [456]
                )
                (C {(echo)} {(DQ ("EDITED = ") ($ VSub_Name "$EDITED"))})
              ]
              spids: [-1 453]
            )
          ]
          else_action: [(C {(echo)} {(DQ ("please install sshpass"))}) (C {(exit)} {(1)})]
          spids: [486 501]
        )
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_EqualTilde
                          left: {(DQ ($ VSub_Name "$EDITED"))}
                          right: {(DQ ("Static interfaces"))}
                        )
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              action: [
                (C {(echo)} {(DQ ("interfaces file appears adjusted already"))})
                (C {(exit)} {(0)})
              ]
              spids: [-1 521]
            )
          ]
          else_action: [
            (C {(echo)} {(DQ ("copy interfaces file fragment..."))})
            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SCPCMD")} {(-p)} {(DQ (vm-eth.txt))} 
              {(DQ ("ubuntu@") ($ VSub_Name "$HOST") (":/tmp"))}
            )
            (C {(echo)} {(DQ ("add the network definitions"))})
            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-t)} 
              {(ubuntu) (Lit_Other "@") ($ VSub_Name "$HOST")} {(DQ ("echo ubuntu | sudo -S cp -p /etc/network/interfaces /etc/network/interfaces.orig"))}
            )
            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-t)} 
              {(ubuntu) (Lit_Other "@") ($ VSub_Name "$HOST")} {(DQ ("echo ubuntu | sudo -S cat /etc/network/interfaces /tmp/vm-eth.txt > /tmp/combined.txt"))}
            )
            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-t)} 
              {(ubuntu) (Lit_Other "@") ($ VSub_Name "$HOST")} {(DQ ("echo ubuntu | sudo -S mv /tmp/combined.txt /etc/network/interfaces"))}
            )
            (C {(echo)} {(DQ ("restart networking"))})
            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-t)} 
              {(ubuntu) (Lit_Other "@") ($ VSub_Name "$HOST")} {(DQ ("echo ubuntu | sudo -S service networking restart"))}
            )
          ]
          spids: [536 665]
        )
      ]
      spids: [212 667]
    )
  ]
)