)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c545c7e6023969b84148e651050aba7334db8b2e","unresolved":true,"context_lines":[{"line_number":29,"context_line":"for things like this since one must ensure that the value configured are"},{"line_number":30,"context_line":"consistent across deployments to behavior that varies depending on the"},{"line_number":31,"context_line":"host the guest is initially created on."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: I405d0324abe32b31a434105cf2c104876fe9c127"},{"line_number":34,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"e06bbd53_4b79203d","line":32,"updated":"2022-02-01 10:04:37.000000000","message":"implements: bp/multiqueue-flavor-extra-spec","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":true,"context_lines":[{"line_number":29,"context_line":"for things like this since one must ensure that the value configured are"},{"line_number":30,"context_line":"consistent across deployments to behavior that varies depending on the"},{"line_number":31,"context_line":"host the guest is initially created on."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: I405d0324abe32b31a434105cf2c104876fe9c127"},{"line_number":34,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"bdc2cd53_f1cc87e3","line":32,"in_reply_to":"e06bbd53_4b79203d","updated":"2022-02-01 15:35:08.000000000","message":"quickly spoke to gibi about this they were ok to not respin for this.\n\nim ok with the rest of the patch as is so ill apporve so we can get it moving though the gate","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c545c7e6023969b84148e651050aba7334db8b2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3216990f_60a7700c","updated":"2022-02-01 10:04:37.000000000","message":"LGTM","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"41cec84f_0c4fdc4b","updated":"2022-02-01 15:35:08.000000000","message":"i have acked/DONE most of the old comment to workaroudn the chagne in gerrit behavior\nthere is one still open regardign if we only have object not but that is not crital to the patch.\nsince gibi is ok with proceeding, sylvain was prevsioul +2 and my issue have been adress i am upgradeing my review to +2+w","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7f1a0fa60aa8a3274111030ad234963b0c5f98f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6ab8e5ad_d250a73a","updated":"2021-11-23 15:32:22.000000000","message":"in the only failure the tests didn\u0027t get the chance to run","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"35dc3dc216c41f6fedcd260c934bf756f2b8a6df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4dd6103c_7de25bd0","updated":"2022-02-03 11:43:43.000000000","message":"recheck","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"cf5017f4044364418b5112f6f9206cac3bb82282","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9daca7ac_b3552d29","updated":"2022-02-03 14:47:40.000000000","message":"recheck","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"84f195b8e0f92701d788ed52bbc7064159a1470d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"afee9701_d8b7bf9f","updated":"2022-02-02 12:23:11.000000000","message":"recheck","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f982147dcc96bf84047fda22a2222758277ac631","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"bea4a6db_7973244e","updated":"2022-02-02 20:24:14.000000000","message":"recheck","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"da3acc90443a4aeae140152224780a96d6cb22f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"bfc97e4f_441de98e","updated":"2021-11-23 15:32:08.000000000","message":"recheck","commit_id":"f42fb1241bb70b03b0715412b99257339e6bdc8d"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0b47afac6e6e01077241ce8abedc83a5922da935","unresolved":true,"context_lines":[{"line_number":813,"context_line":"        hardware.get_number_of_serial_ports(instance_type, image_meta)"},{"line_number":814,"context_line":"        hardware.get_realtime_cpu_constraint(instance_type, image_meta)"},{"line_number":815,"context_line":"        hardware.get_cpu_topology_constraints(instance_type, image_meta)"},{"line_number":816,"context_line":"        hardware.get_vif_multiqueue_constraint(instance_type, image_meta)"},{"line_number":817,"context_line":"        if validate_numa:"},{"line_number":818,"context_line":"            hardware.numa_get_constraints(instance_type, image_meta)"},{"line_number":819,"context_line":"        if validate_pci:"}],"source_content_type":"text/x-python","patch_set":2,"id":"b36158be_be0f4049","line":816,"updated":"2021-05-20 19:10:15.000000000","message":"+1\nthanks for adding this.","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":813,"context_line":"        hardware.get_number_of_serial_ports(instance_type, image_meta)"},{"line_number":814,"context_line":"        hardware.get_realtime_cpu_constraint(instance_type, image_meta)"},{"line_number":815,"context_line":"        hardware.get_cpu_topology_constraints(instance_type, image_meta)"},{"line_number":816,"context_line":"        hardware.get_vif_multiqueue_constraint(instance_type, image_meta)"},{"line_number":817,"context_line":"        if validate_numa:"},{"line_number":818,"context_line":"            hardware.numa_get_constraints(instance_type, image_meta)"},{"line_number":819,"context_line":"        if validate_pci:"}],"source_content_type":"text/x-python","patch_set":2,"id":"16462a0e_76bec1bd","line":816,"in_reply_to":"b36158be_be0f4049","updated":"2022-02-01 15:35:08.000000000","message":"Done","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"74954f7e8fcb36654df65ff0a9aea44dde05eb4c","unresolved":true,"context_lines":[{"line_number":1073,"context_line":"            id\u003d1, uuid\u003d\u0027f0000000-0000-0000-0000-000000000001\u0027,"},{"line_number":1074,"context_line":"            image_ref\u003duuids.image_ref,"},{"line_number":1075,"context_line":"            project_id\u003d723,"},{"line_number":1076,"context_line":"            system_metadata\u003d{}"},{"line_number":1077,"context_line":"            flavor\u003dobjects.Flavor(extra_specs\u003d{}),"},{"line_number":1078,"context_line":"        )"},{"line_number":1079,"context_line":"        d1.plug(ins, self.vif_tap)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7c62c433_cb07338a","line":1076,"range":{"start_line":1076,"start_character":27,"end_line":1076,"end_character":30},"updated":"2021-05-26 11:23:01.000000000","message":"oh your missing a ,","commit_id":"1d43a7b88737f8633e27f2cc0f6aa3e84b1f1844"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"94fe5020996dfd9c0906cb56fd20bb760bda8419","unresolved":false,"context_lines":[{"line_number":1073,"context_line":"            id\u003d1, uuid\u003d\u0027f0000000-0000-0000-0000-000000000001\u0027,"},{"line_number":1074,"context_line":"            image_ref\u003duuids.image_ref,"},{"line_number":1075,"context_line":"            project_id\u003d723,"},{"line_number":1076,"context_line":"            system_metadata\u003d{}"},{"line_number":1077,"context_line":"            flavor\u003dobjects.Flavor(extra_specs\u003d{}),"},{"line_number":1078,"context_line":"        )"},{"line_number":1079,"context_line":"        d1.plug(ins, self.vif_tap)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4da0925e_c0ec6af1","line":1076,"range":{"start_line":1076,"start_character":27,"end_line":1076,"end_character":30},"in_reply_to":"7c62c433_cb07338a","updated":"2021-05-26 13:07:03.000000000","message":"Done","commit_id":"1d43a7b88737f8633e27f2cc0f6aa3e84b1f1844"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"94fe5020996dfd9c0906cb56fd20bb760bda8419","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"            image_ref\u003duuids.image_ref,"},{"line_number":1075,"context_line":"            project_id\u003d723,"},{"line_number":1076,"context_line":"            system_metadata\u003d{}"},{"line_number":1077,"context_line":"            flavor\u003dobjects.Flavor(extra_specs\u003d{}),"},{"line_number":1078,"context_line":"        )"},{"line_number":1079,"context_line":"        d1.plug(ins, self.vif_tap)"},{"line_number":1080,"context_line":"        mock_create_tap_dev.assert_called_once_with(\u0027tap-xxx-yyy-zzz\u0027, None,"}],"source_content_type":"text/x-python","patch_set":3,"id":"f9a730b6_8367f7f0","line":1077,"in_reply_to":"9449ae06_dbe5af90","updated":"2021-05-26 13:07:03.000000000","message":"Done","commit_id":"1d43a7b88737f8633e27f2cc0f6aa3e84b1f1844"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"4afc23e3769b09e3dc91509aecf6b37431058407","unresolved":true,"context_lines":[{"line_number":5611,"context_line":"    )"},{"line_number":5612,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5613,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5614,"context_line":"    ):"},{"line_number":5615,"context_line":"        extra_specs \u003d {}"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"        if flavor_policy:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c9d73bbd_aa79cf5c","line":5614,"range":{"start_line":5614,"start_character":4,"end_line":5614,"end_character":6},"updated":"2021-05-20 14:10:30.000000000","message":"This is registering as a sad smiley face in my mind\u0027s eye, and now I can\u0027t unsee it.","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":5611,"context_line":"    )"},{"line_number":5612,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5613,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5614,"context_line":"    ):"},{"line_number":5615,"context_line":"        extra_specs \u003d {}"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"        if flavor_policy:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4d92da03_663a8b2c","line":5614,"range":{"start_line":5614,"start_character":4,"end_line":5614,"end_character":6},"in_reply_to":"41d9da5c_3f202e48","updated":"2022-02-01 15:35:08.000000000","message":"Ack","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0b47afac6e6e01077241ce8abedc83a5922da935","unresolved":true,"context_lines":[{"line_number":5611,"context_line":"    )"},{"line_number":5612,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5613,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5614,"context_line":"    ):"},{"line_number":5615,"context_line":"        extra_specs \u003d {}"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"        if flavor_policy:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dafb1b91_0d838821","line":5614,"range":{"start_line":5614,"start_character":4,"end_line":5614,"end_character":6},"in_reply_to":"c9d73bbd_aa79cf5c","updated":"2021-05-20 19:10:15.000000000","message":"lol","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c545c7e6023969b84148e651050aba7334db8b2e","unresolved":true,"context_lines":[{"line_number":5611,"context_line":"    )"},{"line_number":5612,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5613,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5614,"context_line":"    ):"},{"line_number":5615,"context_line":"        extra_specs \u003d {}"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"        if flavor_policy:"}],"source_content_type":"text/x-python","patch_set":2,"id":"41d9da5c_3f202e48","line":5614,"range":{"start_line":5614,"start_character":4,"end_line":5614,"end_character":6},"in_reply_to":"dafb1b91_0d838821","updated":"2022-02-01 10:04:37.000000000","message":":D now you ruined for me too","commit_id":"fef00043b56849ef4ebc1528316deeeb24480195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2fafe1f5c84845656f8b66d1f9b96437bbf4ecbc","unresolved":true,"context_lines":[{"line_number":5467,"context_line":"        (\u0027yes\u0027, True, True),"},{"line_number":5468,"context_line":"        # fail: mismatched image and flavor configuration"},{"line_number":5469,"context_line":"        (\u0027no\u0027, True, exception.FlavorImageConflict),"},{"line_number":5470,"context_line":"    )"},{"line_number":5471,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5472,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5473,"context_line":"    ):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7038ef41_a28fd70e","line":5470,"updated":"2021-07-22 15:56:39.000000000","message":"+1","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":5467,"context_line":"        (\u0027yes\u0027, True, True),"},{"line_number":5468,"context_line":"        # fail: mismatched image and flavor configuration"},{"line_number":5469,"context_line":"        (\u0027no\u0027, True, exception.FlavorImageConflict),"},{"line_number":5470,"context_line":"    )"},{"line_number":5471,"context_line":"    def test_get_vif_multiqueue_constraint("},{"line_number":5472,"context_line":"        self, flavor_policy, image_policy, expected,"},{"line_number":5473,"context_line":"    ):"}],"source_content_type":"text/x-python","patch_set":5,"id":"701ce97d_c6734d78","line":5470,"in_reply_to":"7038ef41_a28fd70e","updated":"2022-02-01 15:35:08.000000000","message":"Done","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2fafe1f5c84845656f8b66d1f9b96437bbf4ecbc","unresolved":true,"context_lines":[{"line_number":5486,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":5487,"context_line":"            {\u0027name\u0027: \u0027bar\u0027, \u0027properties\u0027: image_meta_props})"},{"line_number":5488,"context_line":""},{"line_number":5489,"context_line":"        if isinstance(expected, type) and issubclass(expected, Exception):"},{"line_number":5490,"context_line":"            self.assertRaises("},{"line_number":5491,"context_line":"                expected, hw.get_vif_multiqueue_constraint, flavor, image_meta,"},{"line_number":5492,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":5,"id":"b3594bc6_7bdf0d48","line":5489,"updated":"2021-07-22 15:56:39.000000000","message":"i guess this works although the \n\nalternitive would have been to pass the funciton to invoke as an adtion arg\n\ne.g.  (\u0027no\u0027, True, test.NoDBTestCase.assertRaises, exception.FlavorImageConflict),\nor something like that.\n\nthis if fine","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":5486,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":5487,"context_line":"            {\u0027name\u0027: \u0027bar\u0027, \u0027properties\u0027: image_meta_props})"},{"line_number":5488,"context_line":""},{"line_number":5489,"context_line":"        if isinstance(expected, type) and issubclass(expected, Exception):"},{"line_number":5490,"context_line":"            self.assertRaises("},{"line_number":5491,"context_line":"                expected, hw.get_vif_multiqueue_constraint, flavor, image_meta,"},{"line_number":5492,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":5,"id":"87926946_3b1fbbc8","line":5489,"in_reply_to":"b3594bc6_7bdf0d48","updated":"2022-02-01 15:35:08.000000000","message":"Ack","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ba4c0a895ff4332101a71176a217c16d12e338f8","unresolved":true,"context_lines":[{"line_number":5456,"context_line":"class VIFMultiqueueEnabledTest(test.NoDBTestCase):"},{"line_number":5457,"context_line":""},{"line_number":5458,"context_line":"    @ddt.unpack"},{"line_number":5459,"context_line":"    @ddt.data("},{"line_number":5460,"context_line":"        # pass: no configuration"},{"line_number":5461,"context_line":"        (None, None, False),"},{"line_number":5462,"context_line":"        # pass: flavor-only configuration"}],"source_content_type":"text/x-python","patch_set":6,"id":"ac426a87_56fdd1e2","line":5459,"updated":"2021-09-01 15:11:59.000000000","message":"++","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":5456,"context_line":"class VIFMultiqueueEnabledTest(test.NoDBTestCase):"},{"line_number":5457,"context_line":""},{"line_number":5458,"context_line":"    @ddt.unpack"},{"line_number":5459,"context_line":"    @ddt.data("},{"line_number":5460,"context_line":"        # pass: no configuration"},{"line_number":5461,"context_line":"        (None, None, False),"},{"line_number":5462,"context_line":"        # pass: flavor-only configuration"}],"source_content_type":"text/x-python","patch_set":6,"id":"968c3109_f9b78fe3","line":5459,"in_reply_to":"ac426a87_56fdd1e2","updated":"2022-02-01 15:35:08.000000000","message":"Done","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"}],"nova/virt/hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ccf01a29bce3d57cb39015f9247e0cdbc44cc095","unresolved":true,"context_lines":[{"line_number":1926,"context_line":"    if flavor_value_str is not None:"},{"line_number":1927,"context_line":"        flavor_value \u003d strutils.bool_from_string(flavor_value_str)"},{"line_number":1928,"context_line":""},{"line_number":1929,"context_line":"    if ("},{"line_number":1930,"context_line":"        image_value is not None and"},{"line_number":1931,"context_line":"        flavor_value is not None and"},{"line_number":1932,"context_line":"        image_value !\u003d flavor_value"},{"line_number":1933,"context_line":"    ):"},{"line_number":1934,"context_line":"        msg \u003d _("},{"line_number":1935,"context_line":"            \"Flavor %(flavor_name)s has %(prefix)s:%(key)s extra spec \""},{"line_number":1936,"context_line":"            \"explicitly set to %(flavor_val)s, conflicting with image \""}],"source_content_type":"text/x-python","patch_set":1,"id":"0c4875b1_a8590008","line":1933,"range":{"start_line":1929,"start_character":4,"end_line":1933,"end_character":6},"updated":"2021-05-20 11:45:13.000000000","message":"note to reviewers we do not need to use strutils.bool_from_string on the the image metadata because it is an object\nand that converation has already been done.","commit_id":"ece7bda9313e796169142f3749a8630521e25dd0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":1926,"context_line":"    if flavor_value_str is not None:"},{"line_number":1927,"context_line":"        flavor_value \u003d strutils.bool_from_string(flavor_value_str)"},{"line_number":1928,"context_line":""},{"line_number":1929,"context_line":"    if ("},{"line_number":1930,"context_line":"        image_value is not None and"},{"line_number":1931,"context_line":"        flavor_value is not None and"},{"line_number":1932,"context_line":"        image_value !\u003d flavor_value"},{"line_number":1933,"context_line":"    ):"},{"line_number":1934,"context_line":"        msg \u003d _("},{"line_number":1935,"context_line":"            \"Flavor %(flavor_name)s has %(prefix)s:%(key)s extra spec \""},{"line_number":1936,"context_line":"            \"explicitly set to %(flavor_val)s, conflicting with image \""}],"source_content_type":"text/x-python","patch_set":1,"id":"af62feef_cb5c4212","line":1933,"range":{"start_line":1929,"start_character":4,"end_line":1933,"end_character":6},"in_reply_to":"0c4875b1_a8590008","updated":"2022-02-01 15:35:08.000000000","message":"Ack","commit_id":"ece7bda9313e796169142f3749a8630521e25dd0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ccf01a29bce3d57cb39015f9247e0cdbc44cc095","unresolved":true,"context_lines":[{"line_number":1946,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1947,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1948,"context_line":"            },"},{"line_number":1949,"context_line":"        )"},{"line_number":1950,"context_line":""},{"line_number":1951,"context_line":"    return flavor_value or image_value or False"},{"line_number":1952,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"10c69f1c_85c153b6","line":1949,"updated":"2021-05-20 11:45:13.000000000","message":"+1\nraising a conflict is the correct approch we should be taking in almost all cases.","commit_id":"ece7bda9313e796169142f3749a8630521e25dd0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1947,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1948,"context_line":"            },"},{"line_number":1949,"context_line":"        )"},{"line_number":1950,"context_line":""},{"line_number":1951,"context_line":"    return flavor_value or image_value or False"},{"line_number":1952,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"902a9828_93cc5ddf","line":1949,"in_reply_to":"10c69f1c_85c153b6","updated":"2022-02-01 15:35:08.000000000","message":"Done","commit_id":"ece7bda9313e796169142f3749a8630521e25dd0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2fafe1f5c84845656f8b66d1f9b96437bbf4ecbc","unresolved":true,"context_lines":[{"line_number":1822,"context_line":"                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,"},{"line_number":1823,"context_line":"                \u0027flavor_name\u0027: flavor.name,"},{"line_number":1824,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1825,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1826,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1827,"context_line":"            },"},{"line_number":1828,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"0ef7dd68_b861a9b1","line":1825,"range":{"start_line":1825,"start_character":16,"end_line":1825,"end_character":46},"updated":"2021-07-22 15:56:39.000000000","message":"nit: we are generally better off using image uuid the reason is when the image metada object\nis reconsucted form the instance system metadata we dont actully have image_meta.name\n\nin this case its fine because o where this is called but it might not be fine if we call this function on the compute node in the future or in a perodic task","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"adbba44f854bae36a05633103b2f2b1645e97846","unresolved":true,"context_lines":[{"line_number":1822,"context_line":"                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,"},{"line_number":1823,"context_line":"                \u0027flavor_name\u0027: flavor.name,"},{"line_number":1824,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1825,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1826,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1827,"context_line":"            },"},{"line_number":1828,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"79788ed0_ae78fcc1","line":1825,"range":{"start_line":1825,"start_character":16,"end_line":1825,"end_character":46},"in_reply_to":"0ef7dd68_b861a9b1","updated":"2021-07-22 18:14:25.000000000","message":"raise exception.FlavorImageConflict(\n            message\u003dmsg % {\n                \u0027prefix\u0027: \u0027hw\u0027,\n                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,\n                \u0027flavor_name\u0027: flavor.name,\n                \u0027flavor_val\u0027: flavor_value,\n                \u0027image_name\u0027: image_meta.name,\n                \u0027image_val\u0027: image_value,\n            },\n            code\u003d400\n         )","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"539befd9ec95434a77cde5f371fe36a20150516b","unresolved":true,"context_lines":[{"line_number":1822,"context_line":"                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,"},{"line_number":1823,"context_line":"                \u0027flavor_name\u0027: flavor.name,"},{"line_number":1824,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1825,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1826,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1827,"context_line":"            },"},{"line_number":1828,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"91515a5b_6f7b7bc8","line":1825,"range":{"start_line":1825,"start_character":16,"end_line":1825,"end_character":46},"in_reply_to":"79788ed0_ae78fcc1","updated":"2021-09-02 11:23:29.000000000","message":"This comment needs waaay more context. It took me ages to understand what you were getting at. I _think_ what you\u0027re saying is that \u0027FlavorImageConflict\u0027 derives from \u0027NovaException\u0027, and the \u0027code\u0027 attribute of this exception is set to 500, meaning we\u0027ll get a HTTP 5xx if this is raised in e.g. the API.\n\nAssuming I\u0027ve grokked this correctly then this is a fair point that does need to be addressed. However, simply changing this won\u0027t fix everything since I didn\u0027t introduce that exception with this change. We have existing users and currently raise it from places likes \u0027get_mem_encryption_constraint\u0027 which is called by the same \u0027_validate_flavor_image_numa_pci\u0027 helper in \u0027nova.compute.api.API\u0027 (via \u0027_validate_flavor_image_mem_encryption\u0027) that you\u0027re worried about here. As such, fixing this in a piecemeal fashion like this isn\u0027t good enough. We need to change the base class of the \u0027FlavorImageConflict\u0027 exception first.","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"57789aeb7a3eee3877e1735e981c163d9e9f5c37","unresolved":true,"context_lines":[{"line_number":1822,"context_line":"                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,"},{"line_number":1823,"context_line":"                \u0027flavor_name\u0027: flavor.name,"},{"line_number":1824,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1825,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1826,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1827,"context_line":"            },"},{"line_number":1828,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"fc429828_64c4cf3a","line":1825,"range":{"start_line":1825,"start_character":16,"end_line":1825,"end_character":46},"in_reply_to":"91515a5b_6f7b7bc8","updated":"2021-09-02 11:46:04.000000000","message":"Okay, this isn\u0027t an issue because we\u0027re explicitly handling \u0027FlavorImageConflict\u0027. The exception you\u0027re worrying about can be raised via the following call stack:\n\n  nova.api.openstack.compute.servers.ServersController.create\n   nova.compute.api.API.create\n    nova.compute.api.API._create_instance\n     nova.compute.api.API._checks_for_create_and_rebuild\n      nova.compute.api.API._validate_flavor_image\n       nova.compute.api.API._validate_flavor_image_nostatus\n        nova.compute.api.API._validate_flavor_image_numa_pci\n         nova.virt.hardware.get_vif_multiqueue_constraint\n\nHowever the call to \u0027nova.compute.api.API.create\u0027 in \u0027nova.api.openstack.compute.servers.ServersController.create\u0027 has an explicit exception handler for \u0027FlavorImageConflict\u0027 via the INVALID_FLAVOR_IMAGE_EXCEPTIONS attribute [1][2]. We also have similar exception handlers for resize and rebuild. So, ultimately, we don\u0027t need this.\n\n[1] https://github.com/openstack/nova/blob/75f719e0/nova/api/openstack/compute/servers.py#L854-L855\n[2] https://github.com/openstack/nova/blob/75f719e0/nova/api/openstack/compute/servers.py#L55-L58","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2dfb56161e5a2e38f59bfcee31801477e4b875c","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"                \u0027key\u0027: \u0027vif_multiqueue_enabled\u0027,"},{"line_number":1823,"context_line":"                \u0027flavor_name\u0027: flavor.name,"},{"line_number":1824,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1825,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1826,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1827,"context_line":"            },"},{"line_number":1828,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"45145729_848d9fc3","line":1825,"range":{"start_line":1825,"start_character":16,"end_line":1825,"end_character":46},"in_reply_to":"fc429828_64c4cf3a","updated":"2021-09-02 11:48:45.000000000","message":"Done","commit_id":"f6d5d459e66eb70fef49daa758793cb41b342dfc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ba4c0a895ff4332101a71176a217c16d12e338f8","unresolved":true,"context_lines":[{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"    flavor_value \u003d None"},{"line_number":1808,"context_line":"    if flavor_value_str is not None:"},{"line_number":1809,"context_line":"        flavor_value \u003d strutils.bool_from_string(flavor_value_str)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    if ("},{"line_number":1812,"context_line":"        image_value is not None and"}],"source_content_type":"text/x-python","patch_set":6,"id":"6837a274_700bfd11","line":1809,"range":{"start_line":1809,"start_character":8,"end_line":1809,"end_character":21},"updated":"2021-09-01 15:11:59.000000000","message":"nit:  it\u0027s a bool value, so maybe the name should be something like \"asked_by_flavor\" but meh.","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1efc944d5359ed32be1211ad4e5cf63b8c73dec0","unresolved":false,"context_lines":[{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"    flavor_value \u003d None"},{"line_number":1808,"context_line":"    if flavor_value_str is not None:"},{"line_number":1809,"context_line":"        flavor_value \u003d strutils.bool_from_string(flavor_value_str)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    if ("},{"line_number":1812,"context_line":"        image_value is not None and"}],"source_content_type":"text/x-python","patch_set":6,"id":"d3906bf1_18710ef5","line":1809,"range":{"start_line":1809,"start_character":8,"end_line":1809,"end_character":21},"in_reply_to":"6837a274_700bfd11","updated":"2022-02-01 15:35:08.000000000","message":"Ack","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2dfb56161e5a2e38f59bfcee31801477e4b875c","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"        # TODO(sean-k-mooney): we should consider changing this 403 to a 400,"},{"line_number":1823,"context_line":"        # 403 was originally chosen to signify the user did not have"},{"line_number":1824,"context_line":"        # permission to override the flavor request in the image however a"},{"line_number":1825,"context_line":"        # 403 can be confused with a policy or keystone permission issue."},{"line_number":1826,"context_line":"        raise exception.FlavorImageConflict("},{"line_number":1827,"context_line":"            msg % {"},{"line_number":1828,"context_line":"                \u0027prefix\u0027: \u0027hw\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"077dac01_052aeae9","line":1825,"updated":"2021-09-02 11:48:45.000000000","message":"I removed this given the comments left on PS5","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2dfb56161e5a2e38f59bfcee31801477e4b875c","unresolved":false,"context_lines":[{"line_number":1831,"context_line":"                \u0027flavor_val\u0027: flavor_value,"},{"line_number":1832,"context_line":"                \u0027image_name\u0027: image_meta.name,"},{"line_number":1833,"context_line":"                \u0027image_val\u0027: image_value,"},{"line_number":1834,"context_line":"            }, code\u003d403"},{"line_number":1835,"context_line":"        )"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"    return flavor_value or image_value or False"}],"source_content_type":"text/x-python","patch_set":6,"id":"acc99ead_a72df8af","line":1834,"updated":"2021-09-02 11:48:45.000000000","message":"and this","commit_id":"ea36689e866f8da07f26ce6afa18fcc267b78165"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ccf01a29bce3d57cb39015f9247e0cdbc44cc095","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        \"\"\"A methods to set the number of virtio queues,"},{"line_number":257,"context_line":"           if it has been requested in extra specs."},{"line_number":258,"context_line":"        \"\"\""},{"line_number":259,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"},{"line_number":260,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict(image_meta)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        driver \u003d None"},{"line_number":263,"context_line":"        vhost_queues \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"cebf1eec_a5746ed6","line":260,"range":{"start_line":259,"start_character":6,"end_line":260,"end_character":64},"updated":"2021-05-20 11:45:13.000000000","message":"do we still need this by the way. or is it always an object now?\nalso this just came form inside _request_multiqueue so +1 for keeping it and makign hte hardware moduel function just deal with obejcts.","commit_id":"ece7bda9313e796169142f3749a8630521e25dd0"}]}
