[openstack-dev] [nova] Fail build request if we can't inject files?

Matt Riedemann mriedem at linux.vnet.ibm.com
Sun Jul 3 15:08:04 UTC 2016


I want to use the gate-tempest-dsvm-neutron-full-ssh in nova since it 
runs ssh validation + neutron + config drive + metadata service, which 
will test the virtual device tagging 2.32 microversion API (added last 
week).

The job has a file injection test that fails consistently which is 
keeping it from being voting.

After debugging, the problem is the files to inject are silently ignored 
because n-cpu is configured with libvirt.inject_partition=-2 by default. 
That disables file injection:

https://github.com/openstack/nova/blob/faf50a747e03873c3741dac89263a80112da915a/nova/virt/libvirt/driver.py#L3030

We don't even log a warning if the user requested files to inject and we 
can't honor it. If I were a user and tried to inject files when creating 
a server but they didn't show up in the guest, I'd open a support ticket 
against my cloud provider. So I don't think a warning (that only the 
admin sees) is sufficient here. This isn't something that's discoverable 
from the API either, it's really host configuration / capability 
(something we still need to tackle).

So I propose that we fail the server create request in this case since 
the user asked nova to inject files but n-cpu is configured to not allow 
that.

I'd also think that this should trigger a reschedule to another compute. 
However, if all computes have disabled file injection, which is the default:

https://github.com/openstack/nova/blob/0c0f60031acba11d0bab0617f68b95d9b5eb8d1d/nova/conf/libvirt.py#L66

Then they'll retry 3 times and fail with an instance in error state. So 
I'm not sure if rescheduling in this case is useful. I'd think that 
deployments are either allowing file injection globally (if using 
libvirt) of they aren't, but would need some operators to chime in here.

-- 

Thanks,

Matt Riedemann




More information about the OpenStack-dev mailing list