(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]} ) (= scope= flags=0 words=[] bindings=[('SOURCE', {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (While (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -h]} {[DQ [VarSub SOURCE]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('DIR', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS -P]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub SOURCE]]})]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (= scope= flags=0 words=[] bindings=[('SOURCE', {[DQ [ComSub (Com {[LIT_CHARS readlink]} {[DQ [VarSub SOURCE]]})]]})]) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_NOT_EQUAL {[VarSub SOURCE]} {[LIT_CHARS /] [LIT_OTHER "*"]}}) (= scope= flags=0 words=[] bindings=[('SOURCE', {[DQ [VarSub DIR][LIT_CHARS /][VarSub SOURCE]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('DIR', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS -P]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub SOURCE]]})]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE]]})] [LIT_CHARS /../..]})]) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/][VarSub KUBE_CONFIG_FILE test_op=VS_TEST_HYPHEN {[DQ [LIT_CHARS config-default.sh]]}]]} ) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/common.sh]]} ) (FunctionDef prepare-e2e [] (Com {[LIT_CHARS return]} ) ) (FunctionDef azure_call [] (List (= scope= flags=0 words=[{[LIT_CHARS -a]}] bindings=[('params', {[Array ]})]) (= scope= flags=0 words=[{[LIT_CHARS param]}] bindings=[]) (For param do_arg_iter) (= scope= flags=0 words=[] bindings=[('params+', {[Array {[DQ [VarSub param]]}]})]) ) (= scope= flags=0 words=[] bindings=[('rc', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[{[LIT_CHARS stderr]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('count', {[LIT_CHARS 0]})]) (While (DBracket {B2 BINARY_INT_LT {[LIT_CHARS count]} {[LIT_CHARS 10]}}) (List (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('stderr', {[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2) (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1)]{[LIT_CHARS azure]} {[DQ [VarSub params bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]})]) (Com {[LIT_CHARS break]} ) ) (= scope= flags=0 words=[] bindings=[('rc', {[VarSub ?]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub stderr]]} {[LIT_OTHER "*"] [DQ [LIT_CHARS "getaddrinfo ENOTFOUND"]] [LIT_OTHER "*"]}}) (Com {[LIT_CHARS break]} ) ) (= scope= flags=0 words=[] bindings=[('count', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub count]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (If (DBracket {B2 BINARY_INT_NE {[DQ [VarSub rc]]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub stderr]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[DQ [VarSub rc]]} ) ) ) ) ) (FunctionDef json_val [] (Com {[LIT_CHARS python]} {[LIT_CHARS -c]} {[SQ ] [VarSub 1] [SQ ]} ) ) (FunctionDef verify-prereqs [] (List (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS azure]})]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Couldn't find azure in PATH"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " please install with 'npm install azure-cli'"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Pipeline (Com {[LIT_CHARS azure_call]} {[LIT_CHARS account]} {[LIT_CHARS list]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS true]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Default azure account not set"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " please set with 'azure account set'"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('account', {[ComSub (Pipeline (Com {[LIT_CHARS azure_call]} {[LIT_CHARS account]} {[LIT_CHARS list]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS true]}) )]})]) (If (Com {[LIT_CHARS which]} {[LIT_CHARS md5]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('AZ_HSH', {[ComSub (Com {[LIT_CHARS md5]} {[LIT_CHARS -q]} {[LIT_CHARS -s]} {[DQ [VarSub account]]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('AZ_HSH', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub account]]}) (Com {[LIT_CHARS md5sum]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('AZ_HSH', {[VarSub AZ_HSH transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 7]}}]]})]) (= scope= flags=0 words=[] bindings=[('AZ_STG', {[LIT_CHARS kube] [VarSub AZ_HSH]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> AZ_STG: "][VarSub AZ_STG]]} ) (= scope= flags=0 words=[] bindings=[('AZ_CS', {[DQ [VarSub AZ_CS_PREFIX][LIT_CHARS -][VarSub AZ_HSH]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> AZ_CS: "][VarSub AZ_CS]]} ) (= scope= flags=0 words=[] bindings=[('CONTAINER', {[LIT_CHARS kube-] [VarSub TAG]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> CONTAINER: "][VarSub CONTAINER]]} ) ) ) (FunctionDef ensure-temp-dir [] (If (DBracket {B1 UNARY_STRING_z {[VarSub KUBE_TEMP test_op=VS_TEST_HYPHEN {}]}}) (List (= scope= flags=0 words=[] bindings=[('KUBE_TEMP', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[LIT_CHARS -t]} {[LIT_CHARS kubernetes.XXXXXX]})]})]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]} ) ) ) ) (FunctionDef upload-server-tars [] (List (= scope= flags=0 words=[] bindings=[('SERVER_BINARY_TAR_URL', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SALT_TAR_URL', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> SERVER_BINARY_TAR: "][VarSub SERVER_BINARY_TAR]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> SALT_TAR: "][VarSub SALT_TAR]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Staging server tars to Azure Storage: "][VarSub AZ_STG]]} ) (= scope= flags=0 words=[] bindings=[('server_binary_url', {[DQ [VarSub SERVER_BINARY_TAR transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) (= scope= flags=0 words=[] bindings=[('salt_url', {[DQ [VarSub SALT_TAR transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) (= scope= flags=0 words=[] bindings=[('SERVER_BINARY_TAR_URL', {[DQ [LIT_CHARS "https://"][VarSub AZ_STG][LIT_CHARS .blob.core.windows.net/][VarSub CONTAINER][LIT_CHARS /][VarSub server_binary_url]]})]) (= scope= flags=0 words=[] bindings=[('SALT_TAR_URL', {[DQ [LIT_CHARS "https://"][VarSub AZ_STG][LIT_CHARS .blob.core.windows.net/][VarSub CONTAINER][LIT_CHARS /][VarSub salt_url]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> SERVER_BINARY_TAR_URL: "][VarSub SERVER_BINARY_TAR_URL]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> SALT_TAR_URL: "][VarSub SALT_TAR_URL]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Checking storage exists..."]]} ) (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS account]} {[LIT_CHARS show]} {[VarSub AZ_STG]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS data]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Creating storage..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS account]} {[LIT_CHARS create]} {[LIT_CHARS -l]} {[DQ [VarSub AZ_LOCATION]]} {[VarSub AZ_STG]} {[LIT_CHARS --type]} {[LIT_CHARS LRS]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Getting storage key..."]]} ) (= scope= flags=0 words=[] bindings=[('stg_key', {[ComSub (Pipeline (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS account]} {[LIT_CHARS keys]} {[LIT_CHARS list]} {[VarSub AZ_STG]} {[LIT_CHARS --json]}) (Com {[LIT_CHARS json_val]} {[SQ ]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Checking storage container exists..."]]} ) (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS container]} {[LIT_CHARS show]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub CONTAINER]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS data]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Creating storage container..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS container]} {[LIT_CHARS create]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[LIT_CHARS -p]} {[LIT_CHARS Blob]} {[VarSub CONTAINER]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Checking server binary exists in the container..."]]} ) (If (DBracket {B1 UNARY_STRING_n {[DQ [ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS show]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub CONTAINER]} {[VarSub server_binary_url]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS data]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Deleting server binary in the container..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS delete]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub CONTAINER]} {[VarSub server_binary_url]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Uploading server binary to the container..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS upload]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub SERVER_BINARY_TAR]} {[VarSub CONTAINER]} {[VarSub server_binary_url]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Checking salt data exists in the container..."]]} ) (If (DBracket {B1 UNARY_STRING_n {[DQ [ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS show]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub CONTAINER]} {[VarSub salt_url]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS data]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Deleting salt data in the container..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS delete]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub CONTAINER]} {[VarSub salt_url]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Uploading salt data to the container..."]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS storage]} {[LIT_CHARS blob]} {[LIT_CHARS upload]} {[LIT_CHARS -a]} {[VarSub AZ_STG]} {[LIT_CHARS -k]} {[DQ [VarSub stg_key]]} {[VarSub SALT_TAR]} {[VarSub CONTAINER]} {[VarSub salt_url]} ) ) ) (FunctionDef detect-minions [] (List (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub AZ_CS]]}}) (Com {[LIT_CHARS verify-prereqs-local]} ) ) (= scope= flags=0 words=[] bindings=[('ssh_ports', {[Array {[ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[DQ [LIT_CHARS "2200{1.."][VarSub NUM_MINIONS][LIT_CHARS "}"]]})]}]})]) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (Com {[LIT_CHARS MINION_NAMES] [LIT_DBRACKET_LIKE "["] [VarSub i] [LIT_DBRACKET_LIKE "]="] [ComSub (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS hostname]} {[LIT_CHARS -f]})]} ) ) ) ) (FunctionDef detect-master [] (List (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub AZ_CS]]}}) (Com {[LIT_CHARS verify-prereqs-local]} ) ) (= scope= flags=0 words=[] bindings=[('KUBE_MASTER', {[VarSub MASTER_NAME]})]) (= scope= flags=0 words=[] bindings=[('KUBE_MASTER_IP', {[DQ [VarSub AZ_CS][LIT_CHARS .cloudapp.net]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Using master: "][VarSub KUBE_MASTER][LIT_CHARS " (external IP: "][VarSub KUBE_MASTER_IP][LIT_CHARS ")"]]} ) ) ) (FunctionDef kube-up [] (List (Com {[LIT_CHARS find-release-tars]} ) (Com {[LIT_CHARS upload-server-tars]} ) (Com {[LIT_CHARS ensure-temp-dir]} ) (Com {[LIT_CHARS gen-kube-basicauth]} ) (Com {[LIT_CHARS python]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /third_party/htpasswd/htpasswd.py]]} {[LIT_CHARS -b]} {[LIT_CHARS -c]} {[DQ [VarSub KUBE_TEMP][LIT_CHARS /htpasswd]]} {[DQ [VarSub KUBE_USER]]} {[DQ [VarSub KUBE_PASSWORD]]} ) (= scope= flags=0 words=[{[LIT_CHARS htpasswd]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('htpasswd', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub KUBE_TEMP][LIT_CHARS /htpasswd]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Generating openvpn certs"]]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS 01]} < (FilenameRedirectNode filename={[VarSub KUBE_TEMP] [LIT_CHARS /ca.srl]} "> 1), > ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS genrsa]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.key]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS req]} {[LIT_CHARS -new]} {[LIT_CHARS -x509]} {[LIT_CHARS -days]} {[LIT_CHARS 1095]} {[LIT_CHARS -key]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.key]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.crt]} {[LIT_CHARS -subj]} {[DQ [LIT_CHARS "/CN=openvpn-ca"]]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS genrsa]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.key]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS req]} {[LIT_CHARS -new]} {[LIT_CHARS -key]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.key]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.csr]} {[LIT_CHARS -subj]} {[DQ [LIT_CHARS "/CN=server"]]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS x509]} {[LIT_CHARS -req]} {[LIT_CHARS -days]} {[LIT_CHARS 1095]} {[LIT_CHARS -in]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.csr]} {[LIT_CHARS -CA]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.crt]} {[LIT_CHARS -CAkey]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.key]} {[LIT_CHARS -CAserial]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.srl]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.crt]} ) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (Com {[LIT_CHARS openssl]} {[LIT_CHARS genrsa]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .key]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS req]} {[LIT_CHARS -new]} {[LIT_CHARS -key]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .key]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .csr]} {[LIT_CHARS -subj]} {[DQ [LIT_CHARS "/CN="][VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]]} ) (Com {[LIT_CHARS openssl]} {[LIT_CHARS x509]} {[LIT_CHARS -req]} {[LIT_CHARS -days]} {[LIT_CHARS 1095]} {[LIT_CHARS -in]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .csr]} {[LIT_CHARS -CA]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.crt]} {[LIT_CHARS -CAkey]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.key]} {[LIT_CHARS -CAserial]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.srl]} {[LIT_CHARS -out]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .crt]} ) ) ) (= scope= flags=0 words=[] bindings=[('KUBE_MASTER_IP', {[DQ [VarSub AZ_CS][LIT_CHARS .cloudapp.net]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Building up start up script for master"]]} ) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#!/bin/bash"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "CA_CRT="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.crt]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "SERVER_CRT="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.crt]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "SERVER_KEY="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /server.key]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "mkdir -p /var/cache/kubernetes-install"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "cd /var/cache/kubernetes-install"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly MASTER_NAME='"][VarSub MASTER_NAME][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly INSTANCE_PREFIX='"][VarSub INSTANCE_PREFIX][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly NODE_INSTANCE_PREFIX='"][VarSub INSTANCE_PREFIX][LIT_CHARS "-minion'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly SERVER_BINARY_TAR_URL='"][VarSub SERVER_BINARY_TAR_URL][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly SALT_TAR_URL='"][VarSub SALT_TAR_URL][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly MASTER_HTPASSWD='"][VarSub htpasswd][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly SERVICE_CLUSTER_IP_RANGE='"][VarSub SERVICE_CLUSTER_IP_RANGE][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly ADMISSION_CONTROL='"][VarSub ADMISSION_CONTROL test_op=VS_TEST_COLON_HYPHEN {}][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_USER='"][VarSub KUBE_USER][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_PASSWORD='"][VarSub KUBE_PASSWORD][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_MASTER_IP='"][VarSub KUBE_MASTER_IP][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/common.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/create-dynamic-salt-files.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/create-kubeconfig.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/download-release.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/salt-master.sh]]} ) ) ) (If (DBracket {B! {B1 UNARY_FILE_f {[VarSub AZ_SSH_KEY]}}}) (Com {[LIT_CHARS ssh-keygen]} {[LIT_CHARS -f]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -N]} {[SQ ]} ) ) (If (DBracket {B! {B1 UNARY_FILE_f {[VarSub AZ_SSH_CERT]}}}) (Com {[LIT_CHARS openssl]} {[LIT_CHARS req]} {[LIT_CHARS -new]} {[LIT_CHARS -x509]} {[LIT_CHARS -days]} {[LIT_CHARS 1095]} {[LIT_CHARS -key]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -out]} {[VarSub AZ_SSH_CERT]} {[LIT_CHARS -subj]} {[DQ [LIT_CHARS "/CN=azure-ssh-key"]]} ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS azure_call]} {[LIT_CHARS network]} {[LIT_CHARS vnet]} {[LIT_CHARS show]} {[DQ [VarSub AZ_VNET]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS data]}) )]]}}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS error]} {[LIT_CHARS create]} {[LIT_CHARS vnet]} {[VarSub AZ_VNET]} {[LIT_CHARS with]} {[LIT_CHARS subnet]} {[VarSub AZ_SUBNET]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Starting VM"]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS vm]} {[LIT_CHARS create]} {[LIT_CHARS -z]} {[DQ [VarSub MASTER_SIZE]]} {[LIT_CHARS -w]} {[DQ [VarSub AZ_VNET]]} {[LIT_CHARS -n]} {[VarSub MASTER_NAME]} {[LIT_CHARS -l]} {[DQ [VarSub AZ_LOCATION]]} {[LIT_CHARS -t]} {[VarSub AZ_SSH_CERT]} {[LIT_CHARS -e]} {[LIT_CHARS 22000]} {[LIT_CHARS -P]} {[LIT_CHARS -d]} {[VarSub KUBE_TEMP] [LIT_CHARS /master-start.sh]} {[LIT_CHARS -b]} {[VarSub AZ_SUBNET]} {[VarSub AZ_CS]} {[VarSub AZ_IMAGE]} {[VarSub USER]} ) (= scope= flags=0 words=[] bindings=[('ssh_ports', {[Array {[ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[DQ [LIT_CHARS "2200{1.."][VarSub NUM_MINIONS][LIT_CHARS "}"]]})]}]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Building up start up script for minions"]]} ) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#!/bin/bash"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "MASTER_NAME='"][VarSub MASTER_NAME][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "CA_CRT="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /ca.crt]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "CLIENT_CRT="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .crt]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "CLIENT_KEY="][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS cat]} {[VarSub KUBE_TEMP] [LIT_CHARS /] [VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})] [LIT_CHARS .key]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "MINION_IP_RANGE='"][VarSub MINION_IP_RANGES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_USER='"][VarSub KUBE_USER][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_PASSWORD='"][VarSub KUBE_PASSWORD][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "readonly KUBE_MASTER_IP='"][VarSub KUBE_MASTER_IP][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/common.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/create-kubeconfig.sh]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^#"]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/azure-legacy/templates/salt-minion.sh]]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Starting VM"]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS vm]} {[LIT_CHARS create]} {[LIT_CHARS -z]} {[DQ [VarSub MINION_SIZE]]} {[LIT_CHARS -c]} {[LIT_CHARS -w]} {[DQ [VarSub AZ_VNET]]} {[LIT_CHARS -n]} {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[LIT_CHARS -l]} {[DQ [VarSub AZ_LOCATION]]} {[LIT_CHARS -t]} {[VarSub AZ_SSH_CERT]} {[LIT_CHARS -e]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[LIT_CHARS -P]} {[LIT_CHARS -d]} {[VarSub KUBE_TEMP] [LIT_CHARS /minion-start-] [VarSub i] [LIT_CHARS .sh]} {[LIT_CHARS -b]} {[VarSub AZ_SUBNET]} {[VarSub AZ_CS]} {[VarSub AZ_IMAGE]} {[VarSub USER]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Creating endpoint"]]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS vm]} {[LIT_CHARS endpoint]} {[LIT_CHARS create]} {[VarSub MASTER_NAME]} {[LIT_CHARS 443]} ) (Com {[LIT_CHARS detect-master]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> KUBE_MASTER_IP: "][VarSub KUBE_MASTER_IP]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Waiting for cluster initialization."]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " This will continually check to see if the API for kubernetes is reachable."]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " This might loop forever if there was some uncaught error during start"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " up."]]} ) (Com {[LIT_CHARS echo]} ) (While (Com {[LIT_CHARS curl]} {[LIT_CHARS --insecure]} {[LIT_CHARS --user]} {[DQ [VarSub KUBE_USER][LIT_CHARS ":"][VarSub KUBE_PASSWORD]]} {[LIT_CHARS --max-time]} {[LIT_CHARS 5]} {[LIT_CHARS --fail]} {[LIT_CHARS --output]} {[LIT_CHARS /dev/null]} {[LIT_CHARS --silent]} {[DQ [LIT_CHARS "https://"][VarSub KUBE_MASTER_IP][LIT_CHARS /healthz]]} ) (List (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS .]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 2]} ) ) ) (Com {[LIT_CHARS printf]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Kubernetes cluster created."]]} ) (= scope= flags=1 words=[] bindings=[('CONTEXT', {[DQ [LIT_CHARS azure_][VarSub INSTANCE_PREFIX]]})]) (Com {[LIT_CHARS create-kubeconfig]} ) (= scope= flags=1 words=[] bindings=[('KUBE_CERT', {[DQ [LIT_CHARS /tmp/][VarSub RANDOM][LIT_CHARS -kubecfg.crt]]})]) (= scope= flags=1 words=[] bindings=[('KUBE_KEY', {[DQ [LIT_CHARS /tmp/][VarSub RANDOM][LIT_CHARS -kubecfg.key]]})]) (= scope= flags=1 words=[] bindings=[('CA_CERT', {[DQ [LIT_CHARS /tmp/][VarSub RANDOM][LIT_CHARS -kubernetes.ca.crt]]})]) (Subshell (List (Com {[LIT_CHARS umask]} {[LIT_CHARS 077]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[LIT_CHARS 22000]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cat]} {[LIT_CHARS /srv/kubernetes/kubecfg.crt]} < (FilenameRedirectNode filename={[DQ [VarSub KUBE_CERT]]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[LIT_CHARS 22000]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cat]} {[LIT_CHARS /srv/kubernetes/kubecfg.key]} < (FilenameRedirectNode filename={[DQ [VarSub KUBE_KEY]]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[LIT_CHARS 22000]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cat]} {[LIT_CHARS /srv/kubernetes/ca.crt]} < (FilenameRedirectNode filename={[DQ [VarSub CA_CERT]]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Sanity checking cluster..."]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " This will continually check the minions to ensure docker is"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " installed. This is usually a good indicator that salt has"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " successfully provisioned. This might loop forever if there was"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " some uncaught error during start up."]]} ) (Com {[LIT_CHARS echo]} ) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> Making sure docker is installed on "][VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})][LIT_CHARS .]]} ) (While (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS which]} {[LIT_CHARS docker]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (List (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS .]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 2]} ) ) ) ) ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 60]} ) (= scope= flags=0 words=[] bindings=[('KUBECONFIG_NAME', {[DQ [LIT_CHARS kubeconfig]]})]) (= scope= flags=0 words=[] bindings=[('KUBECONFIG', {[DQ [VarSub HOME][LIT_CHARS /.kube/config]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Distributing kubeconfig for kubelet to master kubelet"]]} ) (Com {[LIT_CHARS scp]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -P]} {[LIT_CHARS 22000]} {[VarSub KUBECONFIG]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net] [LIT_OTHER ":"] [VarSub KUBECONFIG_NAME]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[LIT_CHARS 22000]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cp]} {[VarSub KUBECONFIG_NAME]} {[LIT_CHARS /var/lib/kubelet/] [VarSub KUBECONFIG_NAME]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[LIT_CHARS 22000]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS service]} {[LIT_CHARS kubelet]} {[LIT_CHARS restart]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Distributing kubeconfig for kubelet to all minions"]]} ) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (Com {[LIT_CHARS scp]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -P]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub KUBECONFIG]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net] [LIT_OTHER ":"] [VarSub KUBECONFIG_NAME]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cp]} {[VarSub KUBECONFIG_NAME]} {[LIT_CHARS /var/lib/kubelet/] [VarSub KUBECONFIG_NAME]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS cp]} {[VarSub KUBECONFIG_NAME]} {[LIT_CHARS /var/lib/kube-proxy/] [VarSub KUBECONFIG_NAME]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS service]} {[LIT_CHARS kubelet]} {[LIT_CHARS restart]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -oStrictHostKeyChecking] [LIT_DBRACKET_LIKE "="] [LIT_CHARS no]} {[LIT_CHARS -i]} {[VarSub AZ_SSH_KEY]} {[LIT_CHARS -p]} {[VarSub ssh_ports bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[VarSub AZ_CS] [LIT_CHARS .cloudapp.net]} {[LIT_CHARS sudo]} {[LIT_CHARS killall]} {[LIT_CHARS kube-proxy]} ) ) ) (Com {[LIT_CHARS get-kubeconfig-basicauth]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Kubernetes cluster is running. The master is running at:"]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " https://"][VarSub KUBE_MASTER_IP]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "The user name and password to use is located in "][VarSub KUBECONFIG][LIT_CHARS .]]} ) (Com {[LIT_CHARS echo]} ) ) ) (FunctionDef kube-down [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Bringing down cluster"]]} ) (Com {[LIT_CHARS set]} {[LIT_OTHER "+"] [LIT_CHARS e]} ) (Com {[LIT_CHARS azure_call]} {[LIT_CHARS vm]} {[LIT_CHARS delete]} {[VarSub MASTER_NAME]} {[LIT_CHARS -b]} {[LIT_CHARS -q]} ) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (Com {[LIT_CHARS azure_call]} {[LIT_CHARS vm]} {[LIT_CHARS delete]} {[VarSub MINION_NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]} {[LIT_CHARS -b]} {[LIT_CHARS -q]} ) ) (Com {[LIT_CHARS wait]} ) ) ) (FunctionDef test-build-release [] (Com {[DQ [VarSub KUBE_ROOT][LIT_CHARS /build-tools/release.sh]]} ) ) (FunctionDef ssh-to-node [] (List (= scope= flags=0 words=[] bindings=[('node', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS ssh]} {[LIT_CHARS --ssh_arg]} {[DQ [LIT_CHARS "-o LogLevel=quiet"]]} {[DQ [VarSub node]]} {[DQ [VarSub cmd]]} ) ) ) (FunctionDef restart-kube-proxy [] (Com {[LIT_CHARS ssh-to-node]} {[DQ [VarSub 1]]} {[DQ [LIT_CHARS "sudo /etc/init.d/kube-proxy restart"]]} ) ) (FunctionDef restart-apiserver [] (Com {[LIT_CHARS ssh-to-node]} {[DQ [VarSub 1]]} {[DQ [LIT_CHARS "sudo /etc/init.d/kube-apiserver restart"]]} ) ) (FunctionDef test-setup [] (Com {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/kube-up.sh]]} ) ) (FunctionDef test-teardown [] (Com {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/kube-down.sh]]} ) ) )