Comment 9 for bug 1739325

Revision history for this message
Matt Riedemann (mriedem) wrote :

Looking at juno-eol code, I came across what I think might result in "ValueError: Field `disabled' cannot be None".

In the long long ago, we stored the flavor information in the instance.system_metadata field:

https://github.com/openstack/nova/blob/juno-eol/nova/compute/flavors.py#L327

Note that system_metadata_flavor_props does not include the "disabled" key, so we wouldn't have stored an instance_type_disabled key in the instance system_metadata.

Eventually we migrated how the embedded flavor in instance system_metadata was stored:

https://review.openstack.org/#/c/135700/56/nova/objects/instance.py@368

But we still pulled it out of the instance system_metadata to do that. Since that wouldn't have instance_type_disabled, we wouldn't store a serialized Flavor object with the disabled field set.

Then when we load up these old instance.flavor values from the serialized Flavor primitive in the instance_extra table, there is no 'disabled' key in the dict and we try to set Flavor.disabled=None which blows up since it's not a nullable field.