ó 'KXc@s®ddlmZddlmZddlZddlZddlZddlZddlZeZ dZ da d„Z d„Z d„Zd „Zddd „Zd „ZdS( iÿÿÿÿ(t PER_INSTANCE(tutilNiþicCsÝyÄtjƒdjdƒrotjddt|ƒgƒ\}}|jƒd}tjd|ƒ}|jdƒSt r²tjdd t|ƒd gd d dgƒ\}}|j ƒStj d |ƒSWnt k rØdSXdS(NtplatformtFreeBSDtprocstats-cis\d+ (\w|\.|-)+\s+(/\w.+)is /usr/bin/pss-ps-oargs=trcsis/proc/%s/cmdline(Rt system_infot startswithtsubptstrt splitlinestretsearchtgrouptAIXtstript load_filetIOErrortNone(tpidtoutputt_errtlinetmtps_out((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pyt givecmdline"s$ 3  c Cs|jjdkrdany3t|ƒ\}}|dkrM|jdƒdSWn+tk r{}|jdt|ƒƒdSXt j ƒ}t |ƒ} | s«|jdƒdSt t j dƒ} |jd|dj|ƒfƒtjt|| ||t|| gƒdS( Ntaixis&no power_state provided. doing nothings%%s Not performing power state change!s5power_state: failed to get cmdline of current processtws#After pid %s ends, will execute: %st (tdistrotnameRtload_power_stateRtdebugt ExceptiontwarnR tostgetpidRtopentdevnulltjoinRtfork_cbtrun_after_pid_gonetexecmd( t_nametcfgt_cloudtlogt_argstargsttimeouttetmypidtcmdlinet devnull_fp((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pythandle7s&       cCsª|jdƒ}|dkrdSt|tƒs=tdƒ‚ntraidd6dd6dd6}nid d6d d6dd6}|jd ƒ}||kr¹td d j|jƒƒƒ‚n|jddƒ}ydt|ƒ}Wnt k rònX|dkr!t j d|ƒ r!tdƒ‚nd|||g}|jdƒr\|j |jdƒƒnyt |jddƒƒ}Wn%t k rŸt d|dƒ‚nX||fS(Nt power_statespower_state is not a dict.s-hthalts-ptpoweroffs-rtreboots-Hs-Ptmodes/power_state[mode] required, must be one of: %s.t,tdelaytnows+%ss\+[0-9]+s3power_state[delay] must be 'now' or '+m' (minutes).tshutdowntmessageR1g>@s(failed to convert timeout '%s' to float.(NN(tgetRt isinstancetdictt TypeErrorRR'tkeystintt ValueErrorR tmatchtappendtfloat(R,tpstatetopt_mapR;R=R0R1((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pyRUs8    cCstj|ƒdS(N(R#t_exit(tsysexit((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pytdoexitscCsmyAtj|dtjd|dtjƒ}|j|ƒ|j}Wntk r^ttƒnXt|ƒdS(Ntstdintstdouttstderr( t subprocesstPopentPIPEtSTDOUTt communicatet returncodeR!ROt EXIT_FAIL(texe_argsRtdata_intproctret((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pyR*…s   c s<d}tjƒ|}‡fd†}tjtjf} xËtrtjƒ|kr`d|}Pny0t|ƒ} | |krd|| f}PnWnatk rÓ} | j| krÁd| j}n|d| ƒPn!tk ró} |d| ƒnXtj dƒq:W|s|dƒnˆr.ˆj |ƒn||ŒdS( Ncs$ˆrˆj|ƒnttƒdS(N(R"RORY(tmsg(R.(sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pytfatal—sstimeout reached before %s endeds cmdline changed for %s [now: %s]spidfile gone [%d]sIOError during wait: %ssUnexpected Exception: %sgÐ?s&Unexpected error in run_after_pid_gone( RttimeterrnotENOENTtESRCHtTrueRRR!tsleepR ( Rt pidcmdlineR1R.tfuncR0R^tend_timeR_t known_errnosR4tioerrR2((R.sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pyR)s4     (tcloudinit.settingsRt cloudinitRRaR#R RSR`t frequencyRYRRR6RRORR*R)(((sS/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_power_state_change.pyts        ,