(CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(.)} {(../proxy_setup.sh)})
    (C {(printf)} {(DQ ("#### Setup Environment") (EscapedLiteralPart token:<Lit_EscapedChar "\\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: [35 39]
                )
              )
            }
          spids: [33]
        )
      ]
      spids: [33]
    )
    (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: [44 73]
              )
            }
          spids: [43]
        )
      ]
      spids: [43]
    )
    (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: [88 90]
                              )
                            } {(-a)} {(SQ <bcpc.management.vip>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <"s/.* //">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [76 111]
              )
            }
          spids: [75]
        )
      ]
      spids: [75]
    )
    (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: [126 128]
                              )
                            } {(-a)} {(SQ <bcpc.management.ip>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <"s/.* //">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [114 149]
              )
            }
          spids: [113]
        )
      ]
      spids: [113]
    )
    (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: -1
                            arg_word: 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (C {(cut)} {(-f)} {(3)} {(-d) (SQ <" ">)} {(../cluster.txt)})
                                      ]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [172 185]
                                )
                              }
                            spids: [170]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [155 186]
              )
            }
          spids: [154]
        )
      ]
      spids: [154]
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(ping)} {(-c)} {(1)} {(-W)} {(5)} {($ VSub_Name "$FIRST_HEAD")}]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[201])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[204])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} 
              {
                (DQ ("Pinging first headnode: ") (${ VSub_Name FIRST_HEAD) 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                )
              }
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {
                              (DQ ("Failed to ping first head node ") (${ VSub_Name FIRST_HEAD) 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\n">
                                )
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/stderr)}
                              spids: [237]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [225 246]
            )
          ]
          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:-1 arg_word:{(/dev/null)} spids:[260])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[263])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} 
              {
                (DQ ("Pinging VIP: ") (${ VSub_Name VIP) 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                )
              }
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {
                              (DQ ("Failed to ping VIP ") (${ VSub_Name VIP) 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\n">
                                )
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/stderr)}
                              spids: [296]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [284 305]
            )
          ]
          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:-1 arg_word:{(/dev/null)} spids:[319])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[322])
          ]
        )
        (AndOr
          children: [
            (C {(printf)} 
              {
                (DQ ("Pinging bootstrap: ") (${ VSub_Name BOOTSTRAP) 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                )
              }
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(printf)}
                            {
                              (DQ ("Failed to ping bootstrap server ") (${ VSub_Name BOOTSTRAP) 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\n">
                                )
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/stderr)}
                              spids: [355]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (C {(exit)} {(1)})
                  ]
                )
              spids: [343 364]
            )
          ]
          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: [383 385]
                              )
                            } {(-a)} {(SQ <bcpc.management.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <"s/.* //">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [371 406]
              )
            }
          spids: [370]
        )
      ]
      spids: [370]
    )
    (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: [421 423]
                              )
                            } {(-a)} {(SQ <bcpc.fixed.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <"s/.* //">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [409 444]
              )
            }
          spids: [408]
        )
      ]
      spids: [408]
    )
    (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: [459 461]
                              )
                            } {(-a)} {(SQ <bcpc.floating.cidr>)}
                          )
                          (C {(tail)} {(-1)})
                          (C {(sed)} {(SQ <"s/.* //">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [447 482]
              )
            }
          spids: [446]
        )
      ]
      spids: [446]
    )
    (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: -1
                            arg_word: {($ VSub_Name "$MANAGEMENT_CIDR")}
                            spids: [504]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [489 507]
              )
            }
          spids: [488]
        )
      ]
      spids: [488]
    )
    (C {(printf)} 
      {
        (DQ ("Management glob: ") (${ VSub_Name MANAGEMENT_GLOB) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\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: -1
                            arg_word: {($ VSub_Name "$FIXED_CIDR")}
                            spids: [535]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [520 538]
              )
            }
          spids: [519]
        )
      ]
      spids: [519]
    )
    (C {(printf)} 
      {
        (DQ ("Fixed glob: ") (${ VSub_Name FIXED_GLOB) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\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: -1
                            arg_word: {($ VSub_Name "$FLOATING_CIDR")}
                            spids: [566]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [551 569]
              )
            }
          spids: [550]
        )
      ]
      spids: [550]
    )
    (C {(printf)} 
      {
        (DQ ("Floating glob: ") (${ VSub_Name FLOATING_GLOB) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
        )
      }
    )
    (C {(printf)} {(DQ ("#### Setup Directories") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TEST_DATA_DIR) op:Equal rhs:{(test_data)} spids:[589])]
      spids: [589]
    )
    (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: [669 700]
                )
              )
            }
          spids: [667]
        )
      ]
      spids: [667]
    )
    (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: [703]
        )
      ]
      spids: [703]
    )
    (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: [710]
        )
      ]
      spids: [710]
    )
    (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: [-1 752]
        )
      ]
      spids: [-1 793]
    )
    (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: -1
              arg_word: {(${ VSub_Name TEST_DATA_DIR) (/hypervisor_key)}
              spids: [813]
            )
          ]
        )
      ]
      negated: False
    )
    (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))})
    (C {(printf)} 
      {
        (DQ ("#### Gather Tempest.CONF configurations") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\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: [842 850]
              )
            }
          spids: [841]
        )
      ]
      spids: [841]
    )
    (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: [856 864]
              )
            }
          spids: [855]
        )
      ]
      spids: [855]
    )
    (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: [871 879]
              )
            }
          spids: [870]
        )
      ]
      spids: [870]
    )
    (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: [885 893]
              )
            }
          spids: [884]
        )
      ]
      spids: [884]
    )
    (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: [899 930]
              )
            }
          spids: [898]
        )
      ]
      spids: [898]
    )
    (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: [936 967]
              )
            }
          spids: [935]
        )
      ]
      spids: [935]
    )
    (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: [970 1001]
              )
            }
          spids: [969]
        )
      ]
      spids: [969]
    )
    (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") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))
      }
    )
    (C {(pushd)} {(${ VSub_Name TEST_DATA_DIR) (/tempest)})
    (SimpleCommand
      words: [{(python)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: [1175 1177]
                ) (/) (${ 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.*") (EscapedLiteralPart token:<Lit_EscapedChar "\\.">) (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: [1037]
        )
      ]
    )
    (C {(popd)})
    (C {(printf)} 
      {(DQ ("#### Install pre-requsite software") (EscapedLiteralPart token:<Lit_EscapedChar "\\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") (EscapedLiteralPart token:<Lit_EscapedChar "\\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: [1755 1771]
        ) (.xml)
      }
    )
    (C {(popd)})
  ]
)