From ff2a38b2333532db8fb1619f7bde76dece35ffcd Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Fri, 24 Jun 2016 15:59:01 -0700 Subject: [PATCH] Add more logs to RDMA drivers (#261) * Add more logs to default/rdma.py Signed-off-by: Ahmet Alp Balkan * Add more logs to distro/suse/rdma.py --- azurelinuxagent/common/rdma.py | 18 +++++++++++------ azurelinuxagent/pa/rdma/suse.py | 34 +++++++++++++++++++++------------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/azurelinuxagent/common/rdma.py b/azurelinuxagent/common/rdma.py index 001d1d4..32d46ad 100644 --- a/azurelinuxagent/common/rdma.py +++ b/azurelinuxagent/common/rdma.py @@ -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') diff --git a/azurelinuxagent/pa/rdma/suse.py b/azurelinuxagent/pa/rdma/suse.py index 05f206e..f0d8d0f 100644 --- a/azurelinuxagent/pa/rdma/suse.py +++ b/azurelinuxagent/pa/rdma/suse.py @@ -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()