Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/module_utils/facts/hardware/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyc

�
�Udac@`sMddlmZmZmZeZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZddlmZddlmZddlmZmZdd	lmZmZmZdd
lm Z d�Z!defd
��YZ"defd��YZ#dS(i(tabsolute_importtdivisiontprint_functionN(t	cpu_count(t
ThreadPool(tto_text(t	iteritems(tbytes_to_human(tHardwaretHardwareCollector(tget_file_contenttget_file_linestget_mount_size(ttimeoutcC`sgytjd�}Wntk
r'dSXx8|D]0}tjjd|�}|d|kr/|Sq/WdS(Ns/dev/disk/by-uuids/dev/disk/by-uuid/s/dev/(tostlistdirtOSErrortpathtrealpathtNone(tpartnametuuidstuuidtdev((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_partition_uuid)s

t
LinuxHardwarecB`s.eZdZdZed"�Zejd#�Zej	d	�Z
ej	d
�Zej	d�Zd$d�Zd
�Zd$d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zed��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$RS(%s"
    Linux-specific subclass of Hardware.  Defines memory and CPU facts:
    - memfree_mb
    - memtotal_mb
    - swapfree_mb
    - swaptotal_mb
    - processor (a list)
    - processor_cores
    - processor_count

    In addition, it also defines number of DMI facts and device facts.
    tLinuxtMemTotalt	SwapTotaltMemFreetSwapFreetBufferstCachedt
SwapCacheds.*\]s	.*bind.*"s
\\[0-9]{3}c
C`si}idd6dd6dd6|j_|jd|�}|j�}|j�}|j�}|j�}|j�}i}	y|j�}	Wnt	j
k
r�nX|j|�|j|�|j|�|j|�|j|�|j|�|j|	�|S(NtCtLANGtLC_ALLt
LC_NUMERICtcollected_facts(tmoduletrun_command_environ_updatet
get_cpu_factstget_memory_factst
get_dmi_factstget_device_factstget_uptime_factst
get_lvm_factstget_mount_factsR
tTimeoutErrortupdate(
tselfR&thardware_factst	cpu_factstmemory_factst	dmi_factstdevice_factstuptime_factst	lvm_factstmount_facts((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytpopulateUs*!






cC`s�i}tjdtj�s|Si}x�td�D]�}|jdd�}|d}||jkr�|dj�jd�d}t|�d|d|j�<n||j	kr2|dj�jd�d}t|�d||j�<q2q2Wd|jd�|jd	�fkr+|d|d	|d
<nd|jd�|jd	�|jd�fkr||d|d	|d|d
<nd|jd�|jd
�fkr�|d|d
|d<nd|jd�|jd�fkr�|d|d|d<nii|jd�d6|jd
�d6|jd	�d6d6i|jd
�d6|jd�d6d6i|jd�d6|jd�d6|jd�d6|jd�d6d6|d<|S(Ns
/proc/meminfot:iit is%s_mbtmemtotaltmemfrees	real:usedtcachedtbufferssnocache:freesnocache:usedt	swaptotaltswapfrees	swap:usedttotaltusedtfreetrealtnocachet
swapcachedtswapt	memory_mb(RtaccesstR_OKRtsplittORIGINAL_MEMORY_FACTStstriptinttlowertMEMORY_FACTSRtget(R2R5tmemstatstlinetdatatkeytval((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR*psF
!!$0!$$c	C`s#i}|pi}d}d}d}d}d}d}i}	i}
t}t}yRtjjd�rlt}n3x0td�D]"}
|
j�dkr�t}nPqyWWntk
r�nXtjdtj	�s�|Sg|d<x�td�D]�}
|
j
dd�}|dj�}y|dj�}Wntk
r9d	}nX|rg|d
krgd|krdt}qdqgn|d kr�d|kr�g|d<n|dj|�|dkr�|d7}n|dkr�|d7}n|dkr�|d7}n|d7}q�|dkr#|}||	kr�d|	|<q�q�|dkrQ|}||	kr�d|
|<q�q�|dkrpt
|�|	|<q�|dkr�t
|�|
|<q�|dkr�t
|�|d<q�|dkr�t
|�}q�q�W|dkr�||kr�|}q�n|jdd	�jd!�r|}n|jd�dkr|r[||d<||d<d|d<||d<q|	rtt|	�|d<n
||d<t|	j��}|r�|dr�|d|d<n
d|d<t|
j��}|r�|d|d|d<nd|d|d<|d|d|d|d<n|S("Nis	/proc/xens/sys/hypervisor/typetxens
/proc/cpuinfot	processorR<ittflagstvmes
model namet	Processort	vendor_idtcputVendorsphysical idscore ids	cpu corestsiblingss# processorstprocessor_coressncpus activetansible_architecturetarmvtaarchtppcts390xtprocessor_counttprocessor_threads_per_coretprocessor_vcpus(s
model nameR_R`RaRbR[(RfRgRh(tFalseRRtexiststTrueRRPtIOErrorRLRMRNt
IndexErrortappendRQRTt
startswithtlentlisttvalues(R2R&R4titvendor_id_occurrencetmodel_name_occurrencetprocessor_occurencetphysidtcoreidtsocketstcoresRZtxen_paravirtRVRWRXRYt
socket_valuestcore_values((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR)�s�			








	





!c%C`s�i}tjjd�rcddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%g%}id&d'6d(d)6d*d+6dd,6d-d.6d/d06d1d26d3d46}x�|j�D]�\}}t|�}|dDk	rR|d+krEy|t|�|d+<WqOtk
rAd5||d+<qOXq\|||<q�d6||<q�Wn0|jj	d7�}id8d'6d9d)6d:d+6d;d,6d<d.6d=d06d>d26d?d46}x�|j�D]�\}}	|dDk	r�|jj
d@||	f�\}
}}|
dAkrxdBjg|j�D]}
|
j
dC�s|
^q�}ytj|�Wntk
rjd6}nX|||<q�d6||<q�d6||<q�W|S(Es� learn dmi facts from system

        Try /sys first for dmi related facts.
        If that is not available, fall back to dmidecode executable s(/sys/devices/virtual/dmi/id/product_nametUnknowntOthertDesktopsLow Profile Desktops	Pizza Boxs
Mini TowertTowertPortabletLaptoptNotebooks	Hand HeldsDocking Stations
All In OnesSub NotebooksSpace-savings	Lunch BoxsMain Server ChassissExpansion ChassissSub ChassissBus Expansion ChassissPeripheral ChassissRAID ChassissRack Mount ChassissSealed-case PCsMulti-systemt
CompactPCItAdvancedTCAtBladesBlade EnclosuretTablettConvertiblet
DetachablesIoT GatewaysEmbedded PCsMini PCsStick PCs%/sys/devices/virtual/dmi/id/bios_datet	bios_dates(/sys/devices/virtual/dmi/id/bios_versiontbios_versions(/sys/devices/virtual/dmi/id/chassis_typetform_factortproduct_names*/sys/devices/virtual/dmi/id/product_serialtproduct_serials(/sys/devices/virtual/dmi/id/product_uuidtproduct_uuids+/sys/devices/virtual/dmi/id/product_versiontproduct_versions&/sys/devices/virtual/dmi/id/sys_vendort
system_vendorsunknown (%s)tNAt	dmidecodesbios-release-datesbios-versionschassis-typessystem-product-namessystem-serial-numberssystem-uuidssystem-versionssystem-manufacturers%s -s %siR\t#N(RRRntitemsR
RRQRqR'tget_bin_pathtrun_commandtjoint
splitlinesRstjsontdumpstUnicodeDecodeError(R2R6tFORM_FACTORtDMI_DICTRXRRWtdmi_bintktvtrctoutterrRVt	thisvalue((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR+sl			



%7



cC`sPdddddddg}|g|}|jj|�\}}}|||fS(Ns--lists--noheadingss--pathss--outputs	NAME,UUIDs	--excludet2(R'R�(R2t
lsblk_pathtargstcmdR�R�R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt
_run_lsblkgs
cC`s�i}|jjd�}|s"|S|j|�\}}}|dkrJ|Sx�|j�D]�}|siqWn|j�}|jdd�}t|�dkr�qWn|dj�|dj�}	}
|	|kr�qWn|
||	<qWW|S(Ntlsblkiii(R'R�R�R�RPtrsplitRRt(R2RR�R�R�R�t
lsblk_lineRVtfieldstdevice_nameR((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_lsblk_uuidqs&!c	C`s�d}|jjd�}|s"|S|dddd|g}|jj|�\}}}|dkre|Stjd|�}|r�|jd	�}n|S(
NsN/Atudevadmtinfos--querytpropertys--nameisID_FS_UUID=(.*)
i(R'R�R�tretsearchtgroup(	R2tdeviceRtudevadm_pathR�R�R�R�tm((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt
_udevadm_uuid�scC`sJdddg}|g|}|jj|dd�\}}}|||fS(Ns--lists--noheadingss--notruncateterrorstsurrogate_then_replace(R'R�(R2tfindmnt_pathR�R�R�R�R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_run_findmnt�s
!cC`s�t�}|jjd�}|s%|S|j|�\}}}|dkrM|Sxb|j�D]T}|j�}t|�dkr�qZn|jj|d�rZ|j	|d�qZqZW|S(Ntfindmntiii(
tsetR'R�R�R�RNRtt
BIND_MOUNT_REtmatchtadd(R2tbind_mountsR�R�R�R�RVR�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_find_bind_mounts�s	cC`s�d}tjj|�s!d}nt|d�}g}xE|j�D]7}|j�}t|�dkrmqCn|j|�qCW|S(Ns	/etc/mtabs/proc/mountsR\i(RRRnR
R�RNRtRr(R2t	mtab_filetmtabtmtab_entriesRVR�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt
_mtab_entries�s	cC`stt|j�dd��S(Nii(tchrRQR�(R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_replace_octal_escapes_helper�scC`s|jj|j|�S(N(tOCTAL_ESCAPE_REtsubR�(R2tvalue((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_replace_octal_escapes�scC`s1t|�}|j||j|��}||fS(N(RRTR�(R2tmountR�Rt
mount_sizeR((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_mount_info�sc
C`s�g}|j�}|j�}|j�}i}tdtt|�t���}t�jd�pit	j
}x#|D]}g|D]}	|j|	�^q�}|d|d|d|df\}
}}}
|
jd�r�d|
kss|d	kr�qsni|d
6|
d6|d6|
d
6}||krM|j
j|
�sM|d
cd7<qMni|d6|j|j||
|f�d6tj�|d6||<qsW|j�xG|r�x:|D]%}||d}|j�r�|j�r#|j�\}}|r||dj|�n|pd||dd<nBt|j��}|jjd||f�d|||dd<|j||d�||=Pq�tj�||dkr�d||dd<|j||d�||=Pq�q�Wtjd�q�Wi|d6S(Nt	processestGATHER_TIMEOUTiiiit/s:/tnoneR�R�tfstypetoptionss,bindR�textrat	timelimitsN/ARs4Error prevented getting extra info for mount %s: %s.s$Could not get extra information: %s.tnotes4Timed out while attempting to get extra information.g�������?tmounts(R�R�R�RtminRtRtglobalsRTR
tDEFAULT_GATHER_TIMEOUTR�RstMTAB_BIND_MOUNT_RER�tapply_asyncR�ttimetclosetreadyt
successfulR1RR'twarnRrtsleep(R2R�R�RR�tresultstpooltmaxtimeR�tfieldR�R�R�R�t
mount_infotresR�Rterrmsg((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR/�sZ!
".(



	
cC`s�tjj|�siSy�tjt�}xmtj|�D]\}y?tjjtjtjj	||���}||j
|�Wq8tk
r�q8q8Xq8Wtd�t
|�D��SWntk
r�iSXdS(Ncs`s-|]#\}}|tt|��fVqdS(N(Rutsorted(t.0R�R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pys	<genexpr>5s(RRRntcollectionstdefaultdictR�RtbasenametreadlinkR�R�RtdictR(R2tlink_dirtretvaltentryttarget((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_device_links*s*

cC`s�y{tjt�}xKtjd�D]:}|jd�}|d}|d}||j|�q"Wtd�t|�D��SWntk
r�iSXdS(Ns/sys/block/*/slaves/*R�iics`s-|]#\}}|tt|��fVqdS(N(RuR�(R�R�R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pys	<genexpr>As(	R�R�R�tglobRNR�R�RR(R2R�RtelementsR�R�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_all_device_owners9s


cC`sAi|jd�d6|jd�d6|jd�d6|j�d6S(Ns/dev/disk/by-idtidss/dev/disk/by-uuidRs/dev/disk/by-labeltlabelstmasters(R�R(R2((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_all_device_linksEs
cC`s�g|d<tjj|d�r�xvtj|d�D]^}|jd�sOq4nt|d|d�}|r�|dj|�q4|dj|�q4WndS(Ntholderss/holderssdm-s	/holders/s/dm/name(RRtisdirRRsR
Rr(R2tblock_dev_dicttsysdirtfoldertname((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pytget_holdersMs
c$C`smi}i|d<|jjd�}|rR|jj|dgdd�\}}}nd}ytjd�}Wntk
r|SXi}ytjd�}Wntk
r�nwXxs|D]k}	|	jd�r�y"tjtj	j
d|	��}
Wntk
rq�nX|	d	|tj	j|
�<q�q�W|j�}||d
<x-|D]%}d}
d}y"tjtj	j
d
|��}WnEtk
r�t
j�d}|jtjkr@|}d}q�q@nXtj	j
d|�}|dkrx0tj|�D]}d|kr�d}
Pq�q�Wni}|
|d<i|d<x4t|�D]&\}}|j|g�|d|<q7Wtj	j|�}x2ddddgD]}t|d|�||<q�W|jjd�}|r+d|}|jj||g�\}}}|dkr+tjd|�}|r(|jd�|d<q(q+nx.d9d:gD] \}}t||�||<q8W||kry|||d<ni|d<xPtj|�D]?}tjd |d!|�}|r�i}|jd�}|d"|} i|d<x4t|�D]&\}}|j|g�|d|<q�Wt| d#d�|d$<t| d%d�|d&<t| d'�|d(<|d(s�t| d)d*�|d(<ntt|d&�d+�|d,<t|�|d-<|j|| �||d|<q�q�Wt|d.�|d/<d0|d1<t|d2�}!|!dk	rAtjd3|!�}|rA|jd4�|d1<qAnt|d%�|d&<|d&sld|d&<nt|d'�|d(<|d(s�t|d)d*�|d(<ntt|d&�d+�|d,<d0|d5<tjd6|�}|rG|rG|jd�}"tj|"�}#tjd7|#d8|tj�}|rG|jd�|d5<qGn|j||�||d|<q@W|S(;Ntdevicestlspcis-DR�R�s
/sys/blocks/dev/disk/by-idswwn-itdevice_linksiis/sys/block/R�tvirtualtlinkstvendortmodeltsas_addresstsas_device_handles/device/tsg_inqs/dev/%ssUnit serial number:\s+(\w+)tserialt	removables
/removabletsupport_discards/queue/discard_granularitytwwnt
partitionst(s[p]?\d+)R�s/starttstarts/sizetsectorss/queue/logical_block_sizet
sectorsizes/queue/hw_sector_sizeig�@tsizeRs/queue/rotationalt
rotationalR\tscheduler_modes/queue/schedulers
.*?(\[(.*)\])ithosts2.+/([a-f0-9]{4}:[a-f0-9]{2}:[0|1][a-f0-9]\.[0-7])/t^s\s(.*)$(Rs
/removable(Rs/queue/discard_granularity(R'R�R�RRRRRsR�RR�R�Rtsystexc_infoterrnotEINVALRRTR
R�R�R�RtfloatRR
R�tescapet	MULTILINE($R2R7RR�tpcidataR�t
block_devstdevs_wwnt
devs_by_idt	link_nametwwn_linkRtblockRtsysfs_no_linksRteR
Rtdt	link_typetlink_valuestdisknameRXRR�t	drivedataRttestR�tpartRtpart_sysdirt	schedulertpciidtdid((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR,Ys�
*


"
!

"
	


!







 cC`sHi}td�}|rD|jd�d}tt|��|d<n|S(Ns/proc/uptimeR=ituptime_seconds(R
RNRQR*(R2R8tuptime_file_contenttuptime_seconds_string((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR-�sc	C`s�d}|}|j|�r}|jjdt�}d}|jjd||f�\}}}|dkr}||j�}q}n|S(Ns/dev/dm-tdmsetups/dev/mapper/s"%s info -C --noheadings -o name %si(RsR'R�RoR�trstrip(	R2t	dm_devicet	dm_prefixt
mapper_devicetdmsetup_cmdt
mapper_prefixR�tdm_nameR�((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt_find_mapper_device_name�s%cC`sBi}tj�dkr>|jjd�r>d}|jjd�}i}|r�|jjd||f�\}}}xf|j�D]U}|j�jd�}	i|	dd6|	dd	6|	d
d6|	dd
6||	d<q�Wn|jjd�}
i}|
rr|jjd|
|f�\}}}xP|j�D]?}
|
j�jd�}	i|	dd6|	dd6||	d<q,Wn|jjd�}i}|r|jjd||f�\}}}xd|j�D]S}|j�jd�}	i|	dd6|	dd	6|	dd6||j|	d�<q�Wni|d6|d6|d6|d<n|S(s> Get LVM Facts if running as root and lvm utils are available itvgss/--noheadings --nosuffix --units g --separator ,s%s %st,i����tsize_gi����tfree_gitnum_lvsitnum_pvstlvsitvgtpvsiitlvm(	RtgetuidR'R�R�R�RPRNRL(R2R9tlvm_util_optionstvgs_pathRMR�tvg_linesR�tvg_lineR�tlvs_pathRStlv_linestlv_linetpvs_pathRUtpv_linestpv_line((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR.�s@$%%+%&"(RRRR(RR R!N(%t__name__t
__module__t__doc__tplatformt	frozensetROtunionRSR�tcompileR�R�R�RR;R*R)R+R�R�R�R�R�R�tstaticmethodR�R�R�R/R�RRR
R,R-RLR.(((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyR7s:	.z	O	
								D					�			tLinuxHardwareCollectorcB`s#eZdZeZedg�ZRS(RRe(RbRct	_platformRt_fact_classR�trequired_facts(((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyRj"s($t
__future__RRRttypet
__metaclass__R�R(RR�RR�R&R�tmultiprocessingRtmultiprocessing.poolRtansible.module_utils._textRtansible.module_utils.sixRt+ansible.module_utils.common.text.formattersRt(ansible.module_utils.facts.hardware.baseRR	t ansible.module_utils.facts.utilsR
RRtansible.module_utils.factsR
RRRj(((sM/usr/lib/python2.7/site-packages/ansible/module_utils/facts/hardware/linux.pyt<module>s,	���

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]