(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Initializing:'>)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: (command.CommandList children:[(C {<which>} {<python>})])
                )
              } {<Id.Lit_RBracket ']'>}
            )
          ]
          action: [
            (C {<echo>} 
              {
                (DQ 
                  <
'Python is a prerequisite for running this script. Please install Python and try running again.'
                  >
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [60 74]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: (command.CommandList children:[(C {<which>} {<gcloud>})])
                )
              } {<Id.Lit_RBracket ']'>}
            )
          ]
          action: [
            (C {<echo>} 
              {
                (DQ 
                  <
'gcloud is a prerequisite for running this script. Please install gcloud and try running again.'
                  >
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [91 105]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:gcloud_instances)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {<gcloud>} {<compute>} {<instances>} {<list>})
                          (C {<grep>} {(DQ <Id.Lit_Other '\\'> <-master>)})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [122]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$gcloud_instances'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name KUBE_GCE_INSTANCE_PREFIX))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          ]
          action: [
            (C {<echo>} 
              {
                (DQ 
                  <
'This script is only able to supply the necessary serviceaccount key if you are running on Google'
                  >
                )
              }
            )
            (C {<echo>} 
              {
                (DQ 
                  <
'Compute Engine using a cluster/kube-up.sh script with KUBE_GCE_INSTANCE_PREFIX set. If this is not'
                  >
                )
              }
            )
            (C {<echo>} {(DQ <'the case, be ready to supply a path to the serviceaccount public key.'>)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name KUBE_GCE_INSTANCE_PREFIX))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                  action: [
                    (C {<echo>} {(DQ <'Please provide your KUBE_GCE_INSTANCE_PREFIX now:'>)})
                    (C {<read>} {<KUBE_GCE_INSTANCE_PREFIX>})
                  ]
                  spids: [192 207]
                )
              ]
            )
          ]
          spids: [142 168]
        )
      ]
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'OPENSHIFT_EXAMPLE='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {<pwd>})])
        ) </examples/openshift-origin>
      }
    )
    (C {<echo>} {<Set>} {<Id.Lit_VarLike 'OPENSHIFT_EXAMPLE='> (${ Id.VSub_Name OPENSHIFT_EXAMPLE)})
    (C {<export>} {<Id.Lit_VarLike 'OPENSHIFT_CONFIG='> (${ Id.VSub_Name OPENSHIFT_EXAMPLE) </config>})
    (C {<echo>} {<Set>} {<Id.Lit_VarLike 'OPENSHIFT_CONFIG='> (${ Id.VSub_Name OPENSHIFT_CONFIG)})
    (C {<mkdir>} {(${ Id.VSub_Name OPENSHIFT_CONFIG)})
    (C {<echo>} {<Made>} {<dir>} {(${ Id.VSub_Name OPENSHIFT_CONFIG)})
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Setting up OpenShift-Origin namespace:'>)})
    (C {<kubectl>} {<create>} {<-f>} 
      {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-origin-namespace.yaml>}
    )
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Setting up etcd-discovery:'>)})
    (C {<export>} 
      {<Id.Lit_VarLike 'ETCD_INITIAL_CLUSTER_TOKEN='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: 
            (command.CommandList
              children: [
                (C {<python>} {<-c>} 
                  {
                    (DQ 
                      <
"import string; import random; print(''.join(random.SystemRandom().choice(string.ascii_lowercase + string.digits) for _ in range(40)))"
                      >
                    )
                  }
                )
              ]
            )
        )
      }
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'ETCD_DISCOVERY_TOKEN='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: 
            (command.CommandList
              children: [
                (C {<python>} {<-c>} 
                  {
                    (DQ <'import string; import random; print('> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) <etcd-cluster-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                      <
" + ''.join(random.SystemRandom().choice(string.ascii_lowercase + string.digits) for _ in range(5)))"
                      >
                    )
                  }
                )
              ]
            )
        )
      }
    )
    (C {<sed>} {<-i.bak>} {<-e>} 
      {
        (DQ <s/INSERT_ETCD_INITIAL_CLUSTER_TOKEN/> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name ETCD_INITIAL_CLUSTER_TOKEN) 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) </g>
        )
      } {<-e>} 
      {
        (DQ <s/INSERT_ETCD_DISCOVERY_TOKEN/> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name ETCD_DISCOVERY_TOKEN) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) </g>
        )
      } {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </etcd-controller.yaml>}
    )
    (C {<kubectl>} {<create>} {<-f>} 
      {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </etcd-discovery-controller.yaml>} {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </etcd-discovery-service.yaml>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Setting up etcd:'>)})
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </etcd-controller.yaml>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </etcd-service.yaml>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Setting up openshift-origin:'>)})
    (command.Simple
      words: [
        {<kubectl>}
        {<config>}
        {<view>}
        {<--output> <Id.Lit_Equals '='> <yaml>}
        {<--flatten> <Id.Lit_Equals '='> <true>}
        {<--minify> <Id.Lit_Equals '='> <true>}
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {(${ Id.VSub_Name OPENSHIFT_CONFIG) </kubeconfig>}
        )
      ]
    )
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-service.yaml>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<echo>})
    (C {<export>} {<Id.Lit_VarLike 'PUBLIC_OPENSHIFT_IP='> (DQ )})
    (C {<echo>} {(DQ <'===> Waiting for public IP to be set for the OpenShift Service.'>)})
    (C {<echo>} {(DQ <'Mistakes in service setup can cause this to loop infinitely if an'>)})
    (C {<echo>} {(DQ <'external IP is never set. Ensure that the OpenShift service'>)})
    (C {<echo>} {(DQ <'is set to use an external load balancer. This process may take'>)})
    (C {<echo>} {(DQ <'a few minutes. Errors can be found in the log file found at:'>)})
    (C {<echo>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-startup.log>})
    (command.Simple
      words: [{<echo>} {(DQ )}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-startup.log>}
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: [
        (command.Sentence
          child: 
            (C {<Id.Lit_LBracket '['>} 
              {(braced_var_sub token:<Id.VSub_Name PUBLIC_OPENSHIFT_IP> prefix_op:(Id.VSub_Pound))} {<-lt>} {<1>} {<Id.Lit_RBracket ']'>}
            )
          terminator: <Id.Op_Semi _>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (C {<echo>} {<-n>} {<.>})
            (C {<sleep>} {<1>})
            (command.BraceGroup
              children: [
                (C {<export>} 
                  {<Id.Lit_VarLike 'PUBLIC_OPENSHIFT_IP='> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      command_list: 
                        (command.CommandList
                          children: [
                            (C {<kubectl>} {<get>} {<services>} {<openshift>} 
                              {<--namespace> <Id.Lit_Equals '='> (DQ <openshift-origin>)} 
                              {<--template> <Id.Lit_Equals '='> 
                                (DQ <'{{ index .status.loadBalancer.ingress 0 '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                  ) <ip> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' }}'>
                                )
                              }
                            )
                          ]
                        )
                    )
                  }
                )
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-startup.log>}
                )
                (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_EqualTilde
                                  left: {(${ Id.VSub_Name PUBLIC_OPENSHIFT_IP)}
                                  right: 
                                    {<Id.Lit_Other '^'> <Id.Lit_Other '('> <Id.Lit_Other '['> <0-9> 
                                      <Id.Lit_Other ']'> <Id.Lit_Other '{'> <1> <Id.Lit_Other ','> <3> <Id.Lit_Other '}'> <Id.Lit_RegexMeta '\\.'> 
                                      <Id.Lit_Other ')'> <Id.Lit_Other '{'> <3> <Id.Lit_Other '}'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '{'> <1> 
                                      <Id.Lit_Other ','> <3> <Id.Lit_Other '}'> <Id.Lit_Other '$'>
                                    }
                                )
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<export>} {<Id.Lit_VarLike 'PUBLIC_OPENSHIFT_IP='> (DQ )})]
                  spids: [641 681]
                )
              ]
            )
          ]
        )
    )
    (C {<echo>})
    (C {<echo>} {(DQ <'Public OpenShift IP set to: '> (${ Id.VSub_Name PUBLIC_OPENSHIFT_IP))})
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Configuring OpenShift:'>)})
    (C {<docker>} {<run>} {<--privileged>} {<-v>} 
      {(${ Id.VSub_Name OPENSHIFT_CONFIG) <Id.Lit_Other ':'> </config>} {<openshift/origin>} {<start>} {<master>} {<--write-config> <Id.Lit_Equals '='> </config>} 
      {<--kubeconfig> <Id.Lit_Equals '='> </config/kubeconfig>} {<--master> <Id.Lit_Equals '='> <https> <Id.Lit_Other ':'> <//localhost> <Id.Lit_Other ':'> <8443>} 
      {<--public-master> <Id.Lit_Equals '='> <https> <Id.Lit_Other ':'> <//> 
        (${ Id.VSub_Name PUBLIC_OPENSHIFT_IP) <Id.Lit_Other ':'> <8443>
      } {<--etcd> <Id.Lit_Equals '='> <http> <Id.Lit_Other ':'> <//etcd> <Id.Lit_Other ':'> <2379>}
    )
    (C {<sudo>} {<-E>} {<chown>} {<-R>} {(${ Id.VSub_Name USER)} {(${ Id.VSub_Name OPENSHIFT_CONFIG)})
    (C {<export>} 
      {<Id.Lit_VarLike 'ZONE='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: 
            (command.CommandList
              children: [
                (command.Pipeline
                  children: [
                    (C {<gcloud>} {<compute>} {<instances>} {<list>})
                    (C {<grep>} 
                      {(DQ (${ Id.VSub_Name KUBE_GCE_INSTANCE_PREFIX) <Id.Lit_Other '\\'> <-master>)}
                    )
                    (C {<awk>} {(SQ <'{print $2}'>)})
                    (C {<head>} {<-1>})
                  ]
                  negated: F
                )
              ]
            )
        )
      }
    )
    (command.Pipeline
      children: [
        (C {<echo>} {(DQ <'sudo cat /srv/kubernetes/server.key; exit;'>)})
        (C {<gcloud>} {<compute>} {<ssh>} {(${ Id.VSub_Name KUBE_GCE_INSTANCE_PREFIX) <-master>} 
          {<--zone>} {(${ Id.VSub_Name ZONE)}
        )
        (command.Simple
          words: [
            {<grep>}
            {<-Ex>}
            {
              (DQ <'(^'> <Id.Lit_Other '\\'> <'-.*'> <Id.Lit_Other '\\'> <-> <Id.Lit_Other '$'> <'|^'> 
                <Id.Lit_Other '\\'> <'S+'> <Id.Lit_Other '$'> <')'>
              )
            }
          ]
          redirects: [
            (redir.Redir
              op: <Id.Redir_Great '>'>
              fd: -1
              arg_word: {(${ Id.VSub_Name OPENSHIFT_CONFIG) </serviceaccounts.private.key>}
            )
          ]
        )
      ]
      negated: F
    )
    (C {<sed>} {<-i>} {<-e>} {(SQ <'s/publicKeyFiles:.*$/publicKeyFiles:/g'>)} {<-e>} 
      {(SQ <'/publicKeyFiles:/a \\ \\ - serviceaccounts.private.key'>)} {(${ Id.VSub_Name OPENSHIFT_CONFIG) </master-config.yaml>}
    )
    (command.Simple
      words: [
        {<docker>}
        {<run>}
        {<-it>}
        {<--privileged>}
        {<-e> <Id.Lit_Equals '='> (DQ <'KUBECONFIG=/config/admin.kubeconfig'>)}
        {<-v>}
        {(${ Id.VSub_Name OPENSHIFT_CONFIG) <Id.Lit_Other ':'> </config>}
        {<openshift/origin>}
        {<cli>}
        {<secrets>}
        {<new>}
        {<openshift-config>}
        {</config>}
        {<-o>}
        {<json>}
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_AndGreat '&>'>
          fd: -1
          arg_word: {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </secret.json>}
        )
      ]
    )
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </secret.json>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<echo>})
    (C {<echo>} {(DQ <'===> Running OpenShift Master:'>)})
    (C {<kubectl>} {<create>} {<-f>} {(${ Id.VSub_Name OPENSHIFT_EXAMPLE) </openshift-controller.yaml>} 
      {<--namespace> <Id.Lit_Equals '='> (SQ <openshift-origin>)}
    )
    (C {<echo>})
    (C {<echo>} {<Done.>})
  ]
)