PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  4h^c@scdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddl mZddlmZddlmZdd lmZd ejfd YZd ejfd YZdZdfdYZdefdYZeedZedkr_endS(ssupervisorctl -- control applications run by supervisord from the cmd line. Usage: %s [options] [action [arguments]] Options: -c/--configuration FILENAME -- configuration file path (searches if not given) -h/--help -- print usage message and exit -i/--interactive -- start an interactive shell after executing commands -s/--serverurl URL -- URL on which supervisord server is listening (default "http://localhost:9001"). -u/--username USERNAME -- username to use for authentication with server -p/--password PASSWORD -- password to use for authentication with server -r/--history-file -- keep a readline history (if readline is available) action [arguments] -- see below Actions are commands like "tail" or "stop". If -i is specified or no action is specified on the command line, a "shell" interpreting actions typed interactively is started. Use the action "help" to find out about available actions. iN(t asyncore_25(t ClientOptions(t make_namespec(tsplit_namespec(txmlrpc(tstates(t http_clienttfgthreadcBsMeZdZdZdZdZdZdZdZdZ RS(s A subclass of threading.Thread, with a kill() method. To be used for foreground output/error streaming. http://mail.python.org/pipermail/python-list/2004-May/260937.html cCstjj|t|_||_||_tj|_ tj |j |jj j |jj j |_tj |j |jj j |jj j |_dS(N(t threadingtThreadt__init__tFalsetkilledtprogramtctlRtListenertlistenert HTTPHandlertoptionstusernametpasswordtoutput_handlert error_handler(tselfR R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR 1s       cCs,|j|_|j|_tjj|dS(N(trunt_fgthread__run_backupt_fgthread__runRR tstart(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR>s  cCsT|jj|jjjd|j|jj|jjjd|jtjdS(Ns/logtail/%s/stdouts/logtail/%s/stderr( RtgetRRt serverurlR Rtasyncoretloop(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRDs cCs*tj|j|j|j|_dS(N(tsystsettracet globaltraceRR(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt__runKs cCs|dkr|jSdSdS(Ntcall(t localtracetNone(Rtframetwhytarg((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR"Qs cCs+|jr$|dkr$tq$n|jS(Ntline(R t SystemExitR%(RR'R(R)((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR%Ws  cCs'|jj|jjt|_dS(N(RtcloseRtTrueR (R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytkill]s  ( t__name__t __module__t__doc__R RRRR"R%R.(((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR+s     t ControllercBseZddddZdZdZdZdZdZdZ ddZ d Z dd Z d Z d Zd ZdZdZdZdZdZRS(ttabc Cs||_|jjd|_g|j_dg|_d|_tjj||||x|jj D]\}}}|||}xOt |D]A} | j drt t || r|jj| dqqW|jjj|||_qcWdS(Ns> thelptdo_i(RtprompttpluginstvocabR&t_complete_infotcmdtCmdR tplugin_factoriestdirt startswithtcallabletgetattrtappendtname( RRt completekeytstdintstdoutRBtfactorytkwargstpluginta((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR ds    $cCsdS(N((R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt emptylinetscsyddlj}|jdd}|jdd}|jdd}j|jryjjWntk rnXfd}ddl}|j|nWnt k rnXy|j j d|j Wnt k r|jdnXdS(Nit:tt*t-cs,yjjWntk r'nXdS(N(twrite_history_filet history_filetIOError((Rtreadline(s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytsaves tstatus(RRtget_completer_delimstreplacetset_completer_delimsRPtread_history_fileRQtatexittregistert ImportErrortcmdqueueRAtcmdlooptKeyboardInterrupttoutput(RtargsRtdelimsRSRY((RRRs</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt exec_cmdloopxs.         cCs|}|jd}|jd}|jj||j|\}}}|s\|jS|d kru|j|Sd |_||_ |dkr|j|S|j |}|d kr|j|Syy||SWnt j k r}|j dkry|jjrf|jdtd}tjdd} |jd||j_| |j_|j|S|jjdqnX||Wntk rnqtk rtj\\} } }} } }d | | | |f}|j||jjstjd qnXd S( s Override the onecmd method to: - catch and print all exceptions - allow for composite commands in interactive mode (foo; bar) - call 'do_foo' on plugins rather than ourself t;iRLisServer requires authentications Username:R6s Password:s error: %s, %s: file: %s line: %siN(tsplittpopR\textendt parselineRJR&tdefaultR9tlastcmdt _get_do_funct xmlrpclibt ProtocolErrorterrcodeRt interactiveR_t raw_inputtgetpassRRtonecmdtusageR+t ExceptionRtcompact_tracebackR texit(RR*toriglinetlinesR:R)tdo_functeRRtfiletfuntttvttbinfoterror((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRqsP                  !  cCsbd|}t||d}|s^x9|jjD](}t||d}|dk r/Pq/q/Wn|S(NR5(R@R&RR7(RR:t func_nametfuncRH((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRjs   cCs9t|tr!|jd}n|jj|ddS(Nsutf-8s (t isinstancetunicodetencodeREtwrite(Rtmessage((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR_scCs |jdS(Nt supervisor(tget_server_proxy(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytget_supervisorscCs0|jj}|dkr|St||SdS(N(RtgetServerProxyR&R@(Rt namespacetproxy((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRs cCsyY|j}|j}ddlm}||jkrX|jd|j|ftSWntjk r}|j t j j kr|jdtSn{t jk r}|jdtjkr|jd|jjtS|jdtjkr|jd|jjtSnXtS(Ni(t rpcinterfacessSorry, this version of supervisorctl expects to talk to a server with API version %s, but the remote version is %s.sSorry, supervisord responded but did not recognize the supervisor namespace commands that supervisorctl uses to control it. Please check that the [rpcinterface:supervisor] section is enabled in the configuration file (see sample.conf).is%s refused connections%s no such file(Rt getVersionRRt API_VERSIONR_R RktFaultt faultCodeRtFaultstUNKNOWN_METHODtsocketRR`terrnot ECONNREFUSEDRRtENOENTR-(RRtapiRRy((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytupchecks0  c Cs |dkr'ddl}|j}n|jdd}g}|js^|j|}n|j}|d}t|dkr|jd r|j|}nZ|dkr|j|}n<|dkr|j|}n|dkr|j |}nt||kr||SdS(saCompleter function that Cmd will register with readline using readline.set_completer(). This function will be called by readline as complete(text, state) where text is a fragment to complete and state is an integer (0..n). Each call returns a string with a new completion. When no more are available, None is returned.iNRciit R4taddtremovetupdatetcleartfgtpidtrestarttsignalRRTtstopttail(saddsremovesupdate( sclearRspidsrestartssignalsstartsstatussstopstail( R&RRtget_line_bufferRdtstript_complete_actionstlentendswitht_complete_groupst_complete_processes( RttexttstateR*RRtphrasetmatchestwordstaction((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytcompletes(     "   cCs-g|jD]}|j|r |d^q S(s5Build a completion list of action names matching textR(R8R>(RRRI((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR)scCskg}x8|jD]*}|d|kr|j|dqqWg|D]}|j|rH|d^qHS(s4Build a completion list of group names matching texttgroupR(t_get_complete_infoRAR>(RRtgroupstinfotg((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR-s cCsg}x|jD]}d|ks9|d|dkr|jd|d|dfd|d|kr|jd|dqq|j|dqWg|D]}|j|r|d^qS(s6Build a completion list of process names matching textRKRBRs%s:%ss%s:*R(RRAR>(RRt processesRtp((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR5s cCs.|jdkr'|jj|_n|jS(sGet all process info used for completion. We cache this between commands to reduce XML-RPC calls because readline may call complete() many times if the user hits tab only once.N(R9R&RtgetAllProcessInfo(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRAscCsG|jdkr|jn$x!|jjD]}|j|q,WdS(NR4(Rt help_helpRR7tdo_help(RR)RH((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRIs cCs|jd|jddS(Ns'help Print a list of available actionss%help Print help for (R_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRPs cCs|jddS(NRLi(R_(RR)((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_EOFTs cCs|jddS(Ns(To quit, type ^D or use the quit command(R_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pythelp_EOFXsN(R/R0R&R RJRbRqRjR_RRRRRRRRRRRR(((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR2bs&   5     $      cCsag}|jg}xH|r\|jd}|jrI|t|j}n|t|}qW|S(Ni(t __class__Ret __bases__tlistR=(tinsttnamestclassestaclass((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt get_names[s   tControllerPluginBasecBs5eZdZdZdZeeZdZRS(tunnamedcCs ||_dS(N(R(Rt controller((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR hscCs d|jS(Ns %s commands (type help ):(RB(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt _doc_headerksc Cs|ryt|d|}Wnwtk ry4t|d|j}|r`|jj|dSWntk rtnX|jj|jj|fdSX|n$t|}g}g}i}x/|D]'}|d dkrd||d Press Ctrl-C to exit <==RL(RR_RRRR&RRRRRRRRR^R,(RtpathRRthandlerR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt_tailfs    c Cs|jjsdS|j}t|dkrO|jjd|jdSt|dkr|jjd|jdSd}|djdr|jd}nt|dkr|d}d}n[|r|d}|dj }|dkr*|jjd |dSn|jjd dSd }|dk r|d}|d kr[d}qyt |}Wq|jjd|dSXn|jj }|dkr|j d||fSy?|dkr|j || d} n|j|| d} Wntjk r} d} | jtjjkrK|jj| |dfq| jtjjkr}|jj| |dfq| jtjjkr|jj| |dfqnX|jj| dS(NisError: too few argumentsisError: too many argumentsiRNiREtstderrsError: bad channel %rs!Error: tail requires process namei@tfsError: bad argument %ss/logtail/%s/%ss%s: ERROR (%s)s no log filesunknown error reading logsno such process name(sstderrsstdout(RRRdRR_t help_tailR&R>RetlowertintRRtreadProcessStdoutLogtreadProcessStderrLogRkRRRRtNO_FILEtFAILEDtBAD_NAME( RR)R`tmodifierRBtchanneltbytestwhatRR_Ryttemplate((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_tailsp               cCs|jjddS(Nstail [-f] [stdout|stderr] (default stdout) Ex: tail -f Continuous tail of named process stdout Ctrl-C to exit. tail -100 last 100 *bytes* of process stdout tail stderr last 1600 *bytes* of process stderr(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRs c Cs|jjsdS|j}t|dkrO|jjd|jdSt|dkr|djdr|dd}|dkrd}|j|Syt|}Wn |jjd|ddSX|}q|jjd|ddSnd}|jj }y|j | d}Wnwt j k r}d } |j tjjkro|jj| d q|j tjjkr|jj| dqnX|jj|dS(NisError: too many argumentsiRNRs /mainlogtailsError: bad argument %si@s%s: ERROR (%s)t supervisords no log filesunknown error reading log(Rs no log file(Rsunknown error reading log(RRRdRR_t help_maintailR>RRRtreadLogRkRRRRRR( RR)R`RRRRR_RyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_maintail sD       cCs|jjddS(Nsmaintail -f Continuous tail of supervisor main log file (Ctrl-C to exit) maintail -100 last 100 *bytes* of supervisord main log file maintail last 1600 *bytes* of supervisor main log file (RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR<s cCstjddS(Ni(R Ru(RR)((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_quitDscCs|jjddS(Nsquit Exit the supervisor shell.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_quitGscCs|jjddS(Nsexit Exit the supervisor shell.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_exitLscCsgd}}xat|D]S\}}|jt|d|dt|||krt||}qqWdt|dd}xUt|D]G\}}|i||d6|dd 6|d d 6}|jj|qWdS( NiRRBs %(namespec)-iss%(state)-10s%(desc)stnamespect statenameRt descriptiontdesc(t enumerateRARRtstrRR_(Rt process_infost namespecstmaxlentiRRR*((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt_show_statusesOs  c Cs4|jjsdS|jj}|j}|j}| sMd|krV|}ng}x|D]}t}t|\}} x_|D]W} | d|k} | dk r| o| d| k} n| rt}|j | qqW|rc| dkrd|} n d|} |jj | qcqcW|j |dS(NtallRRBs%s: ERROR (no such group)s%s: ERROR (no such process)( RRRRRdR-RR&R RAR_R( RR)Rt all_infosRtmatching_infosRBtbad_namet group_namet process_nameRtmatchedtmsg((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_status]s0         cCsD|jjd|jjd|jjd|jjddS(Ns.status Get status for a single processs8status :* Get status for all processes in a groups<status Get status for multiple named processess$status Get all process status info(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_statusscCs#|jj}|jjs"dS|j}|sY|j}|jjt|nd|krx|jD] }|jjt|dqrWnx|D]{}y|j|}WnEt j k r}|j t j jkr|jjd|qqX|jjt|dqWdS(NRRsNo such process %s(RRRRdtgetPIDR_RRtgetProcessInfoRkRRRRR(RR)RRRRRBRy((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_pids$   ! cCs4|jjd|jjd|jjddS(Ns!pid Get the PID of supervisord.s:pid Get the PID of a single child process by name.s;pid all Get the PID of every child process, one per line.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pythelp_pidscCst|d|d}|d}d}|tjjkrG||dfS|tjjkrg||dfS|tjjkr||dfS|tjjkr||dfS|tjjkr||d fS|tjjkr||d fS|tjj krd |St d ||fdS( NRRBRTs%s: ERROR (%s)sno such processs no such filesfile is not executablesalready starteds spawn errorsabnormal terminations %s: startedsUnknown result code %s for %s( RRRRRtNOT_EXECUTABLEtALREADY_STARTEDt SPAWN_ERRORtABNORMAL_TERMINATIONtSUCCESSt ValueError(RtresultRBtcodeR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt _startresults$ c Cs|jjsdS|j}|jj}|sR|jjd|jdSd|kr|j}x|D]%}|j|}|jj|qqWnSxP|D]H}t|\}}|dkr\yC|j |}x-|D]%}|j|}|jj|qWWqt j k rX} | j tjjkrRd|} |jj| qYqXqy|j|}WnWt j k r} |ji| j d6|d6|d6| jd6} |jj| qXt||}|jjd|qWdS( Ns$Error: start requires a process nameRs%s: ERROR (no such group)RTRBRRs %s: started(RRRdRR_t help_starttstartAllProcessesRRR&tstartProcessGroupRkRRRRRt startProcesst faultStringR( RR)RRtresultsRRBRRRyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_startsH          cCsD|jjd|jjd|jjd|jjddS(Nsstart Start a processs/start :* Start all processes in a groups6start Start multiple processes or groupssstart all Start all processes(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRs  t signalledcCst|d|d}|d}|d}d}|tjjkrQ||dfS|tjjkrq||dfS|tjjkr||dfS|tjjkrd ||fS|tjjkr|Std ||fdS( NRRBRTRs%s: ERROR (%s)sno such processsbad signal names not runnings%s: %ssUnknown result code %s for %s( RRRRt BAD_SIGNALt NOT_RUNNINGRRR(RRtsuccessRBRt fault_stringR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt _signalresults  cCs|j|ddS(NRtstopped(R(RR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt _stopresultsc Cs|jjsdS|j}|jj}|sR|jjd|jdSd|kr|j}x|D]%}|j|}|jj|qqWnSxP|D]H}t|\}}|dkr\yC|j |}x-|D]%}|j|}|jj|qWWqt j k rX} | j tjjkrRd|} |jj| qYqXqy|j|}WnWt j k r} |ji| j d6|d6|d6| jd6} |jj| qXt||}|jjd|qWdS( Ns#Error: stop requires a process nameRs%s: ERROR (no such group)RTRBRRs %s: stopped(RRRdRR_t help_stoptstopAllProcessesR!RR&tstopProcessGroupRkRRRRRt stopProcessRR( RR)RRRRRBRRRyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_stopsH          cCsD|jjd|jjd|jjd|jjddS(Nsstop Stop a processs-stop :* Stop all processes in a groups4stop Stop multiple processes or groupssstop all Stop all processes(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR"2sc Cs|jjsdS|j}t|dkrO|jjd|jdS|d}|d}|jj}d|kr|j|}x|D]%}|j|}|jj|qWnWxT|D]L}t |\} } | dkryF|j | |}x-|D]%}|j|}|jj|qWWqt j k r~} | jtjjkrxd| } |jj| qqXqy|j||WnWt j k r} |ji| jd6| d6| d 6| jd 6} |jj| qXt| | }|jjd |qWdS( Nis7Error: signal requires a signal name and a process nameiiRs%s: ERROR (no such group)RTRBRRs %s: signalled(RRRdRR_t help_signalRtsignalAllProcessesRRR&tsignalProcessGroupRkRRRRRt signalProcessRR( RR)R`tsigRRRRRBRRRyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_signal8sP             cCsD|jjd|jjd|jjd|jjddS(Ns-signal Signal a processs?signal :* Signal all processes in a groupsFsignal Signal multiple processes or groupss.signal all Signal all processes(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR'kscCsa|jjsdS|j}|sC|jjd|jdS|j||j|dS(Ns&Error: restart requires a process name(RRRdR_t help_restartR&R(RR)R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_restartqs   cCsT|jjd|jjd|jjd|jjd|jjddS(Ns!restart Restart a processs2restart :* Restart all processes in a groups:restart Restart multiple processes or groupss"restart all Restart all processessLNote: restart does not reread config files. For that, see reread and update.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR-s cCsG|jjjr3td}|jjd}nd}|rC|jj}y|jWntj k r}|j t j j kr|jjdq@qCtjk r/}|jdtjkrd}|jj||jjjq@|jdtjkr)d}|jj||jjjq@qCX|jjdndS( Ns5Really shut the remote supervisord process down y/N? tyisERROR: already shutting downis1ERROR: %s refused connection (already shut down?)s+ERROR: %s no such file (already shut down?)s Shut down(RRRnRoRR>RtshutdownRkRRRRtSHUTDOWN_STATER_RRR`RRRR(RR)tyesnotreallyRRyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_shutdowns*   cCs|jjddS(Ns+shutdown Shut the remote supervisord down.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_shutdownscCs|r$|jjd|jdS|jjjrWtd}|jjd}nd}|r|jj}y|j WnAt j k r}|j t jjkr|jjdqqX|jjdndS(Ns"Error: reload accepts no argumentss3Really restart the remote supervisord process y/N? R/isERROR: already shutting downsRestarted supervisord(RR_t help_reloadRRnRoRR>RRRkRRRRR1(RR)R2R3RRy((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_reloads"  cCs|jjddS(Ns(reload Restart the remote supervisord.(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyR6sc Cs|\}}}i}xX|df|df|dfgD]5\}}|jtt||gt|q7W|rt|j}|jx?|D]$} |jjd| || fqWn|jjddS(Nt availabletchangedt disappeareds%s: %ssNo config updates to processes( RtdicttzipRRtkeysRRR_( Rtadded_changed_dropped_tupletaddedR9tdroppedt changedicttnR|RRB((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt_formatChangess  -  %cCst|d|d}i|d6}|dr;d|d [...] Activates any updates in config for process/group(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pythelp_add#scCs|j}|jj}x|D]}y|j|Wnqtjk r}|jtjj krz|jj d|q|jtjj kr|jj d|qq"X|jj d|q"WdS(Ns&ERROR: process/group still running: %ss ERROR: no such process/group: %ss%s: removed process group( RdRRtremoveProcessGroupRkRRRRt STILL_RUNNINGR_R(RR)RRRBRy((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_remove's     cCs|jjddS(Ns<remove [...] Removes process/group from active config(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_remove:scsfd}jj}y|j}WnBtjk rr}|jtjjkrljj ddSnX|d\}}}t |j } d| krt } n| r+t } x%|j D]} | j | dqW| j|x4| D])} | | krjj d| qqWnx|D]} | rP| | krPq2n|j| } || dg| D]"}|dtjjkrs|^qs}|r|| d q2n|j| || d q2Wxi|D]a} | r| | krqn|j| } || d|j| |j| || d qWx@|D]8} | rc| | krcqEn|j| || d qEWdS( Ncsjjd||fdS(Ns%s: %s(RR_(RBR(R(s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytlog?ssERROR: already shutting downiRRsERROR: no such group: %sR RTshas problems; not removingsremoved process groupsupdated process groupsadded process group(RRRTRkRRRRR1R_tsetRdRRRR$RR[RW(RR)R_RRRyR?R9tremovedt valid_gnamesRRtgnameRtrestfails((Rs</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_update>s\         "        cCs4|jjd|jjd|jjddS(NsVupdate Reload config and add/remove as necessary, and will restart affected programssYupdate all Reload config and add/remove as necessary, and will restart affected programss+update [...] Update specific groups(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_updatescCst|d|d}|d}d}|tjjkrG||dfS|tjjkrg||dfS|tjjkrd|Std||fdS( NRRBRTs%s: ERROR (%s)sno such processtfaileds %s: clearedsUnknown result code %s for %s(RRRRRRR(RRRBRR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt _clearresults c CsT|jjsdS|j}|sC|jjd|jdS|jj}d|kr|j}x|D]%}|j|}|jj|qqWnx|D]}t|\}}y|j |}WnWt j k r(} |ji| j d6|d6|d6| j d6} |jj| qXt||}|jjd|qWdS(Ns$Error: clear requires a process nameRRTRBRRs %s: cleared(RRRdR_t help_clearRtclearAllProcessLogsRiRtclearProcessLogsRkRRRR( RR)RRRRRBRRRyR((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_clears2      cCs4|jjd|jjd|jjddS(Ns)clear Clear a process' log files.s5clear Clear multiple process' log filess'clear all Clear all process' log files(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRjs cCs_|j}tj|}|ddkr?|jjddS||jj_|jddS(Nitunixthttps%ERROR: url must be http:// or unix://RL(RnRo(RturlparseRR_RRR(RR)turltparts((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_opens cCs$|jjd|jjddS(Ns3open Connect to a remote supervisord process.s3 (for UNIX domain socket, use unix:///socket/path)(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt help_openscCs`|r$|jjd|jdS|jjs7dS|jj}|jj|jdS(Ns#Error: version accepts no arguments(RR_t help_versionRRtgetSupervisorVersion(RR)R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyt do_versions cCs|jjddS(Ns<version Show the version of the remote supervisord process(RR_(R((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRus c Cs|jjsdS|j}|sC|jjd|jdSt|dkri|jjddS|d}|jj}y|j|}WnYtj k r}|j t j j kr|jjdn|jjdt|dSX|dtjjkr|jjddS|jjd d}yt||j}|jxtrFtd }y|j||Wnstj k r}|j t j jkr|jjd n|jjdt||jjd |jdSX|j|}|dtjjkrS|jjd |jjd |jdSqSWWn:ttfk r|jjd |r|jqnXdS( NsERROR: no process name suppliedis&ERROR: too many process names suppliedis ERROR: bad process name suppliedsERROR: RsERROR: process not runnings==> Press Ctrl-C to exit <==s sProcess got killedsExiting foreground(RRRdR_thelp_fgRRRRkRRRRRRRt ProcessStatestRUNNINGR&RRR-RotsendProcessStdinRR.R^tEOFError( RR)RRBRRRyRItinp((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytdo_fgs`         cCs$|jjd|jjddS(Ns4fg Connect to a process in foreground modes Ctrl-C to exit(RR_(RR`((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRxsN(7R/R0RBR&RRRRRRRRtdo_exitRRRRRR RRRRR!R&R"R,R'R.R-R4R5R7R6RCRNRRRORVRSRYRZR]R^RfRgRiRmRjRsRtRwRuR~Rx(((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyRsh  L /      "     .    .  3                 A  !    >cCs||dkrt}n|j|dtt|}|jr\|jdj|jn|jrx|j ||ndS(NRR( R&RtrealizeR1R2R`RqtjoinRnRb(R`Rtc((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pytmains     t__main__(R1R:RRpRkRRpR Rtsupervisor.medusaRRtsupervisor.optionsRRRRRRRR RR;R2RRRR&RR/(((s</usr/lib/python2.7/site-packages/supervisor/supervisorctl.pyts4        7 5