)]}'
{"nova/tests/functional/libvirt/test_numa_servers.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"5bda48bef5594d3a5775afb82d0db0f0125801d8","unresolved":false,"context_lines":[{"line_number":620,"context_line":"        server \u003d self._create_server(flavor_id\u003dflavor_a_id)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        # we don\u0027t really care what the new flavor is, so long as the old"},{"line_number":623,"context_line":"        # flavor using pinning. We use a similar flavor for simplicity."},{"line_number":624,"context_line":"        flavor_b_id \u003d self._create_flavor("},{"line_number":625,"context_line":"            extra_spec\u003d{\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027})"},{"line_number":626,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ccb9a615","line":623,"range":{"start_line":623,"start_character":17,"end_line":623,"end_character":22},"updated":"2020-08-06 17:30:04.000000000","message":"\"is using\"","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":620,"context_line":"        server \u003d self._create_server(flavor_id\u003dflavor_a_id)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        # we don\u0027t really care what the new flavor is, so long as the old"},{"line_number":623,"context_line":"        # flavor using pinning. We use a similar flavor for simplicity."},{"line_number":624,"context_line":"        flavor_b_id \u003d self._create_flavor("},{"line_number":625,"context_line":"            extra_spec\u003d{\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027})"},{"line_number":626,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a0bee9fb","line":623,"range":{"start_line":623,"start_character":17,"end_line":623,"end_character":22},"in_reply_to":"9f560f44_ccb9a615","updated":"2020-08-11 10:42:26.000000000","message":"Done","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"5bda48bef5594d3a5775afb82d0db0f0125801d8","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":631,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":632,"context_line":"        ):"},{"line_number":633,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":634,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        orig_confirm \u003d nova.virt.libvirt.driver.LibvirtDriver.confirm_migration"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8c484e2d","line":636,"range":{"start_line":633,"start_character":12,"end_line":636,"end_character":69},"updated":"2020-08-06 17:30:04.000000000","message":"I guess you don\u0027t want to intertwine this with your TPM series, hence you\u0027re not depending on those new helpers you did for that series, but maybe add a TODO here to convert after both merge?","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":631,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":632,"context_line":"        ):"},{"line_number":633,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":634,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        orig_confirm \u003d nova.virt.libvirt.driver.LibvirtDriver.confirm_migration"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_00435514","line":636,"range":{"start_line":633,"start_character":12,"end_line":636,"end_character":69},"in_reply_to":"9f560f44_8c484e2d","updated":"2020-08-11 10:42:26.000000000","message":"\u003e I guess you don\u0027t want to intertwine this with your TPM series,\n \u003e hence you\u0027re not depending on those new helpers you did for that\n \u003e series,\n\nExactly\n\n \u003e but maybe add a TODO here to convert after both merge?\n\nI haven\u0027t added a TODO in the code, but I\u0027ve noted the change myself to fix this when I have to rebase the vTPM series (assuming this lands first)","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"5bda48bef5594d3a5775afb82d0db0f0125801d8","unresolved":false,"context_lines":[{"line_number":658,"context_line":"            client.OpenStackApiException,"},{"line_number":659,"context_line":"            self.api.post_server_action, server[\u0027id\u0027], post)"},{"line_number":660,"context_line":"        self.assertEqual(500, exc.response.status_code)"},{"line_number":661,"context_line":"        self.assertIn(\u0027CPUUnpinningInvalid\u0027, str(exc))"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"class NUMAServerTestWithCountingQuotaFromPlacement(NUMAServersTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8c1fae06","line":661,"range":{"start_line":661,"start_character":23,"end_line":661,"end_character":42},"updated":"2020-08-06 17:30:04.000000000","message":"I guess this is good enough, but I\u0027d feel more confident if we asserted stuff about which CPUs get pinned/unpinned.\n\nSo for instance, give the instance an explicit number of CPUs on lines 618 and 624 (I guess 4, if we\u0027re going on the cpu_dedicated_set value), assert they get pinned on both source and dest while the migration is happening in fake_confirm_migration(), assert the period has incorrectly freed the source CPUs right after the _run_periodics() call, and then finally this current assertion.","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":658,"context_line":"            client.OpenStackApiException,"},{"line_number":659,"context_line":"            self.api.post_server_action, server[\u0027id\u0027], post)"},{"line_number":660,"context_line":"        self.assertEqual(500, exc.response.status_code)"},{"line_number":661,"context_line":"        self.assertIn(\u0027CPUUnpinningInvalid\u0027, str(exc))"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"class NUMAServerTestWithCountingQuotaFromPlacement(NUMAServersTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_40cd4d83","line":661,"range":{"start_line":661,"start_character":23,"end_line":661,"end_character":42},"in_reply_to":"9f560f44_8c1fae06","updated":"2020-08-11 10:42:26.000000000","message":"I\u0027m generally not a fan of digging into internals from functional tests. I can see the benefit of doing so here though so added.","commit_id":"b2306d1d72dd21d61c6ac87feea1ec82c34ce5b1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"389298c0d3cb04fd4e2c5242d607f3dc82f4c797","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.start_computes(save_rp_uuids\u003dTrue)"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # create server"},{"line_number":618,"context_line":"        flavor_a_id \u003d self._create_flavor("},{"line_number":619,"context_line":"            extra_spec\u003d{\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027})"},{"line_number":620,"context_line":"        server \u003d self._create_server(flavor_id\u003dflavor_a_id)"},{"line_number":621,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_4baa8918","line":618,"range":{"start_line":618,"start_character":27,"end_line":618,"end_character":41},"updated":"2020-08-07 16:22:00.000000000","message":"You\u0027re depending on the default vcpus\u003d2 value here. Given the  assertions on lines 662 and 663, I\u0027m thinking it\u0027d be cleaner to explicitly list the vcpu quantity here.","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec1c6e763eb917a44bc2db403bb288495fe6a210","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.start_computes(save_rp_uuids\u003dTrue)"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # create server"},{"line_number":618,"context_line":"        flavor_a_id \u003d self._create_flavor("},{"line_number":619,"context_line":"            extra_spec\u003d{\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027})"},{"line_number":620,"context_line":"        server \u003d self._create_server(flavor_id\u003dflavor_a_id)"},{"line_number":621,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_92b03cdf","line":618,"range":{"start_line":618,"start_character":27,"end_line":618,"end_character":41},"in_reply_to":"9f560f44_4baa8918","updated":"2020-08-10 16:37:10.000000000","message":"Definitely agree.","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.start_computes(save_rp_uuids\u003dTrue)"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # create server"},{"line_number":618,"context_line":"        flavor_a_id \u003d self._create_flavor("},{"line_number":619,"context_line":"            extra_spec\u003d{\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027})"},{"line_number":620,"context_line":"        server \u003d self._create_server(flavor_id\u003dflavor_a_id)"},{"line_number":621,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3a881d21","line":618,"range":{"start_line":618,"start_character":27,"end_line":618,"end_character":41},"in_reply_to":"9f560f44_92b03cdf","updated":"2020-08-11 10:42:26.000000000","message":"Done","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec1c6e763eb917a44bc2db403bb288495fe6a210","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":634,"context_line":"        ):"},{"line_number":635,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":636,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_d2fbd475","line":636,"updated":"2020-08-10 16:37:10.000000000","message":"I\u0027m guessing this works because we\u0027ve got cast_as_call enabled somewhere. However, this kind of \"mock an internal thing for the time it takes to make an API request\" is fragile and can lead to non-deterministic test behavior or a future breakage. Can you move the wait_for_state_change() call into this mock context so we make sure to keep it mocked until we at least reach some notable point in the process?","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":634,"context_line":"        ):"},{"line_number":635,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":636,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_da99217a","line":636,"in_reply_to":"9f560f44_d2fbd475","updated":"2020-08-11 10:42:26.000000000","message":"Done","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"389298c0d3cb04fd4e2c5242d607f3dc82f4c797","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":633,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":634,"context_line":"        ):"},{"line_number":635,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":636,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"        dst_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":641,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_8b65c120","line":638,"range":{"start_line":635,"start_character":12,"end_line":638,"end_character":69},"updated":"2020-08-07 16:22:00.000000000","message":"There\u0027s still my TODO thing from PS2.","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":633,"context_line":"            \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027,"},{"line_number":634,"context_line":"        ):"},{"line_number":635,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":636,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"        dst_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":641,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_1a8d5931","line":638,"range":{"start_line":635,"start_character":12,"end_line":638,"end_character":69},"in_reply_to":"9f560f44_8b65c120","updated":"2020-08-11 10:42:26.000000000","message":"I forgot to post my replies from PS2","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec1c6e763eb917a44bc2db403bb288495fe6a210","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        self.stub_out("},{"line_number":669,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver.confirm_migration\u0027,"},{"line_number":670,"context_line":"            fake_confirm_migration,"},{"line_number":671,"context_line":"        )"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        # Now confirm the resize"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f2ec18bc","line":670,"updated":"2020-08-10 16:37:10.000000000","message":"Similarly, mocking this out mid-stream feels wrong unless there\u0027s some reason we need to.","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bae2ec3711dca9652cddf9870246f08d86cc1a51","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        self.stub_out("},{"line_number":669,"context_line":"            \u0027nova.virt.libvirt.driver.LibvirtDriver.confirm_migration\u0027,"},{"line_number":670,"context_line":"            fake_confirm_migration,"},{"line_number":671,"context_line":"        )"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        # Now confirm the resize"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9a8fa92d","line":670,"in_reply_to":"9f560f44_f2ec18bc","updated":"2020-08-11 10:42:26.000000000","message":"Done","commit_id":"d76efdf7e0b429c0156c7bf980780634f3d6d993"}]}
