(command.CommandList children: [ (C {(Id.KW_Set set)} {(-o)} {(errexit)}) (C {(Id.KW_Set set)} {(-o)} {(nounset)}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (C {(echo)} { (DQ ( 'kube-push.sh is currently broken; see https://github.com/kubernetes/kubernetes/issues/17397' ) ) } ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:82) arg_word:{(1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_ROOT) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:88) command_list: (command.CommandList children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})] ) ) (/..) } spids: [87] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/env.sh))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:114) ) ] action: [(C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/env.sh))})] spids: [100 116] ) ] ) (C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/kube-util.sh))}) (command.ShFunction name: usage body: (command.BraceGroup children: [ (C {(echo)} {(DQ (${ Id.VSub_Number 0) (' [-m|-n <node id>] <version>'))}) (C {(echo)} { (DQ ( ' Updates Kubernetes binaries. Can be done for all components (by default), master(-m) or specified node(-n).' ) ) } ) (C {(echo)} {(DQ (' If the version is not specified will try to use local binaries.'))}) (C {(echo)} {(DQ (' Warning: upgrading single node is experimental'))}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:push_to_master) op: assign_op.Equal rhs: {(false)} spids: [183] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:push_to_node) op: assign_op.Equal rhs: {(false)} spids: [186] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:190) cond: [ (command.Sentence child: (C {(getopts)} {(DQ ('mn:h'))} {(opt)}) terminator: (Token id:Id.Op_Semi val:';' span_id:199) ) ] body: (command.DoGroup children: [ (command.Case to_match: {(${ Id.VSub_Name opt)} arms: [ (case_arm pat_list: [{(m)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:push_to_master) op: assign_op.Equal rhs: {(true)} spids: [217] ) ] ) ] spids: [213 214 219 -1] ) (case_arm pat_list: [{(n)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:push_to_node) op: assign_op.Equal rhs: {(true)} spids: [226] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:node_id) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$OPTARG'))} spids: [230] ) ] ) ] spids: [222 223 234 -1] ) (case_arm pat_list: [{(h)}] action: [ (C {(usage)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:244) arg_word: {(0)} ) ] spids: [237 238 247 -1] ) (case_arm pat_list: [ { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\?' span_id:250) ) } ] action: [ (command.Simple words: [{(echo)} {(DQ ('Invalid option: -') ($ Id.VSub_DollarName '$OPTARG'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:261) fd: -1 arg_word: {(2)} ) ] ) (C {(usage)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:268) arg_word: {(1)} ) ] spids: [250 251 271 -1] ) ] ) ] ) ) (C {(shift)} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:OPTIND span_id:281)) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ (true))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ (true))} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:323) ) ] action: [ (C {(echo)} {(DQ ('Only one of options -m -n should be specified'))}) (C {(usage)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:338) arg_word: {(1)} ) ] spids: [288 325] ) ] ) (C {(verify-prereqs)}) (C {(verify-kube-binaries)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:351) suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{}) ) } spids: [349] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ (false))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ (false))} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:391) ) ] action: [ (C {(echo)} { (DQ ('Updating cluster using provider: ') ($ Id.VSub_DollarName '$KUBERNETES_PROVIDER') ) } ) (C {(kube-push)}) ] spids: [356 393] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_master))} right: {(DQ (true))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:426) ) ] action: [ (C {(echo)} { (DQ ('Updating master to version ') (braced_var_sub token: (Token id:Id.VSub_Name val:KUBE_VERSION span_id:436) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (dev))}) ) ) } ) (C {(prepare-push)} {(false)}) (C {(push-master)}) ] spids: [409 428] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name push_to_node))} right: {(DQ (true))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:472) ) ] action: [ (C {(echo)} { (DQ ('Updating node ') ($ Id.VSub_DollarName '$node_id') (' to version ') (braced_var_sub token: (Token id:Id.VSub_Name val:KUBE_VERSION span_id:484) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (dev))}) ) ) } ) (C {(prepare-push)} {(true)}) (C {(push-node)} {($ Id.VSub_DollarName '$node_id')}) ] spids: [455 474] ) ] ) (C {(echo)} {(DQ ('Validating cluster post-push...'))}) (C {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/validate-cluster.sh))}) (C {(echo)} {(DQ (Done))}) ] )