
    Vh'                        d dl mZ d dlZd dlZd dlZd dlmc mc mZ	 d dl
mZ d dlmZ d dlmZ  ej                          dk7  rd dlmZ  G d d	e      Zy)
    )annotationsN)	to_native)get_file_content)BaseFactCollectorSunOS)LooseVersionc                  Z    e Zd ZdZ e       Z eddg      Zed        Zed        Z	ddZ
y)	ServiceMgrFactCollectorservice_mgrplatformdistributionc                v    | j                  d      r(dD ]#  }t        j                  j                  |      s# y y)N	systemctl)z/run/systemd/system/z/dev/.run/systemd/z/dev/.systemd/TF)get_bin_pathospathexists)modulecanarys     ]/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/system/service_mgr.pyis_systemd_managedz*ServiceMgrFactCollector.is_systemd_managed,   s<     {+ [  77>>&)      c                    | j                  d      rUt        j                  j                  d      r6t        j                  j	                  t        j
                  d            dk(  ryy)Nr   
/sbin/initsystemdTF)r   r   r   islinkbasenamereadlinkr   s    r   is_systemd_managed_offlinez2ServiceMgrFactCollector.is_systemd_managed_offline8   sJ     {+ ww~~l+0@0@\AZ0[_h0hr   Nc                   i }|s|S |xs i }d }ddddd}t        d      }|D|j                  dd	      \  }}}|d
k7  s&|j                         rt        j                  d|      rd }|dk(  rd }|4t
        j                  j                  d      rt        j                  d      }|:t
        j                  j                  |      }t        |      }|j                         }||dk(  s|j                  d      rd }||j                  ||      }n|j                  dd       dk(  r4t        t        j                         d
         t        d      k\  rd}ncd}n_d|j                  dd      v s|j                  d      dv rd}n4|j                  d      dk(  rd}n|j                  d      dk(  rd}n|j                  d      dk(  rd}n|j                  d      dk(  rd }n|j                  d      d!k(  r| j!                  |"      rd#}n|j#                  d$      r"t
        j                  j%                  d%      rd&}nzt
        j                  j%                  d'      rd}nX| j'                  |"      rd#}nCt
        j                  j%                  d(      rd)}n!t
        j                  j%                  d*      rd+}|sd,}||d-<   |S ).Nopenwrt_initrunitsvcopenrc)procdz
runit-initsvscanzopenrc-initz/proc/1/commzps -p 1 -o comm|tail -n 1T)use_unsafe_shellr   z	 *[0-9]+ zCOMMAND
r   initshansible_distributionMacOSXz10.4launchdsystemstarterBSDansible_system )Bitrig	DragonFlybsdinitAIXsrcr   smfOpenWrtSMGLsimpleinit_msbLinuxr   r   initctlz
/etc/init/upstartz/sbin/openrcz/etc/init.d/sysvinitz/etc/dinit.d/dinitservicer   )r   run_commandstriprematchr   r   r   r   r   r   endswithgetr   r   mac_verr   r   r   r    )	selfr   collected_facts
facts_dictservice_mgr_name
proc_1_mapproc_1rcerrs	            r   collectzServiceMgrFactCollector.collectB   s   
)/R $!#	

 ".1>$001L_c0dOB Qwfllnv0N [ F>bggnn\:[[.FWW%%f-Fv&F\\^F6V#3vt7LF )~~ff=   !7>(JH,,.q12l66JJ#, #2 o))*:B???CVCVWgCh  mD  DD(  !12e;$  !12g=$  !78IE-  !78FB/  !12g=&&f&5#, $$Y/BGGNN<4P#, /#+ 000?#, /#- 0#* ($4
=!r   )NN)__name__
__module____qualname__nameset	_fact_idsrequired_factsstaticmethodr   r    rP    r   r   r
   r
   '   sI    DI*n56N	 	  Yr   r
   )
__future__r   r   r   rC   "ansible.module_utils.compat.typingmodule_utilscompattypingt+ansible.module_utils.common.text.convertersr    ansible.module_utils.facts.utilsr   $ansible.module_utils.facts.collectorr   system#ansible.module_utils.compat.versionr   r
   rY   r   r   <module>re      sG   $ # 	  	 . . A = B 8??@t/ tr   