(CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(.)} {(../proxy_setup.sh)})
    (C {(printf)} {(DQ ('#### Setup Environment') (Lit_Other '\\') (n))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENVIRONMENT)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Number 1>
                  suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(Test-Laptop)})
                  spids: [36 40]
                )
              )
            }
          spids: [34]
        )
      ]
      spids: [34]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FIRST_HEAD)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(grep)} {(-i)} {(SQ <head>)} {(../cluster.txt)})
                          (C {(cut)} {(-f)} {(3)} {(-d) (SQ <' '>)})
                          (C {(tail)} {(-1)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [45 74]
              )
            }
          spids: [44]
        )
      ]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VIP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(node)} {(show)} 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(hostname)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [89 91]
                              )
                            } {(-a)} {(SQ <bcpc.management.vip>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [77 112]
              )
            }
          spids: [76]
        )
      ]
      spids: [76]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BOOTSTRAP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(node)} {(show)} 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(hostname)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [127 129]
                              )
                            } {(-a)} {(SQ <bcpc.management.ip>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [115 150]
              )
            }
          spids: [114]
        )
      ]
      spids: [114]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLUSTER_NODES)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(sed)} {(-e)} {(SQ <'s/[^0-9. ]//g'>)} {(-e)} {(SQ <'s/ /,/g'>)}]
                        redirects: [
                          (Redir
                            op_id: Redir_TLess
                            fd: 16777215
                            arg_word: 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (C {(cut)} {(-f)} {(3)} {(-d) (SQ <' '>)} {(../cluster.txt)})
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [173 186]
                                )
                              }
                            spids: [171]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [156 187]
              )
            }
          spids: [155]
        )
      ]
      spids: [155]
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(ping)} {(-c)} {(1)} {(-W)} {(5)} {($ VSub_Name '$FIRST_HEAD')}]
          redirects: [
            (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[202])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[205])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} 
              {(DQ ('Pinging first headnode: ') (${ VSub_Name FIRST_HEAD) (Lit_Other '\\') (n))}
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {
                              (DQ ('Failed to ping first head node ') (${ VSub_Name FIRST_HEAD) 
                                (Lit_Other '\\') (n)
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/stderr)}
                              spids: [240]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [227 249]
            )
          ]
          op_id: Op_DPipe
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(ping)} {(-c)} {(1)} {(-W)} {(5)} {($ VSub_Name '$VIP')}]
          redirects: [
            (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[263])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[266])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} {(DQ ('Pinging VIP: ') (${ VSub_Name VIP) (Lit_Other '\\') (n))})
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {(DQ ('Failed to ping VIP ') (${ VSub_Name VIP) (Lit_Other '\\') (n))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/stderr)}
                              spids: [301]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [288 310]
            )
          ]
          op_id: Op_DPipe
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(ping)} {(-c)} {(1)} {(-W)} {(5)} {($ VSub_Name '$BOOTSTRAP')}]
          redirects: [
            (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[324])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[327])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} {(DQ ('Pinging bootstrap: ') (${ VSub_Name BOOTSTRAP) (Lit_Other '\\') (n))})
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {
                              (DQ ('Failed to ping bootstrap server ') (${ VSub_Name BOOTSTRAP) 
                                (Lit_Other '\\') (n)
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/stderr)}
                              spids: [362]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [349 371]
            )
          ]
          op_id: Op_DPipe
        )
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MANAGEMENT_CIDR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(node)} {(show)} 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(hostname)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [390 392]
                              )
                            } {(-a)} {(SQ <bcpc.management.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [378 413]
              )
            }
          spids: [377]
        )
      ]
      spids: [377]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FIXED_CIDR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(node)} {(show)} 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(hostname)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [428 430]
                              )
                            } {(-a)} {(SQ <bcpc.fixed.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [416 451]
              )
            }
          spids: [415]
        )
      ]
      spids: [415]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FLOATING_CIDR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(node)} {(show)} 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(hostname)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [466 468]
                              )
                            } {(-a)} {(SQ <bcpc.floating.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [454 489]
              )
            }
          spids: [453]
        )
      ]
      spids: [453]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MANAGEMENT_GLOB)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [
                          {(sed)}
                          {(-e)}
                          {(SQ <'s#/.*##'>)}
                          {(-e)}
                          {(SQ <'s/\\(\\.0\\)*.[0-9]\\{1,3\\}$/.*/'>)}
                        ]
                        redirects: [
                          (Redir
                            op_id: Redir_TLess
                            fd: 16777215
                            arg_word: {($ VSub_Name '$MANAGEMENT_CIDR')}
                            spids: [511]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [496 514]
              )
            }
          spids: [495]
        )
      ]
      spids: [495]
    )
    (C {(printf)} {(DQ ('Management glob: ') (${ VSub_Name MANAGEMENT_GLOB) (Lit_Other '\\') (n))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FIXED_GLOB)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [
                          {(sed)}
                          {(-e)}
                          {(SQ <'s#/.*##'>)}
                          {(-e)}
                          {(SQ <'s/\\(\\.0\\)*.[0-9]\\{1,3\\}$/.*/'>)}
                        ]
                        redirects: [
                          (Redir
                            op_id: Redir_TLess
                            fd: 16777215
                            arg_word: {($ VSub_Name '$FIXED_CIDR')}
                            spids: [543]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [528 546]
              )
            }
          spids: [527]
        )
      ]
      spids: [527]
    )
    (C {(printf)} {(DQ ('Fixed glob: ') (${ VSub_Name FIXED_GLOB) (Lit_Other '\\') (n))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FLOATING_GLOB)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [
                          {(sed)}
                          {(-e)}
                          {(SQ <'s#/.*##'>)}
                          {(-e)}
                          {(SQ <'s/\\(\\.0\\)*.[0-9]\\{1,3\\}$/.*/'>)}
                        ]
                        redirects: [
                          (Redir
                            op_id: Redir_TLess
                            fd: 16777215
                            arg_word: {($ VSub_Name '$FLOATING_CIDR')}
                            spids: [575]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [560 578]
              )
            }
          spids: [559]
        )
      ]
      spids: [559]
    )
    (C {(printf)} {(DQ ('Floating glob: ') (${ VSub_Name FLOATING_GLOB) (Lit_Other '\\') (n))})
    (C {(printf)} {(DQ ('#### Setup Directories') (Lit_Other '\\') (n))})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TEST_DATA_DIR) op:Equal rhs:{(test_data)} spids:[600])]
      spids: [600]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name '$TEST_DATA_DIR')})
    (AndOr
      children: [
        (DBracket
          expr: (BoolUnary op_id:BoolUnary_f child:{(${ VSub_Name TEST_DATA_DIR) (/test_ssh_key)})
        )
        (C {(ssh-keygen)} {(-t)} {(dsa)} {(-f)} {(${ VSub_Name TEST_DATA_DIR) (/test_ssh_key)} {(-P)} {(SQ )})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (DBracket
          expr: (BoolUnary op_id:BoolUnary_d child:{(${ VSub_Name TEST_DATA_DIR) (/tempest)})
        )
        (C {(git)} {(clone)} {(https) (Lit_Other ':') (//github.com/openstack/tempest.git)} {(-b)} 
          {(stable/grizzly)} {(${ VSub_Name TEST_DATA_DIR) (/tempest)}
        )
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cobbler_pass)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Sentence
                          child: (C {(cd)} {(..)})
                          terminator: <Op_Semi ';'>
                        )
                        (Pipeline
                          children: [
                            (C {(knife)} {(data)} {(bag)} {(show)} {(configs)} 
                              {($ VSub_Name '$ENVIRONMENT')}
                            )
                            (C {(grep)} {(SQ <'cobbler-root-password:'>)})
                            (C {(sed)} {(SQ <'s/.* //'>)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [680 711]
                )
              )
            }
          spids: [678]
        )
      ]
      spids: [678]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SCP_HOST)
          op: Equal
          rhs: 
            {
              (DQ ('sshpass -p ') ($ VSub_Name '$cobbler_pass') 
                (
' scp -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no'
                )
              )
            }
          spids: [714]
        )
      ]
      spids: [714]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSH_HOST)
          op: Equal
          rhs: 
            {
              (DQ ('sshpass -p ') ($ VSub_Name '$cobbler_pass') 
                (
' ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no -l ubuntu'
                )
              )
            }
          spids: [721]
        )
      ]
      spids: [721]
    )
    (Pipeline
      children: [
        (C {(echo)} {($ VSub_Name '$cobbler_pass')})
        (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
          {(SQ <'sudo -S chmod 755 /root/adminrc /root'>)}
        )
      ]
      negated: False
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
                      {(SQ <'source /root/adminrc;glance image-list | grep -q Ubuntu'>)}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {($ VSub_Name '$CURL')} 
              {(http) (Lit_Other ':') 
                (//cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img)
              } {(-o)} {(${ VSub_Name TEST_DATA_DIR) (/ubuntu.img)}
            )
            (C {($ VSub_Name '$SCP_HOST')} {(${ VSub_Name TEST_DATA_DIR) (/ubuntu.img)} 
              {(ubuntu) (Lit_Other '@') (${ VSub_Name FIRST_HEAD) (Lit_Other ':') (ubuntu.img)}
            )
            (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
              {
                (SQ 
                  <
'source /root/adminrc; glance image-create --name Ubuntu --disk-format iso --container-format bare --file ubuntu.img --is-public True'
                  >
                )
              }
            )
          ]
          spids: [16777215 763]
        )
      ]
      spids: [16777215 804]
    )
    (Pipeline
      children: [
        (C {(echo)} {($ VSub_Name '$cobbler_pass')})
        (SimpleCommand
          words: [
            {($ VSub_Name '$SSH_HOST')}
            {($ VSub_Name '$FIRST_HEAD')}
            {(SQ <'sudo -S cat /root/.ssh/id_rsa'>)}
          ]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {(${ VSub_Name TEST_DATA_DIR) (/hypervisor_key)}
              spids: [824]
            )
          ]
        )
      ]
      negated: False
    )
    (C {(printf)} {(DQ (Lit_Other '\\') (n))})
    (C {(printf)} {(DQ ('#### Gather Tempest.CONF configurations') (Lit_Other '\\') (n))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cirros_image_id)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
                        {
                          (SQ 
                            <
'source /root/adminrc; glance image-list | grep Cirros | cut -f 2 -d"|" | grep -v "^+"'
                            >
                          )
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [855 863]
              )
            }
          spids: [854]
        )
      ]
      spids: [854]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ubuntu_image_id)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
                        {
                          (SQ 
                            <
'source /root/adminrc; glance image-list | grep Ubuntu | cut -f 2 -d"|" | grep -v "^+"'
                            >
                          )
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [869 877]
              )
            }
          spids: [868]
        )
      ]
      spids: [868]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:flavor_ref)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
                        {(SQ <'source /root/adminrc; nova flavor-list|grep m1.tiny|cut -f 2 -d"|"'>)}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [884 892]
              )
            }
          spids: [883]
        )
      ]
      spids: [883]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:flavor_ref_alt)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {($ VSub_Name '$SSH_HOST')} {($ VSub_Name '$FIRST_HEAD')} 
                        {
                          (SQ <'source /root/adminrc; nova flavor-list|grep m1.small|cut -f 2 -d"|"'>)
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [898 906]
              )
            }
          spids: [897]
        )
      ]
      spids: [897]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:keystone_admin_pass)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(data)} {(bag)} {(show)} {(configs)} {($ VSub_Name '$ENVIRONMENT')})
                          (C {(grep)} {(keystone-admin-password) (Lit_Other ':')})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [912 943]
              )
            }
          spids: [911]
        )
      ]
      spids: [911]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:keystone_test_user)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(data)} {(bag)} {(show)} {(configs)} {($ VSub_Name '$ENVIRONMENT')})
                          (C {(grep)} {(keystone-test-user) (Lit_Other ':')})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [949 980]
              )
            }
          spids: [948]
        )
      ]
      spids: [948]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:keystone_test_user_pass)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: (C {(cd)} {(../)})
                        terminator: <Op_Semi ';'>
                      )
                      (Pipeline
                        children: [
                          (C {(knife)} {(data)} {(bag)} {(show)} {(configs)} {($ VSub_Name '$ENVIRONMENT')})
                          (C {(grep)} {(keystone-test-password) (Lit_Other ':')})
                          (C {(sed)} {(SQ <'s/.* //'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [983 1014]
              )
            }
          spids: [982]
        )
      ]
      spids: [982]
    )
    (C {(export)} {(Lit_VarLike 'IMAGE_ID=') ($ VSub_Name '$ubuntu_image_id')})
    (C {(export)} {(Lit_VarLike 'IMAGE_ID_ALT=') ($ VSub_Name '$cirros_image_id')})
    (C {(printf)} {(DQ ('#### Modify tempest.conf for cluster') (Lit_Other '\\') (n))})
    (C {(pushd)} {(${ VSub_Name TEST_DATA_DIR) (/tempest)})
    (SimpleCommand
      words: [{(python)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('import ConfigParser\n') ('parser=ConfigParser.RawConfigParser()\n') ('with open(') 
                (Right_DoubleQuote '"') (etc/tempest.conf.sample) (Right_DoubleQuote '"') (',mode=') (Right_DoubleQuote '"') (r) 
                (Right_DoubleQuote '"') (') as input_f:\n') ('    parser.readfp(input_f)\n') ('configDir = {\n') (' ') (Right_DoubleQuote '"') 
                (cli) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (enabled) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (true) (Right_DoubleQuote '"') (', ') (Right_DoubleQuote '"') (cli_dir) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (/usr/bin) (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (compute) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (allow_tenant_isolation) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                (true) (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (image_ref) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ($ VSub_Name '$IMAGE_ID') (Right_DoubleQuote '"') (',\n') ('             ') 
                (Right_DoubleQuote '"') (image_ref_alt) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ($ VSub_Name '$IMAGE_ID_ALT') 
                (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (flavor_ref) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ($ VSub_Name '$flavor_ref') (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') 
                (flavor_ref_alt) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ($ VSub_Name '$flavor_ref_alt') 
                (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (image_ssh_user) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (ubuntu) (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (image_alt_ssh_user) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (cirros) (Right_DoubleQuote '"') (',\n') ('             ') 
                (Right_DoubleQuote '"') (image_alt_ssh_password) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ('cubswin:)') 
                (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (ssh_user) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (ubuntu) (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') (region) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') (',\n') 
                ('             ') (Right_DoubleQuote '"') (path_to_private_key) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(pwd)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [1189 1191]
                ) (/) (${ VSub_Name TEST_DATA_DIR) (/test_ssh_key) (Right_DoubleQuote '"') ('},\n') (' ') 
                (Right_DoubleQuote '"') (compute-admin) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (tenant_name) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (AdminTenant) (Right_DoubleQuote '"') (',\n') ('                   ') 
                (Right_DoubleQuote '"') (password) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (${ VSub_Name keystone_admin_pass) 
                (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (compute-feature-enabled) (Right_DoubleQuote '"') (': {') 
                (Right_DoubleQuote '"') (api_v3) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (false) (Right_DoubleQuote '"') (',\n') 
                ('                              ') (Right_DoubleQuote '"') (api_v3_extensions) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                (Right_DoubleQuote '"') (',\n') ('                              ') (Right_DoubleQuote '"') (change_password) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (true) (Right_DoubleQuote '"') (', \n') ('                              ') 
                (Right_DoubleQuote '"') (create_image) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (true) (Right_DoubleQuote '"') 
                ('},\n') (' ') (Right_DoubleQuote '"') (dashboard) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') 
                (dashboard_url) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ('https://') (${ VSub_Name VIP) (/horizon/) 
                (Right_DoubleQuote '"') (',\n') ('               ') (Right_DoubleQuote '"') (login_url) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ('https://') (${ VSub_Name VIP) (/horizon/auth/login/) (Right_DoubleQuote '"') ('},\n') (' ') 
                (Right_DoubleQuote '"') (identity) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (uri) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ('https://') (${ VSub_Name VIP) (':5000/v2.0') (Right_DoubleQuote '"') (',\n') ('              ') 
                (Right_DoubleQuote '"') (disable_ssl_certificate_validation) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (true) 
                (Right_DoubleQuote '"') (',\n') ('              ') (Right_DoubleQuote '"') (region) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') (',\n') ('              ') (Right_DoubleQuote '"') 
                (username) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (${ VSub_Name keystone_test_user) 
                (Right_DoubleQuote '"') (',\n') ('              ') (Right_DoubleQuote '"') (tenant_name) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (AdminTenant) (Right_DoubleQuote '"') (', \n') ('              ') (Right_DoubleQuote '"') (password) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (${ VSub_Name keystone_test_user_pass) (Right_DoubleQuote '"') (',\n') 
                ('              ') (Right_DoubleQuote '"') (admin_username) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (admin) 
                (Right_DoubleQuote '"') (',\n') ('              ') (Right_DoubleQuote '"') (admin_tenant_name) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (AdminTenant) (Right_DoubleQuote '"') (',\n') ('              ') (Right_DoubleQuote '"') (admin_password) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (${ VSub_Name keystone_admin_pass) (Right_DoubleQuote '"') ('},\n') (' ') 
                (Right_DoubleQuote '"') (image) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (region) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') (',\n') ('           ') (Right_DoubleQuote '"') 
                (http_image) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ('http://') (${ VSub_Name BOOTSTRAP) 
                (':8080/cirros-0.3.4-x86_64-disk.img') (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (input-scenario) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (image_regex) (Right_DoubleQuote '"') (": '[[") (Right_DoubleQuote '"') 
                ('^[Cc]irros.*') (Lit_Other '$') (Right_DoubleQuote '"') (',') (Right_DoubleQuote '"') ('^[Uu]buntu.*') 
                (Right_DoubleQuote '"') ("]]',\n") ('                    ') (Right_DoubleQuote '"') (flavor_regex) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ('^m1.tiny') (Right_DoubleQuote '"') (',\n') ('                    ') (Right_DoubleQuote '"') 
                (ssh_user_regex) (Right_DoubleQuote '"') (": '[[") (Right_DoubleQuote '"') ('^.*[Cc]irros.*') (Lit_Other '$') 
                (Right_DoubleQuote '"') (', ') (Right_DoubleQuote '"') (ubuntu) (Right_DoubleQuote '"') ("]]'},\n") (' ') (Right_DoubleQuote '"') 
                (network) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (region) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') (',\n') ('             ') (Right_DoubleQuote '"') 
                (tenant_network_cidr) (Right_DoubleQuote '"') (' : ') (Right_DoubleQuote '"') (1.127.0.0/16) (Right_DoubleQuote '"') (',\n') 
                ('             ') (Right_DoubleQuote '"') (tenant_network_mask_bits) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                (25) (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (object-storage) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (region) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (service_available) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (swift) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (false) 
                (Right_DoubleQuote '"') (',\n') ('                       ') (Right_DoubleQuote '"') (ceilometer) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (false) (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (stress) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (nova_logdir) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') 
                (/var/log/nova) (Right_DoubleQuote '"') (',\n') ('            ') (Right_DoubleQuote '"') (target_ssh_user) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (root) (Right_DoubleQuote '"') (',\n') ('            ') 
                (Right_DoubleQuote '"') (target_private_key_path) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (${ VSub_Name pwd) 
                (/hypervisor_key) (Right_DoubleQuote '"') (',\n') ('            ') (Right_DoubleQuote '"') (target_logfiles) 
                (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') ('nova.*') (Lit_Other '\\') (.log) (Right_DoubleQuote '"') ('},\n') (' ') 
                (Right_DoubleQuote '"') (volume) (Right_DoubleQuote '"') (': {') (Right_DoubleQuote '"') (region) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') ($ VSub_Name '$ENVIRONMENT') (Right_DoubleQuote '"') (',\n') ('            ') (Right_DoubleQuote '"') 
                (backend1_name) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (SSD) (Right_DoubleQuote '"') (',\n') 
                ('            ') (Right_DoubleQuote '"') (backend2_name) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (HDD) 
                (Right_DoubleQuote '"') (',\n') ('            ') (Right_DoubleQuote '"') (storage_protocol) (Right_DoubleQuote '"') (': ') 
                (Right_DoubleQuote '"') (RBD) (Right_DoubleQuote '"') ('},\n') (' ') (Right_DoubleQuote '"') (whitebox) (Right_DoubleQuote '"') 
                (': {') (Right_DoubleQuote '"') (whitebox_enabled) (Right_DoubleQuote '"') (': ') (Right_DoubleQuote '"') (false) 
                (Right_DoubleQuote '"') ('}\n') ('}\n') ('for sect in configDir:\n') ('    if sect not in parser.sections():\n') 
                ('        continue\n') ('    for opt in configDir[sect]:\n') ('        parser.set(sect, opt, configDir[sect][opt])\n') 
                ('with file(') (Right_DoubleQuote '"') (etc/tempest.conf) (Right_DoubleQuote '"') (', mode=') (Right_DoubleQuote '"') (w) 
                (Right_DoubleQuote '"') (') as output_f:\n') ('    parser.write(output_f)\n') ('for sect in [') (Right_DoubleQuote '"') 
                (object-storage) (Right_DoubleQuote '"') (',') (Right_DoubleQuote '"') (boto) (Right_DoubleQuote '"') (']:\n') 
                ('    parser.remove_section(sect)\n')
              )
            }
          do_expansion: True
          here_end: EOPYTHON
          was_filled: True
          spids: [1051]
        )
      ]
    )
    (C {(popd)})
    (C {(printf)} {(DQ ('#### Install pre-requsite software') (Lit_Other '\\') (n))})
    (C {(sudo)} {(apt-get)} {(install)} {(-y)} {(testrepository)} {(python-nova)})
    (C {(sudo)} {(-E)} {(easy_install)} {(virtualenv)} {(flake8)})
    (C {(sudo)} {(-E)} {(pip)} {(install)} {(-r)} 
      {(${ VSub_Name TEST_DATA_DIR) (/tempest/tools/pip-requires)}
    )
    (C {(printf)} {(DQ ('#### Run Tempest') (Lit_Other '\\') (n))})
    (C {(export)} 
      {(Lit_VarLike 'NO_PROXY=') 
        (DQ (${ VSub_Name CLUSTER_NODES) (${ VSub_Name BOOTSTRAP) (',') (${ VSub_Name VIP) (',') 
          (${ VSub_Name MANAGEMENT_GLOB) (',') (${ VSub_Name FIXED_GLOB) (',') (${ VSub_Name FLOATING_GLOB)
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'no_proxy=') 
        (DQ (${ VSub_Name CLUSTER_NODES) (${ VSub_Name BOOTSTRAP) (',') (${ VSub_Name VIP) (',') 
          (${ VSub_Name MANAGEMENT_GLOB) (',') (${ VSub_Name FIXED_GLOB) (',') (${ VSub_Name FLOATING_GLOB)
        )
      }
    )
    (C {(pushd)} {(${ VSub_Name TEST_DATA_DIR) (/tempest)})
    (C {(bin/tempest)} {(--with-xunit)} 
      {(--xunit-file) (Lit_Other '=') (../tempest_out_) 
        (CommandSubPart
          command_list: 
            (CommandList
              children: [
                (C {(date)} 
                  {(Lit_Other '+') (Lit_Other '%') (m) (Lit_Other '%') (d) (Lit_Other '%') (Y-) 
                    (Lit_Other '%') (H) (Lit_Other '%') (M) (Lit_Other '%') (S)
                  }
                )
              ]
            )
          left_token: <Left_CommandSub '$('>
          spids: [1772 1788]
        ) (.xml)
      }
    )
    (C {(popd)})
  ]
)