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:
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.
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.