a )g @sdddlmZmZmZeZddlZddlmm m Z ddl m Z ddlmZGdddeZdS))absolute_importdivisionprint_functionN)get_file_lines)BaseFactCollectorc@s4eZdZdZeZdZddZddZd dd Z dS) LSBFactCollectorlsbz\'\"\\c Csi}|s |S|j|dgdd\}}}|dkr0|S|D]}t|dks8d|vrRq8|ddd}d|vrx||d<q8d |vr||d <q8d |vr||d <q8d |vr||d<q8d|vr8||d<q8|S)Nz-aZsurrogate_then_replace)errorsr:z LSB Version:releasezDistributor ID:idz Description: descriptionzRelease:z Codename:codename)Z run_command splitlineslensplitstrip) selflsb_pathmodule lsb_factsrcouterrlinevaluerI/usr/lib/python3.9/site-packages/ansible/module_utils/facts/system/lsb.py_lsb_release_bin"s*      z!LSBFactCollector._lsb_release_bincCsi}tj|s|St|D]^}|ddd}d|vrF||d<qd|vrX||d<qd|vrj||d<qd |vr||d <q|S) N=r Z DISTRIB_IDr ZDISTRIB_RELEASEr ZDISTRIB_DESCRIPTIONrZDISTRIB_CODENAMEr)ospathexistsrrr)rZetc_lsb_release_locationrrrrrr_lsb_release_file>s      z"LSBFactCollector._lsb_release_fileNcCsi}i}|s|S|d}|r,|j||d}|s:|d}|r\d|vr\|ddd|d<|D]\}}|rd|tj||<qd||d<|S) NZ lsb_release)rz/etc/lsb-releaser .rZ major_releaser)Z get_bin_pathrr$ritemsrr STRIP_QUOTES)rrZcollected_factsZ facts_dictrrkvrrrcollectRs$   zLSBFactCollector.collect)NN) __name__ __module__ __qualname__namesetZ _fact_idsr'rr$r*rrrrrs r)Z __future__rrrtypeZ __metaclass__r!Z"ansible.module_utils.compat.typingZ module_utilscompattypingtZ ansible.module_utils.facts.utilsrZ$ansible.module_utils.facts.collectorrrrrrrs