
    d                     p    d dl Z d dlmc m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  G d de      Zy)    N)RDMAHandler)DISTRO_VERSION)LooseVersionc                       e Zd Zd Zy)SUSERDMAHandlerc                  
   t        t              t        d      k\  rd}|dz  }t        j                  |       y| j	                         }|sd}|dz  }t        j
                  |       yd}d	}d
}d}d}d}	d}
d}t        j                  |      \  }}d|v rd}
d}t        j                  |       n>d|v rd}
d}t        j                  |       n d}|dz  }t        j
                  ||z         y||
z  }t        j                  |      \  }}g }d}|j                  d      D ]   }|
|v s	|j                  d      }t        |      dk  rd}t        j
                  |||fz         E|d   j                         }|d   j                         }|j                  |       ||v r4|j                  d      r#d }|d!z  }t        j                  ||
|fz          y|j                  d      sd}|	|
z  }t        j                  |      }d"}|d#z  }t        j                  ||
z          d}|rx| j                         rd$}|d%z  }t        j                  |       d}t        j                  d&|
z         ||
z  }t        j                  |       t        j                  d'|
z         t        j                  d(|z         |D ]  }||vrt        j                  d)|z          t        j                  d*|z         |
d+|}||z  }t        j                  |      }|rd,}|d-z  }t        j
                  ||z         d.}|d/z  }t        j                  ||z         ||
z  }t        j                  |      }d0|
z  }t        j                  |       | j                         r|r| j!                           y t        j                  d1       t#        j"                  d2      }|D ]  }t        j                  d3|z         |j%                  d4      r.|
|v s3||v s8t        j                  d5|z         ||z  }t        j                  |      }|r&|d6k7  r!d,}|d7z  }t        j
                  ||z          yd.}|d8z  }t        j                  ||z         ||
z  }t        j                  |      }d0|
z  }t        j                  |       | j                         r|r| j!                           y d9}|d:|z  z  }t        j
                  |       y);z<Install the appropriate driver package for the RDMA firmware15z4SLE 15 and later only supports PCI pass through, no z&special driver needed for IB interfaceTz,RDMA: Could not determine firmware version. z'Therefore, no driver will be installed.Nzzypper -n in %szzypper -n --no-refresh in %szzypper addlock %szzypper -n rm %szzypper -n se -s %szzypper removelock %sdummyzuname -rdefaultzmsft-rdma-kmp-defaultzRDMA: Detected kernel-defaultazurezmsft-rdma-kmp-azurezRDMA: Detected kernel-azurez/RDMA: Could not detect kernel build, unable to z(load kernel module. Kernel release: "%s"F
|   z&RDMA: Unexpected output from"%s": "%s"r      iz&RDMA: Matching driver package "%s-%s" z$is already installed, nothing to do.z(Driver with different version installed zunlocked package "%s".z1RDMA: Currently loaded driver does not match the z1firmware implementation, reboot will be required.zRDMA: removing package %szRDMA: removed package %sz+RDMA: looking for fw version %s in packageszPackage '%s' is not a match.z$Package '%s' is a match. Installing.-z%RDMA: Failed install of package "%s" zfrom available repositories.z'RDMA: Successfully installed "%s" from zconfigured repositorieszApplied lock to "%s"z/RDMA: No suitable match in repos. Trying local.z/opt/microsoft/rdma/*.rpmzExamining: %sz.src.rpmzRDMA: Installing: %sj   zfrom local package cachezlocal package cachez+Unable to find driver package that matches zRDMA firmware version "%s")Versionr   loggerinfoget_rdma_versionerror	shellutilrun_get_outputsplitlenstripappend
startswithrunis_driver_loadedload_driver_modulereboot_systemglobendswith)selfmsg
fw_version	error_msgzypper_installzypper_install_norefzypper_lockzypper_removezypper_searchzypper_unlockpackage_namecmdstatuskernel_releaseinfo_msgrepo_package_infodriver_package_versionsdriver_package_installedentrysections	installedversionresultrequires_rebootcomplete_namelocal_packageslocal_packages                              >/usr/lib/python3/dist-packages/azurelinuxagent/pa/rdma/suse.pyinstall_driverzSUSERDMAHandler.install_driver   s    >"gdm3HC;;CKK**,
FIBBILL#*=)),.!*!9!9#!>&2L6HKK!&0L4HKK!IICCILL^34l*$-$<$<S$A!!"$#( &,,T2 	;Eu$ ;;s+x=1$ HILLc5\!9:$QK--/	"1+++-'..w7(Y-A-A#-FGH FFHKKL'+B BC'',/3,',6C&]]3/FIH 88HKKL 9:-	;4  # $$&NOOH%"&KK3lBC,.CMM#KK2\ABAJNO, 9	E&:UBCBUJK+7 ?$}4"s+ GI!??ILL]!:;?00C-/0!L0"s+1L@H%..0O&&(-9	0 KKIJ!YY'BCN!/ Om;< ))*5$5"m3KK 6 FG.>C&]]3/F&C-$K	!%??	Y%>?CC00CKK} 56%4C&]]3/F5DHKK)224**,58 J	9JFF	Y'    N)__name__
__module____qualname__rB    rC   rA   r   r      s    LrC   r   )r$   azurelinuxagent.common.loggercommonr   &azurelinuxagent.common.utils.shellutilutilsr   azurelinuxagent.common.rdmar   azurelinuxagent.common.versionr   distutils.versionr   r   r   rG   rC   rA   <module>rO      s-   (  . . : : 3 9 5Nk NrC   