(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (= scope= flags=0 words=[] bindings=[('UTIL_SCRIPT', {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -m]} {[DQ [VarSub BASH_SOURCE]]})]})]) (= scope= flags=0 words=[] bindings=[('JUJU_PATH', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub UTIL_SCRIPT]})]})]) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -m]} {[VarSub JUJU_PATH] [LIT_CHARS /../../]})]})]) (Com {[LIT_CHARS source]} {[DQ [VarSub JUJU_PATH][LIT_CHARS /][VarSub KUBE_CONFIG_FILE test_op=VS_TEST_HYPHEN {[LIT_CHARS config-default.sh]}]]} ) (Com {[LIT_CHARS source]} {[DQ [VarSub JUJU_PATH][LIT_CHARS /prereqs/ubuntu-juju.sh]]} ) (= scope= flags=1 words=[] bindings=[('JUJU_REPOSITORY', {[DQ [VarSub JUJU_PATH][LIT_CHARS /charms]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_BUNDLE_PATH', {[DQ [VarSub JUJU_PATH][LIT_CHARS /bundles/local.yaml]]})]) (= scope= flags=0 words=[] bindings=[('KUBECTL_DIR', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /platforms/linux/amd64]]})]) (FunctionDef build-local [] (Com {[LIT_CHARS charm]} {[LIT_CHARS build]} {[VarSub JUJU_PATH] [LIT_CHARS /layers/kubernetes]} {[LIT_CHARS -o]} {[VarSub JUJU_REPOSITORY]} {[LIT_CHARS -r]} {[LIT_CHARS --no-local-layers]} ) ) (FunctionDef detect-master [] (List (= scope= flags=0 words=[{[LIT_CHARS kubestatus]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('kubestatus', {[ComSub (Pipeline (Com {[LIT_CHARS juju]} {[LIT_CHARS status]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [LIT_CHARS oneline]} {[LIT_CHARS kubernetes]}) (Com {[LIT_CHARS grep]} {[VarSub KUBE_MASTER_NAME]}) (Com {[LIT_CHARS awk]} {[SQ ]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]}) )]})]) (= scope= flags=1 words=[] bindings=[('KUBE_MASTER_IP', {[VarSub kubestatus]})]) (= scope= flags=1 words=[] bindings=[('KUBE_SERVER', {[LIT_CHARS https] [LIT_OTHER ":"] [LIT_CHARS //] [VarSub KUBE_MASTER_IP] [LIT_OTHER ":"] [LIT_CHARS 6433]})]) ) ) (FunctionDef detect-nodes [] (List (= scope= flags=0 words=[{[LIT_CHARS ipoutput]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('ipoutput', {[ComSub (Com {[LIT_CHARS juju]} {[LIT_CHARS run]} {[LIT_CHARS --application]} {[LIT_CHARS kubernetes]} {[DQ [LIT_CHARS "unit-get private-address"]]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [LIT_CHARS json]})]})]) (= scope= flags=1 words=[] bindings=[('KUBE_NODE_IP_ADDRESSES', {[Array {[ComSub (Com {[VarSub JUJU_PATH] [LIT_CHARS /return-node-ips.py]} {[DQ [VarSub ipoutput]]})]}]})]) (= scope= flags=1 words=[] bindings=[('NUM_NODES', {[VarSub KUBE_NODE_IP_ADDRESSES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]})]) ) ) (FunctionDef kube-up [] (List (Com {[LIT_CHARS build-local]} ) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|__CHARM_DIR__|"][VarSub JUJU_REPOSITORY][LIT_CHARS "|"]]} < (FilenameRedirectNode filename={[VarSub KUBE_BUNDLE_PATH] [LIT_CHARS .base]} 0), (FilenameRedirectNode filename={[VarSub KUBE_BUNDLE_PATH]} "> 1), > ) (Com {[LIT_CHARS juju]} {[LIT_CHARS deploy]} {[VarSub KUBE_BUNDLE_PATH]} ) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/common.sh]]} ) (Com {[LIT_CHARS sleep-status]} ) (Com {[LIT_CHARS detect-master]} ) (Com {[LIT_CHARS detect-nodes]} ) (Subshell (List (Com {[LIT_CHARS umask]} {[LIT_CHARS 077]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub KUBECTL_DIR]} ) (Com {[LIT_CHARS juju]} {[LIT_CHARS scp]} {[VarSub KUBE_MASTER_NAME] [LIT_OTHER ":"] [LIT_CHARS kubectl_package.tar.gz]} {[VarSub KUBECTL_DIR]} ) (Com {[LIT_CHARS tar]} {[LIT_CHARS xfz]} {[VarSub KUBECTL_DIR] [LIT_CHARS /kubectl_package.tar.gz]} {[LIT_CHARS -C]} {[VarSub KUBECTL_DIR]} ) ) ) (= scope= flags=1 words=[] bindings=[('KUBECONFIG', {[DQ [VarSub KUBECTL_DIR][LIT_CHARS /kubeconfig]]})]) ) ) (FunctionDef kube-down [] (List (= scope= flags=0 words=[] bindings=[('force', {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {}]]})]) (= scope= flags=0 words=[{[LIT_CHARS jujuenv]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('jujuenv', {[ComSub (Com {[LIT_CHARS juju]} {[LIT_CHARS switch]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS juju]} {[LIT_CHARS destroy-model]} {[VarSub jujuenv]} {[VarSub force]} ) (Com {[LIT_CHARS true]} ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub KUBE_ROOT] [LIT_CHARS /cluster/juju/charms]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub KUBECTL_DIR]} ) ) ) (FunctionDef prepare-e2e [] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "prepare-e2e() The Juju provider does not need any preparations for e2e."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (FunctionDef sleep-status [] (List (= scope= flags=0 words=[{[LIT_CHARS i]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS maxtime]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS jujustatus]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('maxtime', {[LIT_CHARS 900]})]) (= scope= flags=0 words=[] bindings=[('jujustatus', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Waiting up to 15 minutes to allow the cluster to come online... wait for it..."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (While (DBracket {B? LOGICAL_BINARY_AND {B2 BINARY_STRING_LESS {[VarSub i]} {[VarSub maxtime]}} {B1 UNARY_STRING_z {[VarSub jujustatus]}}}) (List (Com {[LIT_CHARS sleep]} {[LIT_CHARS 15]} ) (= scope= flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 15]}}}]})]) (= scope= flags=0 words=[] bindings=[('jujustatus', {[ComSub (Com {[VarSub JUJU_PATH] [LIT_CHARS /identify-leaders.py]})]})]) (= scope= flags=1 words=[] bindings=[('KUBE_MASTER_NAME', {[VarSub jujustatus]})]) ) ) ) ) (FunctionDef test-build-release [] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test-build-release() "]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (FunctionDef test-setup [] (Com {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/kube-up.sh]]} ) ) (FunctionDef test-teardown [] (Com {[LIT_CHARS kube-down]} {[DQ [LIT_CHARS -y]]} ) ) (FunctionDef verify-prereqs [] (Com {[LIT_CHARS gather_installation_reqs]} ) ) )