(command.CommandList children: [ (C {<set>} {<-o>} {<errexit>}) (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_ROOT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))}) ) <'/..'> } spids: [63] ) ] ) (C {<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/common.sh'>)}) (C {<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/hack/lib/init.sh'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <find-binary> } {(DQ <ginkgo>)} ) ) } spids: [97] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:e2e_test) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <find-binary> } {(DQ <e2e.test>)} ) ) } spids: [112] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GINKGO_PARALLEL) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name GINKGO_PARALLEL> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<n>}) ) } spids: [132] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CLOUD_CONFIG) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name CLOUD_CONFIG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ )}) ) } spids: [142] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GINKGO_NO_COLOR) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name GINKGO_NO_COLOR> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<n>}) ) } spids: [157] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GINKGO_TOLERATE_FLAKES) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name GINKGO_TOLERATE_FLAKES> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<n>}) ) } spids: [168] ) ] ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub token: <Id.VSub_Name KUBECTL> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonEquals ':='> arg_word: {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kubectl.sh'>)} ) ) } ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub token: <Id.VSub_Name KUBE_CONFIG_FILE> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonEquals ':='> arg_word:{(DQ <config-test.sh>)}) ) } ) (C {<export>} {<KUBECTL>} {<KUBE_CONFIG_FILE>}) (C {<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-util.sh'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name KUBERNETES_CONFORMANCE_TEST> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Conformance test: not doing test setup.'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBERNETES_PROVIDER) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name KUBERNETES_CONFORMANCE_PROVIDER> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {(DQ <skeleton>)} ) ) } spids: [246] ) ] ) (C {<detect-master-from-kubeconfig>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:auth_config) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ <'--kubeconfig='> (${ Id.VSub_Name KUBECONFIG))}] ) } spids: [261] ) ] ) ] spids: [220 236] ) ] else_action: [ (C {<echo>} { (DQ <'Setting up for KUBERNETES_PROVIDER='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name KUBERNETES_PROVIDER) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.> ) } ) (C {<prepare-e2e>}) (command.Simple words: [{<detect-master>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KUBE_MASTER_URL) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name KUBE_MASTER_URL> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> (braced_var_sub token: <Id.VSub_Name KUBE_MASTER_IP> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{}) ) } ) ) ) } spids: [302] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:auth_config) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ <'--kubeconfig='> (braced_var_sub token: <Id.VSub_Name KUBECONFIG> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$DEFAULT_KUBECONFIG')} ) ) ) } ] ) } spids: [319] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name NODE_INSTANCE_PREFIX> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NODE_INSTANCE_GROUP) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group>)} spids: [357] ) ] ) ] spids: [338 354] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name KUBERNETES_PROVIDER))} right: {(DQ <gce>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<set_num_migs>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NODE_INSTANCE_GROUP) op: assign_op.Equal rhs: {(DQ )} spids: [393] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: {(${ Id.VSub_Name NUM_MIGS)} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$i')} right: {(${ Id.VSub_Name NUM_MIGS)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NODE_INSTANCE_GROUP) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name NODE_INSTANCE_GROUP) (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group> ) } spids: [444] ) ] ) ] spids: [422 437] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NODE_INSTANCE_GROUP) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name NODE_INSTANCE_GROUP) (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group-> (${ Id.VSub_Name i) <','> ) } spids: [459] ) ] ) ] ) ] ) ) ] spids: [368 387] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (braced_var_sub token: <Id.VSub_Name NODE_INSTANCE_GROUP> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name KUBERNETES_PROVIDER))} right: {(DQ <gke>)} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<detect-node-instance-groups>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NODE_INSTANCE_GROUP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <join> } {<Id.Lit_Comma ','>} { (DQ (braced_var_sub token: <Id.VSub_Name NODE_INSTANCE_GROUPS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) ) } spids: [532] ) ] ) ] spids: [492 526] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name KUBERNETES_PROVIDER))} right: {(DQ <azure>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name CLOUD_CONFIG)} right: {(DQ )} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Missing azure cloud config'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [579 595] ) ] ) ] spids: [557 576] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [615] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name CONFORMANCE_TEST_SKIP_REGEX> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ <'--skip='> (${ Id.VSub_Name CONFORMANCE_TEST_SKIP_REGEX))}] ) } spids: [638] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(DQ <'--seed=1436380640'>)}])} spids: [649] ) ] ) ] spids: [619 635] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name GINKGO_PARALLEL_NODES> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ <'--nodes='> (${ Id.VSub_Name GINKGO_PARALLEL_NODES))}] ) } spids: [677] ) ] ) ] spids: [658 674] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(${ Id.VSub_Name GINKGO_PARALLEL)} right: {<Id.Lit_Other '^'> <Id.Lit_Other '['> <yY> <Id.Lit_Other ']'> <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(DQ <'--nodes=25'>)}])} spids: [709] ) ] ) ] spids: [687 706] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: <Id.VSub_Name GINKGO_UNTIL_IT_FAILS> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } right: {<true>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(DQ <'--untilItFails=true'>)}])} spids: [740] ) ] ) ] spids: [719 737] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAKE_ATTEMPTS) op: assign_op.Equal rhs: {<1>} spids: [750] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name GINKGO_TOLERATE_FLAKES))} right: {(DQ <y>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAKE_ATTEMPTS) op: assign_op.Equal rhs: {<2>} spids: [775] ) ] ) ] spids: [753 772] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (${ Id.VSub_Name GINKGO_NO_COLOR))} right: {(DQ <y>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ginkgo_args) op: assign_op.PlusEqual rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(DQ <--noColor>)}])} spids: [803] ) ] ) ] spids: [781 800] ) ] ) (C {<export>} {<Id.Lit_VarLike 'PATH='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(DQ (${ Id.VSub_Name e2e_test))}) ) <Id.Lit_Colon ':'> (DQ (${ Id.VSub_Name PATH)) } ) (C {(DQ (${ Id.VSub_Name ginkgo))} { (DQ (braced_var_sub token: <Id.VSub_Name ginkgo_args> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (braced_var_sub token: <Id.VSub_Name ginkgo_args> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ) ) } {(DQ (${ Id.VSub_Name e2e_test))} {<-->} { (DQ (braced_var_sub token: <Id.VSub_Name auth_config> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (braced_var_sub token: <Id.VSub_Name auth_config> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ) ) } {<--ginkgo.flakeAttempts> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name FLAKE_ATTEMPTS))} {<--host> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name KUBE_MASTER_URL))} {<--provider> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name KUBERNETES_PROVIDER))} {<--gce-project> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name PROJECT> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--gce-zone> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name ZONE> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--gce-region> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name REGION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--gce-multizone> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name MULTIZONE> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<false>}) ) ) } {<--gke-cluster> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name CLUSTER_NAME> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--kube-master> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name KUBE_MASTER> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--cluster-tag> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name CLUSTER_ID> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--cloud-config-file> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name CLOUD_CONFIG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--repo-root> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name KUBE_ROOT))} {<--node-instance-group> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name NODE_INSTANCE_GROUP> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--prefix> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name KUBE_GCE_INSTANCE_PREFIX> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<e2e>}) ) ) } {<--network> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name KUBE_GCE_NETWORK> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: { (braced_var_sub token: <Id.VSub_Name KUBE_GKE_NETWORK> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<e2e>}) ) } ) ) ) } {<--node-tag> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name NODE_TAG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--master-tag> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name MASTER_TAG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<--federated-kube-context> <Id.Lit_Equals '='> (DQ (braced_var_sub token: <Id.VSub_Name FEDERATION_KUBE_CONTEXT> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<e2e-federation>}) ) ) } { (braced_var_sub token: <Id.VSub_Name KUBE_CONTAINER_RUNTIME> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--container-runtime='> (${ Id.VSub_Name KUBE_CONTAINER_RUNTIME))} ) ) } { (braced_var_sub token: <Id.VSub_Name MASTER_OS_DISTRIBUTION> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--master-os-distro='> (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))} ) ) } { (braced_var_sub token: <Id.VSub_Name NODE_OS_DISTRIBUTION> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--node-os-distro='> (${ Id.VSub_Name NODE_OS_DISTRIBUTION))} ) ) } { (braced_var_sub token: <Id.VSub_Name NUM_NODES> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--num-nodes='> (${ Id.VSub_Name NUM_NODES))} ) ) } { (braced_var_sub token: <Id.VSub_Name E2E_REPORT_DIR> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--report-dir='> (${ Id.VSub_Name E2E_REPORT_DIR))} ) ) } { (braced_var_sub token: <Id.VSub_Name E2E_REPORT_PREFIX> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ <'--report-prefix='> (${ Id.VSub_Name E2E_REPORT_PREFIX))} ) ) } { (DQ (braced_var_sub token: <Id.VSub_At '@'> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } ) ] )