ó 'KXc @sQddlZddlZddlZddlZddlmZddlmZddlm Z eZ idd6dgd6e d 6Z d „Z e d d d d d d ddƒZejeƒZd„Zdefd„ƒYZdefd„ƒYZdefd„ƒYZd„Zd„Zd„Zd„Zd„ZdefdeffZdS(iÿÿÿÿN(tlog(t PER_ALWAYS(tutiltautotmodet/tdevicestignore_growroot_disabledcKstdd|ƒS(NtEnum((ttype(tenums((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pytenum'stSKIPPEDtCHANGEDtNOCHANGEtFAILEDc Csåd}|dkr`x3tD]+\}}|ƒ}|jƒr|}PqqW|sátdƒ‚qáni}xtD]\}}|||us cCsDtj|tjƒ}ztj|dtjƒSWdtj|ƒXdS(Ni(R&RCtO_RDONLYtlseektSEEK_ENDRD(tfilenametfd((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pyR4˜sc CsWtjj|ƒ}tjj|ƒ}d|}tjƒdjdƒrutjd|ƒ}|j dƒ|j dƒfStjj |ƒs t d||fƒ‚ntjj |dƒ}tjj |ƒsÚt d |ƒ‚ntj|ƒjƒ}tjj|ƒ}tjj|ƒ}tjtjj |d ƒƒjƒ} tjjd | ƒ} | |fS( Ns/sys/class/block/%stplatformtFreeBSDs^(/dev/.+)p([0-9])$iis%s had no syspath (%s)t partitions%s not a partitiontdevs /dev/block/%s(R&tpathtrealpathtbasenameRt system_infot startswithR*R+tgrouptexistsRtjoinRt load_filetrstriptdirname( tdevpathtrpathtbnametsyspathtmtptpathtptnumtrsyspatht disksyspatht diskmajmint diskdevpath((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pytdevice_part_info s" $cCsC|jdƒr|Stj|ƒ}|s7tdƒ‚n|dSdS(Ns/dev/s,Could not determine device of '%s' % dev_enti(RRRtget_mount_infoR(tdeventtresult((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pyt devent2devÆs c Csg}xú|D]ò}yt|ƒ}Wn3tk rX}|j|tjd|fƒq nXytj|ƒ}Wn9tk r§}|j|tjd||ffƒq nXtj|j ƒ rñtj |j ƒ rñ|j|tjd|fƒq nyt |ƒ\}}Wn?t tfk rH}|j|tjd||ffƒq nXyz|j |||ƒ\} } | | kr™|j|tjd||ffƒn)|j|tjd||| | ffƒWq tk rþ}|j|tjd|||ffƒq Xq W|S(Nsunable to convert to device: %ssstat of '%s' failed: %ssdevice '%s' not a block devicesdevice_part_info(%s) failed: %ssno change necessary (%s, %s)schanged (%s, %s) from %s to %ss'failed to resize: disk=%s, ptnum=%s: %s(RhRtappendtRESIZER R&tstattOSErrortS_ISBLKtst_modetS_ISCHRRdRR=RR RR( RRtinfoRftblockdevR<tstatrettdiskR_toldtnew((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pytresize_devicesÐsL  c Cs|jjdkrdSd|kr@|jdtƒt|dR4RdRhRvRR(((sI/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_growpart.pyts2         "#  & 1 .