%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3.9/site-packages/ansible/module_utils/facts/hardware/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3.9/site-packages/ansible/module_utils/facts/hardware/__pycache__/linux.cpython-39.pyc

a

�)g��@sddlmZmZmZeZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZmZdd
lmZmZm Z ddl!m"Z"ddl#m$Z$d
d�Z%Gdd�de�Z&Gdd�de�Z'dS)�)�absolute_import�division�print_functionN)�	cpu_count)�
ThreadPool)�to_text)�get_best_parsable_locale)�get_bin_path)�bytes_to_human)�Hardware�HardwareCollector)�get_file_content�get_file_lines�get_mount_size)�	iteritems)�timeoutcCsVzt�d�}Wnty"YdS0|D](}tj�d|�}|d|kr(|Sq(dS)N�/dev/disk/by-uuidz/dev/disk/by-uuid/z/dev/)�os�listdir�OSError�path�realpath)�partname�uuids�uuid�dev�r�M/usr/lib/python3.9/site-packages/ansible/module_utils/facts/hardware/linux.py�get_partition_uuid+s
rc@seZdZdZdZed�Ze�d�Ze	�
d�Ze	�
d�Ze	�
d�Z
d7d	d
�Zdd�Zd8d
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zedd��Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z d-d.�Z!d/d0�Z"d1d2�Z#d3d4�Z$d5d6�Z%dS)9�
LinuxHardwarea"
    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.
    �Linux)ZMemTotalZ	SwapTotalZMemFreeZSwapFree)ZBuffersZCachedZ
SwapCachedz.*\]z	.*bind.*"z
\\[0-9]{3}NcCs�i}t|j�}|||d�|j_|j|d�}|��}|��}|��}|��}|��}	i}
z|�	�}
Wn t
jy�|j�d�Yn0|�
|�|�
|�|�
|�|�
|�|�
|�|�
|	�|�
|
�|S)N)�LANG�LC_ALL�
LC_NUMERIC)�collected_factsz,No mount facts were gathered due to timeout.)r�moduleZrun_command_environ_update�
get_cpu_facts�get_memory_facts�
get_dmi_facts�get_device_facts�get_uptime_facts�
get_lvm_facts�get_mount_factsr�TimeoutError�warn�update)�selfr$Zhardware_facts�locale�	cpu_facts�memory_facts�	dmi_facts�device_facts�uptime_facts�	lvm_factsZmount_factsrrr�populateWs,







zLinuxHardware.populatecCs�i}t�dtj�s|Si}td�D]�}|�dd�}|d}||jvrr|d���d�d}t|�d|d|��<||j	vr"|d���d�d}t|�d||��<q"d|�
d�|�
d	�fvr�|d|d	|d
<d|�
d�|�
d	�|�
d�fv�r|d|d	|d|d
<d|�
d�|�
d
�fv�r@|d|d
|d<d|�
d�|�
d�fv�rn|d|d|d<|�
d�|�
d
�|�
d	�d�|�
d
�|�
d�d�|�
d�|�
d�|�
d�|�
d�d�d�|d<|S)Nz
/proc/meminfo�:�r� iz%s_mbZmemtotalZmemfreez	real:used�cachedZbuffersznocache:freeznocache:usedZ	swaptotalZswapfreez	swap:used)�total�used�free)r?r>Z
swapcached)r=r?r>r<)�realZnocacheZswapZ	memory_mb)r�access�R_OKr�split�ORIGINAL_MEMORY_FACTS�strip�int�lower�MEMORY_FACTS�get)r0r3Zmemstats�line�data�key�valrrrr'ssF

"����
zLinuxHardware.get_memory_factscCs�i}|p
i}d}d}d}d}d}d}i}	i}
d}d}z8tj�d�rHd}n"td�D]}
|
��dkrdd}qjqPWnty~Yn0t�dtj�s�|Sg|d<td�D�]h}
|
�d	d
�}|d��}z|d
��}Wnt	y�d}Yn0|�r|dk�rd
|v�rd}|dv�rpd|v�r"g|d<|d�
|�|dk�rB|d
7}|dk�rT|d
7}|dk�rf|d
7}|d
7}q�|dk�r�|}||	v�rd
|	|<q�|dk�r�|}||	v�rd
|
|<q�|dk�r�t|�|	|<q�|dk�r�t|�|
|<q�|dk�r�t|�|d<q�|dkr�t|�}q�|dk�r&||k�r&|}|�dd��
d��r>|}|�d�dk�r�|�rx||d<||d<d
|d<||d<�n |	�r�t|	�|d<n||d<t|	���}|�r�|d�r�|d|d<nd
|d<t|
���}|�r�|d|d|d<nd
|d|d<|d|d|d|d<||d<ztt�d��|d<Wn^t�y�ztd�}Wnt�yhYn*0|j�|�\}}}|dk�r�t|�|d<Yn0|S) NrFz	/proc/xenTz/sys/hypervisor/type�xenz
/proc/cpuinfo�	processorr9r:��flagsZvme)�
model nameZ	Processor�	vendor_idZcpuZVendorrOrSrRzphysical idzcore idz	cpu coresZsiblingsz# processorsZprocessor_coreszncpus activeZansible_architecture)ZarmvZaarchZppcZs390xZprocessor_countZprocessor_threads_per_coreZprocessor_vcpusZprocessor_nprocZnproc)rr�existsrrE�IOErrorrArBrC�
IndexError�appendrFrI�
startswith�len�list�values�sched_getaffinity�AttributeErrorr	�
ValueErrorr%�run_command)r0r$r2�iZvendor_id_occurrenceZmodel_name_occurrenceZprocessor_occurrenceZphysidZcoreidZsocketsZcoresrNZxen_paravirtrJrKrLrMZ
socket_valuesZcore_values�cmd�rc�outZ_errrrrr&�s�





















���
zLinuxHardware.get_cpu_factscCs�i}tj�d�r�gd�}ddddddd	d
ddd
dddddddd�}|��D]h\}}t|�}|dur�|dkr�z|t|�|d<Wq�ty�d||d<Yq�0q�|||<qJd||<qJn�|j�d�}ddddddd d!d"d#d$d%d&d'd(d)d*d+d�}|��D]�\}}	|du�r~|j�	d,||	f�\}
}}|
d-k�rtd.�
d/d0�|��D��}
zt�
|
�Wnt�yhd}
Yn0|
||<nd||<q�d||<q�|S)1z� learn dmi facts from system

        Try /sys first for dmi related facts.
        If that is not available, fall back to dmidecode executable z(/sys/devices/virtual/dmi/id/product_name)%�UnknownZOtherrdZDesktopzLow Profile Desktopz	Pizza Boxz
Mini TowerZTowerZPortableZLaptopZNotebookz	Hand HeldzDocking Stationz
All In OnezSub NotebookzSpace-savingz	Lunch BoxzMain Server ChassiszExpansion ChassiszSub ChassiszBus Expansion ChassiszPeripheral ChassiszRAID ChassiszRack Mount ChassiszSealed-case PCzMulti-systemZ
CompactPCIZAdvancedTCAZBladezBlade EnclosureZTabletZConvertibleZ
DetachablezIoT GatewayzEmbedded PCzMini PCzStick PCz%/sys/devices/virtual/dmi/id/bios_datez'/sys/devices/virtual/dmi/id/bios_vendorz(/sys/devices/virtual/dmi/id/bios_versionz+/sys/devices/virtual/dmi/id/board_asset_tagz&/sys/devices/virtual/dmi/id/board_namez(/sys/devices/virtual/dmi/id/board_serialz(/sys/devices/virtual/dmi/id/board_vendorz)/sys/devices/virtual/dmi/id/board_versionz-/sys/devices/virtual/dmi/id/chassis_asset_tagz*/sys/devices/virtual/dmi/id/chassis_serialz*/sys/devices/virtual/dmi/id/chassis_vendorz+/sys/devices/virtual/dmi/id/chassis_versionz(/sys/devices/virtual/dmi/id/chassis_typez*/sys/devices/virtual/dmi/id/product_serialz(/sys/devices/virtual/dmi/id/product_uuidz+/sys/devices/virtual/dmi/id/product_versionz&/sys/devices/virtual/dmi/id/sys_vendor)Z	bios_dateZbios_vendorZbios_versionZboard_asset_tagZ
board_nameZboard_serialZboard_vendorZ
board_versionZchassis_asset_tagZchassis_serialZchassis_vendorZchassis_version�form_factorZproduct_nameZproduct_serialZproduct_uuidZproduct_versionZ
system_vendorNrezunknown (%s)ZNAZ	dmidecodezbios-release-datezbios-vendorzbios-versionzbaseboard-asset-tagzbaseboard-product-namezbaseboard-serial-numberzbaseboard-manufacturerzbaseboard-versionzchassis-asset-tagzchassis-serial-numberzchassis-manufacturerzchassis-versionzchassis-typezsystem-product-namezsystem-serial-numberzsystem-uuidzsystem-versionzsystem-manufacturerz%s -s %srrPcSsg|]}|�d�s|�qS)�#)rX)�.0rJrrr�
<listcomp>��z/LinuxHardware.get_dmi_facts.<locals>.<listcomp>)rrrT�itemsr
rFrVr%r	r_�join�
splitlines�json�dumps�UnicodeDecodeError)r0r4ZFORM_FACTORZDMI_DICTrLrrKZdmi_bin�k�vrbrc�errZ	thisvaluerrrr(/s��
�





zLinuxHardware.get_dmi_factscCs.gd�}|g|}|j�|�\}}}|||fS)N)�--list�--noheadingsz--pathsz--outputz	NAME,UUIDz	--exclude�2�r%r_)r0�
lsblk_path�argsrarbrcrrrrr�
_run_lsblk�s
zLinuxHardware._run_lsblkcCs�i}|j�d�}|s|S|�|�\}}}|dkr4|S|��D]X}|sFq<|��}|�dd�}t|�dkrhq<|d��|d��}	}
|	|vr�q<|
||	<q<|S)NZlsblkrr:�)r%r	ryrlrE�rsplitrY)r0rrwrbrcrrZ
lsblk_linerJ�fieldsZdevice_namerrrr�_lsblk_uuid�s&
zLinuxHardware._lsblk_uuidc	Csdd}|j�d�}|s|S|dddd|g}|j�|�\}}}|dkrF|St�d|�}|r`|�d	�}|S)
N�N/AZudevadm�infoz--query�propertyz--namerzID_FS_UUID=(.*)
r:)r%r	r_�re�search�group)	r0�devicerZudevadm_pathrarbrcrr�mrrr�
_udevadm_uuid�s
zLinuxHardware._udevadm_uuidcCs2gd�}|g|}|jj|dd�\}}}|||fS)N)rsrtz--notruncate�surrogate_then_replace��errorsrv)r0�findmnt_pathrxrarbrcrrrrr�_run_findmnt�s
zLinuxHardware._run_findmntcCs|t�}|j�d�}|s|S|�|�\}}}|dkr6|S|��D]8}|��}t|�dkrXq>|j�|d�r>|�	|d�q>|S)NZfindmntrrzr:)
�setr%r	r�rlrCrY�
BIND_MOUNT_RE�match�add)r0�bind_mountsr�rbrcrrrJr|rrr�_find_bind_mounts�szLinuxHardware._find_bind_mountscCsTd}tj�|�sd}t|d�}g}|��D]$}|��}t|�dkrDq*|�|�q*|S)Nz	/etc/mtabz/proc/mountsrP�)rrrTr
rlrCrYrW)r0Z	mtab_fileZmtab�mtab_entriesrJr|rrr�
_mtab_entries�s
zLinuxHardware._mtab_entriescCstt|��dd�d��S)Nr:�)�chrrFr�)r�rrr�_replace_octal_escapes_helper�sz+LinuxHardware._replace_octal_escapes_helpercCs|j�|j|�S�N)�OCTAL_ESCAPE_RE�subr�)r0�valuerrr�_replace_octal_escapessz$LinuxHardware._replace_octal_escapescCs"t|�}|�||�|��}||fSr�)rrIr�)r0�mountr�r�
mount_sizerrrr�get_mount_infoszLinuxHardware.get_mount_infocs�g}���}���}���}i}ttt|�t��d�}t��d�pFt	j
}|D]�}�fdd�|D�}|d|d|d|df\}	}
}}|	�d	�s�d
|	vsL|dkr�qL|
|	||d�}
|
|vrԈj�
|�s�|
d
d7<|
|��j|
|	|f�t��|d�||
<qL|��|�rxt|�D�]R}
d}||
d}z�|���r�d}|���r�|��\}}|�rh||
d�|�|�ppd||
dd<ndt|���||
dd<n:t��||
dk�r�d}�j�d|
�d||
dd<Wnlt�yF}zRddl}d}d||
d<�j�d|
t|�t|�f��j�|���WYd}~n
d}~00|�r|�||
d�||
=�qt�d��qd|iS)N)Z	processesZGATHER_TIMEOUTcsg|]}��|��qSr)r�)rgZfield�r0rrrh riz1LinuxHardware.get_mount_facts.<locals>.<listcomp>rr:rz�)�/�\z:/Znone)r�r��fstype�optionsr�z,bind)r�extra�	timelimitFr�Trr~rz$Could not get extra information: %s.Znoter�z/Timeout exceeded when getting mount info for %sz.Could not get extra information due to timeoutz9Error prevented getting extra info for mount %s: [%s] %s.g�������?�mounts) r�r}r�r�minrYr�globalsrIrZDEFAULT_GATHER_TIMEOUTrX�MTAB_BIND_MOUNT_REr�Zapply_asyncr��time�closerZZreadyZ
successfulr/rr%r.�	Exception�	traceback�type�debug�
format_excrW�sleep)r0r�r�rr��resultsZpoolZmaxtimer|r�r�r�r�Z
mount_infoZdone�resr�r�er�rr�rr,sj$�
�

&
zLinuxHardware.get_mount_factsc	Cs�tj�|�siSzxt�t�}t�|�D]J}z.tj�t�tj�	||���}||�
|�Wq&tynYq&Yq&0q&tdd�t
|�D��WSty�iYS0dS)Ncss"|]\}}|tt|��fVqdSr��rZ�sorted�rgrprqrrr�	<genexpr>hriz1LinuxHardware.get_device_links.<locals>.<genexpr>)rrrT�collections�defaultdictr�r�basename�readlinkrkr�r�dictr)r0Zlink_dir�retval�entry�targetrrr�get_device_links]s
zLinuxHardware.get_device_linkscCsvzZt�t�}t�d�D],}|�d�}|d}|d}||�|�qtdd�t|�D��WStypiYS0dS)Nz/sys/block/*/slaves/*r�r��css"|]\}}|tt|��fVqdSr�r�r�rrrr�triz6LinuxHardware.get_all_device_owners.<locals>.<genexpr>)	r�r�r��globrCr�r�rr)r0r�r�elementsr�r�rrr�get_all_device_ownersls

z#LinuxHardware.get_all_device_ownerscCs$|�d�|�d�|�d�|��d�S)N�/dev/disk/by-idrz/dev/disk/by-label)Zidsr�labelsZmasters)r�r�r�rrr�get_all_device_linksxs
�z"LinuxHardware.get_all_device_linkscCsrg|d<tj�|d�rnt�|d�D]F}|�d�s6q&t|d|d�}|r^|d�|�q&|d�|�q&dS)NZholdersz/holderszdm-z	/holders/z/dm/name)rr�isdirrrXr
rW)r0Zblock_dev_dict�sysdir�folder�namerrr�get_holders�s
zLinuxHardware.get_holderscCsDd|}|j�||g�\}}}|dkr@t�d|�}|r@|�d�SdS)Nz/dev/%srz&(?:Unit serial|Serial) number:\s+(\w+)r:)r%r_r�r�r�)r0�sg_inq�blockr�rbZ	drivedatarr�serialrrr�_get_sg_inq_serial�sz LinuxHardware._get_sg_inq_serialc#	Cs�i}i|d<|j�d�}|r8|jj|dgdd�\}}}nd}zt�d�}Wnty`|YS0i}zt�d�}Wnty�Yn^0|D]V}	|	�d�r�zt�tj�	d|	��}
Wnty�Yq�Yn0|	d	d�|tj�
|
�<q�|��}||d
<|D�]�}d}
d}zt�tj�	d
|��}Wn<t�yZt�
�d}|jtjk�rR|}d}nYq�Yn0tj�	d|�}|dk�r�t�|�D]}d|v�r~d}
�q��q~i}|
|d<i|d<t|�D]\}}|�|g�|d|<�q�tj�
|�}dD]}t|d|�||<�q�|j�d�}d|}|�r8|�||�}|�rN||d<nt|�}|�rN||d<dD]\}}t||�||<�qR||v�r�|||d<i|d<t�|�D]�}t�d|d|�}|�r�i}|�d�}|d|}i|d<t|�D]\}}|�|g�|d|<�q�t|dd�|d<t|dd�|d<t|d �|d!<|d!�sNt|d"d#�|d!<tt|d�d$�|d%<t|�|d&<|�||�||d|<�q�t|d'�|d(<d)|d*<t|d+�} | du�r�t�d,| �}|�r�|�d-�|d*<t|d�|d<|d�s�d|d<t|d �|d!<|d!�s*t|d"d#�|d!<tt|d�d$�|d%<d)|d.<t�d/|�}|�r�|�r�|�d�}!t�|!�}"t�d0|"d1|tj�}|�r�|�d�|d.<|�||�||d|<q�|S)2NZdevices�lspciz-Dr�r�z
/sys/blockr�zwwn-r�Zdevice_linksr:rz/sys/block/r��virtual�links)ZvendorZmodelZsas_addressZsas_device_handlez/device/r�z/sys/block/%s/device/serialr�))Z	removablez
/removable)Zsupport_discardz/queue/discard_granularityZwwnZ
partitions�(z[p]?\d+)r�z/start�startz/sizeZsectorsz/queue/logical_block_sizeZ
sectorsizez/queue/hw_sector_sizeig�@�sizerz/queue/rotationalZ
rotationalrPZscheduler_modez/queue/schedulerz
.*?(\[(.*)\])rz�hostz2.+/([a-f0-9]{4}:[a-f0-9]{2}:[0|1][a-f0-9]\.[0-7])/�^z\s(.*)$)r%r	r_rrrrXr�rrkr�r��sys�exc_info�errno�EINVALrrIr
r�r�r�r�r
�floatrr�r��escape�	MULTILINE)#r0r5r�rbZpcidatarrZ
block_devsZdevs_wwnZ
devs_by_idZ	link_nameZwwn_linkr�r�r�Zsysfs_no_linksrr�r�r��dZ	link_typeZlink_valuesZdisknamerLr�Zserial_pathr��testr��partrZpart_sysdirZ	schedulerZpciidZdidrrrr)�s�
















zLinuxHardware.get_device_factscCs2i}td�}|r.|�d�d}tt|��|d<|S)Nz/proc/uptimer;rZuptime_seconds)r
rCrFr�)r0r6Zuptime_file_contentZuptime_seconds_stringrrrr*szLinuxHardware.get_uptime_factsc	CsVd}|}|�|�rR|j�dd�}d}|j�d||f�\}}}|dkrR||��}|S)Nz/dev/dm-ZdmsetupTz/dev/mapper/z"%s info -C --noheadings -o name %sr)rXr%r	r_�rstrip)	r0Z	dm_deviceZ	dm_prefixZ
mapper_deviceZdmsetup_cmdZ
mapper_prefixrbZdm_namerrrrr�_find_mapper_device_name's
z&LinuxHardware._find_mapper_device_namecCs�ddi}t��dk�r�|j�d��r�d}|j�d�}i}|r�|j�d||f�\}}}|��D]8}|���d�}	|	d|	d	|	d
|	dd�||	d<q^|j�d
�}
i}|
r�|j�d|
|f�\}}}|��D],}
|
���d�}	|	d|	dd�||	d<q�|j�d�}i}|�rp|j�d||f�\}}}|��D]:}|���d�}	|	d|	d|	dd�||�|	d�<�q4|||d�|d<|S)z> Get LVM Facts if running as root and lvm utils are available Zlvmr~r�vgsz/--noheadings --nosuffix --units g --separator ,z%s %s�,������rzr:)�size_g�free_gZnum_lvsZnum_pvs�lvsr�)r��vg�pvsr�r�)r�r�r�)r�r�r�)	r�getuidr%r	r_rlrErCr�)r0r7Zlvm_util_optionsZvgs_pathr�rbZvg_linesrrZvg_linerjZlvs_pathr�Zlv_linesZlv_lineZpvs_pathr�Zpv_linesZpv_linerrrr+2sB��zLinuxHardware.get_lvm_facts)N)N)&�__name__�
__module__�__qualname__�__doc__�platform�	frozensetrD�unionrHr��compiler�r�r�r8r'r&r(ryr}r�r�r�r��staticmethodr�r�r�r,r�r�r�r�r�r)r*r�r+rrrrr9sB





.
c

L	rc@seZdZdZeZedg�ZdS)�LinuxHardwareCollectorr r�N)r�r�r�Z	_platformrZ_fact_classr�Zrequired_factsrrrrr�asr�)(Z
__future__rrrr�Z
__metaclass__r�r�r�rmrr�r�r�ZmultiprocessingrZmultiprocessing.poolrZansible.module_utils._textrZ"ansible.module_utils.common.localerZ#ansible.module_utils.common.processr	Z+ansible.module_utils.common.text.formattersr
Z(ansible.module_utils.facts.hardware.baserrZ ansible.module_utils.facts.utilsr
rrZansible.module_utils.sixrZansible.module_utils.factsrrrr�rrrr�<module>s8.

Zerion Mini Shell 1.0