Ñò i'dWc@s?ddkiZddklZlZdefd„ƒ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.pyR6scCs4ti|iƒxx|iD]m}t|dƒ o0|i|ijo|i|i|iƒƒnt|dƒopt|dƒo`|id j oL|ii ƒd jo6|i|ijo#|i|i |i|iƒƒqánt|dƒo–t|dƒo†t |i tƒoot |i tƒo\|i djoL|i djo<|ii|iijo#|i|i|i|iƒƒq‡qqWt|dƒo‚|idj or|idjo'|iiio|i|iƒƒn|idjo'|iiio|i|iƒƒqnti|||ƒ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(;s4    #   cGsDti||Œd|_||_x|D]}|i|ƒ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