)]}'
{"nova/objects/instance_numa.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8fe33d0348787400e6478ed42bc86fd03740bbe8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                raise exception.ObjectActionError("},{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_(\u0027mixed instance is not supported in version %s\u0027) %"},{"line_number":52,"context_line":"                           target_version)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":55,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_aee0dd28","side":"PARENT","line":52,"updated":"2020-10-08 10:26:07.000000000","message":"OK, so the problem is that target_version is (1, 5), so it\u0027ll \"assign\" the 1 to the first and only %s, and then explode.","commit_id":"655cd30c9fd1753323f725f45581a56f1d17c075"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8fe33d0348787400e6478ed42bc86fd03740bbe8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_("},{"line_number":52,"context_line":"                        \u0027%s policy is not supported in version %s\u0027"},{"line_number":53,"context_line":"                    ) % (primitive[\u0027cpu_policy\u0027], target_version))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":56,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_0ecbc9a3","line":53,"updated":"2020-10-08 10:26:07.000000000","message":"This looked just as wrong to me initially (I\u0027m dumb), but I eventually grokked it. The fact that target_version is \"nested\" inside the parent tuple is what fixes this, whereas before it was just a bare tuple instead.\n\nExample:\n\n  \u003e\u003e\u003e \u0027%s\u0027 % (1, 2)\n  Traceback (most recent call last):\n    File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  TypeError: not all arguments converted during string\n  formatting\n  \u003e\u003e\u003e \u0027%s %s\u0027 % (1, (1, 2))\n  \u00271 (1, 2)\u0027\n  \u003e\u003e\u003e","commit_id":"0b3d98f410edd88b92ae2896a8825250db1521a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"59d0fb1022a1d6f2956499cd81c8888ed21424e8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_("},{"line_number":52,"context_line":"                        \u0027%s policy is not supported in version %s\u0027"},{"line_number":53,"context_line":"                    ) % (primitive[\u0027cpu_policy\u0027], target_version))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":56,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8fbfadc8","line":53,"in_reply_to":"9f560f44_0ecbc9a3","updated":"2020-10-12 02:31:51.000000000","message":"or we assign the tuple version to another variable, then the `target_version` keep as string, it is more readable in the log also.","commit_id":"0b3d98f410edd88b92ae2896a8825250db1521a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fdb61f8531fe446249f8c6d2942ec8a66556d5fe","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_("},{"line_number":52,"context_line":"                        \u0027%s policy is not supported in version %s\u0027"},{"line_number":53,"context_line":"                    ) % (primitive[\u0027cpu_policy\u0027], target_version))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":56,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_9e6d1969","line":53,"in_reply_to":"9f560f44_8fbfadc8","updated":"2020-10-12 09:05:17.000000000","message":"I could, but then I\u0027d have to rename variables. Bother and hassle :) We have this design in a few other places [1][2][3] so I think this is good enough\n\n[1] https://github.com/openstack/nova/blob/261de76104/nova/objects/pci_device.py#L134-L137\n[2] https://github.com/openstack/nova/blob/261de76104/nova/objects/image_meta.py#L193-L197\n[3] https://github.com/openstack/nova/blob/261de76104/nova/objects/image_meta.py#L208-L212","commit_id":"0b3d98f410edd88b92ae2896a8825250db1521a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d31f30403754ee07ed3ffc9e9b5dcbe7c4f8cee7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_("},{"line_number":52,"context_line":"                        \u0027%s policy is not supported in version %s\u0027"},{"line_number":53,"context_line":"                    ) % (primitive[\u0027cpu_policy\u0027], target_version))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":56,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_fbbd42d7","line":53,"in_reply_to":"9f560f44_9e6d1969","updated":"2020-10-12 12:03:42.000000000","message":"ok, then LGTM :)","commit_id":"0b3d98f410edd88b92ae2896a8825250db1521a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ee9b3e29f70703c9ce5cfd5367246f48076be92f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            if primitive[\u0027cpu_policy\u0027] \u003d\u003d obj_fields.CPUAllocationPolicy.MIXED:"},{"line_number":49,"context_line":"                raise exception.ObjectActionError("},{"line_number":50,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":51,"context_line":"                    reason\u003d_("},{"line_number":52,"context_line":"                        \u0027%s policy is not supported in version %s\u0027"},{"line_number":53,"context_line":"                    ) % (primitive[\u0027cpu_policy\u0027], target_version))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # NOTE(huaqiang): Since version 1.5, \u0027cpuset\u0027 is modified to track the"},{"line_number":56,"context_line":"        # unpinned CPUs only, with pinned CPUs tracked via \u0027pcpuset\u0027 instead."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_a7909250","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":66},"updated":"2020-10-28 11:33:30.000000000","message":"We can\u0027t use f-strings here due to the translation right?","commit_id":"12cc805d3687fcc27023326c7602deae9c7ac2c4"}],"nova/tests/unit/objects/test_instance_numa.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8fe33d0348787400e6478ed42bc86fd03740bbe8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        data \u003d lambda x: x[\u0027nova_object.data\u0027]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        primitive \u003d data(topo_obj.obj_to_primitive("},{"line_number":188,"context_line":"            target_version\u003d\u00271.6\u0027, version_manifest\u003dversions))"},{"line_number":189,"context_line":"        self.assertEqual("},{"line_number":190,"context_line":"            fields.CPUAllocationPolicy.MIXED, primitive[\u0027cpu_policy\u0027])"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_4ec0217d","line":188,"updated":"2020-10-08 10:26:07.000000000","message":"... and we never hit that TypeError previously because we never tested with conditions that triggered its if block.","commit_id":"0b3d98f410edd88b92ae2896a8825250db1521a1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ee9b3e29f70703c9ce5cfd5367246f48076be92f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self.assertEqual("},{"line_number":190,"context_line":"            fields.CPUAllocationPolicy.MIXED, primitive[\u0027cpu_policy\u0027])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        self.assertRaises("},{"line_number":193,"context_line":"            exception.ObjectActionError,"},{"line_number":194,"context_line":"            topo_obj.obj_to_primitive,"},{"line_number":195,"context_line":"            target_version\u003d\u00271.5\u0027, version_manifest\u003dversions)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        # set this to something compatible with \u003c  1.6 so we can keep testing"},{"line_number":198,"context_line":"        topo_obj.cpu_policy \u003d fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_e7c56a5d","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":60},"updated":"2020-10-28 11:33:30.000000000","message":"nit - Did you not want to assert the reason here as well?\n\n  ex \u003d self.assertRaises(\n      [..])\n  self.assertIn(f\"{fields.CPUAllocationPolicy.MIXED} policy is not \"         \n                 \"supported in version (1, 5)\", ex.message)","commit_id":"12cc805d3687fcc27023326c7602deae9c7ac2c4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"60d20b2dfc6d5ed6ad925150dc2ae6287c50e575","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self.assertEqual("},{"line_number":190,"context_line":"            fields.CPUAllocationPolicy.MIXED, primitive[\u0027cpu_policy\u0027])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        self.assertRaises("},{"line_number":193,"context_line":"            exception.ObjectActionError,"},{"line_number":194,"context_line":"            topo_obj.obj_to_primitive,"},{"line_number":195,"context_line":"            target_version\u003d\u00271.5\u0027, version_manifest\u003dversions)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        # set this to something compatible with \u003c  1.6 so we can keep testing"},{"line_number":198,"context_line":"        topo_obj.cpu_policy \u003d fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f621f24_074fc6bd","line":195,"range":{"start_line":192,"start_character":0,"end_line":195,"end_character":60},"in_reply_to":"1f621f24_e7c56a5d","updated":"2020-10-28 11:40:43.000000000","message":"Probably wise. I can do that in a follow-up","commit_id":"12cc805d3687fcc27023326c7602deae9c7ac2c4"}]}
