(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("Note: This assumes that the 'types_swagger_doc_generated.go' file has been\n") 
                ("updated for all API group versions. If you are unsure, please run\n") ("hack/update-generated-swagger-docs.sh and\n") 
                ("hack/update-federation-generated-swagger-docs.sh first.\n")
              )
            }
          do_expansion: True
          here_end: __EOF__
          was_filled: True
          spids: [72]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [82 90]
              ) (/..)
            }
          spids: [81]
        )
      ]
      spids: [81]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SWAGGER_ROOT_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/federation/apis/swagger-spec))}
          spids: [93]
        )
      ]
      spids: [93]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.sh))})
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (golang) (Lit_Other ":") (Lit_Other ":") (setup_env)})
    (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} {(Lit_VarLike "WHAT=") (DQ (cmd/hyperkube))})
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name APISERVER_PID>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                            spids: [149 152]
                          )
                        }
                    )
                )
                (SimpleCommand
                  words: [{(kill)} {(${ VSub_Name APISERVER_PID)}]
                  redirects: [
                    (Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[164])
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [167]
                    )
                  ]
                )
              ]
              op_id: Op_DAmp
            )
            (C 
              {(kube) (Lit_Other ":") (Lit_Other ":") (etcd) (Lit_Other ":") (Lit_Other ":") (cleanup)}
            )
            (C {(kube) (Lit_Other ":") (Lit_Other ":") (log) (Lit_Other ":") (Lit_Other ":") (status)} 
              {(DQ ("Clean up complete"))}
            )
          ]
          spids: [142]
        )
      spids: [136 141]
    )
    (C {(trap)} {(cleanup)} {(EXIT)} {(SIGINT)})
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (golang) (Lit_Other ":") (Lit_Other ":") (setup_env)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMP_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(mktemp)} {(-d)} {(/tmp/update-federation-swagger-spec.XXXX)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [216 222]
              )
            }
          spids: [215]
        )
      ]
      spids: [215]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ETCD_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ETCD_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(127.0.0.1)})
                spids: [225 229]
              )
            }
          spids: [224]
        )
      ]
      spids: [224]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ETCD_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ETCD_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(2379)})
                spids: [232 236]
              )
            }
          spids: [231]
        )
      ]
      spids: [231]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(8050)})
                spids: [239 243]
              )
            }
          spids: [238]
        )
      ]
      spids: [238]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(127.0.0.1)})
                spids: [246 250]
              )
            }
          spids: [245]
        )
      ]
      spids: [245]
    )
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (etcd) (Lit_Other ":") (Lit_Other ":") (start)})
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (log) (Lit_Other ":") (Lit_Other ":") (status)} 
      {(DQ ("Starting federation-apiserver"))}
    )
    (Sentence
      child: 
        (SimpleCommand
          words: [
            {(DQ (${ VSub_Name KUBE_OUTPUT_HOSTBIN) (/hyperkube))}
            {(federation-apiserver)}
            {(--insecure-bind-address) (Lit_Other "=") (DQ (${ VSub_Name API_HOST))}
            {(--bind-address) (Lit_Other "=") (DQ (${ VSub_Name API_HOST))}
            {(--insecure-port) (Lit_Other "=") (DQ (${ VSub_Name API_PORT))}
            {(--etcd-servers) (Lit_Other "=") 
              (DQ ("http://") (${ VSub_Name ETCD_HOST) (":") (${ VSub_Name ETCD_PORT))
            }
            {(--advertise-address) (Lit_Other "=") (DQ (10.10.10.10))}
            {(--cert-dir) (Lit_Other "=") (DQ (${ VSub_Name TMP_DIR) (/certs))}
          ]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: -1
              arg_word: {(/tmp/swagger-federation-api-server.log)}
              spids: [350]
            )
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[353])
          ]
        )
      terminator: <Op_Amp "&">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:APISERVER_PID)
          op: Equal
          rhs: {($ VSub_Bang "$!")}
          spids: [358]
        )
      ]
      spids: [358]
    )
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (util) (Lit_Other ":") (Lit_Other ":") (wait_for_url)} 
      {(DQ (${ VSub_Name API_HOST) (":") (${ VSub_Name API_PORT) (/))} {(DQ ("apiserver: "))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SWAGGER_API_PATH)
          op: Equal
          rhs: {(DQ (${ VSub_Name API_HOST) (":") (${ VSub_Name API_PORT) (/swaggerapi/))}
          spids: [386]
        )
      ]
      spids: [386]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DEFAULT_GROUP_VERSIONS)
          op: Equal
          rhs: {(DQ ("v1 extensions/v1beta1 federation/v1beta1"))}
          spids: [398]
        )
      ]
      spids: [398]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name VERSIONS>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {($ VSub_Name "$DEFAULT_GROUP_VERSIONS")}
                  )
                spids: [404 408]
              )
            }
          spids: [403]
        )
      ]
      spids: [403]
    )
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (log) (Lit_Other ":") (Lit_Other ":") (status)} 
      {(DQ ("Updating "))} {(${ VSub_Name SWAGGER_ROOT_DIR)}
    )
    (SimpleCommand
      words: [
        {(kube) (Lit_Other ":") (Lit_Other ":") (util) (Lit_Other ":") (Lit_Other ":") 
          (fetch-swagger-spec)
        }
      ]
      more_env: [
        (env_pair
          name: SWAGGER_API_PATH
          val: {(DQ (${ VSub_Name SWAGGER_API_PATH))}
          spids: [428]
        )
        (env_pair
          name: SWAGGER_ROOT_DIR
          val: {(DQ (${ VSub_Name SWAGGER_ROOT_DIR))}
          spids: [435]
        )
        (env_pair name:VERSIONS val:{(DQ (${ VSub_Name VERSIONS))} spids:[442])
      ]
    )
    (C {(kube) (Lit_Other ":") (Lit_Other ":") (log) (Lit_Other ":") (Lit_Other ":") (status)} 
      {(DQ (SUCCESS))}
    )
  ]
)