(command.CommandList children: [ (C {(Id.KW_Set set)} {(-e)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number '$1'))}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:66) ) ] action: [ (C {(echo)} {(DQ ('Usage : ') ($ Id.VSub_Number '$0') (' environment (hostname)'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:80) arg_word: {(1)} ) ] spids: [55 68] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENVIRONMENT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [87] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXACTHOST) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [90] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ (environments/) ($ Id.VSub_DollarName '$ENVIRONMENT') (.json))} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:109) ) ] action: [ (C {(echo)} { (DQ ("Error: Couldn't find '") ($ Id.VSub_DollarName '$ENVIRONMENT') (".json'. Did you forget to pass the environment as first param?") ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:123) arg_word: {(1)} ) ] spids: [94 111] ) ] ) (C {(declare)} {(-A)} {(FQDNS)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:137) cond: [ (command.Sentence child: (C {(read)} {(HOST)} {(MACADDR)} {(IPADDR)} {(ILOIPADDR)} {(DOMAIN)} {(ROLE)}) terminator: (Token id:Id.Op_Semi val:';' span_id:152) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(all)} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$HOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$IPADDR'))} ) right: (bool_expr.LogicalOr left: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ (heads))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ (head))} ) ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ (workers))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ (work))} ) ) ) ) ) ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:250) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:256) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$IPADDR')}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:. span_id:268))} {(SQ (Token id:Id.Lit_Chars val:- span_id:272))} ) ] negated: F ) ] ) ) } spids: [255] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ (bootstrap))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:292) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:297) ) ] spids: [277 294] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(head)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:316) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HEADS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$HEADS') (' ') ($ Id.VSub_DollarName '$IPADDR') ) } spids: [321] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: FQDNS index: (arith_expr.ArithWord w: {(DQ ($ Id.VSub_DollarName '$IDX'))} ) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOST) (.) (${ Id.VSub_Name DOMAIN))} spids: [329] ) ] ) ] spids: [303 318] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(work)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:362) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WORKERS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$WORKERS') (' ') ($ Id.VSub_DollarName '$IPADDR') ) } spids: [367] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: FQDNS index: (arith_expr.ArithWord w: {(DQ ($ Id.VSub_DollarName '$IDX'))} ) ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOST) (.) (${ Id.VSub_Name DOMAIN))} spids: [375] ) ] ) ] spids: [349 364] ) ] ) ] spids: [157 252] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:403) fd: -1 arg_word: {(cluster.txt)} ) ] ) (C {(echo)} {(DQ ('heads : ') ($ Id.VSub_DollarName '$HEADS'))}) (C {(echo)} {(DQ ('workers : ') ($ Id.VSub_DollarName '$WORKERS'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PASSWD) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:423) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(knife)} {(data)} {(bag)} {(show)} {(configs)} {($ Id.VSub_DollarName '$ENVIRONMENT')} ) (C {(grep)} {(DQ ('cobbler-root-password:'))}) (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:' {print $2}' span_id:451))}) ] negated: F ) ] ) ) } spids: [422] ) ] ) (command.ForEach iter_name: HEAD iter_words: [{($ Id.VSub_DollarName '$HEADS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HEAD')} spids: [479] ) ] ) (C {(echo)} {(DQ ('About to bootstrap head node ') ($ Id.VSub_DollarName '$HEAD') (...))}) (C {(./chefit.sh)} {($ Id.VSub_DollarName '$HEAD')} {($ Id.VSub_DollarName '$ENVIRONMENT')}) (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$PASSWD')}) (C {(sudo)} {(knife)} {(bootstrap)} {(-E)} {($ Id.VSub_DollarName '$ENVIRONMENT')} {($ Id.VSub_DollarName '$HEAD')} {(-x)} {(ubuntu)} {(-P)} {($ Id.VSub_DollarName '$PASSWD')} {(--sudo)} ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:529) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$HEAD')}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:. span_id:541))} {(SQ (Token id:Id.Lit_Chars val:- span_id:545))} ) ] negated: F ) ] ) ) } spids: [528] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FQDN) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:FQDNS span_id:552) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ ($ Id.VSub_DollarName '$IDX'))}) ) ) } spids: [550] ) ] ) (C {(knife)} {(actor)} {(map)}) (C {(knife)} {(group)} {(add)} {(actor)} {(admins)} {($ Id.VSub_DollarName '$FQDN')}) (C {(knife)} {(node)} {(run_list)} {(add)} {($ Id.VSub_DollarName '$FQDN')} {(SQ (Token id:Id.Lit_Chars val:'role[BCPC-Headnode]' span_id:592))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHCMD) op: assign_op.Equal rhs: { (DQ ('./nodessh.sh ') ($ Id.VSub_DollarName '$ENVIRONMENT') (' ') ($ Id.VSub_DollarName '$HEAD') ) } spids: [596] ) ] ) (C {($ Id.VSub_DollarName '$SSHCMD')} {(DQ (/home/ubuntu/finish-head.sh))} {(sudo)}) ] ) ) (command.ForEach iter_name: WORKER iter_words: [{($ Id.VSub_DollarName '$WORKERS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$WORKER')} spids: [631] ) ] ) (C {(echo)} {(DQ ('About to bootstrap worker worker ') ($ Id.VSub_DollarName '$WORKER') (...))} ) (C {(./chefit.sh)} {($ Id.VSub_DollarName '$WORKER')} {($ Id.VSub_DollarName '$ENVIRONMENT')} ) (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$PASSWD')}) (C {(sudo)} {(knife)} {(bootstrap)} {(-E)} {($ Id.VSub_DollarName '$ENVIRONMENT')} {($ Id.VSub_DollarName '$WORKER')} {(-x)} {(ubuntu)} {(-P)} {($ Id.VSub_DollarName '$PASSWD')} {(--sudo)} ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:681) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$WORKER')}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:. span_id:693))} {(SQ (Token id:Id.Lit_Chars val:- span_id:697))} ) ] negated: F ) ] ) ) } spids: [680] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FQDN) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:FQDNS span_id:704) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ ($ Id.VSub_DollarName '$IDX'))}) ) ) } spids: [702] ) ] ) (C {(knife)} {(actor)} {(map)}) (C {(knife)} {(group)} {(add)} {(actor)} {(admins)} {($ Id.VSub_DollarName '$FQDN')}) (C {(knife)} {(node)} {(run_list)} {(add)} {($ Id.VSub_DollarName '$FQDN')} {(SQ (Token id:Id.Lit_Chars val:'role[BCPC-Worknode]' span_id:744))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHCMD) op: assign_op.Equal rhs: { (DQ ('./nodessh.sh ') ($ Id.VSub_DollarName '$ENVIRONMENT') (' ') ($ Id.VSub_DollarName '$WORKER') ) } spids: [748] ) ] ) (C {($ Id.VSub_DollarName '$SSHCMD')} {(DQ (/home/ubuntu/finish-worker.sh))} {(sudo)}) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$MATCH'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:779) ) ] action: [(C {(echo)} {(DQ ('Warning: No nodes found'))})] spids: [768 781] ) ] ) ] )