ó 'KXc@sšddlmZddlZddlZddlZddlmZddlmZdZ ej e ƒZ ej deƒZ dZ ejeƒZd„Zd „Zd „Zd „ZdS( i˙˙˙˙(t whitespaceN(t type_utils(tutils&^([x]{0,1}[shv]d[a-z][0-9]*|sr[0-9]+)$s[%s]+s /etc/fstabcCsM|dkrtSx6d D].}|j|ƒr|jdƒdkrtSqWtS( Ntamitroottswapt ephemeraltebst:i˙˙˙˙(RsrootR(RR(tTruet startswithtfindtFalse(tnametenumname((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_mounts.pyt is_mdname's   $cCsĐ|jd|ƒ|}|dkr8d}|jdƒntj|ƒ\}}t|ƒr§|}||ƒ}|sudS|jdƒs‘d|}n|jd||ƒntj|ƒrĂd|}nt||ƒS(Ns+Attempting to determine the real name of %sRt ephemeral0s2Adjusted mount option from ephemeral to ephemeral0t/s/dev/%ssMapped metadata name %s to %s( tdebugRtexpand_dotted_devnameRtNoneR t SHORTNAMEtmatchtdevnode_for_dev_part(t startnamet transformertlogtdevnametblockdevtparttorig((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_mounts.pytsanitize_devname3s"     cCsżddddddg}|jd|ƒ}ddd|dddgd d d d ddgg}g}d |kr}|d }nx-tt|ƒƒD]}t||tƒsÓ|jd |dtj||ƒƒqnt ||dƒ} t | |j |ƒ} | dkr|j d| ƒqn| | krD|j d| | fƒn| ||d %ss+Ignoring nonexistant default named mount %sschanged default device %s => %ss-Not including %s, already previously includeds%Skipping non-existent device named %ss!No modifications to fstab needed.scomment=cloudconfigs%s,%siRs i˙˙˙˙s%s s tswapons-as&Activating swap via 'swapon -a' faileds Failed to make '%s' config-mounttmounts'Activating mounts via 'mount -a' failed(R's-a(R(s-a(Rtgettrangetlent isinstancetlisttwarnRtobj_nametstrRtdevice_name_to_deviceRtappendR R R tjoinRt load_filet FSTAB_PATHt splitlinestWStsplitR textendt write_filetsubptlogexct ensure_dir(t_nametcfgtcloudRt_argstdefvalstdefmntstcfgmnttitstartt sanitizedtjtdefmntt cfgmnt_hastcfgmtactlisttxtcommenttcc_linestneedswaptdirstlinet fstab_linesttokstcontentstd((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_mounts.pythandleNsÄ     $              cCs]tjj|ƒsd Stjj|ƒ}d|}tjj|ƒsXtjd|ƒd S|d|}|d k rt|ƒ}n|d kr¤|d|dg}n1|dkrĎ|d||d|g}ng}xR|D]J}tjj|ƒsúqÜnd tjj|ƒ}tjj|ƒrÜ|SqÜW|d ksB|dkrF|Stjd ||ƒd S( s> Find the name of the partition. While this might seem rather straight forward, its not since some devices are '' while others are 'p'. For example, /dev/xvda3 on EC2 will present as /dev/xvda3p1 for the first partition since /dev/xvda3 is a block device. s /sys/block/%ss'did not find entry for %s in /sys/blockRt1tp1R!s%ssp%ss/dev/%ss'Did not fine partition %s for device %sN(tostpathtexistsRtbasenametLOGRR0(tdevicet partitiont short_nametsys_patht sys_long_pathtvalid_mappingstcdisktdev_path((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_mounts.pyRÖs4      (tstringRtloggingtos.pathRZtret cloudinitRRtSHORTNAME_FILTERtcompileRR7R5t getLoggert__name__R^RRRWR(((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_mounts.pyts     ˆ