Comment 66 for bug 1529079

Revision history for this message
In , Michael (michael-redhat-bugs) wrote :

Ok, found some suspicious behavior in systemd. The distinction may be whether or not the 'After' dependency refers to an existing unit or not. On CoreOS it is entirely likely libvirtd.service doesn't exist or has a different name. I'm not sure about the Ubuntu case. Also the order if After/Before in the properties list is significant. Using Before/After appears to work.

Both dependencies do not exist, but fails only when After is first:

    # busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 \
        org.freedesktop.systemd1.Manager StartTransientUnit 'ssa(sv)a(sa(sv))' \
        test7.slice replace 2 After as 1 other.target Before as 1 fake.target 0
    Cannot set property Before, or unknown property.

    # busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 \
        org.freedesktop.systemd1.Manager StartTransientUnit 'ssa(sv)a(sa(sv))' \
        test7.slice replace 2 Before as 1 fake.target After as 1 other.target 0
    o "/org/freedesktop/systemd1/job/23660"

Whether or not the Before dependency exists never matters.

Quentin: so at least this hints at a workaround, either create a dummy libvirtd.service unit file or run the container with that unit name. Or if the container doesn't make sense to run as libvirtd.service maybe a unit alias is sufficient.

Alternate workaround: patch libvirt to swap the order of those two properties.

Real fix: figure out what on earth is going on in systemd, but that's all the brain power I can spend on this at the moment.