
    Vhl                    h    d dl mZ d dlZd dlZd dlmZmZ d dlmZ  G d de      Z	 G d de      Z
y)	    )annotationsN)HardwareHardwareCollector)
get_sysctlc                  :    e Zd ZdZdZd
dZd Zd Zd Zd Z	d	 Z
y)DarwinHardwarez
    Darwin-specific subclass of Hardware.  Defines memory and CPU facts:
    - processor
    - processor_cores
    - memtotal_mb
    - memfree_mb
    - model
    - osversion
    - osrevision
    - uptime_seconds
    DarwinNc                L   i }t        | j                  g d      | _        | j                         }| j	                         }| j                         }| j                         }|j                  |       |j                  |       |j                  |       |j                  |       |S )N)hwmachdepkernhw.model)r   modulesysctlget_mac_factsget_cpu_factsget_memory_factsget_uptime_factsupdate)selfcollected_factshardware_facts	mac_facts	cpu_factsmemory_factsuptime_factss          Z/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/hardware/darwin.pypopulatezDarwinHardware.populate(   s     .ST&&(	&&(	,,.,,.i(i(l+l+    c                T   | j                   j                  ddg      \  }}}|dk7  r
t               S t               }|j                         D ]Z  }d|v s|j	                  dd      \  }}dj                  |j                         j	                               ||j                         <   \ |S )Nz/usr/sbin/system_profilerSPHardwareDataTyper   z:     )r   run_commanddict
splitlinessplitjoinstrip)r   rcouterrsystem_profilelinekeyvalues           r   get_system_profilez!DarwinHardware.get_system_profile8   s    {{..0KMa/bcC76MNN$ 	NDt|#zz$2e.1hhu{{}7J7J7L.Msyy{+	N r   c                    i }d| j                   v r| j                   d   x|d<   |d<   | j                   d   |d<   | j                   d   |d<   |S )Nr   modelproduct_namezkern.osversion	osversionzkern.osrevision
osrevision)r   )r   r   s     r   r   zDarwinHardware.get_mac_factsC   s^    	$=A[[=TTIg>!:!%-=!>	+"&++.?"@	,r   c                R   i }d| j                   v r%| j                   d   |d<   | j                   d   |d<   n2| j                         }|d   d|d   |d<   | j                   d   |d<   | j                   j                  d	      xs | j                   j                  d
      xs d|d<   |S )Nzmachdep.cpu.brand_string	processorzmachdep.cpu.core_countprocessor_coreszProcessor Namez @ zProcessor Speedzhw.physicalcpuzhw.logicalcpuzhw.ncpu processor_vcpus)r   r1   get)r   r   r-   s      r   r   zDarwinHardware.get_cpu_factsL   s    	%4%)[[1K%LIk"+/;;7O+PI'(!446N2@AQ2RTbctTu%vIk"+/;;7G+HI'('+{{'G'k4;;??[dKe'kik	#$r   c                   t        | j                  d         dz  dz  dd}d}d}d| j                  v rt        | j                  d         }| j                  j                  d      }||S |r| j                  j	                  |      \  }}}|dk(  rd |j                         D        }t        d	 |D              }|j                         D ]  \  }	}
	 t        |
      ||	<    |j                  d
      r||d
   |z  z  }|j                  d      r||d   |z  z  }|j                  d      r||d   |z  z  }|d   |dz  dz  z
  |d<   |S # t        $ r Y w xY w)Nz
hw.memsizei   r   )memtotal_mb
memfree_mbi   zhw.pagesizevm_statc              3  ^   K   | ]%  }|j                  d       j                  dd       ' yw).:r"   N)rstripr'   ).0r.   s     r   	<genexpr>z2DarwinHardware.get_memory_facts.<locals>.<genexpr>n   s&     \4C 0 6 6sA >\s   +-c              3  F   K   | ]  \  }}||j                         f  y wN)lstrip)rE   kvs      r   rF   z2DarwinHardware.get_memory_facts.<locals>.<genexpr>q   s     #M1Q
O#Ms   !zPages wired downzPages activezPages inactiver>   r?   )
intr   r   get_bin_pathr$   r&   r%   items
ValueErrorr<   )r   r   
total_used	page_sizevm_stat_commandr*   r+   r,   memory_statsrJ   rK   s              r   r   zDarwinHardware.get_memory_factsY   s   t{{<89TATI

 
	DKK'DKK67I++229=";;22?CLBSQw  ]3>>K[\  $#M#MM(..0 DAq*-a&Q  ##$67,/A"BY"NNJ##N3,~">"JJJ##$45,/?"@9"LLJ-9--HJZ^L^bfLf-g\* &  s   E	EEc                ^   | j                   j                  d      }|si S |ddg}| j                   j                  |d       \  }}}d}t        j                  |      }|dk7  st        |      |k  ri S t        j                  ||d |       \  }dt        t        j                         |z
        iS )Nr   z-bzkern.boottime)encodingz@Lr   uptime_seconds)	r   rM   r$   structcalcsizelenunpackrL   time)	r   
sysctl_cmdcmdr*   r+   r,   struct_formatstruct_sizekern_boottimes	            r   r   zDarwinHardware.get_uptime_facts   s     [[--h7
I41 {{..sT.BC oom47c#h,I"MM-\k9JK c$))+"=>
 	
r   rH   )__name__
__module____qualname____doc__platformr   r1   r   r   r   r    r   r   r   r      s-    
 H 	+Z
r   r   c                      e Zd ZeZdZy)DarwinHardwareCollectorr	   N)ra   rb   rc   r   _fact_class	_platformrf   r   r   rh   rh      s     KIr   rh   )
__future__r   rW   r[   (ansible.module_utils.facts.hardware.baser   r   !ansible.module_utils.facts.sysctlr   r   rh   rf   r   r   <module>rn      s2   " #   P 8D
X D
N/ r   