ó –­PSc@sfddlZddljZddlmZddlmZejZdZ dZ dZ dZ dZ d ZdZdZdZdZdZd Zd Zd Zd Zd ZdZdefd„ƒYZdd„Zdd„Zdd„Zdd„Z dd„Z!dd„Z"dd„Z#e$ddd„Z%e$ddd„Z&dd„Z'ddd„Z(ddd„Z)dS(iÿÿÿÿN(tglobal_settings(t DebugValuesiiiiiis/usr/bin/svcprops/usr/sbin/svcadms/usr/sbin/svccfgs /usr/bin/svcss/usr/sbin/zlogintNonzeroExitExceptioncBs#eZd„Zd„Zd„ZRS(cCs||_||_||_dS(N(tcmdt return_codetoutput(tselfRRR((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt__init__<s  cCs t|ƒS(N(tstr(R((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt __unicode__AscCsd|j|j|jfS(Ns-Cmd %s exited with status %d, and output '%s'(RRR(R((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt__str__Gs(t__name__t __module__RR R (((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyR;s  cCstjdƒ}|rEtjj||djdƒƒf|d}n|r‚tjdƒ}|dkrot}n||f|}ny@tj |dtj dtj ƒ}|j j ƒ}|jƒ}Wn&tk rê}td||f‚nX|dkr t|||ƒ‚n|S( Nt smf_cmds_dirit/it bin_zlogintstdouttstderrscannot execute %s: %s(Rt get_valuetostpathtjointlstriptNonet zlogin_patht subprocesstPopentPIPEtSTDOUTRt readlinestwaittOSErrort RuntimeErrorR(targstzonetcmds_dirRtproctbuftrette((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt__callLs& $    cCsœt|d|ƒ}|stSd|jdgƒkr8tS|jddƒ}|dk rjd|krftStS|jddƒ}|dk r˜d|kr˜tStS(s return state of smf service R"t maintenancesrestarter/statesgeneral_ovr/enabledttruesgeneral/enabledN( t get_propstSMF_SVC_UNKNOWNtgettSMF_SVC_MAINTENANCERtSMF_SVC_TMP_ENABLEDtSMF_SVC_TMP_DISABLEDtSMF_SVC_ENABLEDtSMF_SVC_DISABLED(tfmriR"tpropststatus((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt get_statees  cCst|d|ƒtkS(NR"(R6R/(R3R"((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt is_disabledysc Csat|tƒr!t|gƒ}nd}x3|jƒD]%}t}x#|D]}||krGt}qGqGW|}|jdƒr“|jdddƒ}nd|kr¬| r¬q4n|j|ƒ|r,t dddd |f}y:t |d |ƒ} x!| D]} |j | j ƒƒqôWWqYt k r(q4qYXq4tjtd ƒƒtjtd ƒtƒƒq4W|S( s2 Walk a set of fmris checking that each is fully specifed with an instance. If an FMRI is not fully specified and does not contain at least one special match character from fnmatch(5) the fmri is dropped from the set that is returned and an error message is logged. s*?[!^ssvc:tit:s-Hs-oR3s%sR"sCFMRI pattern might implicitly match more than one service instance.s4Actuators for %(attr)s will not be run for %(fmri)s.(t isinstancet basestringtsettcopytFalsetTruet startswithtreplacetremovet svcs_pathR(taddtrstripRtloggerterrort_tlocals( tattrtfmrisR"tcharsR3tis_globtcttmp_fmriRt instancestinstance((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyt check_fmris|s4       cCsitd|f}yt|d|ƒ}Wntk r9iSXtg|D]}|jƒjddƒ^qDƒS(Ns-cR"i(t svcprop_pathR(RtdicttstriptsplitR(tsvcfmriR"R!R%tl((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyR+¦s cCs3td|dd||ff}t|d|ƒdS(Ns-stsetprops%s=%sR"(t svccfg_pathR((R3tproptvalueR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pytset_prop³scCs`tdd||f}t|d|ƒ}t|ƒdksItd|ƒ‚|djdƒ}|S(Ns-cs-pR"isWas expecting one entry, got:%sis (RSR(tlentAssertionErrorRE(R3R[R"R!R%((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pytget_prop·s "cCs¡|s dSt|tƒr%|f}ntdg}|rg|jdƒ|dkrg|jd|ƒqgn|r}|jdƒntt|ƒt|ƒd|ƒdS(Ntenables-siÿÿÿÿs-T %ds-tR"(R:R;t svcadm_pathtappendR(ttuple(RKt temporaryt sync_timeoutR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyRa¾s    cCsŽ|s dSt|tƒr%|f}ntddg}|dkrT|jd|ƒn|rj|jdƒntt|ƒt|ƒd|ƒdS(Ntdisables-sis-T %ds-tR"(R:R;RbRcR(Rd(RKReRfR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyRgÎs  cCsX|s dSt|tƒr%|f}ntd|g}tt|ƒt|ƒd|ƒdS(NtmarkR"(R:R;RbR(Rd(tstateRKR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyRhÛs  cCs‹|s dSt|tƒr%|f}ntdg}|rg|jdƒ|dkrg|jd|ƒqgntt|ƒt|ƒd|ƒdS(Ntrefreshs-siÿÿÿÿs-T %dR"(R:R;RbRcR(Rd(RKRfR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyRjäs    cCs‹|s dSt|tƒr%|f}ntdg}|rg|jdƒ|dkrg|jd|ƒqgntt|ƒt|ƒd|ƒdS(Ntrestarts-siÿÿÿÿs-T %dR"(R:R;RbRcR(Rd(RKRfR"R!((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pyRkñs    (*Rtpkg.pkgsubprocesst pkgsubprocessRt pkg.clientRtpkg.client.debugvaluesRRFR,R2R.R0R/R1tEXIT_OKt EXIT_FATALtEXIT_INVALID_OPTIONt EXIT_INSTANCEtEXIT_DEPENDENCYt EXIT_TIMEOUTRSRbRZRCRt ExceptionRRR(R6R7RRR+R]R`R>RaRgRhRjRk(((s-/usr/lib/python2.7/vendor-packages/pkg/smf.pytsD      *