diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2023-04-21 16:22:34 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2023-04-21 21:35:10 +0200 |
commit | 5b6ab5e45204c7d35c2c4f92e949934a7b9ec6a7 (patch) | |
tree | 0c9e7da8c1e3e60951c1db02798fcbab8b81867f | |
parent | c67d65f7335f6875599a47e7a2e223e4c5d07f00 (diff) | |
download | NetworkManager-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.am | 6 | ||||
-rw-r--r-- | contrib/fedora/rpm/NetworkManager.spec | 30 | ||||
-rw-r--r-- | data/NetworkManager-ifcfg-rh-migration.service.in | 13 | ||||
-rw-r--r-- | data/meson.build | 1 |
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', ] |