
    Vh
                    ^    d dl mZ d dlZd dlmc mc mZ d dlm	Z	 d dl
mZ  G d de      Zy)    )annotationsN)PrefixFactNamespace)BaseFactCollectorc                  P     e Zd ZdZ edg      Zd fd	Zd Zd Zd Z	ddZ
 xZS )FacterFactCollectorfacterc                J    t        dd      }t        t        |   ||       y )Nr   facter_)namespace_nameprefix)
collectors	namespace)r   superr   __init__)selfr   r   	__class__s      W/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/other/facter.pyr   zFacterFactCollector.__init__   s-    'x/8:	!41Z<E 	2 	G    c                ^    |j                  ddg      }|j                  ddg      }||}|S )Nr   z/opt/puppetlabs/bin)opt_dirscfacter)get_bin_path)r   modulefacter_pathcfacter_paths       r   find_facterzFacterFactCollector.find_facter   sS    ))+, * 
 **+, + 
 #&Kr   c                v    |j                  |dz         \  }}}|dk7  r|j                  |dz         \  }}}|||fS )Nz --puppet --jsonr   z --json)run_commandr   r   r   rcouterrs         r   
run_facterzFacterFactCollector.run_facter(   sP     ))+8J*JKC 7!--kI.EFLBS3|r   c                f    | j                  |      }|sy | j                  ||      \  }}}|dk7  ry |S )Nr   )r   r#   r   s         r   get_facter_outputz%FacterFactCollector.get_facter_output4   s=    &&v.v{;C7
r   c                    i }|s|S | j                  |      }||S 	 t        j                  |      }|S # t        $ r |j	                  d       Y |S w xY w)NzFailed to parse facter facts)r%   jsonloads	Exceptionwarn)r   r   collected_factsfacter_dictfacter_outputs        r   collectzFacterFactCollector.collect@   so     ..v6  	8**]3K   	8KK67	8s   4 AA)NN)__name__
__module____qualname__nameset	_fact_idsr   r   r#   r%   r.   __classcell__)r   s   @r   r   r      s-    DXJIG 

r   r   )
__future__r   r'   "ansible.module_utils.compat.typingmodule_utilscompattypingt$ansible.module_utils.facts.namespacer   $ansible.module_utils.facts.collectorr   r    r   r   <module>r?      s(    #  . . D BF+ Fr   