summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2023-04-21 16:22:34 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2023-04-21 21:35:10 +0200
commit5b6ab5e45204c7d35c2c4f92e949934a7b9ec6a7 (patch)
tree0c9e7da8c1e3e60951c1db02798fcbab8b81867f
parentc67d65f7335f6875599a47e7a2e223e4c5d07f00 (diff)
downloadNetworkManager-bg/ifcfg-migrate-service.tar.gz
rpm: add a migration service for ifcfg-rhbg/ifcfg-migrate-service
TODO: the service is not starting automatically on upgrade. TODO: add "enable NetworkManager-ifcfg-rh-migration.service" in /usr/lib/systemd/system-preset/90-default.preset
-rw-r--r--Makefile.am6
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec30
-rw-r--r--data/NetworkManager-ifcfg-rh-migration.service.in13
-rw-r--r--data/meson.build1
4 files changed, 48 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index 72918243da..a76c00ec7e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5512,6 +5512,7 @@ if HAVE_SYSTEMD
systemdsystemunit_DATA += \
data/NetworkManager.service \
+ data/NetworkManager-ifcfg-rh-migration.service \
data/NetworkManager-wait-online.service \
data/NetworkManager-dispatcher.service \
data/nm-priv-helper.service \
@@ -5520,6 +5521,9 @@ systemdsystemunit_DATA += \
data/NetworkManager.service: $(srcdir)/data/NetworkManager.service.in
$(AM_V_GEN) $(data_edit) $< >$@
+data/NetworkManager-ifcfg-rh-migration.service: $(srcdir)/data/NetworkManager-ifcfg-rh-migration.service.in
+ $(AM_V_GEN) $(data_edit) $< >$@
+
if HAVE_SYSTEMD_200
data/NetworkManager-wait-online.service: $(srcdir)/data/NetworkManager-wait-online.service.in
$(AM_V_GEN) $(data_edit) $< >$@
@@ -5563,6 +5567,7 @@ EXTRA_DIST += \
data/NetworkManager-wait-online-systemd-pre200.service.in \
data/NetworkManager-wait-online.service.in \
data/NetworkManager.service.in \
+ data/NetworkManager-ifcfg-rh-migration.service.in \
data/nm-priv-helper.service.in \
data/meson.build \
data/nm-shared.xml \
@@ -5573,6 +5578,7 @@ CLEANFILES += \
data/NetworkManager-dispatcher.service \
data/NetworkManager-wait-online.service \
data/NetworkManager.service \
+ data/NetworkManager-ifcfg-rh-migration.service \
data/nm-priv-helper.service \
data/server.conf \
$(NULL)
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index 255342b01c..bb662875a5 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -159,11 +159,22 @@
%endif
%if 0%{?fedora} >= 36 || 0%{?rhel} >= 10
+# Whether the ifcfg-rh plugin is split into a separate package
+# (NetworkManager-initscripts-ifcfg-rh)
%global split_ifcfg_rh 1
%else
%global split_ifcfg_rh 0
%endif
+%if 0%{?split_ifcfg_rh} && 0%{?fedora} == 37
+# If the ifcfg-rh plugin is in a separate package, this controls
+# whether we install a service that runs once and migrates the
+# profiles to keyfile.
+%global enable_ifcfg_rh_migration 1
+%else
+%global enable_ifcfg_rh_migration 0
+%endif
+
%if 0%{?fedora} >= 36 || 0%{?rhel} >= 9
%global ifcfg_warning 1
%else
@@ -985,6 +996,15 @@ fi
%systemd_post %{systemd_units}
+%if 0%{?split_ifcfg_rh} && 0%{?enable_ifcfg_rh_migration}
+%post initscripts-ifcfg-rh
+# Don't use systemd macros 'systemd_post' and
+# 'systemd_postun_with_restart', since they require that both the old
+# package and the new one include the unit. In this case, the old
+# package is possibly missing it.
+systemctl --no-reload preset NetworkManager-ifcfg-rh-migration.service
+systemctl set-property NetworkManager-ifcfg-rh-migration.service Markers=+needs-restart
+%endif
%post initscripts-updown
if [ -f %{_sbindir}/ifup -a ! -L %{_sbindir}/ifup ]; then
@@ -1018,12 +1038,16 @@ if [ $1 -eq 0 ]; then
/usr/sbin/update-alternatives --remove ifup %{_libexecdir}/nm-ifup >/dev/null 2>&1 || :
fi
-
%if %{with nm_cloud_setup}
%preun cloud-setup
%systemd_preun %{systemd_units_cloud_setup}
%endif
+%if 0%{?split_ifcfg_rh} && 0%{?enable_ifcfg_rh_migration}
+%preun initscripts-ifcfg-rh
+%systemd_preun NetworkManager-ifcfg-rh-migration.service
+%endif
+
%postun
/usr/bin/udevadm control --reload-rules || :
@@ -1046,7 +1070,6 @@ fi
%systemd_postun %{systemd_units_cloud_setup}
%endif
-
%files
%{dbus_sys_dir}/org.freedesktop.NetworkManager.conf
%{dbus_sys_dir}/nm-dispatcher.conf
@@ -1233,6 +1256,9 @@ fi
%files initscripts-ifcfg-rh
%{nmplugindir}/libnm-settings-plugin-ifcfg-rh.so
%{dbus_sys_dir}/nm-ifcfg-rh.conf
+%if 0%{?enable_ifcfg_rh_migration}
+%{_unitdir}/NetworkManager-ifcfg-rh-migration.service
+%endif
%endif
diff --git a/data/NetworkManager-ifcfg-rh-migration.service.in b/data/NetworkManager-ifcfg-rh-migration.service.in
new file mode 100644
index 0000000000..d181e2e37b
--- /dev/null
+++ b/data/NetworkManager-ifcfg-rh-migration.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Network Manager ifcfg-rh migration
+Wants=NetworkManager.service
+After=NetworkManager.service
+ConditionPathExists=!@localstatedir@/lib/NetworkManager/.migration-done
+
+[Service]
+Type=oneshot
+ExecStart=@bindir@/nmcli connection migrate
+ExecStartPost=/bin/touch @localstatedir@/lib/NetworkManager/.migration-done
+
+[Install]
+WantedBy=multi-user.target
diff --git a/data/meson.build b/data/meson.build
index d617025a25..b2096b1925 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -11,6 +11,7 @@ if install_systemdunitdir
services = [
'NetworkManager-dispatcher.service.in',
'NetworkManager.service.in',
+ 'NetworkManager-ifcfg-rh-migration.service.in',
'nm-priv-helper.service.in',
]