mirror of
https://github.com/clearlinux/WALinuxAgent.git
synced 2026-09-05 21:31:41 +00:00
Merge pull request #877 from rjschwei/endlessBootOoops
- RDMA load fixes for SUSE
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Microsoft Azure Linux Agent
|
||||
#
|
||||
# Copyright 2014 Microsoft Corporation
|
||||
# Copyright 2017 Microsoft Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -18,7 +18,6 @@
|
||||
#
|
||||
|
||||
import glob
|
||||
import os
|
||||
import azurelinuxagent.common.logger as logger
|
||||
import azurelinuxagent.common.utils.shellutil as shellutil
|
||||
from azurelinuxagent.common.rdma import RDMAHandler
|
||||
@@ -37,8 +36,10 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
return
|
||||
zypper_install = 'zypper -n in %s'
|
||||
zypper_install_noref = 'zypper -n --no-refresh in %s'
|
||||
zypper_lock = 'zypper addlock %s'
|
||||
zypper_remove = 'zypper -n rm %s'
|
||||
zypper_search = 'zypper -n se -s %s'
|
||||
zypper_unlock = 'zypper removelock %s'
|
||||
package_name = 'msft-rdma-kmp-default'
|
||||
cmd = zypper_search % package_name
|
||||
status, repo_package_info = shellutil.run_get_output(cmd)
|
||||
@@ -54,13 +55,19 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
installed = sections[0].strip()
|
||||
version = sections[3].strip()
|
||||
driver_package_versions.append(version)
|
||||
if fw_version in version and installed == 'i':
|
||||
if fw_version in version and installed.startswith('i'):
|
||||
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':
|
||||
if installed.startswith('i'):
|
||||
# A driver with a different version is installed
|
||||
driver_package_installed = True
|
||||
cmd = zypper_unlock % package_name
|
||||
result = shellutil.run(cmd)
|
||||
info_msg = 'Driver with different version installed '
|
||||
info_msg += 'unlocked package "%s".'
|
||||
logger.info(info_msg % (package_name))
|
||||
|
||||
# If we get here the driver package is installed but the
|
||||
# version doesn't match or no package is installed
|
||||
@@ -80,7 +87,7 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
|
||||
logger.info("RDMA: looking for fw version %s in packages" % fw_version)
|
||||
for entry in driver_package_versions:
|
||||
if not fw_version in version:
|
||||
if fw_version not in entry:
|
||||
logger.info("Package '%s' is not a match." % entry)
|
||||
else:
|
||||
logger.info("Package '%s' is a match. Installing." % entry)
|
||||
@@ -94,6 +101,11 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
msg = 'RDMA: Successfully installed "%s" from '
|
||||
msg += 'configured repositories'
|
||||
logger.info(msg % complete_name)
|
||||
# Lock the package so it does not accidentally get updated
|
||||
cmd = zypper_lock % package_name
|
||||
result = shellutil.run(cmd)
|
||||
info_msg = 'Applied lock to "%s"' % package_name
|
||||
logger.info(info_msg)
|
||||
if not self.load_driver_module() or requires_reboot:
|
||||
self.reboot_system()
|
||||
return True
|
||||
@@ -119,6 +131,11 @@ class SUSERDMAHandler(RDMAHandler):
|
||||
msg = 'RDMA: Successfully installed "%s" from '
|
||||
msg += 'local package cache'
|
||||
logger.info(msg % (local_package))
|
||||
# Lock the package so it does not accidentally get updated
|
||||
cmd = zypper_lock % package_name
|
||||
result = shellutil.run(cmd)
|
||||
info_msg = 'Applied lock to "%s"' % package_name
|
||||
logger.info(info_msg)
|
||||
if not self.load_driver_module() or requires_reboot:
|
||||
self.reboot_system()
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user