ó i'dWc@s<ddlZddlmZmZdefd„ƒYZdS(i’’’’N(t ShadowListtShadowExceptionBaset ShadowZpoolcBsbeZdZdefd„ƒYZdefd„ƒYZdefd„ƒYZd„Zd„ZRS( s= ShadowZpool - class to hold and validate Zpool objects. tDuplicateZpoolNameErrorcBseZd„ZRS(cCsd||_dS(NsZpool name %s already inserted(tvalue(tselft zpool_name((szpool.pyt__init__#s(t__name__t __module__R(((szpool.pyR"stDuplicateMountpointErrorcBseZd„ZRS(cCsd||_dS(Nsmountpoint %s already specified(R(Rt mountpoint((szpool.pyR's(RR R(((szpool.pyR &stTooManyRootPoolsErrorcBseZd„ZRS(cCsd||_dS(Ns$Zpool %s already marked as root pool(R(RR((szpool.pyR+s(RR R(((szpool.pyR *scCsW|jg|jD]}|j^qkrD|j|j|jƒƒn|jr‰x9|jD]+}|jrW|j|j|jƒƒqWqWWn|jdkr³tj j d|jƒ}ntj j |jƒ}xu|jD]j}|jdkrtj j d|jƒ}ntj j |jƒ}||krŅ|j|j |ƒƒqŅqŅWt j|||ƒdS(Nt/(tnamet_shadowt set_errorRtis_rootR R tNonetostpathtjointabspathR Rtinsert(RtindexRtzpooltvalue_mountpointtzpool_mountpoint((szpool.pyR.s (  # cGsDtj||Œd|_||_x|D]}|j|ƒq)WdS(Nszpool validation(RRtmod_idt containertappend(RRtargstentry((szpool.pyRPs    ( RR t__doc__RRR R RR(((szpool.pyRs  "(tos.pathRtsolaris_install.target.shadowRRR(((szpool.pyts