It turns out my problem was environment-specific. I use a local mirror for git repos and oslo.rootwrap was missing. Devstack doesn't stop when a git checkout fails, so oslo.rootwrap wasn't installed from source and was subsequently installed by nova from pypi.
It turns out my problem was environment- specific. I use a local mirror for git repos and oslo.rootwrap was missing. Devstack doesn't stop when a git checkout fails, so oslo.rootwrap wasn't installed from source and was subsequently installed by nova from pypi.