%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/grains/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/grains/core.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZddlZddlZddlZyddlZeZWnek
r�eZnXdgZeaddl	mZeddd	d
ddd
ddddf7Zyddl	mZd�ZWn!ek
rvddlmZnXddl Z!ddl"Z!ddl#Z!ddl$Z!ddl%Z!ddl&Z!ddl'Z!ddl(Z!ddl)Z!ddl*m+Z+ddl,m-Z-e!j.j	j/�r$ddl0Z!nddl1Z!ddl2Z!ie!j3j4j5d6e!j3j4j6d6e!j3j4j7d6e!j3j8j9d6e!j3j8j:d6Z;e
j<e=�Z>eZ?e!j.j	j/�ry:ddl@Z@ddlAZ!ddlBZBddlCZ!eZ?Wnek
re>jDd�nXneZEeFed�r6eZEniaGd�ZHd�ZId�ZJd �ZKd!�ZLd"�ZMd#�ZNd$�ZOd%�ZPd&�ZQd'�ZRd(�ZSd)�ZTd*�ZUd+�ZVd,�ZWd-�ZXd.�ZYd/�ZZd0�Z[d1�Z\d2�Z]d3�Z^d4�Z_d5�Z`ejad6ejb�Zcid7d86d9d:6d;d<6d=d6d>d?6d@dA6dBdC6dDdE6dFdG6dHdI6dJdK6dLdM6dLdN6dOdP6dOdQ6dBdR6dSdT6dUdV6dWdX6dYdZ6d[d\6d[d]6d^d_6d`da6dbdc6ddd6dedf6dgdh6didj6ZdiAd>dk6d7dB6d7dD6d7dF6d7dl6d7dm6d7dn6d7do6d7dH6d7dO6d7dp6d7dL6d7dq6d7dr6d7ds6d7de6d7dt6dudv6dwdx6d>dg6dwdy6dzd{6d|d}6d~d6d~d�6d~d�6d~d�6d~d�6d~db6d~d�6d~d�6d~d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d=d;6d=d[6d=d`6d7dJ6d>d�6d>d�6d>d�6d>d�6d>d�6d>d^6d7dS6d>d@6d>d�6d>d�6d>d�6d>dj6d>d�6d>d�6dWdW6d>di6dddd6d>d�6d9d�6d�d�6d>d�6Zeejad��Zfd��Zgd��Zhd��Zid��Zjd��Zkd��Zld��Zmd��Znd��Zod��Zpd��Zqd��Zrd��Zsd��Ztd��Zud��Zvd��Zwd��Zxd��Zyd��Zzd��Z{d��Z|d��Z}d��Z~d��Zd��Z�d��Z�d��Z�d��Z�dS(�u�
The static grains, these are the core, or built in grains.

When grains are loaded they are not loaded in the same way that modules are
loaded, grain functions are detected and executed, the functions MUST
return a dict which will be applied to the main grains dict. This module
will always be executed first, so that any grains loaded here in the core
module can be overwritten just by returning dict keys with the same value
as those returned here
i(tabsolute_importtprint_functiontunicode_literalsN(tEACCEStEPERMu*(t_supported_distsuarchumageiaumeegouvmwareubluewhite64uslamd64uovsusystemumintuoracleuvoid(tlinux_distributioncK@s.tj��tjd�t|�SWdQXdS(Nuignore(twarningstcatch_warningstsimplefiltert_deprecated_linux_distribution(tkwargs((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyR0s

(tsix(trangeucmd.runucmd.retcodeucmd.run_allusmbios.recordsu
smbios.getuDUnable to import Python wmi module, some core grains will be missinguunamecC@s�i}dtjkrQyttjd�|d<WqQtk
rMd|d<qQXntjjjdddddd	�jd
�|d<|S(u8
    Return some CPU information on Windows minions
    uNUMBER_OF_PROCESSORSunum_cpusithiveuHKEY_LOCAL_MACHINEtkeyu.HARDWARE\DESCRIPTION\System\CentralProcessor\0tvnameuProcessorNameStringuvdatau	cpu_model(	tostenvirontintt
ValueErrortsalttutilstwin_regt
read_valuetget(tgrains((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_windows_cpudatals
cC@s�i}d}tjj|�rDtjjj|d��	}x�|D]�}|jd�}t|�dksmq@n|dj	�}|dj	�}|dkr�t
|�d|d<q@|dkr�||d	<q@|d
kr�|j�|d<q@|dkr|j�|d<q@|d
kr@|jd�d|d	<d|d<q@q@WWdQXnd|kr]d|d<nd	|krvd|d	<nd|kr�g|d<n|S(u7
    Return some CPU information for Linux minions
    u
/proc/cpuinfouru:iiu	processorunum_cpusu
model nameu	cpu_modeluflagsu	cpu_flagsuFeaturesu	Processoru-NuUnknown(RtpathtisfileRRtfilestfopentsplittlentstripR(Rtcpuinfot_fptlinetcompsRtval((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_linux_cpudata�s8




cC@sGtjdt�tkriStjdt�tkr8iStjjjd�}|sdtj	d�iSddddd	d
ddg}d}g}yt
ddj|��}i}t}|j�}|j
d�x�|D]�}|dkr"|jdd�j�|kr|j
|�ni}q�ntjd|�re|jdd�\}	}
|
j�||	j�<q�t}tj	d|�q�W|r�tjd�nWntk
r�nXg}xp|D]h}|dj�j�}
d}x$|D]}||
kr�|}Pq�q�W|j
i|d6|dd6�q�Wi}t|�|d<||d<|S( uZ
    num_gpus: int
    gpus:
      - vendor: nvidia|amd|ati|...
        model: string
    uenable_lspciuenable_gpu_grainsulspciuTThe `lspci` binary is not available on the system. GPU grains will not be available.unvidiauamduatiuintelucirrus logicuvmwareumatroxuaspeeduvga compatible controlleru
3d controllerucmd.runu{0} -vmmuuClassu
^\w+:\s+.*u:iuUnexpected lspci output: '%s'u�Error loading grains, unexpected linux_gpu_data output, check that you have a valid shell configured and permissions to run lspci commanduVendoruunknownuvendoruDeviceumodelunum_gpusugpus(uvga compatible controlleru
3d controller(t__opts__RtTruetFalseRRRtwhichtlogtdebugt__salt__tformatt
splitlinestappendtlowertretmatchR R"twarningtOSErrorR!(tlspcit
known_vendorstgpu_classestdevst	lspci_outtcur_devterrort
lspci_listR%RR'tgpustgputvendor_stringstvendortnameR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_linux_gpu_data�s^




#
cC@s�ddddddddg}g}y�td	d
�}x||j�D]n}xe|D]]}tjdj|�|tj�}|rQ|ji|jd�d
6|jd�d6�qQqQWqDWWntk
r�nXi}t	|�|d<||d<|S(uZ
    num_gpus: int
    gpus:
      - vendor: nvidia|amd|ati|...
        model: string
    unvidiauamduatiuintelucirrus logicuvmwareumatroxuaspeeducmd.runupcictl pci0 listu[0-9:]+ ({0}) (.+) \(VGA .+\)iuvendoriumodelunum_gpusugpus(
R/R1R4R5R0t
IGNORECASER2tgroupR7R!(R9R@t
pcictl_outR%RCtvendor_matchR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_netbsd_gpu_datas$
<

c	C@s�g}y�tdd�}x�|j�D]r}|jd�\}}}|j�dkr&|jd�\}}}|j�}|ji|d6|d6�q&q&WWntk
r�nXi}t|�|d<||d	<|S(
uZ
    num_gpus: int
    gpus:
      - vendor: nvidia|amd|ati|...
        model: string
    ucmd.runu"system_profiler SPDisplaysDataTypeu: u
Chipset Modelu uvendorumodelunum_gpusugpus(R/R1t	partitionR"R3R2R7R!(	R@RHR%t	fieldnamet_tfieldvalRCtmodelR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_osx_gpudata"s&

cC@s"tjjjd�}tjjjd�}i}|rv|jidj|�d6dj|�d6dj|�d6�n|r�|d	d
kr�dj|�|d<n|d	dkr�d
j|�|d<dj|�|d<ntgtj|�D]"\}}|t	d|�f^q��}d|krUt
|dtj�rU|djd�|d<n|d	dkr�g|d<xet	dd�j
�D]J}tjd|�}|r�|jd�jd�}	|dj|	�q�q�Wn|d	dkr�tjjd�r�g|d<tjjjdd���}
t}x�|
D]�}|jd�rLt}q+n|r+|jd�sePnd|kr�|jd�}|jd�}
|dkr�|
dkr�||d|
!jd�}	|dj|	�q�q�q+q+WWdQXnyt|d�|d<Wntk
rd|d<nX|S( u5
    Return CPU information for BSD-like systems
    usysctluarchu{0} -n hw.ncpuunum_cpusu{0} -n hw.machineucpuarchu{0} -n hw.modelu	cpu_modelukerneluOpenBSDu{0} -suDarwinu{0} -n machdep.cpu.brand_stringu{0} -n machdep.cpu.featuresu	cpu_flagsucmd.runu uNetBSDucpuctl identify 0u#cpu[0-9]:\ features[0-9]?\ .+<(.+)>iu,uFreeBSDu/var/run/dmesg.booturuCPU: uFeaturesu<u>iN(RRRR,tupdateR0tdictRt	iteritemsR/t
isinstancetstring_typesR R1R4R5RGtextendRRRRR+t
startswithR*tfindRR(tosdatatsysctltarchtcmdstktvRR%t	cpu_matchtflagR$tcpu_heretstarttend((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_bsd_cpudata>sZ		>"
"

'
cC@si}g|d<tdd�|d<d}ttd|dt�j��|d<d}xLtd|�j�D]4}tjd	|�}|rm|jd
�|d<qmqmWd}x_td|�j�D]G}tjd
|�}|r�|jd�j�}|dj|�q�q�W|S(u=
    Return the CPU information for Solaris-like systems
    u	cpu_flagsucmd.runu
isainfo -kucpuarchu/usr/sbin/psrinfo 2>/dev/nulltpython_shellunum_cpusukstat -p cpu_info:*:*:brandu(\w+:\d+:\w+\d+:\w+)\s+(.+)iu	cpu_modelu
isainfo -n -vu^\s+(.+)i(	R/R!R*R1R4R5RGR RV(Rtpsrinfot
kstat_infoR%R5tisainfot	cpu_flags((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_sunos_cpudata�s"	
&cC@s�i}tjjjd�}|r�tddj|��tj}x�ddddfD]�\}}x�g|gD]}tj	|�^qmD][}|j
|�}|r�t|j��dkr�|j
d�j�jd
d�||<q�q�WqTWn
tjd�|S(u0
    Return CPU information for AIX systems
    uprtconfucmd.runu{0}ucpuarchu"(?im)^\s*Processor\s+Type:\s+(\S+)u	cpu_flagsu%(?im)^\s*Processor\s+Version:\s+(\S+)u	cpu_modelu2(?im)^\s*Processor\s+Implementation\s+Mode:\s+(.*)unum_cpusu*(?im)^\s*Number\s+Of\s+Processors:\s+(\S+)iu'uu,The 'prtconf' binary was not found in $PATH.(ucpuarchu"(?im)^\s*Processor\s+Type:\s+(\S+)(u	cpu_flagsu%(?im)^\s*Processor\s+Version:\s+(\S+)(u	cpu_modelu2(?im)^\s*Processor\s+Implementation\s+Mode:\s+(.*)(unum_cpusu*(?im)^\s*Number\s+Of\s+Processors:\s+(\S+)(RRRR,R/R0RtlinesepR4tcompiletsearchR!tgroupsRGR"treplaceR-R>(Rtcmdtdatatdestt	regstringtrtregextres((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_aix_cpudata�s	 ,3
cC@sidd6dd6}d}tjj|�rtjjj|d���}x�|D]�}|jd�jd�}t	|�dks�qNn|dj
�d	kr�t|dj�d�d
|d<n|dj
�dkrNt|dj�d�d
|d<qNqNWWdQXn|S(
u>
    Return the memory information for Linux-like systems
    iu	mem_totalu
swap_totalu
/proc/meminfouru
u:iuMemTotaliu	SwapTotalN(RRRRRRRtrstripR R!R"R(RtmeminfotifileR%R&((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_linux_memdata�s
%2cC@s
idd6dd6}tjjjd�}|rtddj|��}tddj|��j�djd	d
�}|jd�r�d}n0|jd
�r�d}n|jd�r�d}nt	|d �|}t
|�dd|d<t
|�dd|d<n|S(u<
    Return the memory information for BSD-like systems
    iu	mem_totalu
swap_totalusysctlucmd.runu{0} -n hw.memsizeu{0} -n vm.swapusageiu,u.uKi
uMiuGii����iiii@(RRRR,R/R0R RotendswithtfloatR(RRZtmemt
swap_totalt_power((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_osx_memdata�s/			cC@s<idd6dd6}tjjjd�}|r8tddj|��}|ddkr�|jd	�r�tdd
j|��}nt|�dd|d<|ddkrtjjjd
�}tddj|��}|dkr�d}q|jd�d}ntddj|��}t|�dd|d<n|S(u<
    Return the memory information for BSD-like systems
    iu	mem_totalu
swap_totalusysctlucmd.runu{0} -n hw.physmemukerneluNetBSDu-u{0} -n hw.physmem64iuOpenBSDuswapctlu{0} -skuno swap devices configuredu iu{0} -n vm.swap_total(uOpenBSDuNetBSD(	RRRR,R/R0RWRR (RYRRZR~tswapctlt	swap_dataR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_bsd_memdata�s 	c	C@s/idd6dd6}d}x|td|dt�j�D]^}|jd�}|dj�dkr7|d	j�d
kr7t|dj��|d<q7q7Wtjjj	d�}tdd
j
|��j�}y:t|dd �}t|dd �}||d}Wntk
r d}nX||d<|S(u>
    Return the memory information for SunOS-like systems
    iu	mem_totalu
swap_totalu/usr/sbin/prtconf 2>/dev/nullucmd.runReu uMemoryiusize:iuswapu{0} -si����i����i����iN(
R/R*R1R R"RRRRR,R0RtNone(	RtprtconfR%R&tswap_cmdR�t
swap_availt	swap_usedR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_sunos_memdata�s #,!


cC@svidd6dd6}tjjjd�}|r�x�td|dt�j�D]~}g|j�jd�D]}|rh|^qh}t	|�dkrLd	|dkrLd
|dkrLt
|d�|d<PqLqLWn
tjd�tjjjd
�}|retddj
|��j�}y&t
|d�t
|d�d}Wntk
rWd}nX||d<n
tjd�|S(u7
    Return the memory information for AIX systems
    iu	mem_totalu
swap_totaluprtconfucmd.runReu iuMemoryuSizeiu,The 'prtconf' binary was not found in $PATH.uswapu{0} -si����i����iu)The 'swap' binary was not found in $PATH.N(RRRR,R/R*R1R"R R!RR-R>R0RR�(RR�R%txR&R�R�R((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_aix_memdatas&#.2
&



cC@s5idd6}tj�d}t|d�|d<|S(u;
    Return the memory information for Windows systems
    iu	mem_totalu	TotalPhysiii(twin32apitGlobalMemoryStatusExR(Rt	tot_bytes((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_windows_memdata3s
cC@s�idd6}|ddkr0|jt��n�|ddkrV|jt|��n�|ddkry|jt��no|dd	kr�|jt��nL|dd
kr�|jt��n)|ddkr�tr�|jt��n|S(
u4
    Gather information about the system memory
    iu	mem_totalukerneluLinuxuFreeBSDuOpenBSDuNetBSDuDarwinuSunOSuAIXuWindows(uFreeBSDuOpenBSDuNetBSD(RQR{R�R�R�R�tHAS_WMIR�(RYR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_memdata?s
cC@s�i}tjjjd�}|r�tddj|��tj}tj	d�g}xh|D]P}|j
|�}|rZt|j��dkrZ|j
d�j�|d<PqZqZWn
tjd�|S(u9
    Parse the output of lsattr -El sys0 for os_uuid
    ulsattrucmd.runu{0} -El sys0u(?im)^\s*os_uuid\s+(\S+)\s+(.*)iu
machine_idu+The 'lsattr' binary was not found in $PATH.(RRRR,R/R0RRkR4RlRmR!RnRGR"R-R>(RRpRqtuuid_regexesRuRv((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_aix_get_machine_idVs 

cC@s�t�}|ddkr|Sd|d<|jdd�}|dkrNd}n|jdd�}|dkrud}nd|kr�d	|d<nd
|kr�d	|d<n�d|kr�d	|d<d|d<n�d
|kr�d	|d<d|d<n�d|krd|d<nzd|krd|d<nad|krDd|krDd|d<n<d|kr]d|d<n#d|kr�d	|d<d|d<n|S(uR
    Returns what type of virtual hardware is under the hood, kvm or physical
    ukerneluWindowsuphysicaluvirtualumanufactureruuproductnameuQEMUukvmuBochsuoVirtuvirtual_subtypeuRHEV Hypervisorurhevu
VirtualBoxuVMware Virtual PlatformuVMwareu	MicrosoftuVirtual Machineu	VirtualPCuParallels Softwareu	ParallelsuCloudStack KVM Hypervisoru
cloudstackN(RRRR�(RYRtmanufacturertproductname((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_windows_virtualisB	
		











c!@s�idd6}d�}dddg}tjjj�ri|d|kritjjjd�ridg}qintjdt�tkr�t	jj
d	�r�|d
g7}q�n|d|kr�d�}ntr�|ddkr�dt	j�kr�d
|d<|St
�}x]|D]U}g}|ddkr3d}dg}n�|ddkr�tjjjd�}|r�ytddj|��}Wn6tjjk
r�tjj�r�|j|�q�q�X|djd�r�d}q�d}q�d}ntjjj|�}	|	sqndj|	dj|��}	yytd|	�}|ddkr�tjj�r�tjjj�szd|	kszd|	kr�wn|j|�nwnWnQtjjk
r�tjj�rtjjj�r�qn|j|�qqnX|d}
|dkr�|
j�}d|kr&d|d<nd|kr?d|d<nd|krXd |d<nd!|krqd |d<nd"|kr�d#|d<nPq|dkr|
d�kr�|
|d<PqZd|
kr�d |d<PqZd,|
kr�d-|d<PqZd.|
krd/|d<PqZd+|
krZd/|d<PqZq|dkr�y|
j�d0}
Wntk
rRnX|
d�krm|
|d<PqZd|
kr�d |d<PqZd|
kr�d|d<PqZd1|
krZd2|d<PqZq|dkr3d3|
kr�d%|d<nd4|
kr�d%|d<nd5|
krd%|d<nd6|
kr.d%|d<nd7|
krGd8|d<n�d9|
krjd%|d<d:|d;<n�d<|
kr�d%|d<d=|d;<n�d#|
kr�d#|d<n�d |
kr�d |d<npd>|
kr�d?|
kr�d-|d<nKd@|
kr�d|d<n2dA|
krd%|d<ndB|
kr/d%|d<nPq|d
kr�|
j�}d|krdd |d<nKd"|kr}d#|d<n2d$|kr�d%|d<ndC|kr�d%|d<nPq|dkr@|
j�jdD�d}d|kr�d |d<nKd"|kr
d#|d<n2d$|kr#d%|d<ndE|kr<d%|d<nPq|dkrdF|d<PqqWd�}
t	jj}tjjjdH�}|d|
kr�t	jjdI�r�y;t	jdJ�}t	jdK�}||kr�d)|d;<nWq�ttfk
r�q�Xn|dL�rft	jjdM�r*dN|d<qft	jjdO�rfdP|d<|j d
�|j d�qfnt	jjdQ�r/	tjj!j"dQ���}t#j$dR�}x�|D]|}|j%|j&dD��}|r�t'|j(�d�dkr�dP|d<q�|r�t'|j(�d�dkr�dN|d<q�q�WWdSQXn|dT�sS	|dU�sS	|dV�r�
t	jjdW�rr	dX|d;<n�|jdYdZ�d[kr�	d\|d;<n�t	jjd]�r
t	j)d]t	j*�r
tjj!j"d]��0}d^|j+�kr�	d_|d;<n
dX|d;<WdSQXnW|dU�r_
d`tdadb�j�kr=
d_|d;<q_
t	jjdc�r_
d_|d;<q_
ndd|jd;dZ�j�kr�
d'|d<q�
nt	jjde�r[y�tjj!j"dedf��}|j+��WdSQXdg�kr�
d/|d;<n[dh�krdi|d;<nBdj�krdk|d;<n)t,�fdl�d�D��rCdp|d;<nWq[tk
rWq[Xnt	jjdq�r�tjj!j"dqdf��&}dr|j+�kr�d%|d<nWdSQXnt	jjds�r�y�tjj!j"dsdf���}tjj-j.|j+�dtdu�}
d#|
krd#|d<nxdv|
kr=d%|d<d=|d;<nUdw|
kr`d%|d<d:|d;<n2dx|
krydy|d<nd7|
kr�d8|d<nWdSQXWq�tk
r�q�Xq�n|ddzkr�tjjjd{�}|r�
tdad|j|��}tdad}j|��}|j/d �r,
d |d<n|j/d#�rH
d#|d<n|j/d~�rz
dj||�|d;<d'|d<n|j/d�r�
|j/d��r�
d-|d<n|j/d��r�
d�|d<n|j/d��r�
d%|d<q�
n|r�tdad�j|��}tdad�j|��}tdad�j|��}d8|krJd8|d<n|d�krcd�|d;<ndr|krd%|d<qq�nA|dd�kr�d�|kr�|d�d�kr�d%|d<n|d�d�kr�d�|d<q�q�n�|ddkr�|ddFkrvg}xYd�D]Q}d�j|	|�}tdd�j|��}|dd�kr|j0|�qqW|r�||d;<q�q�tjjjd��}|r�tdad�j|��} | d�kr�d
|d<q�n|d��r�d
|d<q�n�|dd�kr�|r�drtdad�j|��kr$d%|d<q�d�tdad�j|��krPd_|d<q�d tdad�j|��kr|d |d<q�tdad�j|��d'kr�t	jjd��r�dX|d;<q�q�q�nx|D]}tj1d�|�q�W|S(�uR
    Returns what type of virtual hardware is under the hood, kvm or physical
    uphysicaluvirtualuAIXusystemd-detect-virtu	virt-whatu	dmidecodeukerneluenable_lspciu
/proc/bus/pciulspciuLinuxuBrandZ virtual linuxuzoneuDarwinusystem_profileruSPDisplaysDataTypeuSunOSuvirtinfoucmd.run_allu{0} -austdoutu
not supporteduprtdiagu{0} {1}u uretcodeiu0x1ab8u	Parallelsu	parallelsuvmwareuVMwareu0x15adu
virtualboxu
VirtualBoxuqemuukvmuoracleuxenubochsuchrootuumlusystemd-nspawnu	microsoftu	VirtualPCulxcuLXCi����uhypervuHyperVuVendor: QEMUuManufacturer: QEMUu
Vendor: BochsuManufacturer: BochsuBHYVEubhyveuManufacturer: oVirtuovirtuvirtual_subtypeuProduct Name: RHEV Hypervisorurhevu: MicrosoftuVirtual MachineuParallels SoftwareuManufacturer: GoogleuVendor: SeaBIOSuvirtiou
ujoyent smartdc hvmuLDOMuHP-UXusysctlu/procu/u/proc/1/root/.u/proc/vzu/proc/vz/versionuopenvzhnu/proc/vz/veinfouopenvzveu/proc/self/statusu^envID:\s+(\d+)$Nu
/proc/sys/xenu/sys/bus/xenu	/proc/xenu/proc/xen/xsd_kvauXen Dom0uproductnameuuHVM domUuXen HVM DomUu/proc/xen/capabilitiesu	control_duXen PV DomUuxen:ucmd.runudmesgu/sys/bus/xen/drivers/xenconsoleudomu/proc/1/cgroupuru:/lxc/u:/kubepods/u
kubernetesu:/libpod_parent/ulibpodc3@s|]}|�kVqdS(N((t.0R�(tfhr_contents(s4/usr/lib/python2.7/site-packages/salt/grains/core.pys	<genexpr>�su:/system.slice/dockeru	:/docker/u:/docker-ce/uDockeru
/proc/cpuinfouQEMU Virtual CPUu(/sys/devices/virtual/dmi/id/product_nameterrorsureplaceuRHEV Hypervisoru
oVirt NodeuGoogleugceuFreeBSDukenvu{0} smbios.system.productu{0} smbios.system.makeruXenu	MicrosoftuVirtualu	OpenStackuBochsu{0} hw.hv_vendoru{0} hw.modelu{0} -n security.jail.jailedu1ujailuOpenBSDumanufactureruQEMUuRed HatuJoyentuvmmucontroluiourootuserviceu'{0} -c current get -H -o value {1}-roleu{0}utrueuzonenameuglobalu/.SUNWnativeuNetBSDu{0} -n machdep.cpu_branduinvalidu{0} -n machdep.xen.suspendu {0} -n machdep.dmi.system-vendoru{0} -n machdep.idle-mechanismu/var/run/xenconsoled.piduiAlthough '%s' was found in path, the current user cannot execute it. Grains output might not be accurate.(uAIX((uqemuukvmuoracleuxenubochsuchrootuumlusystemd-nspawn(ukvmuqemuuumluxenulxc(uLinuxuHP-UX(u:/system.slice/dockeru	:/docker/u:/docker-ce/(uQEMUuRed HatuJoyent(ucontroluiourootuservice(2RRtplatformt
is_windowsRR,R)RR*Rtexistst	HAS_UNAMEtunametsetR/R0t
exceptionstCommandExecutionErrorR-tis_logging_configuredtaddR|tjoinR3R1t
IndexErrorR tisdirtstattIOErrorR7RtdiscardRRR4RlR5RxRRntaccesstR_OKtreadtanytstringutilst
to_unicodeRWR2tinfo(!RYRt	skip_cmdst_cmdstfailed_commandstcommandtargstvirtinfotretRptoutputt	macoutputROtchoicesR�RZt	self_roott	init_roottstatus_filetvz_reR%tvz_matchtfhrtkenvtproducttmakert	hv_vendortjailtrolestroletsubtype_cmdtzonenametzone((R�s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_virtual�sn	
#	(
	
			*












































"
"








!























c
C@s.i}yd|dkr|SWntk
r2|SXy�i}x]d,D]U}tjjjdj|�d��,}tjjj|j�j	��||<WdQXqCWd	j|d|d|d�|d
<|d|d|dg|d<Wnt
ttfk
r�nXidd
6dd6dd6dd6dd6dd6dd6dd6dd6dd6d d!6d"d#6d$d%6d&d'6}y�tjjjd(d��(}tjjj|j�j	��}WdQXg}xDtj
|�D]3\}}	t|d)�d|>@r�|j|	�q�q�W||d*<||d+<Wnt
ttfk
r)nX|S(-ul
    Returns detailed hypervisor information from sysfs
    Currently this seems to be used only by Xen
    uxenuvirtualumajoruminoruextrau/sys/hypervisor/version/{}urNu{}.{}{}uvirtual_hv_versionuvirtual_hv_version_infouwritable_page_tablesiuwritable_descriptor_tablesiuauto_translated_physmapiusupervisor_mode_kerneliupae_pgdir_above_4gbiummu_pt_update_preserve_adiugnttab_map_avail_bitsiuhvm_callback_vectoriuhvm_safe_pvclocki	u	hvm_pirqsi
udom0iugrant_map_identityiumemory_op_vnode_supportedi
uARM_SMCCC_supportediu#/sys/hypervisor/properties/featuresiuvirtual_hv_featuresuvirtual_hv_features_list(umajoruminoruextra(tKeyErrorRRRRR0R�R�R�R"R�R7RRSRR2(
RYRtversiontfnR�txen_feature_tabletfeaturestenabled_featurestbittfeat((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_virtual_hv,sR

$/%#

'
cC@s�i}d}|d|kr)d|d<n�|dd	krFd
|d<n�|ddkrcd|d<ni|jd
d�dkr�d|d<nD|ddkr�d|d<n'|ddkr�d|d<n
d|d<|S(u
    Return the ps grain
    uFreeBSDuNetBSDuOpenBSDuMacOSuosu	ps auxwwwupsu	os_familyuSolarisu/usr/ucb/ps auxwwwuWindowsutasklist.exeuvirtualuuopenvzhnu�ps -fH -p $(grep -l "^envID:[[:space:]]*0\$" /proc/[0-9]*/status | sed -e "s=/proc/\([0-9]*\)/.*=\1=")  | awk '{ $7=""; print }'uAIXu/usr/bin/ps auxwwu	NILinuxRTu!ps -o user,pid,ppid,tty,time,commu	ps -efHww(uFreeBSDuNetBSDuOpenBSDuMacOS(R(RYRtbsd_choices((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_pses 






c	C@sw|dks.|s.tjd|dtj�r2dSd|kr�xItdd�D]8}ytj|d|�|SWqNtk
r�qNqNXqNWtj	d||j
dd	��dStjd
|�rtjd|�s�tjd|�s�tjd
|dtj�rsdSnntjd|�r9tjd|dtj�rsdSn:tjd|dtj�sotjd|dtj�rsdS|S(u!
    Clean out well-known bogus values.
    If it isn't clean (for example has value 'None'), return None.
    Otherwise, return the original value.

    NOTE: This logic also exists in the smbios module. This function is
          for use when not using smbios to retrieve the value.
    unonetflagsuuuidiiR�u!HW %s value %s is an invalid UUIDu
u userial|part|versionu^[0]+$u[0]?1234567[8]?[9]?[0]?u2sernum|part[_-]?number|specified|filled|applicableuasset|manufactureru3manufacturer|to be filled|available|asset|^no(ne|t)uto be filleduRun(known|specified)|no(t|ne)? (asset|provided|defined|available|present|specified)N(R�R4R5RFR
tuuidtUUIDRR-ttraceRoRm(RR'tuuidver((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_clean_value�s2	
	cC@s%d}d}d|kr}xM|jd�D]<}tjd|�rI|}ntjd|�r(|}q(q(Wdj||�}n;x2|jd�D]!}tjd|�r�|}q�q�W|}|dkr!tj�}id	d
6dd6d
d6dd6dd6}|dkr!||kr!||}q!n|S(uF
    helper function for getting the osrelease grain
    :return:
    uUnknownuuServeru u\d+u^R\d+$u{0}Server{1}u^(\d+(\.\d+)?)|Thin|Vista|XP$u
2008ServeruVistau2008ServerR2u7u
2012Serveru8u2012ServerR2u8.1u
2016Serveru10i(uUnknown(R R4R5R0R�trelease(tcaptiontproduct_typeR�R�titemt
os_releasetserver((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_windows_os_release_grain�s.	



c

C@szts
iStjjj��Xtj�}|j�d}|j�d}|j	�d}|j
�d}id*d6d*d6}y.|j�d}|j
|d<|j|d<Wntk
r�tjd�nXtj�}tjjj�}tjjj�}	d*}
|ddkr7djdtj|d�g�}
ntd|jd	|j�}itd
|j�d
6td|�d6td|j�d6td
|�d
6td|
�d6td|j�d6td|j�d6td|j �d6td|j!j"��d6td|j�d6td|j�d6td|j#�d6td|	d�d6td|	d�d6itd|d�d6td|d�d6d6}d|jkr�d|d<n�d |jkr�d!|d<n�d"|j kr�d"|d<n�d#|j krd#|d<npd$|jkr8d$|d<d%|j krpd%|d&<qpn8d'|j krTd'|d<nd(|jkrpd)|d<nWd*QX|S(+u8
    Use the platform module for as much as we can.
    iuproductuserialu-Motherboard info not available on this systemuServicePackMajoruuSPR�R�u
kernelreleaseu
kernelversionu	osversionu	osreleaseu
osservicepackuosmanufacturerumanufactureruproductnameubiosversionuserialnumberu
osfullnameutimezoneu
windowsdomainuDomainuwindowsdomaintypeu
DomainTypeumotherboard.productnameumotherboard.serialnumberumotherboarduVRTUALuHyperVuvirtualuA M Iu	VirtualPCuVMwareu
VirtualBoxuXenuHVM domUuvirtual_subtypeu	OpenStackuAMAZONuEC2N($R�RRtwinapitComtwmitWMItWin32_ComputerSystemtWin32_OperatingSystemt
Win32_BIOStWin32_TimeZoneR�tWin32_BaseBoardtProducttSerialNumberR�R-R.R�R�t
win_osinfotget_os_version_infot
get_join_infoR�Rt	text_typeR�tCaptiontProductTypeR�tVersiontManufacturertModeltNameR"tDescription(
twmi_ct
systeminfotosinfotbiosinfottimeinfotmotherboardtmotherboardinfotkernel_versionR�tnet_infotservice_packR�R((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_windows_platform_data�sv



%





cC@sd}td|�}i}x�|j�D]�}|jd�\}}}|j�dkrud}t||�||<n|j�dkr�d}t||�||<n|j�dkr�d	}t||�||<n|j�d
kr)d}t||�||<q)q)W|S(u�
    Additional data for macOS systems
    Returns: A dictionary containing values for the following:
        - model_name
        - boot_rom_version
        - smc_version
        - system_serialnumber
    u"system_profiler SPHardwareDataTypeucmd.runu: u
Model Nameu
model_nameuBoot ROM Versionuboot_rom_versionuSMC Version (system)usmc_versionuSerial Number (system)usystem_serialnumber(R/R1RKR"R�(RpthardwareRR%t
field_nameRMt	field_valR((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_osx_platform_dataGs$	cC@sitjdd�d6S(u
    Return the id
    uidu(R)R(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytid_fsu\W(?:gnu/)?linuxuRedHatu
redhatenteuGentoou
gentoobaseuArch ARMuarcharmuArchuDebianudebianuRaspbianuraspbianuFedorau
fedoraremiuChapeauuchapeauuKororaukororauAmazonu	amazonamiuALTualtuOELu
enterpriseu
oracleservu
CloudLinuxu
cloudserveu
cloudlinuxupidorauScientificLinuxu
scientificuSynologyusynologyu	NILinuxRTunilrtuPokyupokyuManjaroumanjarou
manjarolinu
Univentionu
univentionuAntergosuantergosuSUSEuslesuVoiduRESu
slesexpanduMintu	linuxmintuKDE neonuneonuUbuntuuFedBerryuCentOSuGoOSeu
ScientificuOVSuXCPuXCP-ngu	XenServeruSangomauMandrivauMandrakeuVMwareuESXiu	VMwareESXu	BluewhiteuBluewhite64u	SlackwareuSlamd64uSuseuSLESuSUSE Enterprise ServeruSUSE  Enterprise ServeruSLEDuopenSUSEu
openSUSE LeapuopenSUSE TumbleweeduSLES_SAPuSolarisuSmartOSuOmniOSuOpenIndiana DevelopmentuOpenIndianauOpenSolaris DevelopmentuOpenSolarisuOracle SolarisuTrisqueluGCELuLinarou
elementary OSu
elementaryuDevuanuantiXuKaliuCumulusuDeepinuIDMSuFuntoouAIXuTurnKeyuM^(DISTRIB_(?:ID|RELEASE|CODENAME|DESCRIPTION))=(?:'|")?([\w\s\.\-_]+)(?:'|")?cC@s�xLdD]D}y$tddj||��dkSWqtjjk
rJqXqWy1ttddj|��dj��d	kSWntjjk
r�tSXd
S(uK
    Does a binary exist in linux (depends on which, type, or whereis)
    uwhichutype -apucmd.retcodeu{0} {1}iucmd.run_alluwhereis -b {0}ustdoutiN(uwhichutype -ap(R/R0RR�R�R!R R+(tbinaryt
search_cmd((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_linux_bin_exists�s

cC@ststjjj�antS(uK
    Provide a dict of the connected interfaces and their ip addresses
    (t_INTERFACESRRtnetworkt
interfaces(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_get_interfaces�sc
C@s�i}y�tjd�tjjjd��w}xm|D]e}y,tj|jd��j	�d \}}Wnt
k
rzq5X|j�|dj|j��<q5WWdQXWn)t
tfk
r�}tjd|�nX|S(Nu$Attempting to parse /etc/lsb-releaseu/etc/lsb-releaseu
iulsb_{0}u$Failed to parse /etc/lsb-release: %s(R-R�RRRRt
_LSB_REGEXR5RxRntAttributeErrorR0R3R�R7(R�RzR%Rtvaluetexc((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_parse_lsb_releases

,
-cG@s�i}x�|D]�}y�tjjj|��p}tjd�}xW|D]O}|j|j��}|rDtjdd|j	d��||j	d�<qDqDWWdQXPWq
t
tfk
r�q
Xq
W|S(u�
    Parse os-release and return a parameter dictionary

    See http://www.freedesktop.org/software/systemd/man/os-release.html
    for specification of the file format.
    u^([\w]+)=(?:'|")?(.*?)(?:'|")?$u
\\([$"\'\\`])u\1iiN(RRRRR4RlR5R"tsubRGR�R7(tos_release_filesR�tfilenameRzRuR%R5((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_parse_os_releases

2cC@sidd6dd6dd6}i}|p*djd�}t|�d	kr�|d
dkr�|djd
�r�|dd!\|d<|d<|d<t|�dkr�|dnd|d<|j|dd�|d<q�t|�dkr^|ddkr^g|dd!D]}|dkr|nd^q\|d<|d<|d<d|d<|j|d�|d<q�t|�dkr�t|�dkr�|ddkr�g|dd!D]}|dkr�|nd^q�\|d<|d<|d<|d<|j|d�|d<q�n|S(u�
    Parse CPE_NAME data from the os-release

    Info: https://csrc.nist.gov/projects/security-content-automation-protocol/scap-specifications/cpe

    Note: cpe:2.3:part:vendor:product:version:update:edition:lang:sw_edition:target_sw:target_hw:other
          however some OS's do not have the full 13 elements, for example:
                CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"

    :param cpe:
    :return:
    uoperating systemuouhardwareuhuapplicationuauu:iiucpeiu/iiuvendoruproductuversionuphaseupartiu2.3iu*ii
N(R R!RWR�R(tcpetpartR�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt_parse_cpe_name4s&

""&"G
4Nc6C@s+idd6gd6}tj�\|d<|d<|d<|d<|d<}tjjj�r�d	|d<d	|d<d	|d<d	|d
<d	|d<d	|d<d	|d
<n�tjjj�r�d|d<d|d<|jt|��|jt��|jt	��|jt
|��|jt|��d|d
kr`|d
jdd�}|dj
d�|d<n|d
jd�}x<t|�D].\}}|j�s�q�nt|�||<q�Wt|�|d<djd|dd|d
�|d<d|d<|Stjjj�rftd�rwtjd�i|d<tdd�dk|dd<td�rwtdd�j�|dd <qwntd!�r�td"�r�tjd#�i|d$<tdd%�j�}|dj�d|d$d&<|d|d$d'<nd(|d<tjd)�ytjd*�d$|d<Wn�ttfk
r�y@tjjjd+��%}|j �j!d,d-�j�}Wd.QXWnttfk
r�q�Xytjj"j#|d�}Wn$t$k
r�d.}tj&d/�nX|d.k	r+|j'd0�r+d�}	t(d4�|	D��d}
yt)d5}Wnt*k
r5d6}nXy�tjjj|d7���}d8}
|j |�j+�}x�|r�|
|}xI|	D]A}||kr�t,j-r�|j.d9�}n||d<d8}Pq�q�W||
}
|j |�j+�}qrWWd.QXWq�ttfk
r'}tj/d:||�q�Xq�tjj"j#d;�|krSd;|d<q�tjj"j#d<�|kr{d<|d<q�tjj"j#d=�|kr�d=|d<q�|d>gkr�d>|d<q�d?|kr�d>|d<q�tj0d@d-j1|��nXy�tjdA�dd.l2}|j3�}xZt,j4|�D]I\}}|j+�}dBj|j5dC�r`dDndC|�}|||<q-WWn0t6t7fk
r�tjdE�|jt8��|j9dFdD�j+�j5dG�r�dH|d
<q�dI|kr�tjdJ�t:dKdL�}|r�dM|kr-|dMj�|dI<ndN|krJ|dN|dO<ndP|krg|dP|dQ<n`dR|kr�|dR}|dSdTkr�t;j<dU|�}|r�|j=d�}q�n||dQ<ndV|kr�t>|dV�}|s�tj/dW�q�|j9dXdD�j+�d�kr�d[|d<|j9dM�d\krCd]|d
<n&|j9d^�d_kri|d^|d
<n|j9d&�r�|j9dX�dZkr�|d&|dO<q�q�q�q�tj"j?d`�r
tjda�d[|dI<dD}dD}tjjjd`���}x�|D]�}db|j+�kr?	dc|dI<t;j@dddD|�j�|dQ<q�d&|j+�kri	t;j@dedD|�}q�df|j+�kr�t;j@dedD|�}q�q�WWd.QX||dO<|r�	|dOcd|7<dg|}|dQr�	||dQkr�	|dQcd-|7<q�	n|j9dQ�s�dh|dQ<q�q�tj"j?di�r�
tjdj�dk|dI<tjjjdi��k}xa|D]Y}|j�}|ddlkrf
|dm|dO<|dnj!dodD�j!dpdD�|dQ<qf
qf
WWd.QXq�tj"j?dq�r�tjdr�ds|dI<tjjjdq���}x�|D]�}t;jAdt�}t;jAdu�} |j<|�}| j<|�}|d.k	ru|j=�|dO<n|d.k	r|j=�|dQ<qqWWd.QXq�tj"j?dv�r�tj"j?dw�r�dx|d
<tjdy�tjjjdvdz���}i}!xi|D]a}y"|jBd{�jd|�\}}"WntCk
rBqnX|d�kr|"jd��|!|<qqWtD|!�dnkr�tj&d��nd�j|!�|d
<Wd.QXq�q�nXtjd��gtEd�tF�D]}#|#jd��jd��^q�\}$}%}&d
|krQ
|j9dIdD�j+�j5d��r2
d�|d
<qQ
|j9dI|$�j�|d
<nd
|kr�
d�|j9dQdD�kr�
|jGdOd.�n|j9dO|%�j�|d
<n|j9dQdD�j�p�
|&|d�<d�|d�kr�
|&|d�<ntHj@dD|d
�j�}'|'j!d-dD�j+�d� }(d|krCtIj9|(|'�|d<n|jtJ��|jtK��n	|dd�krtjjjL�r8tMr�tj�dn})n	tjN})|)|)jOd��d})d�|d<|d
<dj1|)jd��ddd�!|)jd��dd�d�!|)jd��dd�d�!g�|d
<|)|d�<n�tj"j?d��r�tjjjd�dz���}|j �}*y4t;jAd��}+|+j<|*�jP�\}$},}-}.Wn-tQk
r�d�|d<|d
<dD|d
<nX|,d.k	r�d-j1|$|,f�}$ntMrtj�dn})n	tjN})|$|d<|d
<|$d�krU|)j5|-�rU|)|d
<n�|$d�kr�g}%|%jR|-d�|%jR|.d�dj1|%�|d
<|)|d�<nFg}%|%jR|-�|.r�|%jR|.�ndj1|%�|d
<|)|d�<Wd.QXn|jtS��nd|dd�kr(d�|d<nG|dd�kr�tdd��}%tdd��}$tdd��}/d�|d<d�|d<d�j|$|%�|d
<|%|d
<|/|d�<d�|d<|jtT|��|jtU��|jtV��n�|dd�kratdd��}%tdd��}0tdd��}$d�|d<|$|d
<|%|d
<|0|d�<|jtW��n|d|d<|dd�kr�y%tdd��jd��d|d
<Wn2tjXjYk
r�|djd��d|d
<nX|jtT|��n|dd�krS|jtT|��|djd��d|d
<|dd�krS|jtZ��qSn|ds�d�j|d�|d<d�|d<nt[j9|d|d�|d<|j9d�d�kr�tdd��j�}1n�|j9d�d�kr�tjj\j]j^�}1n�|j9d�d�kr�i}2xatdd��j�D]I}|j5d��r,|j�\}}3}4t|4j��|2|3j�<q,q,Wt_|2d�|2j9d�t`�}1n
|d}1|1|d�<|jt|��|jta|��|jtb|��|jtc|��|jt|��|j9d
dD�r'|d
jd�}x<t|�D].\}}|j�sZq<nt|�||<q<Wt|�|d<yt|dd�|d�<Wn.t$tdtCfk
r�tj0d�|d�nX||j9d�d�kr�dnd
}5d�j|5|5d�kr|d
n|dd�|d<n|S(�u:
    Return grains pertaining to the operating system
    iunum_gpusugpusukernelunodenameu
kernelreleaseu
kernelversionucpuarchuproxyu	osreleaseuosu	os_familyu
osfullnameuWindowsuServeriuRu.uosrelease_infou
{os}-{ver}RtveruosfingeruinituselinuxenableduAdding selinux grainsuselinuxucmd.retcodeuenabledu
getenforceucmd.runuenforcedu	systemctlu	localectluAdding systemd grainsusystemdusystemctl --versionuversionufeaturesuunknownuAdding init grainu/run/systemd/systemu/proc/1/cmdlineuu Nu)Unable to fetch data from /proc/1/cmdlineubin/inittupstarttsysvinittsystemdcs@s|]}t|�VqdS(N(R!(R�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pys	<genexpr>�sufile_buffer_sizeiurbtuutf-8u%Unable to read from init_bin (%s): %susupervisordu	dumb-initutiniurunitu
/sbin/my_initu7Could not determine init system from command line: (%s)u&Getting lsb_release distro informationu
lsb_{0}{1}udistrib_uu)lsb_release python bindings not availableulsb_distrib_descriptionuantergosuAntergos Linuxulsb_distrib_idu8Failed to get lsb_distrib_id, trying to parse os-releaseu/etc/os-releaseu/usr/lib/os-releaseuNAMEu
VERSION_IDulsb_distrib_releaseuVERSION_CODENAMEulsb_distrib_codenameuPRETTY_NAMEuIDudebianu
\((\w+)\)$uCPE_NAMEu*Broken CPE_NAME format in /etc/os-release!uvendorususeuopensuseuSUSEu
openSUSE LeapuLeapuVERSIONu
Tumbleweedu/etc/SuSE-releaseu+Parsing distrib info from /etc/SuSE-releaseu
enterpriseuSLESu\(.+\)u[^0-9]u
patchleveluSPun.au/etc/altlinux-releaseu/Parsing distrib info from /etc/altlinux-releaseualtlinuxuALTiiu(u)u/etc/centos-releaseu-Parsing distrib info from /etc/centos-releaseuCentOSu\d+\.\d+u(?<=\()(.*?)(?=\))u/etc.defaults/VERSIONu/etc.defaults/synoinfo.confuSynologyu9Parsing Synology distrib info from /etc/.defaults/VERSIONuru
u=umajorversionuminorversionubuildnumberu"uUUnable to determine Synology version info. Please report this, as it is likely a bug.u+{majorversion}.{minorversion}-{buildnumber}uIGetting OS name, release, and codename from platform.linux_distribution()tsupported_distsu'unilrtuCentOS Linux 7u
oscodenameuRed Hati
uSunOSu_uSmartOSuTiiiuosrelease_stampu/etc/releaseuz((?:Open|Oracle )?Solaris|OpenIndiana|OmniOS) (Development)?\s*(\d+\.?\d*|v\d+)\s?[A-Z]*\s?(r\d+|\d+\/\d+|oi_\S+|snv_\S+)?uSolarisuOracle SolarisuOmniOSuVMkerneluESXiuDarwinusw_vers -productVersionusw_vers -productNameusw_vers -buildVersionuMacOSu{0} {1}uosbuildulaunchduAIXuoslevelu
oslevel -ruunameuosrelease_techleveluFreeBSDufreebsd-version -uu-uOpenBSDuNetBSDuUnknown {0}uUnknownuDebianudpkg --print-architectureuRedHatuSuseu	NILinuxRTuPokyuopkg print-architectureuarchRtreverseuosarchuosmajorreleaseucUnable to derive osmajorrelease from osrelease_info '%s'. The osmajorrelease grain will not be set.uMacuRaspbianu{0}-{1}uUbuntu(RR R!(ususeuopensuse(umajorversionuminorversionubuildnumber(uOracle Solaris(uOmniOS(uOpenBSDuNetBSD(uRedHatuSuse(u	NILinuxRTuPoky(uDebianuFreeBSDuOpenBSDuNetBSDuMacuRaspbian(uUbuntu(eR�R�RRtis_proxyR�RQR�RRR�R�R tlstript	enumeratetisdigitRttupleR0tis_linuxR
R-R�R/R"R1RR�R7R�RRR�RoRR,R�R�R6R|tmaxR)R�R3RtPY3tdecodeR>R.R�tlsb_releasetget_distro_informationRSRWtImportErrort	NameErrorRRRR4RmRGRRRRlRxRR!RRtpopt_REPLACE_LINUX_REt_OS_NAME_MAPR(REt
is_smartosR�RDtindexRnRR2RjRdRPR	RwR�R�RJt_OS_FAMILY_MAPtpkgtrpmt
get_osarchtsortedR*t_hw_dataR�R�t	TypeError(6RRMtosrelease_infotidxRtsystemd_infoR�tinit_cmdlinetinit_bintsupported_initstedge_lentbuf_sizetfp_tedgetbufR�RR.R�Rt	lsb_paramR�tcodenametcodename_matchRR�tpatchR%tpatchstrRzR&tfind_releaset
find_codenametsynoinfoR'R�tosnamet	osreleaset
oscodenamet
distronamet	shortnametuname_vtrel_datat
release_retdevelopmenttosmajorreleasetosminorreleasetosbuildtosrelease_techleveltosarchtarchinfoR[tprioritytos_name((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytos_dataXs�
2








	








(


	

	
#





	
!




$



""




6


 

"
	
:!
"
	$
	%
	












%


#

1cC@si}i|d<tjjj�r&|Sy&tj�\|dd<|dd<Wn-tk
r{d|dd<d|dd<nXt|dd<d|dd<try-t	j	j
tjj
��j�|dd<Wqtk
rtjjj�rtjdjd�|dd<qqXn|S(	uB
    Provides
        defaultlanguage
        defaultencoding
    ulocale_infoudefaultlanguageudefaultencodinguunknownudetectedencodingutimezoneiumbcs(RRR�R%tlocaletgetdefaultlocalet	Exceptiont__salt_system_encoding__t_DATEUTIL_TZtdatetimetnowtdateutilttzttzlocalttznametUnicodeDecodeErrorR�ttimeR-(R((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytlocale_infoDs$
&
-
(cC@s�i}tjjj�r|Stj�|d<tdkrMtjjj	�antdkrot
jd�dant|d<|djd�ddd�\|d<|d	<|S(
u<
    Return fqdn, hostname, domainname

    .. note::
        On Windows the ``domain`` grain may refer to the dns entry for the host
        instead of the Windows domain to which the host is joined. It may also
        be empty if not a part of any domain. Refer to the ``windowsdomain``
        grain instead
    u	localhostu`Having trouble getting a hostname.  Does this machine have its hostname and domain set properly?ulocalhost.localdomainufqdnu.Niuhostudomain(
RRR�R%tsockettgethostnamet__FQDN__R�Rtget_fqhostnameR-R>RK(R((s4/usr/lib/python2.7/site-packages/salt/grains/core.pythostnameis
	
.cC@s=i}tjjj�r|Sdtkr9td|d<n|S(u%
    Return append_domain if set
    u
append_domain(RRR�R%R)(tgrain((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
append_domain�scC@s2i}t�}tjjjdtdt�}|jtjjjdtdt��d}x�|D]�}y'|j	t
jt
j|�d��Wq_t
j
k
r�}|jdkr�tjd||�qtj|||�q_t
jt
jt
jfk
r}tj|||�q_Xq_Wtt|��|d<|S(u�
    Return all known FQDNs for the system by enumerating all interfaces and
    then trying to reverse resolve them (excluding 'lo' interface).
    tinclude_loopbacktinterface_datau0An exception occurred resolving address '%s': %siu Unable to resolve address %s: %sufqdns(R�RRRtip_addrsR+RRVt	ip_addrs6R�Rqtgetfqdnt
gethostbyaddrtherrorterrnoR-R.R>tgaierrorttimeoutR;tlist(Rtfqdnst	addressesterr_messagetipterr((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyR��s$		

'!cC@sptjjj�riSi}tjjjdt�|d<tjjjdt�|d<t�d}xt	j
dft	jdffD]�\}}d|}|d|s�g||<q�yHtjj
�}t	j|d|�}ttd	�|D���||<Wq�t	jk
rgtjj
�|}|jd
krZtddkrZtjd
||||�ng||<q�Xq�W|S(u+
    Return ip address and FQDN grains
    Rxuipv4uipv6ufqdnu4u6ufqdn_ipuipvcs@s|]}|ddVqdS(iiN((R�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pys	<genexpr>�siu__roleumasteru�Unable to find IPv%s record for "%s" causing a %s second timeout when rendering grains. Set the dns or /etc/hosts for IPv%s to clear this.N(RRR�R%RRzR*R{RuRqtAF_INETtAF_INET6RhtutcnowtgetaddrinfoR�R�R�R>tsecondsR)R-R6(R�t_fqdntsocket_typetipv_numRt
start_timeR�ttimediff((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytip_fqdn�s,
+

$cC@stjjj�riSi}t�}x�|D]�}g}x>||jdg�D]&}d|krO|j|d�qOqOWx>||jdg�D]&}d|kr�|j|d�q�q�Wx>||jdg�D]&}d|kr�|j|d�q�q�W|||<q,Wi|d6S(u�
    Provide a dict of the connected interfaces and their ip addresses
    The addresses will be passed as a list for each interface
    uinetuaddressuinet6u	secondaryu
ip_interfaces(RRR�R%RRR2(R�tifacestfacet	iface_ipstinett	secondary((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
ip_interfaces�s"	
cC@s�tjjj�riSi}t�}x�|D]�}g}x>||jdg�D]&}d|krO|j|d�qOqOWx>||jdg�D]&}d|kr�|j|d�q�q�W|||<q,Wi|d6S(u�
    Provide a dict of the connected interfaces and their ip4 addresses
    The addresses will be passed as a list for each interface
    uinetuaddressu	secondaryuip4_interfaces(RRR�R%RRR2(R�R�R�R�R�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytip4_interfaces�s	
cC@s�tjjj�riSi}t�}x�|D]�}g}x>||jdg�D]&}d|krO|j|d�qOqOWx>||jdg�D]&}d|kr�|j|d�q�q�W|||<q,Wi|d6S(u�
    Provide a dict of the connected interfaces and their ip6 addresses
    The addresses will be passed as a list for each interface
    uinet6uaddressu	secondaryuip6_interfaces(RRR�R%RRR2(R�R�R�R�R�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytip6_interfaces	s	
cC@sPi}t�}x3|D]+}d||kr||d||<qqWi|d6S(u]
    Provide a dict of the connected interfaces and their
    hw addresses (Mac Address)
    uhwaddruhwaddr_interfaces(R(R�R�R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pythwaddr_interfaces1	s	
cC@s�tjjj�sdtkr"iStjjj�}xGdD]?}||kr;g||D]}tj|�^qX||<q;q;W|r�i|d6SiS(uP
    Parse the resolver configuration file

     .. versionadded:: 2016.3.0
    uproxyminionunameserversuip4_nameserversuip6_nameserversusortlistudns(unameserversuip4_nameserversuip6_nameserversusortlist(	RRR�R�R)tdnstparse_resolvRR�(tresolvRti((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyR�@	s
1cC@s�tj�dkrt�Sddg}g|D]}tjj|�r,|^q,}|sZiStjjj	|d��}i|j
�j�d6SWdQXdS(uG
    Provide the machine-id for machine/virtualization combination
    uAIXu/etc/machine-idu/var/lib/dbus/machine-idiu
machine_idN(R�tsystemR�RRR�RRRRR�R"(t	locationstloctexisting_locationst	machineid((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytget_machine_idT	s+cC@s itjjdd�j�d6S(u
    Return the path
    uPATHuupath(RRRR"(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyRf	scC@sittj�d6S(u#
    Return the Python version
    u
pythonversion(R�tsystversion_info(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
pythonversiono	scC@sitjd6S(u 
    Return the Python path
    u
pythonpath(R�R(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
pythonpathx	scC@sitjd6S(u-
    Return the python executable in use
    upythonexecutable(R�t
executable(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytpythonexecutable�	scC@s>tjjtjjttjj��}itjj|�d6S(u,
    Return the path of the salt module
    usaltpath(RRtabspathR�t__file__tpardirtdirname(t	salt_path((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytsaltpath�	s'cC@sddlm}i|d6S(u$
    Return the version of salt
    i(t__version__usaltversion(tsalt.versionR�(R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytsaltversion�	scC@s:y!ddl}i|j�d6SWntk
r5iSXdS(u#
    Return the zeromq version
    iNu
zmqversion(tzmqtzmq_versionR0(R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
zmqversion�	s

cC@s!ddlm}it|�d6S(uH
    Return the version_info of salt

     .. versionadded:: 0.17.0
    i(t__version_info__usaltversioninfo(R�R�R�(R�((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytsaltversioninfo�	sc)C@sAtjjj�riSi}|ddkrhtjjd�rhidd6dd6dd	6d
d6dd
6dd6}x�
|j�D]�\}}tjjd|�}tjj|�r{ystjj	j
|d��U}tjjj|j
�j�dd�||<|d
kr|d
j�|d
<nWdQXWqattfk
r]}|jtksZ|jtkr^q^qaXq{q{Wn�tjjjddg�dk	r�tjjj�p�|ddko�|djd�r�itdd�d6tdd�d6tdd�d	6tdd�d6tdd�d
6}tg|j�D]$\}}|dk	r*||f^q*�}tdd�}	|	dk	r�|	j�|d
<nx�dsD]0}
td|
�}
|
dk	r�|
|d<Pq�q�Wnytjjjd"g�dk	rvid	d	6d#d6d$d6}x=tj|�D]b\}}
td%d&j|
��}|d'd(kr
|d)jd*�}t||d+�||<q
q
Wn�
|dd,kr&tjjj d-�}|r=id.d6d/d	6d0d6d1d6d2d6d3d
6}xOtj|�D];\}}td4d5j||��}t||�||<q�Wq=n
|dd6kr�tjjj d7�}id8d6d9d	6d:d6d;d6d<d
6}x�	tj|�D]M\}}td4d=j||��}|j!d>�s�t||�||<q�q�Wne	|dd?kr�tjjj d7�}id@d6dAd	6dBd6dCd6dDd6dEd
6}x
	tj|�D]R\}}td%d=j||��}|d'd(kr=t||d)�||<q=q=Wn�|ddFkr3dG|d	<tjjj d7�}idHd6}xh|j�D]M\}}td4dIj||��}|j!dJ�s�t||�||<q�q�Wn
|ddkr%|djd�r%dK}x_dtdudvfD]N\}}tjjj |�rl|td4d5j||��7}|dR7}qlqlWgdSdTdUgD]}t"j#|�^q�}gdVdWgD]}t"j#|�^q�}gdXgD]}t"j#|�^q}gdYgD]}t"j#|�^q@}gdZgD]}t"j#|�^qe}gd[d\d]gD]}t"j#|�^q�}gd^d_d`gD]}t"j#|�^q�}gdadbgD]}t"j#|�^q�}gdcgD]}t"j#|�^q}gddgD]}t"j#|�^q-}xd|D]\} | j$|�}!|!rOt%|!j&��d+krO|!j'd+�j�j(dedK�|d<PqOqOWx�|D]�} | j$|�}!|!r�t%|!j&��d+kr�|!j&�d(df!\}"}#|"j�j(dedK�|d<|#j�j(dedK�|d<q�q�Wx�|D]�} | j$|�}!|!rH	t%|!j&��d+krH	|!j&�d(df!\}$}%|$j�j(dedK�|dg<|%j�j(dedK�|dh<PqH	qH	Wxd|D]\} | j$|�}!|!r�	t%|!j&��d+kr�	|!j'd+�j�j(dedK�|d
<Pq�	q�	Wxd|D]\} | j$|�}!|!rB
t%|!j&��d+krB
|!j'd+�j�j(dedK�|di<PqB
qB
Wx�|D]u} | j$|�}!|!r�
t%|!j&��d+kr�
|!j'd+�j�j(dedK�}&|&r|&|dj<|&|d<Pqq�
q�
Wn|ddkkr�tjjj dl�}|r�td4dmj|��tj)}x�dwdxfD]�\}'}(x�g|(gD]}t"j#|�^q�D][} | j$|�}!|!r�t%|!j&��d+kr�|!j'd+�j�j(dedK�||'<q�q�Wq}Wt"j#dp�g}x�|D]o} | j$|�}!|!r+t%|!j&��d+kr+|!j'd+�j�j(dedK�jdq�\|d	<|d<Pq+q+Wq=t*j+dr�n�|ddkkr=tjjj dl�}|r-td4dmj|��tj)}x�dydzfD]�\}'}(x�g|(gD]}t"j#|�^q"
D][} | j$|�}!|!r;
t%|!j&��d+kr;
|!j'd+�j�j(dedK�||'<q;
q;
Wq	
Wt"j#dp�g}x�|D]o} | j$|�}!|!r�
t%|!j&��d+kr�
|!j'd+�j�j(dedK�jdq�\|d	<|d<Pq�
q�
Wq=t*j+dr�n|S({u�
    Get system specific hardware data from dmidecode

    Provides
        biosversion
        productname
        manufacturer
        serialnumber
        biosreleasedate
        uuid

    .. versionadded:: 0.9.5
    ukerneluLinuxu/sys/class/dmi/idubios_versionubiosversionuproduct_nameuproductnameu
sys_vendorumanufactureru	bios_dateubiosreleasedateuproduct_uuiduuuiduproduct_serialuserialnumberurR�ureplaceNu	dmidecodeusmbiosuSunOSucpuarchusparcu
smbios.getubios-versionusystem-product-nameusystem-manufacturerubios-release-dateusystem-uuidusystem-serial-numberuchassis-serial-numberubaseboard-serial-numberufw_printenvuserial#u
DeviceDescucmd.run_allufw_printenv {0}uretcodeiustdoutu=iuFreeBSDukenvusmbios.bios.versionusmbios.system.makerusmbios.system.serialusmbios.system.productusmbios.bios.reldateusmbios.system.uuiducmd.runu{0} {1}uOpenBSDusysctlu
hw.versionu	hw.vendoru
hw.productuhw.serialnouhw.uuidu
{0} -n {1}u value is not availableuNetBSDumachdep.dmi.board-versionumachdep.dmi.system-vendorumachdep.dmi.system-serialumachdep.dmi.system-productumachdep.dmi.bios-dateumachdep.dmi.system-uuiduDarwinu
Apple Inc.uhw.modelu
{0} -b {1}u is invaliduu/usr/sbin/prtdiagu-vu/usr/sbin/prtconfu-vpu/usr/sbin/virtinfou-au
u-(?im)^\s*Chassis\s+Serial\s+Number\n-+\n(\S+)u(?im)^\s*chassis-sn:\s*(\S+)u#(?im)^\s*Chassis\s+Serial#:\s*(\S+)uF(?im)^\s*System\s+PROM\s+revisions.*\nVersion\n-+\nOBP\s+(\S+)\s+(\S+)u)(?im)^\s*version:\s*\'OBP\s+(\S+)\s+(\S+)u0(?im)^\s*Sun\s+System\s+Firmware\s+(\S+)\s+(\S+)u(?im)^\s*Domain\s+UUID:\s*(\S+)u.(?im)^\s*System\s+Configuration:\s*(.*)(?=sun)u<(?im)^\s*System\s+Configuration:\s*.*?sun\d\S+[^\S\r\n]*(.*)u*(?im)^[^\S\r\n]*banner-name:[^\S\r\n]*(.*)u+(?im)^[^\S\r\n]*product-name:[^\S\r\n]*(.*)u)(?im)Chassis\s+Serial\s+Number\n-+\n(\S+)u(?i)Chassis\s+Serial#:\s*(\S+)u(?i)chassis-sn:\s*(\S+)uB(?im)System\s+PROM\s+revisions.*\nVersion\n-+\nOBP\s+(\S+)\s+(\S+)u%(?im)version:\s*\'OBP\s+(\S+)\s+(\S+)u+(?i)Sun\s+System\s+Firmware\s+(\S+)\s+(\S+)u(?i)Domain\s+UUID:\s+(\S+)u'iusystemfirmwareusystemfirmwaredateumanufactureuproductuAIXuprtconfu{0}u+(?im)^\s*Machine\s+Serial\s+Number:\s+(\S+)u#(?im)^\s*Firmware\s+Version:\s+(.*)u (?im)^\s*System\s+Model:\s+(\S+)u,u,The 'prtconf' binary was not found in $PATH.(usystem-serial-numberuchassis-serial-numberubaseboard-serial-number(u/usr/sbin/prtdiagu-v(u/usr/sbin/prtconfu-vp(u/usr/sbin/virtinfou-a(userialnumberu+(?im)^\s*Machine\s+Serial\s+Number:\s+(\S+)(usystemfirmwareu#(?im)^\s*Firmware\s+Version:\s+(.*)(userialnumberu+(?im)^\s*Machine\s+Serial\s+Number:\s+(\S+)(usystemfirmwareu#(?im)^\s*Firmware\s+Version:\s+(.*)(,RRR�R%RRR�titemsR�RRR�R�R�R"R3R�R7RRRt	which_binR�R5RWR/RRRRSR0R R�R,R|R4RlRmR!RnRGRoRkR-R>()RYRtsysfs_firmware_infoRtfw_filet
contents_fileRzR�R'R�tserialthwdatat
grain_nametcmd_keytresulttuboot_keyvalR�tfbsd_hwdataRRZtoidtnbsd_hwdataRqRpR�Rtt
sn_regexestobp_regexest
fw_regexesR�tmanufacture_regexestproduct_regexesRuRvtobp_revtobp_datetfw_revtfw_datet
t_productnameRrRs((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyR<�	s�"
+!!=


!



!

# """"""""""
%
#

%
%
!

 ,0
8 ,0
8cC@s�tjjj�riStjdd�}d}tjd }|dkr�t	dtj
ddj|�gdid	d
6�}yt|�}Wq�t
tfk
r�tjd|�d}q�Xn|dkr�t|�}nit|d�d
6S(u�
    Provides an integer based on the FQDN of a machine.
    Useful as server-id in MySQL replication or anywhere else you'll need an ID
    like this.
    uiduiiucmd.runu-cuprint(hash("{0}"))tenvu0uPYTHONHASHSEEDuLFailed to hash the ID to get the server_id grain. Result of hash command: %siu	server_idN(iiI�(RRR�R%R)RR�R�R�R/R�R0RR=RR-R.thashtabs(R
tid_hashtpy_ver((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
get_server_id�
s&	

cC@sitjdd�d6S(u�
    Provides the minion with the name of its master.
    This is useful in states to target other services running on the master.
    umasteru(R)R(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt
get_master�
scC@s-i}tjjjd�}|s%iSt|d<t|d<t|d<x�dD]�}y�td|d|d	d
g�}x�|j�D]�}|jd�r�t|d<t|dj	|�<y|j
�d
d!\}}Wntk
r�n#X|dkr||dj	|�<nPq�q�WWqJtk
r$qJqJXqJW|S(u
    Populates grains which describe whether a server has a default gateway
    configured or not. Uses `ip -4 route show` and `ip -6 route show` and greps
    for a `default` at the beginning of any line. Assuming the standard
    `default via <ip>` format for default gateways, it will also parse out the
    ip address of the default gateway, and put it in ip4_gw or ip6_gw.

    If the `ip` command is unavailable, no grains will be populated.

    Currently does not support multiple default gateways. The grains will be
    set to the first default gateway found.

    List of grains:

        ip4_gw: True  # ip/True/False if default ipv4 gateway
        ip6_gw: True  # ip/True/False if default ipv6 gateway
        ip_gw: True   # True if either of the above is True, False otherwise
    uipuip_gwuip4_gwuip6_gwu4u6ucmd.runu-urouteushowudefaultuip{0}_gwiiuvia(u4u6(
RRRR,R+R/R1RWR*R0R RRe(Rtip_bint
ip_versiontoutR%tviatgw_ip((s4/usr/lib/python2.7/site-packages/salt/grains/core.pytdefault_gateway	s0



 


(�t__doc__t
__future__RRRRRqR�R4R�tloggingRcR�RRRRhRRotdateutil.tzRjR*RgR0R+t__proxyenabled__R�RsRRR
tdistrotsalt.exceptionsRtsalt.logtsalt.utils.dnstsalt.utils.filestsalt.utils.networktsalt.utils.pathtsalt.utils.pkg.rpmtsalt.utils.platformtsalt.utils.stringutilstsalt.extRtsalt.ext.six.movesR
RR�tsalt.utils.win_osinfotsalt.modules.cmdmodtsalt.modules.smbiostmodulestcmdmodt
_run_quiett_retcode_quiett_run_all_quiettsmbiostrecordsRR/t	getLoggert__name__R-R�R�tsalt.utils.winapiR�tsalt.utils.win_regt	exceptionR�thasattrRRR(RERJRPRdRjRwR{R�R�R�R�R�R�R�R�R�R�R�R�R�RR	R
RlRFR3R4R7RR
RRRRRbRpRuRwR�R�R�R�R�R�R�R�RR�R�R�R�R�R�R�R<R�R�R�(((s4/usr/lib/python2.7/site-packages/salt/grains/core.pyt<module>s�


	



			5	L			B											9	��	9		-	3	g		


						$	��	%	(		 	#															
	
	
		�%	$	

Zerion Mini Shell 1.0