(List (= scope= flags=1 words=[] bindings=[('PATH', {[LIT_CHARS /opt/local/bin] [LIT_OTHER ":"] [VarSub PATH]})]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub SSH_KEY]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('SSH_KEY', {[LIT_CHARS /root/.ssh/id_rsa]})]) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub MANTA_KEY_ID]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('MANTA_KEY_ID', {[ComSub (Pipeline (Com {[LIT_CHARS ssh-keygen]} {[LIT_CHARS -l]} {[LIT_CHARS -f]} {[VarSub SSH_KEY] [LIT_CHARS .pub]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub MANTA_URL]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('MANTA_URL', {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS /opt/smartdc/mako/etc/gc_config.json]}) (Com {[LIT_CHARS json]} {[LIT_CHARS -ga]} {[LIT_CHARS manta_url]}) )]})]) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub MANTA_USER]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('MANTA_USER', {[ComSub (Com {[LIT_CHARS json]} {[LIT_CHARS -f]} {[LIT_CHARS /opt/smartdc/common/etc/config.json]} {[LIT_CHARS manta.user]})]})]) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub MANTA_STORAGE_ID]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('MANTA_STORAGE_ID', {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS /opt/smartdc/mako/etc/gc_config.json]}) (Com {[LIT_CHARS json]} {[LIT_CHARS -ga]} {[LIT_CHARS manta_storage_id]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('AUTHZ_HEADER', {[DQ [LIT_CHARS "keyId="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS /][VarSub MANTA_USER][LIT_CHARS /keys/][VarSub MANTA_KEY_ID][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ",algorithm="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS rsa-sha256][\ LIT_ESCAPED_CHAR "\\\""]]})]) (= scope= flags=0 words=[] bindings=[('DIR_TYPE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('LOG_TYPE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('PID', {[VarSub $]})]) (= scope= flags=0 words=[] bindings=[('PID_FILE', {[LIT_CHARS /tmp/upload_mako_ls.pid]})]) (= scope= flags=0 words=[] bindings=[('TMP_DIR', {[LIT_CHARS /tmp/mako_dir]})]) (= scope= flags=0 words=[] bindings=[('LISTING_FILE', {[VarSub TMP_DIR] [LIT_CHARS /] [VarSub MANTA_STORAGE_ID]})]) (= scope= flags=0 words=[] bindings=[('MANTA_DIR', {[LIT_CHARS /mako]})]) (= scope= flags=0 words=[] bindings=[('NOW', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('SIGNATURE', {[DQ ]})]) (FunctionDef fatal [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub LNOW][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS basename]} {[VarSub 0]})][LIT_CHARS ": fatal error: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (FunctionDef log [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub LNOW][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS basename]} {[VarSub 0]})][LIT_CHARS ": info: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (FunctionDef sign [] (List (= scope= flags=0 words=[] bindings=[('NOW', {[ComSub (Com {[LIT_CHARS date]} {[LIT_CHARS -u]} {[DQ [LIT_CHARS "+%a, %d %h %Y %H:%M:%S GMT"]]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('SIGNATURE', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "date: "][VarSub NOW]]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]}) (Com {[LIT_CHARS openssl]} {[LIT_CHARS dgst]} {[LIT_CHARS -sha256]} {[LIT_CHARS -sign]} {[VarSub SSH_KEY]}) (Com {[LIT_CHARS openssl]} {[LIT_CHARS enc]} {[LIT_CHARS -e]} {[LIT_CHARS -a]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to sign data"]]} ) ) ) ) (FunctionDef manta_put_directory [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS sign]} ) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to sign"]]} ) ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -fsSk]} {[LIT_CHARS -X]} {[LIT_CHARS PUT]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "content-type: application/json; type=directory"]]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Date: "][VarSub NOW]]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Authorization: Signature "][VarSub AUTHZ_HEADER][LIT_CHARS ",signature="][\ LIT_ESCAPED_CHAR "\\\""][VarSub SIGNATURE][\ LIT_ESCAPED_CHAR "\\\""]]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Connection: close"]]} {[VarSub MANTA_URL] [LIT_CHARS /] [VarSub MANTA_USER] [LIT_CHARS /stor] [VarSub 1]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) ) (FunctionDef manta_put [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS sign]} ) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to sign"]]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS curl]} {[LIT_CHARS -vfsSk]} {[LIT_CHARS -X]} {[LIT_CHARS PUT]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Date: "][VarSub NOW]]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Authorization: Signature "][VarSub AUTHZ_HEADER][LIT_CHARS ",signature="][\ LIT_ESCAPED_CHAR "\\\""][VarSub SIGNATURE][\ LIT_ESCAPED_CHAR "\\\""]]} {[LIT_CHARS -H]} {[DQ [LIT_CHARS "Connection: close"]]} {[VarSub MANTA_URL] [LIT_CHARS /] [VarSub MANTA_USER] [LIT_CHARS /stor] [VarSub 1]} {[LIT_CHARS -T]} {[VarSub 2]} ) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to put "][VarSub 1]]} ) ) ) ) (Com {[LIT_OTHER ":"]} {[VarSub MANTA_STORAGE_ID test_op=VS_TEST_COLON_QMARK {[DQ [LIT_CHARS "Manta Storage Id must be set."]]}]} ) (= scope= flags=0 words=[] bindings=[('LAST_PID', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS cat]} {[VarSub PID_FILE]})]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub LAST_PID]]}}) (List (Com {[LIT_CHARS ps]} {[LIT_CHARS -p]} {[VarSub LAST_PID]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub ?]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 0][LIT_CHARS " process still running. Exiting..."]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[VarSub PID]} < (FilenameRedirectNode filename={[VarSub PID_FILE]} "> 1), > ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "starting directory listing upload"]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TMP_DIR]} ) (Com {[LIT_CHARS find]} {[LIT_CHARS /manta]} {[LIT_CHARS -type]} {[LIT_CHARS f]} {[LIT_CHARS -printf]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub LISTING_FILE]} "> 1), > ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Going to upload "][VarSub LISTING_FILE][LIT_CHARS " to "][VarSub MANTA_DIR][LIT_CHARS /][VarSub MANTA_STORAGE_ID]]} ) (Com {[LIT_CHARS manta_put_directory]} {[VarSub MANTA_DIR]} ) (Com {[LIT_CHARS manta_put]} {[VarSub MANTA_DIR] [LIT_CHARS /] [VarSub MANTA_STORAGE_ID]} {[VarSub LISTING_FILE]} ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Cleaning up..."]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub TMP_DIR]} ) (Com {[LIT_CHARS rm]} {[VarSub PID_FILE]} ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS Done.]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) )