(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < 'kube-push.sh is currently broken; see https://github.com/kubernetes/kubernetes/issues/17397' > ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) (command.ShAssignment left: <Id.Lit_VarLike 'KUBE_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_ROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_ROOT='> name:KUBE_ROOT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/..'> } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/env.sh'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/env.sh'>)}] redirects: [] do_fork: T ) ] spids: [100 116] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-util.sh'>)}] redirects: [] do_fork: T ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Number 0) <' [-m|-n <node id>] <version>'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' Updates Kubernetes binaries. Can be done for all components (by default), master(-m) or specified node(-n).' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' If the version is not specified will try to use local binaries.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Warning: upgrading single node is experimental'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'push_to_master='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'push_to_master='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'push_to_master='> name:push_to_master) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'push_to_node='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'push_to_node='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'push_to_node='> name:push_to_node) op: assign_op.Equal rhs: {<false>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(DQ <'mn:h'>)} {<opt>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(${ Id.VSub_Name opt)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <m> pattern: (pat.Words words:[{<m>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'push_to_master='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'push_to_master='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'push_to_master='> name: push_to_master ) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'push_to_node='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'push_to_node='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'push_to_node='> name: push_to_node ) op: assign_op.Equal rhs: {<true>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'node_id='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'node_id='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'node_id='> name:node_id) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <h> pattern: (pat.Words words:[{<h>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_EscapedChar '\\?'> pattern: (pat.Words words: [{(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Invalid option: -'> ($ Id.VSub_DollarName OPTARG))}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike OPTIND) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ <true>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ <true>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Only one of options -m -n should be specified'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [288 325] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <verify-prereqs> more_env: [] words: [{<verify-prereqs>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <verify-kube-binaries> more_env: [] words: [{<verify-kube-binaries>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'KUBE_VERSION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KUBE_VERSION='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_VERSION='> name:KUBE_VERSION) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ <false>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ <false>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Updating cluster using provider: '> ($ Id.VSub_DollarName KUBERNETES_PROVIDER)) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <kube-push> more_env: [] words: [{<kube-push>}] redirects: [] do_fork: T ) ] spids: [356 393] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ <true>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Updating master to version '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBE_VERSION> var_name: KUBE_VERSION suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <dev>)}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <prepare-push> more_env: [] words: [{<prepare-push>} {<false>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <push-master> more_env: [] words: [{<push-master>}] redirects: [] do_fork: T ) ] spids: [409 428] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ <true>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Updating node '> ($ Id.VSub_DollarName node_id) <' to version '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name KUBE_VERSION> var_name: KUBE_VERSION suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <dev>)}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <prepare-push> more_env: [] words: [{<prepare-push>} {<true>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <push-node> more_env: [] words: [{<push-node>} {($ Id.VSub_DollarName node_id)}] redirects: [] do_fork: T ) ] spids: [455 474] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Validating cluster post-push...'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/validate-cluster.sh'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Done>)}] redirects: [] do_fork: T ) ] )