summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWen Liang <wenliang@redhat.com>2023-06-07 10:45:22 -0400
committerWen Liang <wenliang@redhat.com>2023-06-09 09:18:20 -0400
commitf04a9eb098487cd999a5bdbe5aee05c2f8e84448 (patch)
tree3da0c0097a72affaf65f2e92603bfafb9272b76a
parent6050da93bda6f112cb3ad784f506ec67aa5aaff1 (diff)
cloud-setup: add pre-up event to prevent reaching network-online.target
network-online.target should not be reached before nm-cloud-setup completes configuring the network, which may make user service get started before the network is fully configured. Setting nm-cloud-setup.service as "Before=network-online.target" would maybe have already achieved that. However, also use a pre-up dispatcher script, so that the device activation in NetworkManager is also waiting for nm-cloud-setup to complete. https://bugzilla.redhat.com/show_bug.cgi?id=2151040 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1653
-rw-r--r--Makefile.am4
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec1
-rwxr-xr-xsrc/nm-cloud-setup/90-nm-cloud-setup.sh16
-rw-r--r--src/nm-cloud-setup/meson.build2
-rw-r--r--src/nm-cloud-setup/nm-cloud-setup.service.in1
-rwxr-xr-xtools/meson-post-install.sh1
6 files changed, 19 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index 80c1012099..fd92054d01 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5419,12 +5419,14 @@ src/nm-cloud-setup/nm-cloud-setup.service: $(srcdir)/src/nm-cloud-setup/nm-cloud
$(AM_V_GEN) $(data_edit) $< >$@
install-data-hook-cloud-setup: install-data-hook-dispatcher
- $(INSTALL_SCRIPT) "$(srcdir)/src/nm-cloud-setup/90-nm-cloud-setup.sh" "$(DESTDIR)$(nmlibdir)/dispatcher.d/no-wait.d/"
+ $(INSTALL_SCRIPT) "$(srcdir)/src/nm-cloud-setup/90-nm-cloud-setup.sh" "$(DESTDIR)$(nmlibdir)/dispatcher.d/pre-up.d/"
+ ln -fs ../pre-up.d/90-nm-cloud-setup.sh "$(DESTDIR)$(nmlibdir)/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh"
ln -fs no-wait.d/90-nm-cloud-setup.sh "$(DESTDIR)$(nmlibdir)/dispatcher.d/90-nm-cloud-setup.sh"
install_data_hook += install-data-hook-cloud-setup
uninstall-hook-cloud-setup:
+ rm -f "$(DESTDIR)$(nmlibdir)/dispatcher.d/pre-up.d/90-nm-cloud-setup.sh"
rm -f "$(DESTDIR)$(nmlibdir)/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh"
rm -f "$(DESTDIR)$(nmlibdir)/dispatcher.d/90-nm-cloud-setup.sh"
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index 255342b01c..2ebd91f09c 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -1243,6 +1243,7 @@ fi
%{_unitdir}/nm-cloud-setup.timer
%{nmlibdir}/dispatcher.d/90-nm-cloud-setup.sh
%{nmlibdir}/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh
+%{nmlibdir}/dispatcher.d/pre-up.d/90-nm-cloud-setup.sh
%{_mandir}/man8/nm-cloud-setup.8*
%endif
diff --git a/src/nm-cloud-setup/90-nm-cloud-setup.sh b/src/nm-cloud-setup/90-nm-cloud-setup.sh
index 817e255581..ae55b72524 100755
--- a/src/nm-cloud-setup/90-nm-cloud-setup.sh
+++ b/src/nm-cloud-setup/90-nm-cloud-setup.sh
@@ -1,9 +1,17 @@
#!/bin/sh
case "$2" in
- up|dhcp4-change)
- if systemctl -q is-enabled nm-cloud-setup.service ; then
- exec systemctl --no-block restart nm-cloud-setup.service
- fi
+ pre-up)
+ NO_BLOCK=
;;
+ dhcp4-change)
+ NO_BLOCK=--no-block
+ ;;
+ *)
+ exit 0
+ ;;
esac
+
+if systemctl -q is-enabled nm-cloud-setup.service ; then
+ exec systemctl $NO_BLOCK restart nm-cloud-setup.service
+fi
diff --git a/src/nm-cloud-setup/meson.build b/src/nm-cloud-setup/meson.build
index ea4ad1131b..b1269ec667 100644
--- a/src/nm-cloud-setup/meson.build
+++ b/src/nm-cloud-setup/meson.build
@@ -16,7 +16,7 @@ if install_systemdunitdir
install_data(
'90-nm-cloud-setup.sh',
- install_dir: join_paths(nm_pkglibdir, 'dispatcher.d', 'no-wait.d'),
+ install_dir: join_paths(nm_pkglibdir, 'dispatcher.d', 'pre-up.d'),
)
endif
diff --git a/src/nm-cloud-setup/nm-cloud-setup.service.in b/src/nm-cloud-setup/nm-cloud-setup.service.in
index f4b0e2638f..a2b4581f39 100644
--- a/src/nm-cloud-setup/nm-cloud-setup.service.in
+++ b/src/nm-cloud-setup/nm-cloud-setup.service.in
@@ -1,6 +1,7 @@
[Unit]
Description=Automatically configure NetworkManager in cloud
Documentation=man:nm-cloud-setup(8)
+Before=network-online.target
After=NetworkManager.service
[Service]
diff --git a/tools/meson-post-install.sh b/tools/meson-post-install.sh
index 45f3e37c6b..fe85d417ae 100755
--- a/tools/meson-post-install.sh
+++ b/tools/meson-post-install.sh
@@ -55,6 +55,7 @@ if [ "$enable_ifcfg_rh" = 1 ]; then
fi
if [ "$enable_nm_cloud_setup" = 1 -a "$install_systemdunitdir" = 1 ]; then
+ ln -sfn '../pre-up.d/90-nm-cloud-setup.sh' "${DESTDIR}${nm_pkglibdir}/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh"
ln -sfn 'no-wait.d/90-nm-cloud-setup.sh' "${DESTDIR}${nm_pkglibdir}/dispatcher.d/90-nm-cloud-setup.sh"
fi