Flavor Extra Spec and Image Properties Validation¶
https://blueprints.launchpad.net/nova/+spec/flavor-extra-spec-image-property-validation
Problem description¶
Currently flavor extra-specs and image properties validation are done in separate places. If they are not compatible, the instance may fail to launch and go into an ERROR state, or may reschedule an unknown number of times depending on the virt driver behaviour.
Use Cases¶
As an end user I would like to have instant feedback if flavor extra spec or image properties are not valid or they are not compatible with each other so I can correct my configuration and retry the operation.
Proposed change¶
We want to validate the combination of the flavor extra-specs and image properties as early as possible once they’re both known.
If validation fails then synchronously return error to user.
We’d need to do this anywhere the flavor or image changes, so basically instance creation, rebuild, and resize. More precisely, rename _check_requested_image() to something more generic, take it out of _checks_for_create_and_rebuild(), modify it to check more things and call it from all three operations: creation, rebuild, and resize.
Note
Only things that are not virt driver specific are validated.
Examples of validations to be added [1]:
Call hardware.numa_get_constraints to validate all the various numa-related things. This is currently done only on _create_instance(), should be done for resize/rebuild as well.
Ensure that the cpu policy, cpu thread policy and emulator thread policy values are valid.
Validate the realtime mask.
Validate the number of serial ports.
Validate the cpu topology constraints.
Validate the
quota:*
settings (that are not virt driver specific) in the flavor.
Alternatives¶
None
Data model impact¶
None
REST API impact¶
Due to the new validations, users could face more 4xx errors for more cases than we did before in create/rebuild/resize operations.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
Negligible.
Other deployer impact¶
None
Developer impact¶
None
Upgrade impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
jackding
Work Items¶
Add validations mostly in nova/compute/api.py.
Add/update unit tests.
Update documentation/release-note if necessary depending on the new validations added.
Dependencies¶
None
Testing¶
Will add unit tests.
Documentation Impact¶
None
References¶
History¶
Release Name |
Description |
---|---|
Stein |
Introduced |