mirror of
https://github.com/clearlinux/WALinuxAgent.git
synced 2026-09-05 05:11:55 +00:00
Add more logs to RDMA drivers (#261)
* Add more logs to default/rdma.py Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com> * Add more logs to distro/suse/rdma.py
This commit is contained in:
@@ -39,14 +39,14 @@ class RDMAHandler(object):
|
||||
base_kernel_err_msg += 'information or the hv_kvp_daemon is not '
|
||||
base_kernel_err_msg += 'running.'
|
||||
if not os.path.isfile(driver_info_source):
|
||||
error_msg = 'Source file "%s" does not exist. '
|
||||
error_msg = 'RDMA: Source file "%s" does not exist. '
|
||||
error_msg += base_kernel_err_msg
|
||||
logger.error(error_msg % driver_info_source)
|
||||
return
|
||||
|
||||
lines = open(driver_info_source).read()
|
||||
if not lines:
|
||||
error_msg = 'Source file "%s" is empty. '
|
||||
error_msg = 'RDMA: Source file "%s" is empty. '
|
||||
error_msg += base_kernel_err_msg
|
||||
logger.error(error_msg % driver_info_source)
|
||||
return
|
||||
@@ -56,13 +56,14 @@ class RDMAHandler(object):
|
||||
NdDriverVersion = r.groups()[0]
|
||||
return NdDriverVersion
|
||||
else:
|
||||
error_msg = 'NdDriverVersion not found in "%s"'
|
||||
error_msg = 'RDMA: NdDriverVersion not found in "%s"'
|
||||
logger.error(error_msg % driver_info_source)
|
||||
return
|
||||
|
||||
def load_driver_module(self):
|
||||
"""Load the kernel driver, this depends on the proper driver
|
||||
to be installed with the install_driver() method"""
|
||||
logger.info('RDMA: Loading the kernel driver.')
|
||||
result = shellutil.run('modprobe %s' % self.driver_module_name)
|
||||
if result != 0:
|
||||
error_msg = 'Could not load "%s" kernel module. '
|
||||
@@ -71,7 +72,7 @@ class RDMAHandler(object):
|
||||
error_msg % (self.driver_module_name, self.driver_module_name)
|
||||
)
|
||||
return
|
||||
|
||||
logger.info('RDMA: Loaded the kernel driver successfully.')
|
||||
return True
|
||||
|
||||
def install_driver(self):
|
||||
@@ -83,11 +84,16 @@ class RDMAHandler(object):
|
||||
"""Check if the network module is loaded in kernel space"""
|
||||
cmd = 'lsmod | grep %s' % self.driver_module_name
|
||||
status, loaded_modules = shellutil.run_get_output(cmd)
|
||||
logger.info('RDMA: Checking if the module loaded.')
|
||||
if loaded_modules:
|
||||
logger.info('RDMA: module loaded.')
|
||||
return True
|
||||
logger.info('RDMA: module not loaded.')
|
||||
|
||||
def reboot_system(self):
|
||||
"""Reboot the system. This is required as the kernel module for
|
||||
the rdma driver cannot be unloaded with rmmod"""
|
||||
logger.info('System reboot')
|
||||
shellutil.run('shutdown -r now')
|
||||
logger.info('RDMA: Rebooting system.')
|
||||
ret = shellutil.run('shutdown -r now')
|
||||
if ret != 0:
|
||||
logger.error('RDMA: Failed to reboot the system')
|
||||
|
||||
@@ -25,13 +25,14 @@ from azurelinuxagent.common.rdma import RDMAHandler
|
||||
|
||||
|
||||
class SUSERDMAHandler(RDMAHandler):
|
||||
|
||||
def install_driver(self):
|
||||
"""Install the appropriate driver package for the RDMA firmware"""
|
||||
|
||||
fw_version = RDMAHandler.get_rdma_version()
|
||||
if not fw_version:
|
||||
error_msg = 'Could not determine firmware version. Therefore, '
|
||||
error_msg += 'no driver will be installed.'
|
||||
error_msg = 'RDMA: Could not determine firmware version. '
|
||||
error_msg += 'Therefore, no driver will be installed.'
|
||||
logger.error(error_msg)
|
||||
return
|
||||
zypper_install = 'zypper -n in %s'
|
||||
@@ -46,15 +47,15 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
if package_name in entry:
|
||||
sections = entry.split('|')
|
||||
if len(sections) < 4:
|
||||
error_msg = 'Unexpected output of "%s" with result "%s"'
|
||||
error_msg = 'RDMA: Unexpected output from"%s": "%s"'
|
||||
logger.error(error_msg % (cmd, entry))
|
||||
continue
|
||||
installed = sections[0].strip()
|
||||
version = sections[3].strip()
|
||||
driver_package_versions.append(version)
|
||||
if fw_version in version and installed == 'i':
|
||||
info_msg = 'Matching driver package "%s-%s" '
|
||||
info_msg += 'is already installed, nothing to do'
|
||||
info_msg = 'RDMA: Matching driver package "%s-%s" '
|
||||
info_msg += 'is already installed, nothing to do.'
|
||||
logger.info(info_msg % (package_name, version))
|
||||
return True
|
||||
if installed == 'i':
|
||||
@@ -67,23 +68,29 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
# Unloading the particular driver with rmmod does not work
|
||||
# We have to reboot after the new driver is installed
|
||||
if self.is_driver_loaded():
|
||||
info_msg = 'Currently loaded driver does not match the '
|
||||
info_msg += 'Firmware implementation, rebbot is required.'
|
||||
info_msg = 'RDMA: Currently loaded driver does not match the '
|
||||
info_msg += 'firmware implementation, reboot will be required.'
|
||||
logger.info(info_msg)
|
||||
requires_reboot = True
|
||||
logger.info("RDMA: removing package %s" % package_name)
|
||||
cmd = zypper_remove % package_name
|
||||
shellutil.run(cmd)
|
||||
logger.info("RDMA: removed package %s" % package_name)
|
||||
|
||||
logger.info("RDMA: looking for fw version %s in packages" % fw_version)
|
||||
for entry in driver_package_versions:
|
||||
if fw_version in version:
|
||||
if not fw_version in version:
|
||||
logger.info("Package '%s' is not a match." % entry)
|
||||
else:
|
||||
logger.info("Package '%s' is a match. Installing." % entry)
|
||||
complete_name = '%s-%s' % (package_name, version)
|
||||
cmd = zypper_install % complete_name
|
||||
result = shellutil.run(cmd)
|
||||
if result:
|
||||
error_msg = 'Failed install of package "%s" '
|
||||
error_msg = 'RDMA: Failed install of package "%s" '
|
||||
error_msg += 'from available repositories.'
|
||||
logger.error(error_msg % complete_name)
|
||||
msg = 'Successfully installed "%s" from '
|
||||
msg = 'RDMA: Successfully installed "%s" from '
|
||||
msg += 'configured repositories'
|
||||
logger.info(msg % complete_name)
|
||||
self.load_driver_module()
|
||||
@@ -91,22 +98,25 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
self.reboot_system()
|
||||
return True
|
||||
else:
|
||||
logger.info("RDMA: No suitable match in repos. Trying local.")
|
||||
local_packages = glob.glob('/opt/microsoft/rdma/*.rpm')
|
||||
for local_package in local_packages:
|
||||
logger.info("Examining: %s" % local_package)
|
||||
if local_package.endswith('.src.rpm'):
|
||||
continue
|
||||
if (
|
||||
package_name in local_package and
|
||||
fw_version in local_package
|
||||
):
|
||||
logger.info("RDMA: Installing: %s" % local_package)
|
||||
cmd = zypper_install % local_package
|
||||
result = shellutil.run(cmd)
|
||||
if result:
|
||||
error_msg = 'Failed install of package "%s" '
|
||||
error_msg = 'RDMA: Failed install of package "%s" '
|
||||
error_msg += 'from local package cache'
|
||||
logger.error(error_msg % local_package)
|
||||
break
|
||||
msg = 'Successfully installed "%s" from '
|
||||
msg = 'RDMA: Successfully installed "%s" from '
|
||||
msg += 'local package cache'
|
||||
logger.info(msg % (local_package))
|
||||
self.load_driver_module()
|
||||
|
||||
Reference in New Issue
Block a user