
    W'Fg                     `    S SK r S SKrSSKJrJrJr  S rS r " S S\5      r " S S	\5      r	g)
    N   )
XMLBuilderXMLPropertyXMLChildPropertyc                 H    S nU" U 5      n U" U5      nX:H  =(       d    US:H  $ )Nc                      S[        U 5      ;   a  [        U =(       d    SS5      $ [        U 5      $ ! [         a     gf = f)N0x0x00   )strint	Exception)vals    +/usr/share/virt-manager/virtinst/nodedev.py_intify_compare_int.<locals>._intify   s?    	s3x3=&"--3x 		s   #1 
1 
>>r    )nodedev_valhostdev_valr   s      r   _compare_intr      s0     +&K+&K&;+*;<    c                      [         R                  " U 5      n [         R                  " U5      nX:H  $ ! [         a     gf = f)Nr   )uuidUUIDr   )r   r   s     r   _compare_uuidr      sB    ii,ii, &'  s   ,2 
??c                   8    \ rS rSrSr\" S5      r\" S5      rSrg)DevNode&   devnodez./@type.r   N)	__name__
__module____qualname____firstlineno__XML_NAMEr   	node_typepath__static_attributes__r   r   r   r   r   &   s    HI&IsDr   r   c                      \ rS rSrSrSrSrSrSrSr	Sr
S	r\S
 5       rSrSr\" S5      r\" S5      r\" S5      rS rS rS rS rS rS r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r \" S5      r!\" S5      r"\" S5      r#\" S 5      r$\" S!5      r%\" S"5      r&\" S#5      r'\" S$5      r(\" S%5      r)\" S&5      r*\" S'SS(9r+\" S)5      r,\-" \.5      r/S/S* jr0\" S+5      r1\" S,5      r2S-r3g.)0
NodeDevice-   netpci
usb_devicestorage	scsi_hostscsidrmmdevc                 Z    U R                  5        H  nUR                  U:X  d  M  Us  $    g)z
Search the nodedev list cache for a matching name, and return the
result.

:param conn: libvirt.virConnect instance to perform the lookup on
:param conn: nodedev name
:returns: NodeDevice instance
N)fetch_all_nodedevsname)connr7   nodedevs      r   lookupNodedevByNameNodeDevice.lookupNodedevByName7   s(     ..0G||t# 1r   deviceTz./namez./parentz./capability/@typec                 r    U R                   b  U R                   $ U R                  SS  R                  SS5      $ )N   _-)r   r7   replaceselfs    r   get_mdev_uuidNodeDevice.get_mdev_uuidP   s5     99 99yy}$$S#..r   c                 f   U R                   S:X  a  UR                  S:w  a  g[        U R                  UR                  5      =(       an    [        U R                  UR                  5      =(       aG    [        U R
                  UR
                  5      =(       a     [        U R                  UR                  5      $ U R                   S:X  a  UR                  S:w  a  g[        U R                  UR                  5      =(       an    [        U R                  UR                  5      =(       aG    [        U R                  UR                  5      =(       a     [        U R                  UR                  5      $ U R                   S:X  a5  UR                  S:w  a  g[        U R                  5       UR                  5      $ g)Nr.   Fr/   usbr4   )device_typetyper   domainbusslotfunction
product_idproduct	vendor_idvendorr<   r   rD   r   )rC   hostdevs     r   compare_to_hostdevNodeDevice.compare_to_hostdevY   s8   u$||u$ gnn= >TXXw{{3>TYY5> T]]G,<,<=?
 |+||u$ '//B :T^^W^^<:TXXw{{3: T[['..9;
 v%||v% !3!3!5w||DDr   c                      U R                   S:H  $ )Nvirt_functions_capability_typerB   s    r   is_pci_sriovNodeDevice.is_pci_sriovy   s    $$(888r   c                      U R                   S:H  $ )Nz
pci-bridgerW   rB   s    r   is_pci_bridgeNodeDevice.is_pci_bridge{   s    $$44r   c                 L    U R                   S:H  =(       a    U R                  S;   $ )N0x1d6b)0x00010x00020x0003)rP   rN   rB   s    r   is_usb_linux_root_hub NodeDevice.is_usb_linux_root_hub~   s'    (* B#AA	Cr   c                 L    U R                   S:H  =(       a    U R                  S:H  $ )Nr3   render)rH   drm_typerB   s    r   is_drm_renderNodeDevice.is_drm_render   s!    5(FT]]h-FFr   z./capability/interfacez./capability/domainz./capability/busz./capability/slotz./capability/functionz./capability/productz./capability/vendorz./capability/capability/@typez./capability/devicez./capability/product/@idz./capability/vendor/@idz./capability/hostz./capability/targetz./capability/lunz./capability/blockz./capability/drive_typez6./capability/capability[@type='removable']/media_labelz:./capability/capability[@type='removable']/media_available)is_intz./capability/typec                    U R                    HJ  nUR                  R                  [        R                  5      n[        U5      S:  d  M=  US   U:X  d  MH  Us  $    [        U R                   5      S:  a  U R                   S   $ g )N   r   )devnodesr(   splitosseplen)rC   parentdpathss       r   get_devnodeNodeDevice.get_devnode   sh    AFFLL(E5zA~%)v"5  t}}!==## "r   z./capability/type/@idz./capability/uuidr   N)zby-path)4r"   r#   r$   r%   CAPABILITY_TYPE_NETCAPABILITY_TYPE_PCICAPABILITY_TYPE_USBDEVCAPABILITY_TYPE_STORAGECAPABILITY_TYPE_SCSIBUSCAPABILITY_TYPE_SCSIDEVCAPABILITY_TYPE_DRMCAPABILITY_TYPE_MDEVstaticmethodr:   r&   _XML_SANITIZEr   r7   rs   rH   rD   rS   rY   r\   rc   rh   	interfacerJ   rK   rL   rM   product_namevendor_namerX   r<   rN   rP   hosttargetlunblock
drive_typemedia_labelmedia_availablerg   r   r   rn   rv   type_idr   r)   r   r   r   r+   r+   -   s   )')$!  H Mx D$F23K/@95CG 45I ./F
(
)C*+D23H56L34K"#BC ./F78J56I *+D./F
(
)C ,-E67J@BK!HO
 ./H(H$ 12G*+Dr   r+   )
rp   r   
xmlbuilderr   r   r   r   r   r   r+   r   r   r   <module>r      s7    
  A A=(j K, K,r   