3.2 KiB
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 added1:
- 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 |