x[hUddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z m Z mZddlmZddlmZej(eZdZe ed<dZe ed <ej4d ej6d ej8d iZe e eefed <Gdde Z e dejBZ"e ed<e dejFZ$e ed<e"a%ejLZ'deee dfddfdZ(dZ)dZ*dZ+ejXdZ-y)N)StringIO)CallableDictFinal NamedTupleUnion)version)log_utilz#Cloud-init {} received {}, exiting SIG_MESSAGEBACK_FRAME_TRACE_DEPTHz/Cloud-init %(version)s received SIGINT, exitingz0Cloud-init %(version)s received SIGTERM, exitingz0Cloud-init %(version)s received SIGABRT, exitingSIGNALSc"eZdZUeed<eed<y) ExitBehavior exit_code log_levelN)__name__ __module__ __qualname__int__annotations__:/usr/lib/python3/dist-packages/cloudinit/signal_handler.pyrr s NNrrSIGNAL_EXIT_BEHAVIOR_CRASHSIGNAL_EXIT_BEHAVIOR_QUIETsigreturnct|r2t|tjstj d|yy|t jk(rtj dy|tj dy|t jk(rtj d|ytjdt||y)z+inspect_handler() logs signal handler statez.Signal state [%s] - previously custom handler.z,Signal state [SIG_IGN] - previously ignored.Nz;Signal state [None] - previously not installed from Python.zISignal state [%s] - default way of handling signal was previously in use.zSignal state [%s(%s)] - unknown) callable isinstancetypesBuiltinFunctionTypeLOGinfosignalSIG_IGNSIG_DFLwarningtype)rs rinspect_handlerr,+s}#u889 HHEs K:   ?@  NO    !   5tCy#FrcJ||kDs|sytj|}d|dzz}|j|d|jd|j|d|jd|j|d|j dt |j|dz||y)N z Filename:  z Function: z Line number: r)inspect getframeinfowritefilenamefunctionlineno _pprint_framef_back)framedepth max_depthcontents frame_infoprefixs rr7r7Bs y%%e,J EAI F NN1D1DEF NN1D1DEF NNFJ4E4EFG%,, 9h?rct|tjr |jn|}t t j tj|}t|dt|tj|jttj t#j$tj&y)Nr)logr)r"r'Signalsnamerr formatvrversion_stringr7r r multi_loggetvaluer%_SIGNAL_EXIT_BEHAVIORrsysexitr)signumr9rBr<s r _handle_exitrLMs$VV^^<6;;&D **2+<+<+>EFH%2H= 0E0O0OHH " , ,-rcd}tjD]%}ttj|t'|t tz }|S)zattach cloud-init's handlersr)rkeysr,r'rLlen) sigs_attachedrKs rattach_handlersrQXsCM,,.= fl;<=S\!M rc#bKt5tadtadddy#1swYyxYww)a$suspend_crash() allows signals to be received without exiting 1 This allow signal handling without a crash where it is expected. The call stack is still printed if signal is received during this context, but the return code is 0 and no traceback is printed. Threadsafe. N)_SUSPEND_WRITE_LOCKrrHrrrr suspend_crashrTas. ; : :;;;s/# /,/). contextlibr1loggingr'rI threadingr#iortypingrrrrr cloudinitr rD cloudinit.logr getLoggerrr%r rr SIGINTSIGTERMSIGABRTrrstrrERRORrINFOrrHRLockrSr,r7rLrQcontextmanagerrTrrrres&  ;;#"g!; U; !! MMD NNF NNF"tCH~ : %1GMM$BEB$0GLL$AEA2%ioo'GsHd23GG.@. ;;r