
    p
f                         d dl Z d dlZd dlZd dlZd dlmc mZ d dlmc mZ d dl	mc m
c mZ d dlmZ  G d de      Zy)    N)RDMAHandlerc                       e Zd Zd Zd Zy)UbuntuRDMAHandlerc                 H   | j                         }|st        j                  d       y t        j                  dd|      }t        j                  dd      \  }}|dk7  rt        j                  d       d	}n|j                         }t        j                  d
|d|       |d|z  k(  rt        j                  d       y t        j                  d|z        \  }}|dk(  r't        j                  d       | j                  |       y t        j                         st        j                  d       y t        j                  d      \  }}|dk7  ry t        j                  d|      st        j                  d       y t        j                  dd|      }t        j                  dd|      }t        j                  d      \  }}|dk7  ry t        j                  d      \  }}|dk7  ry t        j                  d|      }|st        j                  d       y |j                         d   }t        j                  dd|      }t        j                  d|d|       |j                  d      D cg c]  }t        |       }	}|j                  d      D cg c]  }t        |       }
}|	|
k  rVt        j                  d       t        j                  d      \  }}|rt        j                  d        y | j!                          y t        j                  d!|z         y c c}w c c}w )"NzGRDMA: Could not determine firmware version. No driver will be installedz\._zmodprobe -R hv_network_directF)chk_errr   zMRDMA: modprobe -R hv_network_direct failed. Use module name hv_network_directhv_network_directzRDMA: current RDMA driver z nd_version zhv_network_direct_%szKRDMA: driver is installed and ND version matched. Skip reconfiguring driverzmodinfo hv_network_direct_%sz>RDMA: driver with ND version is installed. Link to module namez3RDMA: driver update is disabled. Skip kernel updatezuname -rz-azure$z,RDMA: skip driver update on non-Azure kernel -.zapt-get updatez,apt-cache show --no-all-versions linux-azurezVersion: (\S+)z/RDMA: version not found in package linux-azure.z\.\d+$zRDMA: kernel_version=z package_version=z7RDMA: newer version available, update kernel and rebootzapt-get -y install linux-azurezRDMA: kernel update failedz4RDMA: no kernel update is avaiable for ND version %s)get_rdma_versionloggererrorresub	shellutilrun_get_outputinfostripupdate_modprobed_confconfenable_rdma_updatesearchgroupssplitintreboot_system)self
nd_versionstatusmodule_nameoutputkernel_versionrpackage_versionxkernel_version_arraypackage_version_arrays              @/usr/lib/python3/dist-packages/azurelinuxagent/pa/rdma/ubuntu.pyinstall_driverz UbuntuRDMAHandler.install_driver    s    **,
LLbcVVE3
3
 '556U_de{Q;KKgh-K%++-KKQ[\]0:==KKef "001OR\1\]vQ;KKXY&&z2 &&(KKMN!00<vQ;yyF+LLGH	2v6S.9 "001ABvQ;!001_`vQ;II'0LLJK((*Q-&&B@NTcde1?1E1Ec1JLAQLL2A2G2G2L NQ#a& N N"77KKQR%445UVMF69: LLOR\\]  M Ns   +LLc                    d}d}t         j                  j                  |      st        j                  d|z         n%t        |d      5 }|j                         }d d d        t        j                  d|      }|rt        j                  dd|z  |      }n|d|z  z  }t        dd      5 }|j                  |       d d d        t        j                  d	|z         y # 1 sw Y   xY w# 1 sw Y   .xY w)
Nz/etc/modprobe.d/vmbus-rdma.confr
   z&RDMA: %s not found, it will be createdr$   z-alias hv_network_direct hv_network_direct_\S+z,alias hv_network_direct hv_network_direct_%sz.
alias hv_network_direct hv_network_direct_%s
wz.RDMA: hv_network_direct alias updated to ND %s)ospathisfiler   r   openreadr   r   r   write)r   r   modprobed_filelinesfr$   s         r)   r   z'UbuntuRDMAHandler.update_modprobed_confg   s     ;ww~~n-KK@>QRnc* !a! IIFNFFKM{  I  NI  KP  QEG*TTE3S9 	QGGEN	 	DzQR! !	 	s   	C)C(C%(C1N)__name__
__module____qualname__r*   r        r)   r   r      s    E^NSr:   r   )globr-   r   timeazurelinuxagent.common.confcommonr   azurelinuxagent.common.loggerr   &azurelinuxagent.common.utils.shellutilutilsr   azurelinuxagent.common.rdmar   r   r9   r:   r)   <module>rC      s8   (  	 	  * * . . : : 3\S \Sr:   