<div class="container">
<h1>Recommended update for suse-migration-services</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2026:22820-1</td>
</tr>
<tr>
<th>Release Date:</th>
<td>2026-07-18T10:13:46Z</td>
</tr>
<tr>
<th>Rating:</th>
<td>important</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
<li style="display: inline;">
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1258112">bsc#1258112</a>
</li>
<li style="display: inline;">
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1260340">bsc#1260340</a>
</li>
<li style="display: inline;">
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1263889">bsc#1263889</a>
</li>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">SUSE Linux Enterprise Server 16.0</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP applications 16.0</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that has three fixes can now be installed.</p>
<h2>Description:</h2>
<p>This update for suse-migration-services fixes the following issues:</p>
<p>Changes in suse-migration-services:</p>
<ul>
<li>yq is only recommended not required</li>
<li>Bump version: 2.1.34 → 2.1.35</li>
<li>Update suse-migration-rpm</li>
<li>Handle multipath root (#493)</li>
</ul>
<p>Add handling of multipath_wnn kernel parameter for multipath
root. This allows to detect multipath mapped systems and mount
them properly in the DMS live migration system and Fixes #491</p>
<ul>
<li>Explicitly request python3-base</li>
<li>Make sure to add multipath to the initrd for SAP (bsc#1260340)</li>
<li>Fix install of NetworkManager</li>
<li>Fix missing tests for latest apparmor code change</li>
<li>Bind mount resolv.conf to /system-root/run/.../resolv.conf</li>
<li>
<p>Mount /system-root/run as tmpfs
Use tmpfs for /run, so we do not write temporal
files during migration to disk.</p>
</li>
<li>
<p>Make sure to add multipath to the initrd (bsc#1260340)</p>
</li>
<li>Fix loading SELinux policy of Salt Bundle with workaround</li>
<li>preserve resolv.conf (bsc#1263889)</li>
<li>
<p>Avoid temporary test/unit/.coverage in dist archive
This temporary file, generated by pytest-cov, is created within each
<code>make test</code> call containing different content, also if no
source files has changed.</p>
</li>
<li>
<p>Integrate ResolvConf class and reorder network setup services
Refactor SetupNameResolver and WickedToNetworkManager to use the new
ResolvConf class for unified resolver handling.
Swap systemd service dependencies to ensure name resolver setup
runs before host network setup.</p>
</li>
<li>
<p>Add ResolvConf class for unified name resolver mgmt
Implement a new ResolvConf class to provide a consistent approach for
handling /etc/resolv.conf during migrations. The class introduces
logic to:</p>
</li>
<li>
<p>Detect if /etc/resolv.conf is managed by netconfig or NetworkManager.</p>
</li>
<li>Verify user customizations using MD5 checksums (compatible with
netconfig) and header analysis.</li>
<li>Preserve custom configurations by moving them to a static file
and creating a symlink to prevent future overwrites by network tools.</li>
<li>
<p>Support resolver setup for both the target root and live systems.</p>
</li>
<li>
<p>wicked2nm: explicitly remove sysconfig-netconfig (bsc#1258112)</p>
</li>
</ul>
<p>If sysconfig-netconfig is not removed, when dropping wicked,
NetworkManager still use <code>netconfig</code>.
But <code>netconfig</code> doesn't find its
<code>/etc/sysconfig/network/scripts/netconfig.function</code> file, which
lead to an error like:
<code>NetworkManager[926]: /usr/sbin/netconfig: line 574: log: command not found</code></p>
<ul>
<li>Fixed log message for already mounted system</li>
<li>
<p>Use download-in-advance mode for zypper migration
This reduces the risk of download problems while inside
of the upgrade process. This Fixes jira#PCT-1170</p>
</li>
<li>
<p>Add explicit SLES15 migration target check
Instead of falling back to the default with a misleading
warning message, make sure to check for this target explicitly
beforehand</p>
</li>
<li>
<p>Bump version: 2.1.33 → 2.1.34</p>
</li>
<li>Init tools/migrate with debug set to false</li>
<li>Fix Zypper class command output handling</li>
</ul>
<p>The way zypper is called always redirects all output,
stdout and stderr into the main log file. Because of that
the variables self.output and self.error are always empty.
This commit fixes the command call in a way that
stdout and stderr are multiplexed such that the caller
data can be captured by the python call and the data gets
appended to the log file too. This commit also drops the
unused and due to the redirection always empty self.error
variable. For multiplexing the tee command gets used which
impacts the returncode of the actual call. In order to
get the correct exit code we use set -o pipefail.</p>
<ul>
<li>Fix validation of zypper migration result</li>
</ul>
<p>Up to now the assumption was that any situation in which zypper
migration cannot migrate the system returns with an error, meaning
exit code != 0. However, this assumption is wrong. There are
condition in which zypper migration only indicates a problem
with a message saying 'No migration available' and the call
return with a successful error code = 0. This causes big trouble
for the DMS in a way that it continues running its services
which all assumes the migration to the next major release was
performed. It misleads readers of the log file into the wrong
direction and the worst it causes modifications to the host
system when it was not migrated. This commit makes sure that
the migration stops and treats the above message as an error
condition.</p>
<ul>
<li>
<p>Fix quoting</p>
</li>
<li>
<p>Add time info to backup directory</p>
</li>
</ul>
<p>So far only the date information was part of the backup
directory. However, if multiple migration attempts happens
on the same day, this would overwrite the data.</p>
<ul>
<li>fix: ensure <code>logger.handlers</code> is empty in tests</li>
</ul>
<p>Loggers will only be initialized once; thus if the logger test is
scheduled after other tests, loggers might already be initialized and
the logger creation code path might not be taken, causing the logger
test to fail.</p>
<ul>
<li>
<p>XFSv4 precheck</p>
</li>
<li>
<p>Fix migrate tool for container based migration</p>
</li>
</ul>
<p>The tool overwrites an eventually existing /etc/sle-migration-service.yml
config file. This commit fixes it by using yq and inplace updates</p>
<ul>
<li>
<p>update SLES16 DMS image to 16.1</p>
</li>
<li>
<p>Fix md device detection</p>
</li>
</ul>
<p>Fix detection of device mapper layered rootfs. Software
raid disks are not found by findmnt if the actual rootfs
is one or more layers down. This commit fixes the detection
if we need to pass along the rd.auto cmdline option to
let the boot process activate them.</p>
<ul>
<li>update SLES16 DMS image to 16.1</li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".<br/>
Alternatively you can run the command listed for your product:
</p>
<ul class="list-group">
<li class="list-group-item">
SUSE Linux Enterprise Server for SAP applications 16.0
<br/>
<code>zypper in -t patch SUSE-SLES-16.0-1282=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server 16.0
<br/>
<code>zypper in -t patch SUSE-SLES-16.0-1282=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
SUSE Linux Enterprise Server 16.0 (noarch)
<ul>
<li>suse-migration-services-common-2.1.35-160000.1.1</li>
<li>suse-migration-pre-checks-2.1.35-160000.1.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server for SAP applications 16.0 (noarch)
<ul>
<li>suse-migration-services-common-2.1.35-160000.1.1</li>
<li>suse-migration-pre-checks-2.1.35-160000.1.1</li>
</ul>
</li>
</ul>
<h2>References:</h2>
<ul>
<li>
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1258112">https://bugzilla.suse.com/show_bug.cgi?id=1258112</a>
</li>
<li>
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1260340">https://bugzilla.suse.com/show_bug.cgi?id=1260340</a>
</li>
<li>
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1263889">https://bugzilla.suse.com/show_bug.cgi?id=1263889</a>
</li>
</ul>
</div>