Comment 10 for bug 1752838

Revision history for this message
Corey Bryant (corey.bryant) wrote :

I reviewed the systemd unit files that have a dependency on neutron-ovs-cleanup and I think we could use some updates there as well to tighten up the dependency on neutron-ovs-cleanup.

We currently have the following and I think the latter 3 should be updated with a Requires like neutron-openvswitch-agent.service has. The After= only handles order when unit files are started together, whereas Requires= will start the required service if it is not already active and will fail this serivce if the required service fails to start.

/lib/systemd/system/neutron-openvswitch-agent.service
-----------------------------------------------------
[Unit]
Description=Openstack Neutron Open vSwitch Plugin Agent
After=mysql.service postgresql.service rabbitmq-server.service keystone.service
Requires=neutron-ovs-cleanup.service

/lib/systemd/system/neutron-l3-agent.service
--------------------------------------------
[Unit]
Description=OpenStack Neutron L3 agent
After=mysql.service postgresql.service rabbitmq-server.service keystone.service openvswitch-switch.service neutron-ovs-cleanup.service

/lib/systemd/system/neutron-dhcp-agent.service
----------------------------------------------
[Unit]
Description=OpenStack Neutron DHCP agent
After=mysql.service postgresql.service rabbitmq-server.service keystone.service neutron-ovs-cleanup.service

/lib/systemd/system/nova-compute.service
----------------------------------------
[Unit]
Description=OpenStack Compute
After=libvirtd.service postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service neutron-ovs-cleanup.service

Another point of concern was that neutron-ovs-cleanup may not finish prior to dependent units starting. That won't happen with the After= option specified. From the systemd.service man page:
"Note that systemd will consider the unit to be in the state "starting" until the program has terminated, so ordered dependencies will wait for the program to finish before starting themselves."

neutron-ovs-cleanup is a Type=oneshot unit with RemainAfterExit=yes, which means that it will run