Ñò –­PSc @sdZddkZddkZddkZddkZddkZddklZddkl Z dei fd„ƒYZ dS(s“module describing a (hard) link packaging object This module contains the HardLinkAction class, which represents a hardlink-type packaging object.iÿÿÿÿN(tmisc(tActionExecutionErrortHardLinkActioncBsBeZdZgZdZeieZd„Zd„Z d„Z RS(s4Class representing a hardlink-type packaging object.thardlinkcCsz|id}|ddjoB|id}tiitiitii|ƒd|ƒƒ}ntii|ƒd}|S(s3 return a path for target that is relative to imagettargetit/tpathi(tattrstosRtnormpathtjointsplit(tselfRR((s:/usr/lib/python2.6/vendor-packages/pkg/actions/hardlink.pytget_target_path1s   ,cCsn|iƒ}|i|iiƒƒ}|i||ƒtiitii|ƒƒp/|i tii|ƒdt i d|i ƒn%tii|ƒo|i |ƒntiitiii|iiƒ|fƒƒ}yti||ƒWn}tj oq}|itijot|d|ƒ‚ntdƒh|d6|d6}t|d|d|d|i ƒ‚nXdS( s-Client-side method that installs a hard link.tmodetfmriterrorsBUnable to create hard link %(path)s; target %(target)s is missing.RRtdetailsN(R tget_installed_pathtimagetget_roottfsobj_checkpathRRtexiststdirnametmakedirsRt PKG_DIR_MODEtdestination_fmritremoveR tsepR tlinktEnvironmentErrorterrnotENOENTRt_(R tpkgplantorigRRt fulltargetteterr_txt((s:/usr/lib/python2.6/vendor-packages/pkg/actions/hardlink.pytinstallCs*   c Kse|i|tiƒ\}}}}}|o|pt‚|||fS|iƒ}|i|iƒƒ} tii tii i |iƒ|fƒƒ}tii |ƒp"|i tdƒ|idƒn|o|||fSyJti| ƒiti|ƒijo!|i tdƒ|iƒƒnWn,tj o } |i tdƒ| ƒnX|||fS(s»Returns a tuple of lists of the form (errors, warnings, info). The error list will be empty if the action has been correctly installed in the given image.sTarget '%s' does not existRs0Broken: Path and Target (%s) inodes not the samesUnexpected Error: %s(tverify_fsobj_commontstattS_IFREGtAssertionErrorR RRRRR RR RtappendR!Rtst_inotOSError( R timgtargstlstatterrorstwarningstinfotabortRRR%((s:/usr/lib/python2.6/vendor-packages/pkg/actions/hardlink.pytverifyfs( $ %( t__name__t __module__t__doc__t __slots__tnametgenerict _orderdictt ordinalityR R'R6(((s:/usr/lib/python2.6/vendor-packages/pkg/actions/hardlink.pyR)s   #( R9RR<RRR)tpkgRtpkg.client.api_errorsRt LinkActionR(((s:/usr/lib/python2.6/vendor-packages/pkg/actions/hardlink.pyts