f ddlZddlZddlZddlZddlZddlmZmZdZeje Z dZ dZ eddfdZd Zd Zefd Zy) N) b64decode b64encodeic^t|} |jdS#t$r|cYSwxYwNzutf-8)rdecodeUnicodeDecodeError)sourcedecodeds 9/usr/lib/python3/dist-packages/cloudinit/atomic_helper.pyb64dr s6G~~g&& s  ,,cxt|ts|jd}t|j dSr) isinstancebytesencoderr)r s r b64ers2 fe $w' V  # #G ,,wbFc |r5 tj|}tj|j}d} t j tjj|d|}tjd||j||t||j||jtj|j|tj |j|y#t$rYwxYw#t"$r(}|tj$|j|d}~wwxYw)NF)dirdeletemodezOAtomically writing to file %s (via temporary file %s) - %s: [%o] %d bytes/chars)osstatS_IMODEst_modeOSErrortempfileNamedTemporaryFilepathdirnameLOGdebugnamelenwriteclosechmodrename Exceptionunlink)filenamecontentromode preserve_mode file_stattfes r write_filer2 s  )I<< 1 12D B  ( ()%e     GG   L     $ "''8$)   *  > IIbgg s)4C?CD? D  D  D?#D::D?c djt|S#t$rdjt|cYSwxYw)z1Handler for types which aren't json serializable.z ci-b64:{0}z)Warning: redacted unserializable type {0})formatrAttributeErrortype)_objs r json_serialize_defaultr8DsCN""4:.. N:AA$t*MMNs#AAc>tj|dddtS)z%Return data in nicely formatted json.T),z: )indent sort_keys separatorsdefault)jsondumpsr8)datas r json_dumpsrCLs" :: &  rc8t|t|dzd|S)N w)r-r)r2rC)r+rBrs r write_jsonrGWs% 44   r)r@loggingrrrbase64rr _DEF_PERMS getLogger__name__r!r rr2r8rCrGrr rNs^  '  g!-'d%!HN%/r