(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [49 57]
              ) (/../..)
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (C {(source)} 
      {
        (DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/) 
          (BracedVarSub
            token: <VSub_Name KUBE_CONFIG_FILE>
            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(DQ (config-default.sh))})
            spids: [67 73]
          )
        )
      }
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/common.sh))})
    (FuncDef
      name: detect-master
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_MASTER_IP)
                  op: Equal
                  rhs: {($ VSub_Name '$MASTER_IP')}
                  spids: [96]
                )
              ]
              spids: [96]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ('KUBE_MASTER_IP: ') (${ VSub_Name KUBE_MASTER_IP))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[109])]
            )
          ]
          spids: [93]
        )
      spids: [86 92]
    )
    (FuncDef
      name: detect-nodes
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ('Nodes already detected'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[131])]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_NODE_IP_ADDRESSES)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name NODE_IPS>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [138 143]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [135]
                )
              ]
              spids: [135]
            )
          ]
          spids: [122]
        )
      spids: [118 121]
    )
    (FuncDef
      name: verify-prereqs
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: x
              iter_words: [{(vagrant)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (SimpleCommand
                                      words: [{(which)} {(DQ ($ VSub_Name '$x'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 16777215
                                          arg_word: {(/dev/null)}
                                          spids: [185]
                                        )
                                      ]
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ("Can't find ") ($ VSub_Name '$x') 
                                  (' in PATH, please fix and retry.')
                                )
                              }
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [16777215 189]
                        )
                      ]
                      spids: [16777215 206]
                    )
                  ]
                  spids: [172 209]
                )
              spids: [168 170]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:vagrant_plugins)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(vagrant)} {(plugin)} {(list)})
                                  (C {(sed)} {(SQ <'-es% .*$%%'>)} {(SQ <'-es%  *% %g'>)})
                                  (C {(tr)} {(SQ <' '>)} {(SQ <Lit_EscapedChar '\\n'>)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [216 246]
                      )
                    }
                  spids: [215]
                )
              ]
              spids: [213]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:providers)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(SQ )}
                          {(vmware_fusion)}
                          {(vagrant-vmware-fusion)}
                          {(SQ )}
                          {(vmware_workstation)}
                          {(vagrant-vmware-workstation)}
                          {(prlctl)}
                          {(parallels)}
                          {(vagrant-parallels)}
                          {(VBoxManage)}
                          {(virtualbox)}
                          {(SQ )}
                          {(virsh)}
                          {(libvirt)}
                          {(vagrant-libvirt)}
                          {(SQ )}
                          {(vsphere)}
                          {(vagrant-vsphere)}
                        ]
                      )
                    }
                  spids: [251]
                )
              ]
              spids: [249]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provider_found)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [326]
                )
              ]
              spids: [324]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:provider_bin) op:Equal spids:[333])]
              spids: [331]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:provider_name) op:Equal spids:[338])]
              spids: [336]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:provider_plugin_re) op:Equal spids:[343])]
              spids: [341]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other '[')} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name providers>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [352 358]
                          )
                        )
                      } {(-gt)} {(0)} {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:provider_bin)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name providers>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                spids: [372 377]
                              )
                            }
                          spids: [371]
                        )
                      ]
                      spids: [371]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:provider_name)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name providers>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                spids: [381 386]
                              )
                            }
                          spids: [380]
                        )
                      ]
                      spids: [380]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:provider_plugin_re)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name providers>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                                spids: [390 395]
                              )
                            }
                          spids: [389]
                        )
                      ]
                      spids: [389]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:providers)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name providers>
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)}))
                                        spids: [401 408]
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [398]
                        )
                      ]
                      spids: [398]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(-n)} 
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name VAGRANT_DEFAULT_PROVIDER>
                                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                            spids: [425 428]
                                          )
                                        )
                                      } {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name VAGRANT_DEFAULT_PROVIDER))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ (${ VSub_Name provider_name))} {(Lit_Other ']')}
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 457]
                        )
                      ]
                      spids: [16777215 463]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (Subshell
                                      child: 
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} {(-z)} 
                                              {(DQ (${ VSub_Name provider_bin))} {(Lit_Other ']')}
                                            )
                                            (SimpleCommand
                                              words: [{(which)} {(DQ (${ VSub_Name provider_bin))}]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: 16777215
                                                  arg_word: {(/dev/null)}
                                                  spids: [494]
                                                )
                                                (Redir
                                                  op_id: Redir_GreatAnd
                                                  fd: 2
                                                  arg_word: {(1)}
                                                  spids: [497]
                                                )
                                              ]
                                            )
                                          ]
                                          op_id: Op_DPipe
                                        )
                                      spids: [469 499]
                                    )
                                    (Subshell
                                      child: 
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} {(-z)} 
                                              {(DQ (${ VSub_Name provider_plugin_re))} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {
                                                (DQ 
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (Pipeline
                                                            children: [
                                                              (C {(echo)} 
                                                                {(DQ (${ VSub_Name vagrant_plugins))}
                                                              )
                                                              (C {(grep)} {(-E)} 
                                                                {
                                                                  (DQ ('^') 
                                                                    (${ VSub_Name provider_plugin_re) (Lit_Other '$')
                                                                  )
                                                                }
                                                              )
                                                            ]
                                                            negated: False
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [527 549]
                                                  )
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          ]
                                          op_id: Op_DPipe
                                        )
                                      spids: [505 553]
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:provider_found)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name provider_name))}
                                  spids: [559]
                                )
                              ]
                              spids: [559]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [16777215 556]
                        )
                      ]
                      spids: [16777215 574]
                    )
                  ]
                  spids: [368 577]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name provider_found))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name VAGRANT_DEFAULT_PROVIDER>
                                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                        spids: [606 609]
                                      )
                                    )
                                  } {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ("Can't find the necessary components for the ") 
                                  (${ VSub_Name VAGRANT_DEFAULT_PROVIDER) (' vagrant provider.')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('Possible reasons could be: '))})
                            (C {(echo)} {(-e)} 
                              {(DQ (Lit_Other '\\') ('t- vmrun utility is not in your path'))}
                            )
                            (C {(echo)} {(-e)} 
                              {(DQ (Lit_Other '\\') ('t- Vagrant plugin was not found.'))}
                            )
                            (C {(echo)} {(-e)} 
                              {
                                (DQ (Lit_Other '\\') 
                                  ('t- VAGRANT_DEFAULT_PROVIDER is set, but not found.')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('Please fix and retry.'))})
                          ]
                          spids: [16777215 615]
                        )
                      ]
                      else_action: [
                        (C {(echo)} 
                          {
                            (DQ 
                              (
"Can't find the necessary components for any viable vagrant providers (e.g., virtualbox), please fix and retry."
                              )
                            )
                          }
                        )
                      ]
                      spids: [673 683]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [16777215 596]
                )
              ]
              spids: [16777215 692]
            )
            (C {(export)} {(Lit_VarLike 'VAGRANT_CWD=') (DQ (${ VSub_Name KUBE_ROOT))})
            (C {(export)} {(Lit_VarLike 'USING_KUBE_SCRIPTS=') (true)})
          ]
          spids: [160]
        )
      spids: [156 159]
    )
    (FuncDef
      name: create-provision-scripts
      body: 
        (BraceGroup
          children: [
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (ensure-temp-dir)
              }
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (C {(echo)} {(DQ ('#! /bin/bash'))})
                    (C {(echo-kube-env)})
                    (C {(echo)} {(DQ ("NODE_IP='") (${ VSub_Name MASTER_IP) ("'"))})
                    (C {(echo)} {(DQ ("CONTAINER_ADDR='") (${ VSub_Name MASTER_CONTAINER_ADDR) ("'"))})
                    (C {(echo)} 
                      {(DQ ("CONTAINER_NETMASK='") (${ VSub_Name MASTER_CONTAINER_NETMASK) ("'"))}
                    )
                    (C {(awk)} {(SQ <'!/^#/'>)} 
                      {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/provision-utils.sh))}
                    )
                    (C {(awk)} {(SQ <'!/^#/'>)} 
                      {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/provision-network-master.sh))}
                    )
                    (C {(awk)} {(SQ <'!/^#/'>)} 
                      {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/provision-master.sh))}
                    )
                  ]
                )
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name KUBE_TEMP) (/master-start.sh))}
                  spids: [833]
                )
              ]
              spids: [743 831]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name NODE_NAMES>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [855 861]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Subshell
                      child: 
                        (CommandList
                          children: [
                            (C {(echo)} {(DQ ('#! /bin/bash'))})
                            (C {(echo-kube-env)})
                            (C {(echo)} 
                              {
                                (DQ ('NODE_NAME=(') 
                                  (BracedVarSub
                                    token: <VSub_Name NODE_NAMES>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                    spids: [890 895]
                                  ) (')')
                                )
                              }
                            )
                            (C {(echo)} 
                              {
                                (DQ ("NODE_IP='") 
                                  (BracedVarSub
                                    token: <VSub_Name NODE_IPS>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                    spids: [904 909]
                                  ) ("'")
                                )
                              }
                            )
                            (C {(echo)} {(DQ ("NODE_ID='") ($ VSub_Name '$i') ("'"))})
                            (C {(echo)} 
                              {
                                (DQ ("CONTAINER_ADDR='") 
                                  (BracedVarSub
                                    token: <VSub_Name NODE_CONTAINER_ADDRS>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                    spids: [927 932]
                                  ) ("'")
                                )
                              }
                            )
                            (C {(echo)} 
                              {
                                (DQ ("CONTAINER_NETMASK='") 
                                  (BracedVarSub
                                    token: <VSub_Name NODE_CONTAINER_NETMASKS>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                    spids: [941 946]
                                  ) ("'")
                                )
                              }
                            )
                            (C {(awk)} {(SQ <'!/^#/'>)} 
                              {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/provision-utils.sh))}
                            )
                            (C {(awk)} {(SQ <'!/^#/'>)} 
                              {
                                (DQ (${ VSub_Name KUBE_ROOT) 
                                  (/cluster/vagrant/provision-network-node.sh)
                                )
                              }
                            )
                            (C {(awk)} {(SQ <'!/^#/'>)} 
                              {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/vagrant/provision-node.sh))}
                            )
                          ]
                        )
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: 
                            {(DQ (${ VSub_Name KUBE_TEMP) (/node-start-) (${ VSub_Name i) (.sh))}
                          spids: [995]
                        )
                      ]
                      spids: [873 993]
                    )
                  ]
                  spids: [870 1009]
                )
            )
          ]
          spids: [730]
        )
      spids: [726 729]
    )
    (FuncDef
      name: echo-kube-env
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('KUBE_ROOT=/vagrant'))})
            (C {(echo)} {(DQ ("INSTANCE_PREFIX='") (${ VSub_Name INSTANCE_PREFIX) ("'"))})
            (C {(echo)} {(DQ ("MASTER_NAME='") (${ VSub_Name INSTANCE_PREFIX) ("-master'"))})
            (C {(echo)} {(DQ ("MASTER_IP='") (${ VSub_Name MASTER_IP) ("'"))})
            (C {(echo)} 
              {
                (DQ ('NODE_NAMES=(') 
                  (BracedVarSub
                    token: <VSub_Name NODE_NAMES>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1067 1072]
                  ) (')')
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ('NODE_IPS=(') 
                  (BracedVarSub
                    token: <VSub_Name NODE_IPS>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1081 1086]
                  ) (')')
                )
              }
            )
            (C {(echo)} {(DQ ('DEFAULT_NETWORK_IF_NAME=') (${ VSub_Name DEFAULT_NETWORK_IF_NAME))})
            (C {(echo)} {(DQ ("CONTAINER_SUBNET='") (${ VSub_Name CONTAINER_SUBNET) ("'"))})
            (C {(echo)} {(DQ ("CLUSTER_IP_RANGE='") (${ VSub_Name CLUSTER_IP_RANGE) ("'"))})
            (C {(echo)} 
              {(DQ ("MASTER_CONTAINER_SUBNET='") (${ VSub_Name MASTER_CONTAINER_SUBNET) ("'"))}
            )
            (C {(echo)} 
              {
                (DQ ("NODE_CONTAINER_NETMASKS='") 
                  (BracedVarSub
                    token: <VSub_Name NODE_CONTAINER_NETMASKS>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1138 1143]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ('NODE_CONTAINER_SUBNETS=(') 
                  (BracedVarSub
                    token: <VSub_Name NODE_CONTAINER_SUBNETS>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1152 1157]
                  ) (')')
                )
              }
            )
            (C {(echo)} 
              {(DQ ("SERVICE_CLUSTER_IP_RANGE='") (${ VSub_Name SERVICE_CLUSTER_IP_RANGE) ("'"))}
            )
            (C {(echo)} {(DQ ("MASTER_USER='") (${ VSub_Name MASTER_USER) ("'"))})
            (C {(echo)} {(DQ ("MASTER_PASSWD='") (${ VSub_Name MASTER_PASSWD) ("'"))})
            (C {(echo)} {(DQ ("KUBE_USER='") (${ VSub_Name KUBE_USER) ("'"))})
            (C {(echo)} {(DQ ("KUBE_PASSWORD='") (${ VSub_Name KUBE_PASSWORD) ("'"))})
            (C {(echo)} {(DQ ("KUBE_BEARER_TOKEN='") (${ VSub_Name KUBE_BEARER_TOKEN) ("'"))})
            (C {(echo)} 
              {(DQ ("ENABLE_CLUSTER_MONITORING='") (${ VSub_Name ENABLE_CLUSTER_MONITORING) ("'"))}
            )
            (C {(echo)} 
              {
                (DQ ("ENABLE_CLUSTER_LOGGING='") 
                  (BracedVarSub
                    token: <VSub_Name ENABLE_CLUSTER_LOGGING>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                    spids: [1243 1247]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("ELASTICSEARCH_LOGGING_REPLICAS='") 
                  (BracedVarSub
                    token: <VSub_Name ELASTICSEARCH_LOGGING_REPLICAS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)})
                    spids: [1256 1260]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("ENABLE_NODE_LOGGING='") 
                  (BracedVarSub
                    token: <VSub_Name ENABLE_NODE_LOGGING>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                    spids: [1269 1273]
                  ) ("'")
                )
              }
            )
            (C {(echo)} {(DQ ("ENABLE_CLUSTER_UI='") (${ VSub_Name ENABLE_CLUSTER_UI) ("'"))})
            (C {(echo)} 
              {
                (DQ ("ENABLE_HOSTPATH_PROVISIONER='") 
                  (BracedVarSub
                    token: <VSub_Name ENABLE_HOSTPATH_PROVISIONER>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                    spids: [1293 1297]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("LOGGING_DESTINATION='") 
                  (BracedVarSub
                    token: <VSub_Name LOGGING_DESTINATION>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1306 1309]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("ENABLE_CLUSTER_DNS='") 
                  (BracedVarSub
                    token: <VSub_Name ENABLE_CLUSTER_DNS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                    spids: [1318 1322]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("DNS_SERVER_IP='") 
                  (BracedVarSub
                    token: <VSub_Name DNS_SERVER_IP>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1331 1334]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("DNS_DOMAIN='") 
                  (BracedVarSub
                    token: <VSub_Name DNS_DOMAIN>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1343 1346]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("RUNTIME_CONFIG='") 
                  (BracedVarSub
                    token: <VSub_Name RUNTIME_CONFIG>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1355 1358]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("ADMISSION_CONTROL='") 
                  (BracedVarSub
                    token: <VSub_Name ADMISSION_CONTROL>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1367 1370]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("DOCKER_OPTS='") 
                  (BracedVarSub
                    token: <VSub_Name EXTRA_DOCKER_OPTS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1379 1382]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("VAGRANT_DEFAULT_PROVIDER='") 
                  (BracedVarSub
                    token: <VSub_Name VAGRANT_DEFAULT_PROVIDER>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1391 1394]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("KUBELET_TOKEN='") 
                  (BracedVarSub
                    token: <VSub_Name KUBELET_TOKEN>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1403 1406]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("KUBE_PROXY_TOKEN='") 
                  (BracedVarSub
                    token: <VSub_Name KUBE_PROXY_TOKEN>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1415 1418]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("MASTER_EXTRA_SANS='") 
                  (BracedVarSub
                    token: <VSub_Name MASTER_EXTRA_SANS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1427 1430]
                  ) ("'")
                )
              }
            )
            (C {(echo)} {(DQ ("ENABLE_CPU_CFS_QUOTA='") (${ VSub_Name ENABLE_CPU_CFS_QUOTA) ("'"))})
            (C {(echo)} 
              {
                (DQ ("NETWORK_PROVIDER='") 
                  (BracedVarSub
                    token: <VSub_Name NETWORK_PROVIDER>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1450 1453]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("OPENCONTRAIL_TAG='") 
                  (BracedVarSub
                    token: <VSub_Name OPENCONTRAIL_TAG>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1462 1465]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("OPENCONTRAIL_KUBERNETES_TAG='") 
                  (BracedVarSub
                    token: <VSub_Name OPENCONTRAIL_KUBERNETES_TAG>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1474 1477]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("OPENCONTRAIL_PUBLIC_SUBNET='") 
                  (BracedVarSub
                    token: <VSub_Name OPENCONTRAIL_PUBLIC_SUBNET>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1486 1489]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("E2E_STORAGE_TEST_ENVIRONMENT='") 
                  (BracedVarSub
                    token: <VSub_Name E2E_STORAGE_TEST_ENVIRONMENT>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1498 1501]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("CUSTOM_FEDORA_REPOSITORY_URL='") 
                  (BracedVarSub
                    token: <VSub_Name CUSTOM_FEDORA_REPOSITORY_URL>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1510 1513]
                  ) ("'")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("EVICTION_HARD='") 
                  (BracedVarSub
                    token: <VSub_Name EVICTION_HARD>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [1522 1525]
                  ) ("'")
                )
              }
            )
          ]
          spids: [1020]
        )
      spids: [1014 1019]
    )
    (FuncDef
      name: verify-cluster
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Each machine instance has been created/updated.'))})
            (C {(echo)} 
              {(DQ ('  Now waiting for the Salt provisioning process to complete on each machine.'))}
            )
            (C {(echo)} {(DQ ('  This can take some time based on your network, disk, and cpu speed.'))})
            (C {(echo)} 
              {
                (DQ 
                  (
'  It is possible for an error to occur during Salt provision of cluster and this could loop forever.'
                  )
                )
              }
            )
            (C {(echo)} {(DQ ('Validating master'))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:machine)
                  op: Equal
                  rhs: {(DQ (master))}
                  spids: [1593]
                )
              ]
              spids: [1591]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:required_processes)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (kube-apiserver))}
                          {(DQ (kube-scheduler))}
                          {(DQ (kube-controller-manager))}
                          {(DQ (kubelet))}
                          {(DQ (docker))}
                        ]
                      )
                    }
                  spids: [1603]
                )
              ]
              spids: [1599]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:validated) op:Equal rhs:{(DQ (1))} spids:[1629])]
              spids: [1627]
            )
            (Until
              cond: [
                (Sentence
                  child: 
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ ($ VSub_Name '$validated'))}
                          right: {(DQ (0))}
                        )
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:validated)
                          op: Equal
                          rhs: {(DQ (0))}
                          spids: [1655]
                        )
                      ]
                      spids: [1655]
                    )
                    (ForEach
                      iter_name: process
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name required_processes>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1668 1673]
                            )
                          )
                        }
                      ]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              children: [
                                (SimpleCommand
                                  words: [
                                    {(vagrant)}
                                    {(ssh)}
                                    {(DQ (${ VSub_Name machine))}
                                    {(-c)}
                                    {(DQ ('pgrep -f ') (${ VSub_Name process))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                      spids: [1699]
                                    )
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 2
                                      arg_word: {(1)}
                                      spids: [1702]
                                    )
                                  ]
                                )
                                (BraceGroup
                                  children: [
                                    (C {(printf)} {(DQ (.))})
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:validated)
                                          op: Equal
                                          rhs: {(DQ (1))}
                                          spids: [1717]
                                        )
                                      ]
                                      spids: [1717]
                                    )
                                    (C {(sleep)} {(2)})
                                  ]
                                  spids: [1707]
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          spids: [1677 1731]
                        )
                      spids: [1666 1675]
                    )
                  ]
                  spids: [1652 1734]
                )
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[1744])]
              spids: [1742]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name NODE_NAMES>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1758 1764]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ('Validating ') 
                          (BracedVarSub
                            token: <VSub_Name VAGRANT_NODE_NAMES>
                            bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                            spids: [1780 1785]
                          )
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:machine)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name VAGRANT_NODE_NAMES>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                spids: [1792 1797]
                              )
                            }
                          spids: [1791]
                        )
                      ]
                      spids: [1789]
                    )
                    (Assignment
                      keyword: Assign_Local
                      flags: [-a]
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:required_processes)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [{(DQ (kube-proxy))} {(DQ (kubelet))} {(DQ (docker))}]
                              )
                            }
                          spids: [1804]
                        )
                      ]
                      spids: [1800]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:validated)
                          op: Equal
                          rhs: {(DQ (1))}
                          spids: [1822]
                        )
                      ]
                      spids: [1820]
                    )
                    (Until
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ (${ VSub_Name validated))}
                                  right: {(DQ (0))}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:validated)
                                  op: Equal
                                  rhs: {(DQ (0))}
                                  spids: [1850]
                                )
                              ]
                              spids: [1850]
                            )
                            (ForEach
                              iter_name: process
                              iter_words: [
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name required_processes>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [1863 1868]
                                    )
                                  )
                                }
                              ]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (AndOr
                                      children: [
                                        (SimpleCommand
                                          words: [
                                            {(vagrant)}
                                            {(ssh)}
                                            {(DQ (${ VSub_Name machine))}
                                            {(-c)}
                                            {(DQ ('pgrep -f ') (${ VSub_Name process))}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                              spids: [1894]
                                            )
                                            (Redir
                                              op_id: Redir_GreatAnd
                                              fd: 2
                                              arg_word: {(1)}
                                              spids: [1897]
                                            )
                                          ]
                                        )
                                        (BraceGroup
                                          children: [
                                            (C {(printf)} {(DQ (.))})
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:validated)
                                                  op: Equal
                                                  rhs: {(DQ (1))}
                                                  spids: [1912]
                                                )
                                              ]
                                              spids: [1912]
                                            )
                                            (C {(sleep)} {(2)})
                                          ]
                                          spids: [1902]
                                        )
                                      ]
                                      op_id: Op_DPipe
                                    )
                                  ]
                                  spids: [1872 1926]
                                )
                              spids: [1861 1870]
                            )
                          ]
                          spids: [1847 1929]
                        )
                    )
                  ]
                  spids: [1773 1932]
                )
            )
            (C {(echo)})
            (C {(echo)} {(DQ ('Waiting for each node to be registered with cloud provider'))})
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name NODE_NAMES>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1957 1963]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:validated)
                          op: Equal
                          rhs: {(DQ (0))}
                          spids: [1977]
                        )
                      ]
                      spids: [1975]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:start)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (s)})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [1985 1991]
                                )
                              )
                            }
                          spids: [1983]
                        )
                      ]
                      spids: [1983]
                    )
                    (Until
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name '$validated'))}
                                  right: {(DQ (1))}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:now)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(date)} {(Lit_Other '+') (Lit_Other '%') (s)})
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [2017 2023]
                                        )
                                      )
                                    }
                                  spids: [2015]
                                )
                              ]
                              spids: [2015]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {
                                            (ArithSubPart
                                              anode: 
                                                (ArithBinary
                                                  op_id: Arith_Minus
                                                  left: (ArithVarRef name:now)
                                                  right: (ArithVarRef name:start)
                                                )
                                              spids: [2035 2042]
                                            )
                                          } {(-gt)} {(180)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ 
                                          (
'Timeout while waiting for echo node to be registered with cloud provider'
                                          )
                                        )
                                      }
                                    )
                                    (C {(exit)} {(2)})
                                  ]
                                  spids: [16777215 2051]
                                )
                              ]
                              spids: [16777215 2066]
                            )
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:nodes)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/kubectl.sh))} 
                                                {(get)} {(nodes)} {(-o)} {(name)}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [2072 2087]
                                      )
                                    }
                                  spids: [2071]
                                )
                              ]
                              spids: [2069]
                            )
                            (AndOr
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:validated)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (Pipeline
                                                    children: [
                                                      (C {(echo)} {($ VSub_Name '$nodes')})
                                                      (C {(grep)} {(-c)} 
                                                        {
                                                          (DQ 
                                                            (BracedVarSub
                                                              token: <VSub_Name NODE_NAMES>
                                                              bracket_op: 
                                                                (ArrayIndex
                                                                  expr: (ArithVarRef name:i)
                                                                )
                                                              spids: [2103 2108]
                                                            )
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: False
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [2091 2110]
                                          )
                                        }
                                      spids: [2090]
                                    )
                                  ]
                                  spids: [2090]
                                )
                                (BraceGroup
                                  children: [
                                    (C {(printf)} {(DQ (.))})
                                    (C {(sleep)} {(2)})
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:validated)
                                          op: Equal
                                          rhs: {(DQ (0))}
                                          spids: [2129]
                                        )
                                      ]
                                      spids: [2129]
                                    )
                                  ]
                                  spids: [2114]
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          spids: [2012 2138]
                        )
                    )
                  ]
                  spids: [1972 2141]
                )
            )
            (C {(echo)} {(DQ ('Validating we can run kubectl commands.'))})
            (AndOr
              children: [
                (C {(vagrant)} {(ssh)} {(master)} {(--command)} {(DQ ('kubectl get pods'))})
                (BraceGroup
                  children: [
                    (C {(echo)} 
                      {
                        (DQ 
                          (
'WARNING: kubectl to localhost failed.  This could mean localhost is not bound to an IP'
                          )
                        )
                      }
                    )
                  ]
                  spids: [2170]
                )
              ]
              op_id: Op_DPipe
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (C {(get-kubeconfig-basicauth)})
                    (C {(get-kubeconfig-bearertoken)})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('Kubernetes cluster is running.'))})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('The master is running at:'))})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('  https://') (${ VSub_Name MASTER_IP))})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('Administer and visualize its resources using Cockpit:'))})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('  https://') (${ VSub_Name MASTER_IP) (':9090'))})
                    (C {(echo)})
                    (C {(echo)} 
                      {(DQ ('For more information on Cockpit, visit http://cockpit-project.org'))}
                    )
                    (C {(echo)})
                    (C {(echo)} 
                      {
                        (DQ ('The user name and password to use is located in ') 
                          (${ VSub_Name KUBECONFIG)
                        )
                      }
                    )
                    (C {(echo)})
                  ]
                )
              spids: [2184 2280]
            )
          ]
          spids: [1536]
        )
      spids: [1532 1535]
    )
    (FuncDef
      name: kube-up
      body: 
        (BraceGroup
          children: [
            (C {(load-or-gen-kube-basicauth)})
            (C {(load-or-gen-kube-bearertoken)})
            (C {(get-tokens)})
            (C {(create-provision-scripts)})
            (C {(vagrant)} {(up)} {(--no-parallel)})
            (C {(export)} 
              {(Lit_VarLike 'KUBE_CERT=') (DQ (/tmp/) ($ VSub_Name '$RANDOM') (-kubecfg.crt))}
            )
            (C {(export)} 
              {(Lit_VarLike 'KUBE_KEY=') (DQ (/tmp/) ($ VSub_Name '$RANDOM') (-kubecfg.key))}
            )
            (C {(export)} 
              {(Lit_VarLike 'CA_CERT=') (DQ (/tmp/) ($ VSub_Name '$RANDOM') (-kubernetes.ca.crt))}
            )
            (C {(export)} {(Lit_VarLike 'CONTEXT=') (DQ (vagrant))})
            (Subshell
              child: 
                (CommandList
                  children: [
                    (C {(umask)} {(077)})
                    (SimpleCommand
                      words: [
                        {(vagrant)}
                        {(ssh)}
                        {(master)}
                        {(--)}
                        {(sudo)}
                        {(cat)}
                        {(/srv/kubernetes/kubecfg.crt)}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name KUBE_CERT))}
                          spids: [2377]
                        )
                        (Redir
                          op_id: Redir_Great
                          fd: 2
                          arg_word: {(/dev/null)}
                          spids: [2384]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(vagrant)}
                        {(ssh)}
                        {(master)}
                        {(--)}
                        {(sudo)}
                        {(cat)}
                        {(/srv/kubernetes/kubecfg.key)}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name KUBE_KEY))}
                          spids: [2402]
                        )
                        (Redir
                          op_id: Redir_Great
                          fd: 2
                          arg_word: {(/dev/null)}
                          spids: [2409]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(vagrant)}
                        {(ssh)}
                        {(master)}
                        {(--)}
                        {(sudo)}
                        {(cat)}
                        {(/srv/kubernetes/ca.crt)}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name CA_CERT))}
                          spids: [2427]
                        )
                        (Redir
                          op_id: Redir_Great
                          fd: 2
                          arg_word: {(/dev/null)}
                          spids: [2434]
                        )
                      ]
                    )
                    (C {(create-kubeconfig)})
                    (C {(create-kubeconfig-for-federation)})
                  ]
                )
              spids: [2355 2450]
            )
            (C {(verify-cluster)})
          ]
          spids: [2292]
        )
      spids: [2288 2291]
    )
    (FuncDef
      name: kube-down
      body: (BraceGroup children:[(C {(vagrant)} {(destroy)} {(-f)})] spids:[2466])
      spids: [2462 2465]
    )
    (FuncDef
      name: kube-push
      body: 
        (BraceGroup
          children: [
            (C {(get-kubeconfig-basicauth)})
            (C {(get-kubeconfig-bearertoken)})
            (C {(create-provision-scripts)})
            (C {(vagrant)} {(provision)})
          ]
          spids: [2485]
        )
      spids: [2481 2484]
    )
    (FuncDef
      name: test-build-release
      body: 
        (BraceGroup
          children: [(C {(DQ (${ VSub_Name KUBE_ROOT) (/build/release.sh))})]
          spids: [2511]
        )
      spids: [2507 2510]
    )
    (FuncDef
      name: test-setup
      body: 
        (BraceGroup
          children: [
            (C {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/kube-up.sh))})
            (SimpleCommand
              words: [{(echo)} {(DQ ('Vagrant test setup complete'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2552])]
            )
          ]
          spids: [2535]
        )
      spids: [2531 2534]
    )
    (FuncDef
      name: test-teardown
      body: (BraceGroup children:[(C {(kube-down)})] spids:[2565])
      spids: [2561 2564]
    )
    (FuncDef
      name: find-vagrant-name-by-ip
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ip)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2585]
                )
              ]
              spids: [2583]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ip_pattern)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name NODE_IP_BASE) ('(.*)'))}
                  spids: [2593]
                )
              ]
              spids: [2591]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_EqualTilde
                      left: {($ VSub_Name '$ip')}
                      right: {($ VSub_Name '$ip_pattern')}
                    )
                )
                (BraceGroup
                  children: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                  spids: [2623]
                )
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} 
              {
                (DQ (node-) 
                  (ArithSubPart
                    anode: 
                      (ArithBinary
                        op_id: Arith_Minus
                        left: 
                          (ArithWord
                            w: 
                              {
                                (BracedVarSub
                                  token: <VSub_Name BASH_REMATCH>
                                  bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                  spids: [2640 2645]
                                )
                              }
                          )
                        right: (ArithWord w:{(Lit_Digits 1)})
                      )
                    spids: [2639 2651]
                  )
                )
              }
            )
          ]
          spids: [2580]
        )
      spids: [2576 2579]
    )
    (FuncDef
      name: find-vagrant-name-by-node-name
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ip)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2669]
                )
              ]
              spids: [2667]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name '$ip'))}
                              right: {(DQ (${ VSub_Name INSTANCE_PREFIX) (-master))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (master))})
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_QMark '$?')}
                    )
                  ]
                  spids: [16777215 2695]
                )
              ]
              spids: [16777215 2710]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ip_pattern)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name INSTANCE_PREFIX) ('-node-(.*)'))}
                  spids: [2715]
                )
              ]
              spids: [2713]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_EqualTilde
                      left: {($ VSub_Name '$ip')}
                      right: {($ VSub_Name '$ip_pattern')}
                    )
                )
                (BraceGroup
                  children: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                  spids: [2737]
                )
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} 
              {
                (DQ (node-) 
                  (BracedVarSub
                    token: <VSub_Name BASH_REMATCH>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                    spids: [2753 2758]
                  )
                )
              }
            )
          ]
          spids: [2664]
        )
      spids: [2660 2663]
    )
    (FuncDef
      name: ssh-to-node
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:node)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2777]
                )
              ]
              spids: [2775]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cmd)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [2785]
                )
              ]
              spids: [2783]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:machine) op:Equal spids:[2793])]
              spids: [2791]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:machine)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(find-vagrant-name-by-ip)} {($ VSub_Name '$node')})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2798 2802]
                          )
                        }
                      spids: [2797]
                    )
                  ]
                  spids: [2797]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name machine>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                            spids: [2813 2816]
                          )
                        }
                    )
                )
                (AndOr
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:machine)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(find-vagrant-name-by-node-name)} {($ VSub_Name '$node')})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [2823 2827]
                              )
                            }
                          spids: [2822]
                        )
                      ]
                      spids: [2822]
                    )
                    (C {(true)})
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name machine>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                            spids: [2838 2841]
                          )
                        }
                    )
                )
                (BraceGroup
                  children: [
                    (C {(echo)} {(DQ ('Cannot find machine to ssh to: ') ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [2847]
                )
              ]
              op_id: Op_DPipe
            )
            (C {(vagrant)} {(ssh)} {(DQ (${ VSub_Name machine))} {(-c)} {(DQ (${ VSub_Name cmd))})
          ]
          spids: [2772]
        )
      spids: [2768 2771]
    )
    (FuncDef
      name: prepare-e2e
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ("Vagrant doesn't need special preparations for e2e tests"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2906])]
            )
          ]
          spids: [2897]
        )
      spids: [2891 2896]
    )
    (FuncDef
      name: get-tokens
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBELET_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike 'if=') (/dev/urandom)}
                                      {(Lit_VarLike 'bs=') (128)}
                                      {(Lit_VarLike 'count=') (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2934]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ('=+/'))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike 'bs=') (32)}
                                      {(Lit_VarLike 'count=') (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2961]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [2922 2963]
                      )
                    }
                  spids: [2921]
                )
              ]
              spids: [2921]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_PROXY_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike 'if=') (/dev/urandom)}
                                      {(Lit_VarLike 'bs=') (128)}
                                      {(Lit_VarLike 'count=') (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2979]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ('=+/'))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike 'bs=') (32)}
                                      {(Lit_VarLike 'count=') (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [3006]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [2967 3008]
                      )
                    }
                  spids: [2966]
                )
              ]
              spids: [2966]
            )
          ]
          spids: [2918]
        )
      spids: [2912 2917]
    )
  ]
)