(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Number '$1'))}))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DBracket expr:(BoolUnary op_id:BoolUnary_d child:{(environments)}))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ENVIRONMENTS)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(ls)} {(-lt)} {(environments/) (Lit_Other '*') (.json)})
                                          (C {(wc)} {(-l)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [34 48]
                              )
                            }
                          spids: [33]
                        )
                      ]
                      spids: [33]
                    )
                  ]
                  spids: [16777215 30]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ("Usage: VIP not specified and can't find environment directory"))})
                (C {(exit)})
              ]
              spids: [51 64]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$ENVIRONMENTS')})
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VIPFILE)
                          op: Equal
                          rhs: {(environments/) (Lit_Other '*') (.json)}
                          spids: [82]
                        )
                      ]
                      spids: [82]
                    )
                  ]
                  spids: [16777215 79]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('Usage: VIP not specified and more than one environment file found'))})
                (C {(exit)})
              ]
              spids: [88 101]
            )
          ]
          spids: [16777215 16]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:VIPFILE)
              op: Equal
              rhs: {(environments/) (DQ ($ VSub_Number '$1')) (.json)}
              spids: [106]
            )
          ]
          spids: [106]
        )
      ]
      spids: [103 113]
    )
    (Pipeline
      children: [
        (C {(grep)} {(-i)} {(vip)} {($ VSub_Name '$VIPFILE')})
        (SimpleCommand
          words: [{(tr)} {(-d)} {(SQ <':'>)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/tmp/vips.txt)} spids:[132])]
        )
      ]
      negated: False
    )
    (While
      cond: [(Sentence child:(C {(read)} {(V)} {(IPADDRESS)}) terminator:<Op_Semi ';'>)]
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:VIP)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {($ VSub_Name '$IPADDRESS')})
                                  (C {(tr)} {(-d)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)})
                                  (C {(tr)} {(-d)} {(Lit_Comma ',')})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [149 169]
                      )
                    }
                  spids: [148]
                )
              ]
              spids: [148]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(which)} {(fping)})]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [180 184]
                                      )
                                    }
                                )
                            )
                        )
                      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)} {(DQ ($ VSub_Name '$VIP'))})
                                          (C {(awk)} {(SQ <'{print $1}'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [197 213]
                              )
                            }
                          spids: [196]
                        )
                      ]
                      spids: [196]
                    )
                  ]
                  spids: [16777215 189]
                )
              ]
              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)} {(-c1)} {(DQ ($ VSub_Name '$VIP'))})
                                      (C {(grep)} {(ttl)})
                                      (C {(awk)} {(SQ <'{print $4}'>)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [220 242]
                          )
                        }
                      spids: [219]
                    )
                  ]
                  spids: [219]
                )
              ]
              spids: [216 245]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$UP'))})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:MAC) op:Equal rhs:{(DQ )} spids:[266])]
                      spids: [266]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:HOST) op:Equal rhs:{(DQ )} spids:[271])]
                      spids: [271]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MAC)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(arp)} {(-n)} {($ VSub_Name '$VIP')})
                                          (C {(grep)} {(ether)})
                                          (C {(awk)} {(SQ <'{print $3}'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [281 301]
                              )
                            }
                          spids: [280]
                        )
                      ]
                      spids: [280]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$MAC')})
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('arp lookup of ') ($ VSub_Name '$VIP') (' failed'))})
                          ]
                          spids: [16777215 315]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:HOST)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(grep)} {(-i)} {(DQ ($ VSub_Name '$MAC'))} {(cluster.txt)})
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [331 341]
                                  )
                                }
                              spids: [330]
                            )
                          ]
                          spids: [330]
                        )
                      ]
                      spids: [327 344]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$HOST')})
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ($ VSub_Name '$VIP') (' is currently on : ') ($ VSub_Name '$HOST'))
                              }
                            )
                          ]
                          spids: [16777215 358]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(DQ ('Searching for ') ($ VSub_Name '$VIP') (' host by host'))})
                        (While
                          cond: [
                            (Sentence
                              child: 
                                (C {(read)} {(HOST)} {(MAC)} {(IP)} {(IP2)} {(DOMAIN)} {(ROLE)} {(OVERRIDE)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:MATCH)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (C {(./nodessh.sh)} {($ VSub_Number '$1')} 
                                                    {($ VSub_Name '$IP')} {(DQ ('ip a | grep ') (${ VSub_Name VIP))}
                                                  )
                                                ]
                                              )
                                            left_token: <Left_Backtick '`'>
                                            spids: [413 426]
                                          )
                                        }
                                      spids: [412]
                                    )
                                  ]
                                  spids: [412]
                                )
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (DBracket
                                              expr: 
                                                (LogicalAnd
                                                  left: 
                                                    (BoolUnary
                                                      op_id: BoolUnary_n
                                                      child: {($ VSub_Name '$MATCH')}
                                                    )
                                                  right: 
                                                    (BoolBinary
                                                      op_id: BoolBinary_EqualTilde
                                                      left: {($ VSub_Name '$MATCH')}
                                                      right: {(inet)}
                                                    )
                                                )
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:HOST)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (C {(grep)} {(-i)} {(DQ ($ VSub_Name '$HOST'))} 
                                                            {(cluster.txt)}
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_Backtick '`'>
                                                    spids: [452 462]
                                                  )
                                                }
                                              spids: [451]
                                            )
                                          ]
                                          spids: [451]
                                        )
                                        (C {(echo)} 
                                          {
                                            (DQ ($ VSub_Name '$VIP') (' is currently on : ') 
                                              ($ VSub_Name '$HOST')
                                            )
                                          }
                                        )
                                        (ControlFlow
                                          token: <ControlFlow_Break break>
                                        )
                                      ]
                                      spids: [16777215 448]
                                    )
                                  ]
                                  spids: [16777215 477]
                                )
                              ]
                              spids: [409 480]
                            )
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: 16777215
                              arg_word: {(cluster.txt)}
                              spids: [482]
                            )
                          ]
                        )
                      ]
                      spids: [370 487]
                    )
                  ]
                  spids: [16777215 263]
                )
              ]
              else_action: [(C {(echo)} {(DQ ($ VSub_Name '$VIP') (' appears to be down'))})]
              spids: [490 501]
            )
          ]
          spids: [145 503]
        )
      redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/tmp/vips.txt)} spids:[505])]
    )
    (C {(rm)} {(/tmp/vips.txt)})
  ]
)