)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0fcc61039dda468229c25ffe1a5560e986a29751","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"INVALID_FLAVOR_IMAGE_EXCEPTIONS \u003d ("},{"line_number":60,"context_line":"    exception.BadRequirementEmulatorThreadsPolicy,"},{"line_number":61,"context_line":"    exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":62,"context_line":"    exception.ImageCPUPinningForbidden,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_7314804d","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":31},"updated":"2019-08-06 15:00:53.000000000","message":"...here","commit_id":"7994c43f859c140fc1b883d8a59e20cbbf3a51f4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0fcc61039dda468229c25ffe1a5560e986a29751","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"                exception.FlavorDiskTooSmall,"},{"line_number":1098,"context_line":"                exception.FlavorMemoryTooSmall,"},{"line_number":1099,"context_line":"                exception.ImageNotActive,"},{"line_number":1100,"context_line":"                exception.ImageUnacceptable,"},{"line_number":1101,"context_line":"                exception.InvalidMetadata,"},{"line_number":1102,"context_line":"                ) as error:"},{"line_number":1103,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_330a8825","line":1100,"range":{"start_line":1100,"start_character":16,"end_line":1100,"end_character":44},"updated":"2019-08-06 15:00:53.000000000","message":"and remove it from here","commit_id":"7994c43f859c140fc1b883d8a59e20cbbf3a51f4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0fcc61039dda468229c25ffe1a5560e986a29751","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"                exception.InvalidMetadata,"},{"line_number":1102,"context_line":"                ) as error:"},{"line_number":1103,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":1104,"context_line":"        except INVALID_FLAVOR_IMAGE_EXCEPTIONS as error:"},{"line_number":1105,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":"        instance \u003d self._get_server(context, req, id, is_detail\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_96000a03","line":1104,"range":{"start_line":1104,"start_character":15,"end_line":1104,"end_character":46},"updated":"2019-08-06 15:00:53.000000000","message":"because it would already be handled here","commit_id":"7994c43f859c140fc1b883d8a59e20cbbf3a51f4"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"440121827620cfad37e1d917041991540d90bb7b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.CompressedImageUnacceptable,"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_5a51ac35","line":86,"range":{"start_line":86,"start_character":14,"end_line":86,"end_character":41},"updated":"2019-08-16 01:10:44.000000000","message":"ImageUnacceptable?","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"45be2b9898381f4eefb64a838ddb86913fcefc79","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.CompressedImageUnacceptable,"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_4269a8bb","line":86,"range":{"start_line":86,"start_character":14,"end_line":86,"end_character":41},"in_reply_to":"7faddb67_5a51ac35","updated":"2019-08-19 01:52:55.000000000","message":"It does mean image unacceptable, because of it\u0027s \u0027compressed\u0027 format.","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"2c006b9de4ce8cc064ad154191d9b70ace508bcf","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        except (exception.ImageNotActive,"},{"line_number":719,"context_line":"                exception.ImageBadRequest,"},{"line_number":720,"context_line":"                exception.ImageNotAuthorized,"},{"line_number":721,"context_line":"                exception.ImageUnacceptable,"},{"line_number":722,"context_line":"                exception.FixedIpNotFoundForAddress,"},{"line_number":723,"context_line":"                exception.FlavorNotFound,"},{"line_number":724,"context_line":"                exception.FlavorDiskTooSmall,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_12c83b73","line":721,"range":{"start_line":721,"start_character":16,"end_line":721,"end_character":43},"updated":"2019-08-28 06:44:10.000000000","message":"Not sure this should moved to INVALID_FLAVOR_IMAGE_EXCEPTIONS or stay in here.","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"4b993fe68ab822a4275460142b1012390e6aa137","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        except (exception.ImageNotActive,"},{"line_number":719,"context_line":"                exception.ImageBadRequest,"},{"line_number":720,"context_line":"                exception.ImageNotAuthorized,"},{"line_number":721,"context_line":"                exception.ImageUnacceptable,"},{"line_number":722,"context_line":"                exception.FixedIpNotFoundForAddress,"},{"line_number":723,"context_line":"                exception.FlavorNotFound,"},{"line_number":724,"context_line":"                exception.FlavorDiskTooSmall,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_d22623cc","line":721,"range":{"start_line":721,"start_character":16,"end_line":721,"end_character":43},"in_reply_to":"7faddb67_12c83b73","updated":"2019-08-28 07:12:37.000000000","message":"I have checked the code and I think whether we move this to INVALID_IMAGE_FLAVOR_EXCEPTIONS would perform exactly the same. I prefer not to move in person because maybe other functions will also throw a ImageUnacceptable exception but not for flavor reason. But I\u0027m open for this.","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"b1896ffc2b7af890e45f07a20d26ae763d177bc8","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        except (exception.ImageNotActive,"},{"line_number":719,"context_line":"                exception.ImageBadRequest,"},{"line_number":720,"context_line":"                exception.ImageNotAuthorized,"},{"line_number":721,"context_line":"                exception.ImageUnacceptable,"},{"line_number":722,"context_line":"                exception.FixedIpNotFoundForAddress,"},{"line_number":723,"context_line":"                exception.FlavorNotFound,"},{"line_number":724,"context_line":"                exception.FlavorDiskTooSmall,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_5ebd4e00","line":721,"range":{"start_line":721,"start_character":16,"end_line":721,"end_character":43},"in_reply_to":"7faddb67_d22623cc","updated":"2019-08-29 01:38:57.000000000","message":"Agree.","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"}],"nova/compute/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0fcc61039dda468229c25ffe1a5560e986a29751","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.ImageUnacceptable(image_id\u003dimage_id,"},{"line_number":542,"context_line":"                    reason\u003d_(\"container_format:%(fmt)s not supported in nova\")"},{"line_number":543,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_337368e9","line":540,"range":{"start_line":540,"start_character":18,"end_line":540,"end_character":53},"updated":"2019-08-06 15:00:53.000000000","message":"redundant parens","commit_id":"7994c43f859c140fc1b883d8a59e20cbbf3a51f4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0fcc61039dda468229c25ffe1a5560e986a29751","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.ImageUnacceptable(image_id\u003dimage_id,"},{"line_number":542,"context_line":"                    reason\u003d_(\"container_format:%(fmt)s not supported in nova\")"},{"line_number":543,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"},{"line_number":544,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_f614de42","line":541,"range":{"start_line":541,"start_character":36,"end_line":541,"end_character":53},"updated":"2019-08-06 15:00:53.000000000","message":"I suspect this will currently result in a 500 for spawn, and a 400 for rebuild. I think in order to make sure it\u0027s always a 400 (HTTPBadRequest), ImageUnacceptable needs to be added to the list of INVALID_FLAVOR_IMAGE_EXCEPTIONS...","commit_id":"7994c43f859c140fc1b883d8a59e20cbbf3a51f4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8e394ac21b3ba2b151090996095a015a9a9347c3","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                 api.openstack.compute.servers.INVALID_FLAVOR_IMAGE_EXCEPTIONS"},{"line_number":535,"context_line":"                 for the full list."},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_5e52e013","line":538,"range":{"start_line":537,"start_character":8,"end_line":538,"end_character":77},"updated":"2019-08-19 14:15:40.000000000","message":"nit, could combine these conditions","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"440121827620cfad37e1d917041991540d90bb7b","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_bab1c091","line":541,"range":{"start_line":541,"start_character":36,"end_line":541,"end_character":63},"updated":"2019-08-16 01:10:44.000000000","message":"Why not directly use ImageUnacceptable here? We had already defined this exception type.","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"45be2b9898381f4eefb64a838ddb86913fcefc79","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c2759899","line":541,"range":{"start_line":541,"start_character":36,"end_line":541,"end_character":63},"in_reply_to":"7faddb67_bab1c091","updated":"2019-08-19 01:52:55.000000000","message":"That\u0027s because ImageUnacceptable throws out a 500 Error number. And by Eric Fired\u0027s comments, I think it\u0027s better to throw out a same error number.\nIf we modified the code handling ImageUnacceptable exception. I\u0027m not sure what will happen. And more, we can simply remove this newly added exception if we are able to handle the new container format.","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8e394ac21b3ba2b151090996095a015a9a9347c3","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c303570c","line":541,"range":{"start_line":541,"start_character":36,"end_line":541,"end_character":63},"in_reply_to":"7faddb67_c2759899","updated":"2019-08-19 14:15:40.000000000","message":"I think you\u0027re referring to this comment [1]. What I suggested is actually more in line with what Dongcan is saying, and doesn\u0027t involve adding a new exception class. But either way works.\n\n[1] https://review.opendev.org/#/c/673407/4/nova/compute/api.py@541","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ec5a21aaf243a9819bd924b15c258078faf02e9e","unresolved":false,"context_lines":[{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_b6375fe3","line":541,"range":{"start_line":541,"start_character":36,"end_line":541,"end_character":63},"in_reply_to":"7faddb67_c303570c","updated":"2019-08-20 16:40:57.000000000","message":"I agree with using ImageUnacceptable.  We currently handle ImageUnacceptable for the rebuild case, I think it would be reasonable to add it to the server creation case as well.  (And if I remember right, we\u0027re allowed to change a 500 error code to something more specific.)","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"440121827620cfad37e1d917041991540d90bb7b","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                 api.openstack.compute.servers.INVALID_FLAVOR_IMAGE_EXCEPTIONS"},{"line_number":535,"context_line":"                 for the full list."},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"},{"line_number":545,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        if image and image[\u0027status\u0027] !\u003d \u0027active\u0027:"},{"line_number":548,"context_line":"            raise exception.ImageNotActive(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_3a63901c","line":545,"range":{"start_line":537,"start_character":7,"end_line":545,"end_character":58},"updated":"2019-08-16 01:10:44.000000000","message":"Is is better to remove these lines to _validate_flavor_image_nostatus? Most validation jobs had done there.","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ec5a21aaf243a9819bd924b15c258078faf02e9e","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                 api.openstack.compute.servers.INVALID_FLAVOR_IMAGE_EXCEPTIONS"},{"line_number":535,"context_line":"                 for the full list."},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"},{"line_number":545,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        if image and image[\u0027status\u0027] !\u003d \u0027active\u0027:"},{"line_number":548,"context_line":"            raise exception.ImageNotActive(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_538f1dcc","line":545,"range":{"start_line":537,"start_character":7,"end_line":545,"end_character":58},"in_reply_to":"7faddb67_3a63901c","updated":"2019-08-20 16:40:57.000000000","message":"Agreed, this check should be moved.  It\u0027ll still work here, but the intent is that this routine just does a status check then calls _validate_flavor_image_nostatus().","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"45be2b9898381f4eefb64a838ddb86913fcefc79","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                 api.openstack.compute.servers.INVALID_FLAVOR_IMAGE_EXCEPTIONS"},{"line_number":535,"context_line":"                 for the full list."},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"},{"line_number":545,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        if image and image[\u0027status\u0027] !\u003d \u0027active\u0027:"},{"line_number":548,"context_line":"            raise exception.ImageNotActive(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_e27a1486","line":545,"range":{"start_line":537,"start_character":7,"end_line":545,"end_character":58},"in_reply_to":"7faddb67_3a63901c","updated":"2019-08-19 01:52:55.000000000","message":"I think they will act mostly in a same way. I think it\u0027s OK to move these lines to _validate_flavor_image_nostatus.","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8e394ac21b3ba2b151090996095a015a9a9347c3","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                 api.openstack.compute.servers.INVALID_FLAVOR_IMAGE_EXCEPTIONS"},{"line_number":535,"context_line":"                 for the full list."},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        if root_bdm is not None:"},{"line_number":538,"context_line":"            if root_bdm.is_image and root_bdm[\u0027destination_type\u0027] \u003d\u003d \u0027local\u0027:"},{"line_number":539,"context_line":"                img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":540,"context_line":"                if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":541,"context_line":"                    raise exception.CompressedImageUnacceptable("},{"line_number":542,"context_line":"                    image_id\u003dimage_id,"},{"line_number":543,"context_line":"                    reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":544,"context_line":"                             \"in nova currently\")"},{"line_number":545,"context_line":"                             % {\u0027fmt\u0027: img_container_fmt})"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        if image and image[\u0027status\u0027] !\u003d \u0027active\u0027:"},{"line_number":548,"context_line":"            raise exception.ImageNotActive(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_fe42ac3a","line":545,"range":{"start_line":537,"start_character":7,"end_line":545,"end_character":58},"in_reply_to":"7faddb67_e27a1486","updated":"2019-08-19 14:15:40.000000000","message":"agree","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"2c006b9de4ce8cc064ad154191d9b70ace508bcf","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        if not image:"},{"line_number":566,"context_line":"            return"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        if root_bdm is not None and root_bdm.is_image and \\"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027:"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_f2f55fcd","line":569,"range":{"start_line":568,"start_character":8,"end_line":569,"end_character":54},"updated":"2019-08-28 06:44:10.000000000","message":"nit: this can like this:\nif (root_bdm is not None and root_bdm.is_image and\n    root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027):","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"4b993fe68ab822a4275460142b1012390e6aa137","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        if not image:"},{"line_number":566,"context_line":"            return"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        if root_bdm is not None and root_bdm.is_image and \\"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027:"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_921aeb79","line":569,"range":{"start_line":568,"start_character":8,"end_line":569,"end_character":54},"in_reply_to":"7faddb67_f2f55fcd","updated":"2019-08-28 07:12:37.000000000","message":"Done","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"2c006b9de4ce8cc064ad154191d9b70ace508bcf","unresolved":false,"context_lines":[{"line_number":568,"context_line":"        if root_bdm is not None and root_bdm.is_image and \\"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027:"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"},{"line_number":573,"context_line":"                reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":574,"context_line":"                         \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_d265c3b0","line":571,"range":{"start_line":571,"start_character":14,"end_line":571,"end_character":49},"updated":"2019-08-28 06:44:10.000000000","message":"nit: The parens can removed.","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"4b993fe68ab822a4275460142b1012390e6aa137","unresolved":false,"context_lines":[{"line_number":568,"context_line":"        if root_bdm is not None and root_bdm.is_image and \\"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027:"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if(img_container_fmt \u003d\u003d \u0027compressed\u0027):"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"},{"line_number":573,"context_line":"                reason\u003d_(\"container_format: %(fmt)s is not supported \""},{"line_number":574,"context_line":"                         \"in nova currently\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_3211b75e","line":571,"range":{"start_line":571,"start_character":14,"end_line":571,"end_character":49},"in_reply_to":"7faddb67_d265c3b0","updated":"2019-08-28 07:12:37.000000000","message":"Done","commit_id":"a926a63bbca51e899668ba9c0ce365a2cc991cfc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5ee9de8c7b73e869bef7041e80e4a3a12a2f4887","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @staticmethod"},{"line_number":543,"context_line":"    def _validate_flavor_image_nostatus(context, image, instance_type,"},{"line_number":544,"context_line":"                                        root_bdm, validate_numa\u003dTrue,"},{"line_number":545,"context_line":"                                        validate_pci\u003dFalse):"},{"line_number":546,"context_line":"        \"\"\"Validate the flavor and image."},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_f27ae3b8","line":544,"updated":"2019-09-03 18:52:43.000000000","message":"nova/tests/unit/compute/test_compute_api.py contains unit tests for _validate_flavor_image_nostatus().\nSo we need to implement the corresponding unit test for this case not only on functional tests.","commit_id":"74e8d87157ed35fa7b68bd58361f3fdc2d64fd2c"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"3c5402adb612c2d4e9ce6754ca0884b1759582ee","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @staticmethod"},{"line_number":543,"context_line":"    def _validate_flavor_image_nostatus(context, image, instance_type,"},{"line_number":544,"context_line":"                                        root_bdm, validate_numa\u003dTrue,"},{"line_number":545,"context_line":"                                        validate_pci\u003dFalse):"},{"line_number":546,"context_line":"        \"\"\"Validate the flavor and image."},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_b4e0d3cd","line":544,"in_reply_to":"7faddb67_f27ae3b8","updated":"2019-09-04 02:22:05.000000000","message":"Thank you! To do UT unit test this week.","commit_id":"74e8d87157ed35fa7b68bd58361f3fdc2d64fd2c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5ee9de8c7b73e869bef7041e80e4a3a12a2f4887","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        if not image:"},{"line_number":566,"context_line":"            return"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        if (root_bdm is not None and root_bdm.is_image and"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027):"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if img_container_fmt \u003d\u003d \u0027compressed\u0027:"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_32871bb9","line":569,"range":{"start_line":568,"start_character":0,"end_line":569,"end_character":57},"updated":"2019-09-03 18:52:43.000000000","message":"The commit message says\n\n Currently nova doesn\u0027t support new container format \u0027compressed\u0027.\n\nBut the above code checks the distination_type is local or not.\nThat means volume-backed virtual machine instances support compressed, right?\nIf so, it is better to add the NOTE here.\n\nThis question comes because why don\u0027t we just implement like\n\n img_container_fmt \u003d image.get(\u0027container_format\u0027)\n if img_container_fmt \u003d\u003d \u0027compressed\u0027:\n     ...\n\nwithout the above check.","commit_id":"74e8d87157ed35fa7b68bd58361f3fdc2d64fd2c"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"3c5402adb612c2d4e9ce6754ca0884b1759582ee","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        if not image:"},{"line_number":566,"context_line":"            return"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        if (root_bdm is not None and root_bdm.is_image and"},{"line_number":569,"context_line":"            root_bdm.get(\u0027destination_type\u0027) \u003d\u003d \u0027local\u0027):"},{"line_number":570,"context_line":"            img_container_fmt \u003d image.get(\u0027container_format\u0027)"},{"line_number":571,"context_line":"            if img_container_fmt \u003d\u003d \u0027compressed\u0027:"},{"line_number":572,"context_line":"                raise exception.ImageUnacceptable(image_id\u003dimage.get(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_d4bf8fa8","line":569,"range":{"start_line":568,"start_character":0,"end_line":569,"end_character":57},"in_reply_to":"7faddb67_32871bb9","updated":"2019-09-04 02:22:05.000000000","message":"That\u0027s right. We have submitted a patch to support volume-backed machine in Cinder with this new format, as you can see from commit message[1].\nSo here we have to check if Nova machine is created directly form image and not volume-backed.","commit_id":"74e8d87157ed35fa7b68bd58361f3fdc2d64fd2c"}],"nova/tests/functional/wsgi/test_container_format.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8e394ac21b3ba2b151090996095a015a9a9347c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7faddb67_de5ed011","line":103,"updated":"2019-08-19 14:15:40.000000000","message":"++ nice tests","commit_id":"321c925d3f1b499949bb34df081d7b0efdc34d11"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b673fc12be029e17aa6d393179957d05d2ba04c","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"                                      booted_from_volume, suffix, disk_images,"},{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_40730f17","line":3673,"updated":"2019-07-30 17:29:21.000000000","message":"Suggest pulling out the instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027] to a local var first, which will help both readability and code formatting.\n\nI think it\u0027s also preferred to reference system_metadata using dot notation these days (instance.system_metadata...). And you may wish to be more defensive about the existence of the \u0027image_container_format\u0027 key by using .get().","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"e554b0cd1cae9a90e8ba01a86297a4804f0371de","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"                                      booted_from_volume, suffix, disk_images,"},{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d3e350d7","line":3673,"in_reply_to":"7faddb67_40730f17","updated":"2019-07-31 08:29:30.000000000","message":"OK, thanks!","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"c7c9a055aa3de0682c02637c9145d020cfe287cb","unresolved":false,"context_lines":[{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"},{"line_number":3677,"context_line":"                reason\u003d_(\"container_format:%(fmt)s is not supported in nova\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ab1e695c","line":3674,"range":{"start_line":3674,"start_character":15,"end_line":3674,"end_character":25},"updated":"2019-07-30 15:24:56.000000000","message":"Is it already had implemented in Glance? From the doc I haven\u0027t see it.\n[1] https://docs.openstack.org/image-guide/image-formats.html","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"e554b0cd1cae9a90e8ba01a86297a4804f0371de","unresolved":false,"context_lines":[{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"},{"line_number":3677,"context_line":"                reason\u003d_(\"container_format:%(fmt)s is not supported in nova\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_f3368c51","line":3674,"range":{"start_line":3674,"start_character":15,"end_line":3674,"end_character":25},"in_reply_to":"7faddb67_ab1e695c","updated":"2019-07-31 08:29:30.000000000","message":"Not yet, still a blueprint now. Check this link for more infomation: https://review.opendev.org/#/c/670454\n\nPlus: This patch doesn\u0027t use *image* format but *container* format.\n\nThanks!","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"c7c9a055aa3de0682c02637c9145d020cfe287cb","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"                                      booted_from_volume, suffix, disk_images,"},{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"},{"line_number":3677,"context_line":"                reason\u003d_(\"container_format:%(fmt)s is not supported in nova\")"},{"line_number":3678,"context_line":"                % {\u0027fmt\u0027:"},{"line_number":3679,"context_line":"                instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]})"},{"line_number":3680,"context_line":"        need_inject \u003d (not configdrive.required_by(instance) and"},{"line_number":3681,"context_line":"                       injection_info is not None and"},{"line_number":3682,"context_line":"                       CONF.libvirt.inject_partition !\u003d -2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_307d08b2","line":3679,"range":{"start_line":3673,"start_character":8,"end_line":3679,"end_character":71},"updated":"2019-07-30 15:24:56.000000000","message":"I think these lines should be under Line 3671.","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"},{"author":{"_account_id":30648,"name":"ZhengMa","email":"zheng.ma@intel.com","username":"ZhengMa"},"change_message_id":"e554b0cd1cae9a90e8ba01a86297a4804f0371de","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"                                      booted_from_volume, suffix, disk_images,"},{"line_number":3671,"context_line":"                                      injection_info, fallback_from_host):"},{"line_number":3672,"context_line":"        # File injection only if needed"},{"line_number":3673,"context_line":"        if(instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]"},{"line_number":3674,"context_line":"           \u003d\u003d \u0027compressed\u0027):"},{"line_number":3675,"context_line":"            raise exception.ImageUnacceptable("},{"line_number":3676,"context_line":"                image_id\u003dinstance[\u0027system_metadata\u0027][\u0027image_base_image_ref\u0027],"},{"line_number":3677,"context_line":"                reason\u003d_(\"container_format:%(fmt)s is not supported in nova\")"},{"line_number":3678,"context_line":"                % {\u0027fmt\u0027:"},{"line_number":3679,"context_line":"                instance[\u0027system_metadata\u0027][\u0027image_container_format\u0027]})"},{"line_number":3680,"context_line":"        need_inject \u003d (not configdrive.required_by(instance) and"},{"line_number":3681,"context_line":"                       injection_info is not None and"},{"line_number":3682,"context_line":"                       CONF.libvirt.inject_partition !\u003d -2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_933f1824","line":3679,"range":{"start_line":3673,"start_character":8,"end_line":3679,"end_character":71},"in_reply_to":"7faddb67_307d08b2","updated":"2019-07-31 08:29:30.000000000","message":"Done","commit_id":"0631bcf9f85cc3fbfe025919e92233342ed46322"}]}
