Comment 0 for bug 1669755

Revision history for this message
Dimitri John Ledkov (xnox) wrote :

[Impact]

 * xe-deamon.service tries to be an early boot unit; before cloud-init-local / networking is setup
 * However it does not declare DefaultDependencies=no, and thus tries to pull in sysinit.target which should happen after cloud-init-local; yet xe-daemon.service is declared to be before cloud-init-local, thus this is a conflict of interest.
 * Either xe-deamon should declare DefaultDependencies=no, or just become a regular unit wanted by multi-user.target and the cloud-config.target

= Current unit =
[Unit]
Description=Xen Guest Monitoring Agent
After=local-fs.target
Requires=proc-xen.mount
Before=network.target cloud-init.service cloud-init-local.service
ConditionVirtualization=xen
ConditionPathExists=/proc/xen/capabilities

[Service]
ExecStartPre=/usr/sbin/xe-linux-distribution /var/cache/xe-linux-distribution
ExecStart=/usr/sbin/xe-daemon
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

= Minimal fix =

--- xe-guest-utilities.xe-daemon.service.old 2017-03-03 11:45:48.679700766 +0000
+++ xe-guest-utilities.xe-daemon.service 2017-03-03 11:46:07.923549054 +0000
@@ -1,5 +1,6 @@
 [Unit]
 Description=Xen Guest Monitoring Agent
+DefaultDependencies=no
 After=local-fs.target
 Requires=proc-xen.mount
 Before=network.target cloud-init.service cloud-init-local.service

= Become a normal unit fix =

--- xe-guest-utilities.xe-daemon.service.old 2017-03-03 11:45:48.679700766 +0000
+++ xe-guest-utilities.xe-daemon.service 2017-03-03 11:47:44.842785194 +0000
@@ -1,8 +1,6 @@
 [Unit]
 Description=Xen Guest Monitoring Agent
-After=local-fs.target
-Requires=proc-xen.mount
-Before=network.target cloud-init.service cloud-init-local.service
+Before=cloud-config.target
 ConditionVirtualization=xen
 ConditionPathExists=/proc/xen/capabilities

@@ -13,3 +11,4 @@

 [Install]
 WantedBy=multi-user.target
+WantedBy=cloud-config.target

==

[Test Case]

 * Boot a cloud instance, with xen hypervisor and cloud-init metdata
 * There should be no boot cycles

[Regression Potential]

 * Depending choice of the fix, xe-daemon might be starting earlier or later.
 * Some history checking is required, if xe-daemon must run before cloud-init-local or not
 * Or if e.g. we only care for ExecStartPre= to run before cloud-init-local

[Other Info]

 * Related bug #1496730