ó i'dWc@s?ddljZddlmZmZdefd„ƒYZdS(iÿÿÿÿN(t ShadowListtShadowExceptionBaset ShadowLogicalcBsŽeZdZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZd efd „ƒYZd „Z d „Z RS( s^ ShadowLogical - class to hold and validate ZFS Dataset objects (Filesystem and Zvol) tDuplicateDatasetNameErrorcBseZd„ZRS(cCsd||_dS(Ns Dataset name %s already inserted(tvalue(tselftname((s logical.pyt__init__$s(t__name__t __module__R(((s logical.pyR#stDuplicateMountpointErrorcBseZd„ZRS(cCsd||f|_dS(Ns(Filesystem name %s already mounted at %s(R(RRtmp((s logical.pyR(s(RR R(((s logical.pyR 'stNoswapMismatchErrorcBseZd„ZRS(cCsdd|_dS(Ns0Zvol marked for swap usage, but Logical element shas noswap="true"(R(R((s logical.pyR-s(RR R(((s logical.pyR ,stNodumpMismatchErrorcBseZd„ZRS(cCsdd|_dS(Ns0Zvol marked for dump usage, but Logical element shas nodump="true"(R(R((s logical.pyR2s(RR R(((s logical.pyR 1stMaxSizeZvolErrorcBseZd„ZRS(cCsdd||f|_dS(Ns0Multiple Zvol with maximum size are not allowed:s (%s, %s)(R(Rtvol1tvol2((s logical.pyR7s(RR R(((s logical.pyR6scCstj|jƒxe|jD]Z}t|dƒ r^|j|jkr^|j|j|jƒƒnt|dƒr×t|dƒr×|jd k r×|jj ƒd kr×|j|jkr×|j|j |j|jƒƒq×nt|dƒrt|dƒrt |j tƒrtt |j tƒrt|j dkrt|j dkrt|jj|jjkrt|j|j|j|jƒƒqtqqWt|dƒr|jdk r|jdkrÊ|jjjrÊ|j|jƒƒn|jdkr|jjjr|j|jƒƒqntj|||ƒd S( sÅ insert() - overridden method for validation of logical DOC objects the following checks are done as part of validation: - duplicate dataset name (zfs filesystems and zvolss) - duplicate dataset mountpoint (zfs filesystems) - verifies the tag's noswap and nodump values do not conflict with the use attribute of a Zvol object - more than 1 zvol with maximum size per pool tOPTIONS_PARAM_STRt mountpointtnonetlegacytusetmaxtswaptdumpN(RR(terrsvctclear_error_list_by_mod_idtmod_idt_shadowthasattrRt set_errorRRtNonetlowerR t isinstancetsizetstrt containertparentRRtnoswapR tnodumpR Rtinsert(RtindexRtdataset((s logical.pyR(;s2 !cGsDtj||Œd|_||_x|D]}|j|ƒq)WdS(Nszfs dataset validation(RRRR$tappend(RR$targstentry((s logical.pyRqs    ( RR t__doc__RRR R R RR(R(((s logical.pyRs 6(tsolaris_install.errsvcRtsolaris_install.target.shadowRRR(((s logical.pyts