(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSH_OPTS)
          op: Equal
          rhs: {(DQ ("-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=ERROR -C"))}
          spids: [56]
        )
      ]
      spids: [56]
    )
    (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: [69 77]
              ) (/../..)
            }
          spids: [68]
        )
      ]
      spids: [68]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [83 91]
              )
            }
          spids: [82]
        )
      ]
      spids: [80]
    )
    (C {(source)} 
      {
        (DQ (${ VSub_Name ROOT) (/) 
          (BracedVarSub
            token: <VSub_Name KUBE_CONFIG_FILE>
            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (config-default.sh))})
            spids: [100 106]
          )
        )
      }
    )
    (C {(source)} {(DQ ($ VSub_Name "$KUBE_ROOT") (/cluster/common.sh))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBECTL_PATH)
          op: Equal
          rhs: {(${ VSub_Name KUBE_ROOT) (/cluster/centos/binaries/kubectl)}
          spids: [118]
        )
      ]
      spids: [118]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_TEMP)
          op: Equal
          rhs: {(DQ ("~/kube_temp"))}
          spids: [128]
        )
      ]
      spids: [128]
    )
    (FuncDef
      name: detect-masters
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_MASTER_IP_ADDRESSES)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [153]
                )
              ]
              spids: [153]
            )
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBE_MASTER_IP_ADDRESSES)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name master>
                                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                                        spids: [175 179]
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [172]
                        )
                      ]
                      spids: [172]
                    )
                  ]
                  spids: [169 184]
                )
              spids: [163 167]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ("KUBE_MASTERS: ") (${ VSub_Name MASTERS))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[196])]
            )
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ("KUBE_MASTER_IP_ADDRESSES: [") 
                    (BracedVarSub
                      token: <VSub_Name KUBE_MASTER_IP_ADDRESSES>
                      bracket_op: (WholeArray op_id:Arith_Star)
                      spids: [204 209]
                    ) ("]")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[213])]
            )
          ]
          spids: [150]
        )
      spids: [144 149]
    )
    (FuncDef
      name: detect-nodes
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_NODE_IP_ADDRESSES)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [231]
                )
              ]
              spids: [231]
            )
            (ForEach
              iter_name: node
              iter_words: [{(${ VSub_Name NODES)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBE_NODE_IP_ADDRESSES)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name node>
                                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                                        spids: [253 257]
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [250]
                        )
                      ]
                      spids: [250]
                    )
                  ]
                  spids: [247 262]
                )
              spids: [241 245]
            )
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ("KUBE_NODE_IP_ADDRESSES: [") 
                    (BracedVarSub
                      token: <VSub_Name KUBE_NODE_IP_ADDRESSES>
                      bracket_op: (WholeArray op_id:Arith_Star)
                      spids: [269 274]
                    ) ("]")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[278])]
            )
          ]
          spids: [228]
        )
      spids: [222 227]
    )
    (FuncDef
      name: verify-prereqs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal spids:[298])]
              spids: [296]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(0)} spids:[301])]
              spids: [301]
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(ssh-add)} {(-L)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 1
                      arg_word: {(/dev/null)}
                      spids: [309]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [313]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:rc)
                      op: Equal
                      rhs: {(DQ ($ VSub_QMark "$?"))}
                      spids: [319]
                    )
                  ]
                  spids: [319]
                )
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_eq
                              left: {(DQ (${ VSub_Name rc))}
                              right: {(2)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(eval)}
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(ssh-agent)})])
                              left_token: <Left_CommandSub "$(">
                              spids: [352 354]
                            )
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[357])]
                    )
                    (C {(trap-add)} {(DQ ("kill ") (${ VSub_Name SSH_AGENT_PID))} {(EXIT)})
                  ]
                  spids: [-1 346]
                )
              ]
              spids: [-1 374]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(0)} spids:[377])]
              spids: [377]
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(ssh-add)} {(-L)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 1
                      arg_word: {(/dev/null)}
                      spids: [385]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [389]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:rc)
                      op: Equal
                      rhs: {(DQ ($ VSub_QMark "$?"))}
                      spids: [395]
                    )
                  ]
                  spids: [395]
                )
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_eq
                              left: {(DQ (${ VSub_Name rc))}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(AndOr children:[(C {(ssh-add)})(C {(true)})] op_id:Op_DPipe)]
                  spids: [-1 422]
                )
              ]
              spids: [-1 436]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(0)} spids:[439])]
              spids: [439]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(ssh-add)} {(-L)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 1
                                  arg_word: {(/dev/null)}
                                  spids: [455]
                                )
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [459]
                                )
                              ]
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("Could not find or add an SSH identity."))})
                    (C {(echo)} {(DQ ("Please start ssh-agent, add your identity, and retry."))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 464]
                )
              ]
              spids: [-1 486]
            )
          ]
          spids: [293]
        )
      spids: [287 292]
    )
    (FuncDef
      name: trap-add
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:handler)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [503]
                )
              ]
              spids: [501]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:signal)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Number 2>
                          suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(EXIT)})
                          spids: [513 517]
                        )
                      )
                    }
                  spids: [511]
                )
              ]
              spids: [509]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:cur) op:Equal spids:[523])]
              spids: [521]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cur)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(eval)} 
                                  {
                                    (DQ ("sh -c 'echo ") 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar "\\$">
                                      ) ("3' -- ") 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(trap)} {(-p)} {(${ VSub_Name signal)})]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [536 544]
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [529 546]
                        )
                      )
                    }
                  spids: [527]
                )
              ]
              spids: [527]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name cur))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:handler)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name cur) ("; ") (${ VSub_Name handler))}
                          spids: [568]
                        )
                      ]
                      spids: [568]
                    )
                  ]
                  spids: [-1 565]
                )
              ]
              spids: [-1 580]
            )
            (C {(trap)} {(DQ (${ VSub_Name handler))} {(${ VSub_Name signal)})
          ]
          spids: [498]
        )
      spids: [494 497]
    )
    (FuncDef
      name: validate-cluster
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(Lit_Other "+") (e)})
            (C {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/validate-cluster.sh))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_ne
                              left: {(DQ ($ VSub_QMark "$?"))}
                              right: {(DQ (0))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (ForEach
                      iter_name: master
                      iter_words: [{(${ VSub_Name MASTERS)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [(C {(troubleshoot-master)} {(${ VSub_Name master)})]
                          spids: [664 674]
                        )
                      spids: [658 662]
                    )
                    (ForEach
                      iter_name: node
                      iter_words: [{(${ VSub_Name NODES)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [(C {(troubleshoot-node)} {(${ VSub_Name node)})]
                          spids: [688 698]
                        )
                      spids: [682 686]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 650]
                )
              ]
              spids: [-1 706]
            )
            (C {(set)} {(-e)})
          ]
          spids: [608]
        )
      spids: [602 607]
    )
    (FuncDef
      name: kube-up
      body: 
        (BraceGroup
          children: [
            (C {(make-ca-cert)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:num_infra) op:Equal rhs:{(0)} spids:[734])]
              spids: [732]
            )
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(provision-master)} {(DQ (${ VSub_Name master))} 
                      {(DQ (infra) (${ VSub_Name num_infra))}
                    )
                    (C {(let)} {(Lit_Other "+") (Lit_Other "+") (num_infra)})
                  ]
                  spids: [749 775]
                )
              spids: [743 747]
            )
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(post-provision-master)} {(DQ (${ VSub_Name master))})]
                  spids: [790 802]
                )
              spids: [784 788]
            )
            (ForEach
              iter_name: node
              iter_words: [{(${ VSub_Name NODES)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(provision-node)} {(DQ (${ VSub_Name node))})]
                  spids: [817 829]
                )
              spids: [811 815]
            )
            (C {(detect-masters)})
            (C {(export)} {(Lit_VarLike "CONTEXT=") (DQ (centos))})
            (C {(export)} 
              {(Lit_VarLike "KUBE_SERVER=") 
                (DQ ("http://") (${ VSub_Name MASTER_ADVERTISE_ADDRESS) (":8080"))
              }
            )
            (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/common.sh))})
            (C {(get-password)})
            (C {(create-kubeconfig)})
          ]
          spids: [725]
        )
      spids: [719 724]
    )
    (FuncDef
      name: kube-down
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(tear-down-master)} {(${ VSub_Name master)})]
                  spids: [907 917]
                )
              spids: [901 905]
            )
            (ForEach
              iter_name: node
              iter_words: [{(${ VSub_Name NODES)}]
              do_arg_iter: False
              body: (DoGroup children:[(C {(tear-down-node)} {(${ VSub_Name node)})] spids:[932942])
              spids: [926 930]
            )
          ]
          spids: [893]
        )
      spids: [887 892]
    )
    (FuncDef
      name: troubleshoot-master
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] Troubleshooting on master ") ($ VSub_Number "$1"))})
            (Assignment
              keyword: Assign_Local
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:required_daemon)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (kube-apiserver))}
                          {(DQ (kube-controller-manager))}
                          {(DQ (kube-scheduler))}
                        ]
                      )
                    }
                  spids: [972]
                )
              ]
              spids: [968]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:daemon) op:Equal spids:[990])]
              spids: [988]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:daemon_status) op:Equal spids:[995])]
              spids: [993]
            )
            (C {(printf)} {(DQ ("%-24s %-10s ") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
              {(DQ (PROCESS))} {(DQ (STATUS))}
            )
            (ForEach
              iter_name: daemon
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name required_daemon>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1021 1026]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(0)} spids:[1035])]
                      spids: [1033]
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [
                            {(kube-ssh)}
                            {(DQ (${ VSub_Number 1))}
                            {(DQ ("sudo systemctl is-active ") (${ VSub_Name daemon))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [1054]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [1057]
                            )
                          ]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rc)
                              op: Equal
                              rhs: {(DQ ($ VSub_QMark "$?"))}
                              spids: [1062]
                            )
                          ]
                          spids: [1062]
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_ne
                                      left: {(DQ (${ VSub_Name rc))}
                                      right: {(DQ (0))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:daemon_status)
                                  op: Equal
                                  rhs: {(DQ (inactive))}
                                  spids: [1090]
                                )
                              ]
                              spids: [1090]
                            )
                          ]
                          spids: [-1 1087]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:daemon_status)
                              op: Equal
                              rhs: {(DQ (active))}
                              spids: [1099]
                            )
                          ]
                          spids: [1099]
                        )
                      ]
                      spids: [1096 1105]
                    )
                    (C {(printf)} {(DQ ("%-24s %s") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
                      {(${ VSub_Name daemon)} {(${ VSub_Name daemon_status)}
                    )
                  ]
                  spids: [1030 1124]
                )
              spids: [1019 1028]
            )
            (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))})
          ]
          spids: [953]
        )
      spids: [947 952]
    )
    (FuncDef
      name: troubleshoot-node
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] Troubleshooting on node ") (${ VSub_Number 1))})
            (Assignment
              keyword: Assign_Local
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:required_daemon)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [{(DQ (kube-proxy))} {(DQ (kubelet))} {(DQ (docker))} {(DQ (flannel))}]
                      )
                    }
                  spids: [1163]
                )
              ]
              spids: [1159]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:daemon) op:Equal spids:[1185])]
              spids: [1183]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:daemon_status) op:Equal spids:[1190])]
              spids: [1188]
            )
            (C {(printf)} {(DQ ("%-24s %-10s ") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
              {(DQ (PROCESS))} {(DQ (STATUS))}
            )
            (ForEach
              iter_name: daemon
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name required_daemon>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1216 1221]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(0)} spids:[1230])]
                      spids: [1228]
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [
                            {(kube-ssh)}
                            {(DQ (${ VSub_Number 1))}
                            {(DQ ("sudo systemctl is-active ") (${ VSub_Name daemon))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [1249]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [1252]
                            )
                          ]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rc)
                              op: Equal
                              rhs: {(DQ ($ VSub_QMark "$?"))}
                              spids: [1257]
                            )
                          ]
                          spids: [1257]
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_ne
                                      left: {(DQ (${ VSub_Name rc))}
                                      right: {(DQ (0))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:daemon_status)
                                  op: Equal
                                  rhs: {(DQ (inactive))}
                                  spids: [1285]
                                )
                              ]
                              spids: [1285]
                            )
                          ]
                          spids: [-1 1282]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:daemon_status)
                              op: Equal
                              rhs: {(DQ (active))}
                              spids: [1294]
                            )
                          ]
                          spids: [1294]
                        )
                      ]
                      spids: [1291 1300]
                    )
                    (C {(printf)} {(DQ ("%-24s %s") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
                      {(${ VSub_Name daemon)} {(${ VSub_Name daemon_status)}
                    )
                  ]
                  spids: [1225 1319]
                )
              spids: [1214 1223]
            )
            (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))})
          ]
          spids: [1142]
        )
      spids: [1136 1141]
    )
    (FuncDef
      name: tear-down-master
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] tear-down-master on ") ($ VSub_Number "$1"))})
            (ForEach
              iter_name: service_name
              iter_words: [{(etcd)} {(kube-apiserver)} {(kube-controller-manager)} {(kube-scheduler)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:service_file)
                          op: Equal
                          rhs: {(DQ (/usr/lib/systemd/system/) (${ VSub_Name service_name) (.service))}
                          spids: [1369]
                        )
                      ]
                      spids: [1369]
                    )
                    (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} 
                      {
                        (DQ (" ") ("        if [[ -f ") ($ VSub_Name "$service_file") (" ]]; then ") 
                          ("          sudo systemctl stop ") ($ VSub_Name "$service_name") ("; ") ("          sudo systemctl disable ") ($ VSub_Name "$service_name") 
                          ("; ") ("          sudo rm -f ") ($ VSub_Name "$service_file") ("; ") ("        fi")
                        )
                      }
                    )
                  ]
                  spids: [1366 1408]
                )
              spids: [1355 1364]
            )
            (C {(kube-ssh)} {(DQ (${ VSub_Number 1))} {(DQ ("sudo rm -rf /opt/kubernetes"))})
            (C {(kube-ssh)} {(DQ (${ VSub_Number 1))} {(DQ ("sudo rm -rf /srv/kubernetes"))})
            (C {(kube-ssh)} {(DQ (${ VSub_Number 1))} {(DQ ("sudo rm -rf ") (${ VSub_Name KUBE_TEMP))})
            (C {(kube-ssh)} {(DQ (${ VSub_Number 1))} {(DQ ("sudo rm -rf /var/lib/etcd"))})
          ]
          spids: [1340]
        )
      spids: [1334 1339]
    )
    (FuncDef
      name: tear-down-node
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] tear-down-node on ") ($ VSub_Number "$1"))})
            (ForEach
              iter_name: service_name
              iter_words: [{(kube-proxy)} {(kubelet)} {(docker)} {(flannel)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:service_file)
                          op: Equal
                          rhs: {(DQ (/usr/lib/systemd/system/) (${ VSub_Name service_name) (.service))}
                          spids: [1506]
                        )
                      ]
                      spids: [1506]
                    )
                    (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} 
                      {
                        (DQ (" ") ("        if [[ -f ") ($ VSub_Name "$service_file") (" ]]; then ") 
                          ("          sudo systemctl stop ") ($ VSub_Name "$service_name") ("; ") ("          sudo systemctl disable ") ($ VSub_Name "$service_name") 
                          ("; ") ("          sudo rm -f ") ($ VSub_Name "$service_file") ("; ") ("        fi")
                        )
                      }
                    )
                  ]
                  spids: [1503 1545]
                )
              spids: [1492 1501]
            )
            (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} {(DQ ("sudo rm -rf /run/flannel"))})
            (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} {(DQ ("sudo rm -rf /opt/kubernetes"))})
            (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} {(DQ ("sudo rm -rf /srv/kubernetes"))})
            (C {(kube-ssh)} {(DQ ($ VSub_Number "$1"))} {(DQ ("sudo rm -rf ") (${ VSub_Name KUBE_TEMP))})
          ]
          spids: [1477]
        )
      spids: [1471 1476]
    )
    (FuncDef
      name: make-ca-cert
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] make-ca-cert"))})
            (C {(bash)} {(DQ (${ VSub_Name ROOT) (/../saltbase/salt/generate-cert/make-ca-cert.sh))} 
              {(DQ (${ VSub_Name MASTER_ADVERTISE_IP))} 
              {
                (DQ ("IP:") (${ VSub_Name MASTER_ADVERTISE_IP) (",IP:") 
                  (BracedVarSub
                    token: <VSub_Name SERVICE_CLUSTER_IP_RANGE>
                    suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(".*")})
                    spids: [1637 1641]
                  ) 
                  (
".1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local"
                  )
                )
              }
            )
          ]
          spids: [1606]
        )
      spids: [1600 1605]
    )
    (FuncDef
      name: provision-master
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] Provision master on ") ($ VSub_Number "$1"))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:master)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1697]
                )
              ]
              spids: [1695]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:master_ip)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name master>
                          suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                          spids: [1707 1711]
                        )
                      )
                    }
                  spids: [1705]
                )
              ]
              spids: [1703]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:etcd_name)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [1717]
                )
              ]
              spids: [1715]
            )
            (C {(ensure-setup-dir)} {(DQ (${ VSub_Name master))})
            (C {(ensure-etcd-cert)} {(DQ (${ VSub_Name etcd_name))} {(DQ (${ VSub_Name master_ip))})
            (C {(kube-scp)} {(DQ (${ VSub_Name master))} 
              {
                (DQ (${ VSub_Name ROOT) ("/ca-cert ") (${ VSub_Name ROOT) ("/binaries/master ") 
                  (${ VSub_Name ROOT) ("/master ") (${ VSub_Name ROOT) ("/config-default.sh ") (${ VSub_Name ROOT) (/util.sh)
                )
              } {(DQ (${ VSub_Name KUBE_TEMP))}
            )
            (C {(kube-scp)} {(DQ (${ VSub_Name master))} 
              {
                (DQ (${ VSub_Name ROOT) ("/etcd-cert/ca.pem ") ("    ") (${ VSub_Name ROOT) 
                  ("/etcd-cert/client.pem ") ("    ") (${ VSub_Name ROOT) ("/etcd-cert/client-key.pem ") ("    ") (${ VSub_Name ROOT) 
                  (/etcd-cert/server-) (${ VSub_Name etcd_name) (".pem ") ("    ") (${ VSub_Name ROOT) (/etcd-cert/server-) 
                  (${ VSub_Name etcd_name) ("-key.pem ") ("    ") (${ VSub_Name ROOT) (/etcd-cert/peer-) (${ VSub_Name etcd_name) (".pem ") ("    ") 
                  (${ VSub_Name ROOT) (/etcd-cert/peer-) (${ VSub_Name etcd_name) (-key.pem)
                )
              } {(DQ (${ VSub_Name KUBE_TEMP) (/etcd-cert))}
            )
            (C {(kube-ssh)} {(DQ (${ VSub_Name master))} 
              {
                (DQ (" ") ("    sudo rm -rf /opt/kubernetes/bin; ") ("    sudo cp -r ") 
                  (${ VSub_Name KUBE_TEMP) ("/master/bin /opt/kubernetes; ") ("    sudo mkdir -p /srv/kubernetes/; sudo cp -f ") 
                  (${ VSub_Name KUBE_TEMP) ("/ca-cert/* /srv/kubernetes/; ") ("    sudo mkdir -p /srv/kubernetes/etcd; sudo cp -f ") 
                  (${ VSub_Name KUBE_TEMP) ("/etcd-cert/* /srv/kubernetes/etcd/; ") ("    sudo chmod -R +x /opt/kubernetes/bin; ") 
                  ("    sudo ln -sf /opt/kubernetes/bin/* /usr/local/bin/; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) ("/master/scripts/etcd.sh ") (${ VSub_Name etcd_name) (" ") 
                  (${ VSub_Name master_ip) (" ") (${ VSub_Name ETCD_INITIAL_CLUSTER) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) 
                  ("/master/scripts/apiserver.sh ") (${ VSub_Name master_ip) (" ") (${ VSub_Name ETCD_SERVERS) (" ") (${ VSub_Name SERVICE_CLUSTER_IP_RANGE) 
                  (" ") (${ VSub_Name ADMISSION_CONTROL) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) 
                  ("/master/scripts/controller-manager.sh ") (${ VSub_Name MASTER_ADVERTISE_ADDRESS) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) 
                  ("/master/scripts/scheduler.sh ") (${ VSub_Name MASTER_ADVERTISE_ADDRESS)
                )
              }
            )
          ]
          spids: [1684]
        )
      spids: [1678 1683]
    )
    (FuncDef
      name: post-provision-master
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] Post provision master on ") ($ VSub_Number "$1"))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:master)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1999]
                )
              ]
              spids: [1997]
            )
            (C {(kube-ssh)} {(DQ (${ VSub_Name master))} 
              {
                (DQ (" ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) ("/master/scripts/flannel.sh ") 
                  (${ VSub_Name ETCD_SERVERS) (" ") (${ VSub_Name FLANNEL_NET) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) 
                  (/master/scripts/post-etcd.sh)
                )
              }
            )
          ]
          spids: [1986]
        )
      spids: [1980 1985]
    )
    (FuncDef
      name: provision-node
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ("[INFO] Provision node on ") ($ VSub_Number "$1"))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:node)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [2090]
                )
              ]
              spids: [2088]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:node_ip)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name node>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                        spids: [2097 2101]
                      )
                    }
                  spids: [2096]
                )
              ]
              spids: [2094]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dns_ip)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name DNS_SERVER_IP>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                        spids: [2107 2111]
                      )
                    }
                  spids: [2106]
                )
              ]
              spids: [2104]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dns_domain)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name DNS_DOMAIN>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*@")})
                        spids: [2117 2121]
                      )
                    }
                  spids: [2116]
                )
              ]
              spids: [2114]
            )
            (C {(ensure-setup-dir)} {(${ VSub_Name node)})
            (C {(kube-scp)} {(DQ (${ VSub_Name node))} 
              {
                (DQ (${ VSub_Name ROOT) ("/binaries/node ") (${ VSub_Name ROOT) ("/node ") 
                  (${ VSub_Name ROOT) ("/config-default.sh ") (${ VSub_Name ROOT) (/util.sh)
                )
              } {(DQ (${ VSub_Name KUBE_TEMP))}
            )
            (C {(kube-scp)} {(DQ (${ VSub_Name node))} 
              {
                (DQ (${ VSub_Name ROOT) ("/etcd-cert/ca.pem ") ("    ") (${ VSub_Name ROOT) 
                  ("/etcd-cert/client.pem ") ("    ") (${ VSub_Name ROOT) (/etcd-cert/client-key.pem)
                )
              } {(DQ (${ VSub_Name KUBE_TEMP) (/etcd-cert))}
            )
            (C {(kube-ssh)} {(DQ (${ VSub_Name node))} 
              {
                (DQ (" ") ("    rm -rf /opt/kubernetes/bin; ") ("    sudo cp -r ") 
                  (${ VSub_Name KUBE_TEMP) ("/node/bin /opt/kubernetes; ") ("    sudo chmod -R +x /opt/kubernetes/bin; ") 
                  ("    sudo mkdir -p /srv/kubernetes/etcd; sudo cp -f ") (${ VSub_Name KUBE_TEMP) ("/etcd-cert/* /srv/kubernetes/etcd/; ") 
                  ("    sudo ln -s /opt/kubernetes/bin/* /usr/local/bin/; ") ("    sudo mkdir -p /srv/kubernetes/etcd; sudo cp -f ") (${ VSub_Name KUBE_TEMP) 
                  ("/etcd-cert/* /srv/kubernetes/etcd/; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) ("/node/scripts/flannel.sh ") (${ VSub_Name ETCD_SERVERS) 
                  (" ") (${ VSub_Name FLANNEL_NET) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) 
                  ("/node/scripts/docker.sh ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name DOCKER_OPTS) 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("; ") ("    sudo bash ") (${ VSub_Name KUBE_TEMP) ("/node/scripts/kubelet.sh ") 
                  (${ VSub_Name MASTER_ADVERTISE_ADDRESS) (" ") (${ VSub_Name node_ip) (" ") (${ VSub_Name dns_ip) (" ") (${ VSub_Name dns_domain) ("; ") 
                  ("    sudo bash ") (${ VSub_Name KUBE_TEMP) ("/node/scripts/proxy.sh ") (${ VSub_Name MASTER_ADVERTISE_ADDRESS)
                )
              }
            )
          ]
          spids: [2077]
        )
      spids: [2071 2076]
    )
    (FuncDef
      name: ensure-setup-dir
      body: 
        (BraceGroup
          children: [
            (C {(kube-ssh)} {(DQ (${ VSub_Number 1))} 
              {
                (DQ ("mkdir -p ") (${ VSub_Name KUBE_TEMP) ("; ") ("                   mkdir -p ") 
                  (${ VSub_Name KUBE_TEMP) ("/etcd-cert; ") ("                   sudo mkdir -p /opt/kubernetes/bin; ") 
                  ("                   sudo mkdir -p /opt/kubernetes/cfg")
                )
              }
            )
          ]
          spids: [2315]
        )
      spids: [2309 2314]
    )
    (FuncDef
      name: ensure-etcd-cert
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:etcd_name)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [2373]
                )
              ]
              spids: [2371]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:master_ip)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [2381]
                )
              ]
              spids: [2379]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cert_dir)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ROOT) (/etcd-cert))}
                  spids: [2389]
                )
              ]
              spids: [2387]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: 
                                (LogicalNot
                                  child: 
                                    (BoolUnary
                                      op_id: BoolUnary_r
                                      child: {(DQ (${ VSub_Name cert_dir) (/client.pem))}
                                    )
                                )
                              right: 
                                (LogicalNot
                                  child: 
                                    (BoolUnary
                                      op_id: BoolUnary_r
                                      child: {(DQ (${ VSub_Name cert_dir) (/client-key.pem))}
                                    )
                                )
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(generate-etcd-cert)} {(DQ (${ VSub_Name cert_dir))} 
                      {(DQ (${ VSub_Name master_ip))} {(DQ (client))} {(DQ (client))}
                    )
                  ]
                  spids: [-1 2430]
                )
              ]
              spids: [-1 2456]
            )
            (C {(generate-etcd-cert)} {(DQ (${ VSub_Name cert_dir))} {(DQ (${ VSub_Name master_ip))} 
              {(DQ (server))} {(DQ (server-) (${ VSub_Name etcd_name))}
            )
            (C {(generate-etcd-cert)} {(DQ (${ VSub_Name cert_dir))} {(DQ (${ VSub_Name master_ip))} 
              {(DQ (peer))} {(DQ (peer-) (${ VSub_Name etcd_name))}
            )
          ]
          spids: [2368]
        )
      spids: [2362 2367]
    )
    (FuncDef
      name: kube-ssh
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [2528]
                )
              ]
              spids: [2526]
            )
            (C {(shift)})
            (SimpleCommand
              words: [
                {(ssh)}
                {(${ VSub_Name SSH_OPTS)}
                {(-t)}
                {(DQ (${ VSub_Name host))}
                {(DQ ($ VSub_At "$@"))}
              ]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2555])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2558])
              ]
            )
          ]
          spids: [2523]
        )
      spids: [2517 2522]
    )
    (FuncDef
      name: kube-scp
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [2578]
                )
              ]
              spids: [2576]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{($ VSub_Number "$2")}])}
                  spids: [2586]
                )
              ]
              spids: [2584]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dst)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$3"))}
                  spids: [2594]
                )
              ]
              spids: [2592]
            )
            (C {(scp)} {(-r)} {(${ VSub_Name SSH_OPTS)} 
              {
                (BracedVarSub
                  token: <VSub_Name src>
                  bracket_op: (WholeArray op_id:Arith_Star)
                  spids: [2608 2613]
                )
              } {(DQ (${ VSub_Name host) (":") (${ VSub_Name dst))}
            )
          ]
          spids: [2573]
        )
      spids: [2567 2572]
    )
    (FuncDef
      name: get-password
      body: 
        (BraceGroup
          children: [
            (C {(load-or-gen-kube-basicauth)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: (BoolUnary op_id:BoolUnary_z child:{(DQ (${ VSub_Name KUBE_USER))})
                              right: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ (${ VSub_Name KUBE_PASSWORD))}
                                )
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBE_USER)
                          op: Equal
                          rhs: {(admin)}
                          spids: [2684]
                        )
                      ]
                      spids: [2684]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBE_PASSWORD)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(python)} {(-c)} 
                                        {
                                          (SQ <"import string,random; \\\n"> 
                                            <
"      print(\"\".join(random.SystemRandom().choice(string.ascii_letters + string.digits) for _ in range(16)))"
                                            >
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [2689 2698]
                              )
                            }
                          spids: [2688]
                        )
                      ]
                      spids: [2688]
                    )
                  ]
                  spids: [-1 2681]
                )
              ]
              spids: [-1 2701]
            )
          ]
          spids: [2650]
        )
      spids: [2646 2649]
    )
  ]
)