(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=[('HOSTNAME', {[ComSub (Com {[LIT_CHARS hostname]})]})]) (= scope= flags=0 words=[] bindings=[('LOG_TYPE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('MPATH', {[LIT_CHARS /manta_gc/mako/] [VarSub MANTA_STORAGE_ID]})]) (= scope= flags=0 words=[] bindings=[('PID', {[VarSub $]})]) (= scope= flags=0 words=[] bindings=[('TMP_DIR', {[LIT_CHARS /tmp/mako_gc]})]) (= scope= flags=0 words=[] bindings=[('PID_FILE', {[LIT_CHARS /tmp/mako_gc.pid]})]) (= scope= flags=0 words=[] bindings=[('TOMB_DATE', {[ComSub (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y-%m-%d"]]})]})]) (= scope= flags=0 words=[] bindings=[('TOMB_ROOT', {[LIT_CHARS /manta/tombstone]})]) (= scope= flags=0 words=[] bindings=[('TOMB_DIR', {[VarSub TOMB_ROOT] [LIT_CHARS /] [VarSub TOMB_DATE]})]) (= scope= flags=0 words=[] bindings=[('TOMB_DIRS_TO_KEEP', {[LIT_CHARS 21]})]) (= scope= flags=0 words=[] bindings=[('NOW', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('SIGNATURE', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('ERROR', {[DQ [LIT_CHARS true]]})]) (= scope= flags=0 words=[] bindings=[('FILE_COUNT', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('OBJECT_COUNT', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('TOMB_CLEAN_COUNT', {[LIT_CHARS 0]})]) (FunctionDef fatal [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y-%m-%dT%H:%M:%S.000Z"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub LNOW][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS basename]} {[VarSub 0]})][LIT_CHARS " ("][VarSub PID][LIT_CHARS "): fatal error: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS audit]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (FunctionDef log [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y-%m-%dT%H:%M:%S.000Z"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub LNOW][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS basename]} {[VarSub 0]})][LIT_CHARS " ("][VarSub PID][LIT_CHARS "): info: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (FunctionDef audit [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y-%m-%dT%H:%M:%S.000Z"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "{"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS audit][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":true,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS name][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS mako_gc][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS level][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":30,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS error][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][VarSub ERROR][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS msg][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS audit][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS v][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":0,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS time][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub LNOW][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS pid][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][VarSub PID][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS cronExec][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":1,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS hostname][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub HOSTNAME][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS fileCount][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub FILE_COUNT][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS objectCount][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub OBJECT_COUNT][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS tombDirCleanupCount][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub TOMB_CLEAN_COUNT][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "}"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (FunctionDef auditRow [] (List (= scope= flags=0 words=[] bindings=[('LNOW', {[ComSub (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y-%m-%dT%H:%M:%S.000Z"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "{"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS audit][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":true,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS name][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS mako_gc][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS level][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":30,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS msg][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS audit][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS v][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":0,"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS time][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub LNOW][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS pid][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][VarSub PID][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS hostname][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub HOSTNAME][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS alreadyDeleted][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS objectId][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub 2][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS tomb][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":"][\ LIT_ESCAPED_CHAR "\\\""][VarSub 3][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ","][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS processed][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ":1"][LIT_CHARS "}"]]} < (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_get_no_fatal [] (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 GET]} {[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_get_to_file [] (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 -fsSk]} {[LIT_CHARS -X]} {[LIT_CHARS GET]} {[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]} < (FilenameRedirectNode filename={[VarSub 2]} "> 1), > ) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to get "][VarSub 1]]} ) ) ) ) (FunctionDef manta_delete [] (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 -fsSk]} {[LIT_CHARS -X]} {[LIT_CHARS DELETE]} {[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]} ) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "unable to delete "][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 gc"]]} ) (= scope= flags=0 words=[] bindings=[('GET_RES', {[ComSub (Com {[LIT_CHARS manta_get_no_fatal]} {[VarSub MPATH]})]})]) (If (DBracket {B2 BINARY_INT_NE {[VarSub ?]} {[LIT_CHARS 0]}}) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub GET_RES]]} {[LIT_OTHER "*"] [LIT_CHARS 404] [LIT_OTHER "*"]}}) (List (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "GC not ready yet: "][VarSub MPATH][LIT_CHARS " "][VarSub GET_RES]]} ) (= scope= flags=0 words=[] bindings=[('ERROR', {[DQ [LIT_CHARS false]]})]) (Com {[LIT_CHARS audit]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) (ElseTrue) (Com {[LIT_CHARS fatal]} {[DQ [VarSub MPATH][LIT_CHARS " "][VarSub GET_RES]]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[VarSub TOMB_ROOT]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS mkdir]} {[VarSub TOMB_ROOT]} ) (Com {[LIT_CHARS chown]} {[LIT_CHARS nobody] [LIT_OTHER ":"] [LIT_CHARS nobody]} {[VarSub TOMB_ROOT]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[VarSub TOMB_DIR]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS mkdir]} {[VarSub TOMB_DIR]} ) (Com {[LIT_CHARS chown]} {[LIT_CHARS nobody] [LIT_OTHER ":"] [LIT_CHARS nobody]} {[VarSub TOMB_DIR]} ) ) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TMP_DIR]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS JSON]} ) (List (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub JSON]]} {[DQ ]}}) (Com {[LIT_CHARS break]} ) ) (= scope= flags=0 words=[] bindings=[('FILE', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub JSON]}) (Com {[LIT_CHARS json]} {[LIT_CHARS -a]} {[LIT_CHARS name]}) )]})]) (= scope= flags=0 words=[] bindings=[('MFILE', {[VarSub MPATH] [LIT_CHARS /] [VarSub FILE]})]) (= scope= flags=0 words=[] bindings=[('LFILE', {[VarSub TMP_DIR] [LIT_CHARS /] [VarSub FILE]})]) (Com {[LIT_CHARS manta_get_to_file]} {[VarSub MFILE]} {[VarSub LFILE]} ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Processing manta object "][VarSub MFILE]]} ) (Pipeline (Com {[LIT_CHARS cat]} {[DQ [VarSub LFILE]]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS LINE]} ) (List (If (DBracket {B! {B2 BINARY_STRING_TILDE_EQUAL {[VarSub LINE]} {[LIT_CHARS mako.] [LIT_OTHER "*"] [VarSub MANTA_STORAGE_ID]}}}) (Com {[LIT_CHARS continue]} ) ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Processing "][VarSub LINE]]} ) (= scope= flags=0 words=[] bindings=[('OBJECT', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub LINE]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 3] [LIT_COMMA ","] [LIT_CHARS 4]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -i]} {[LIT_CHARS echo]} {[LIT_CHARS /manta/] [LIT_LBRACE "{"] [LIT_RBRACE "}"]}) )]})]) (If (DBracket {B1 UNARY_FILE_f {[VarSub OBJECT]}}) (List (Com {[LIT_CHARS auditRow]} {[DQ [LIT_CHARS false]]} {[DQ [VarSub OBJECT]]} {[DQ [VarSub TOMB_DIR]]} ) (Com {[LIT_CHARS mv]} {[VarSub OBJECT]} {[VarSub TOMB_DIR]} ) (AndOr OP_OR_IF (DBracket {B2 BINARY_INT_EQ {[VarSub ?]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "Couldn't move "][VarSub OBJECT]]} ) ) (DParen {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub OBJECT_COUNT]}} }) ) (ElseTrue) (Com {[LIT_CHARS auditRow]} {[DQ [LIT_CHARS true]]} {[DQ [VarSub OBJECT]]} {[DQ [VarSub TOMB_DIR]]} ) ) ) ) ) (Com {[LIT_CHARS rm]} {[VarSub LFILE]} ) (AndOr OP_OR_IF (DBracket {B2 BINARY_INT_EQ {[VarSub ?]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS fatal]} {[DQ [LIT_CHARS "Unable to rm "][VarSub LFILE][LIT_CHARS ". Something is really wrong."]]} ) ) (Com {[LIT_CHARS manta_delete]} {[VarSub MFILE]} ) (DParen {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub FILE_COUNT]}} }) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "success processing "][VarSub MFILE][LIT_CHARS .]]} ) ) ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "starting tombstone directory cleanup"]]} ) (= scope= flags=0 words=[] bindings=[('TOMB_CLEAN_COUNT', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[VarSub TOMB_ROOT]}) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS -] [VarSub TOMB_DIRS_TO_KEEP]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Pipeline (Com {[LIT_CHARS ls]} {[VarSub TOMB_ROOT]} ) (Com {[LIT_CHARS sort]} ) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS -] [VarSub TOMB_DIRS_TO_KEEP]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS TOMB_DATE_DIR]} ) (List (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub TOMB_DATE_DIR]]} {[DQ ]}}) (Com {[LIT_CHARS continue]} ) ) (= scope= flags=0 words=[] bindings=[('TOMB_DIR_TO_CLEANUP', {[DQ [VarSub TOMB_ROOT][LIT_CHARS /][VarSub TOMB_DATE_DIR]]})]) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "cleaning up "][VarSub TOMB_DIR_TO_CLEANUP]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub TOMB_DIR_TO_CLEANUP]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('ERROR', {[DQ [LIT_CHARS false]]})]) (Com {[LIT_CHARS audit]} ) (Com {[LIT_CHARS rm]} {[VarSub PID_FILE]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) )