
    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)get_file_content)NetworkCollectorc                  ,    e Zd ZdZ e       ZddZd Zy)IscsiInitiatorNetworkCollectoriscsiNc                   i }d|d<   t         j                  j                  d      st         j                  j                  d      rt        dd      j	                         D ]d  }|j                  d      s$|j                  d      s|j                         dk(  r9|j                  d      sK|j                  d	d
      d
   |d<    |S  |S t         j                  j                  d      rn|j                  d      }||S |dz  }|j                  |      \  }}}|dk(  r8|r6| j                  |d      }|j                         d
   j                         |d<   |S t         j                  j                  d      rl|j                  ddg      }||S |dz  }|j                  |      \  }}}|r8| j                  |d      }|j                  dd
      d
   j                         |d<   |S )a  
        Example of contents of /etc/iscsi/initiatorname.iscsi:

        ## DO NOT EDIT OR REMOVE THIS FILE!
        ## If you remove this file, the iSCSI daemon will not start.
        ## If you change the InitiatorName, existing access control lists
        ## may reject this initiator.  The InitiatorName must be unique
        ## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
        InitiatorName=iqn.1993-08.org.debian:01:44a42c8ddb8b

        Example of output from the AIX lsattr command:

        # lsattr -E -l iscsi0
        disc_filename  /etc/iscsi/targets            Configuration file                            False
        disc_policy    file                          Discovery Policy                              True
        initiator_name iqn.localhost.hostid.7f000002 iSCSI Initiator Name                          True
        isns_srvnames  auto                          iSNS Servers IP Addresses                     True
        isns_srvports                                iSNS Servers Port Numbers                     True
        max_targets    16                            Maximum Targets Allowed                       True
        num_cmd_elems  200                           Maximum number of commands to queue to driver True

        Example of output from the HP-UX iscsiutil command:

        #iscsiutil -l
        Initiator Name             : iqn.1986-03.com.hp:mcel_VMhost3.1f355cf6-e2db-11e0-a999-b44c0aef5537
        Initiator Alias            :

        Authentication Method      : None
        CHAP Method                : CHAP_UNI
        Initiator CHAP Name        :
        CHAP Secret                :
        NAS Hostname               :
        NAS Secret                 :
        Radius Server Hostname     :
        Header Digest              : None, CRC32C (default)
        Data Digest                : None, CRC32C (default)
        SLP Scope list for iSLPD   :
         	iscsi_iqnlinuxsunosz/etc/iscsi/initiatorname.iscsi#;zInitiatorName==   aixlsattrz -E -l iscsi0r   initiator_namezhp-ux	iscsiutilz/opt/iscsi/bin)opt_dirsz -lzInitiator Name:)sysplatform
startswithr   
splitlinesstripsplitget_bin_pathrun_commandfindstrrstrip)	selfmodulecollected_factsiscsi_factslinecmdrcouterrs	            X/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/network/iscsi.pycollectz&IscsiInitiatorNetworkCollector.collect    s   P #%K <<""7+s||/F/Fw/O()I2NYY[ ??3'4??3+?4::<SUCU??#34/3zz#q/A!/DK,4 ?> 3 \\$$U+%%h/C{""?"C!--c2LBSQw3||C)9:+/::<?+A+A+CK(   \\$$W-%%*+ & C {""5LC!--c2LBS||C)9:+/::c1+=a+@+G+G+IK(    c                >    |j                         D ]	  }||v s|} S )N)r   )r"   textmatchr&   founds        r+   r    z&IscsiInitiatorNetworkCollector.findstrl   s+    OO% 	D}	 r-   )NN)__name__
__module____qualname__nameset	_fact_idsr,   r     r-   r+   r   r      s    DIJXr-   r   )
__future__r   r   "ansible.module_utils.compat.typingmodule_utilscompattypingt ansible.module_utils.facts.utilsr   'ansible.module_utils.facts.network.baser   r   r8   r-   r+   <module>rA      s(   $ # 
 . . = DT%5 Tr-   