# Image attributes which Cinder stores in volume image metadata
# as regular properties
VIM_IMAGE_ATTRIBUTES = (
'image_id', 'image_name', 'size', 'checksum',
'container_format', 'disk_format', 'min_ram', 'min_disk',
)
And it looks like we never actually set the image_id in the image_meta dict in there, so it doesn't get stored in the RequestSpec.image to be used by the filter.
In debugging a functional test that recreates the failure, I got this:
spec_obj.image: ImageMeta( checksum= <?>,container_ format= <?>,created_ at=<?>, direct_ url=<?> ,disk_format= <?>,id= <?>,min_ disk=0, min_ram= 0,name= <?>,owner= <?>,properties= ImageMetaProps, protected= <?>,size= 1073741824, status= 'active' ,tags=< ?>,updated_ at=<?>, virtual_ size=<? >,visibility= <?>)
It looks like the image_meta comes from this method in the compute API:
https:/ /github. com/openstack/ nova/blob/ fa6c0f9cb14f1b4 ce4d9b1dbacb174 3173089986/ nova/compute/ api.py# L1028
https:/ /github. com/openstack/ nova/blob/ fa6c0f9cb14f1b4 ce4d9b1dbacb174 3173089986/ nova/utils. py#L1032
Which should be setting these values in the ImageMeta object:
https:/ /github. com/openstack/ nova/blob/ fa6c0f9cb14f1b4 ce4d9b1dbacb174 3173089986/ nova/utils. py#L88
# Image attributes which Cinder stores in volume image metadata ATTRIBUTES = ( format' , 'disk_format', 'min_ram', 'min_disk',
# as regular properties
VIM_IMAGE_
'image_id', 'image_name', 'size', 'checksum',
'container_
)
And it looks like we never actually set the image_id in the image_meta dict in there, so it doesn't get stored in the RequestSpec.image to be used by the filter.