)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d38ee5754544b1e9e324070643fc0fd019ee06f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0ad4cbe5_a69bcdaa","updated":"2021-11-09 17:17:35.000000000","message":"tentive +1 i have 2 questions inline but noting worth blocking on in my opipion.","commit_id":"f1ec5351802fe92280171292882daa75cf8c3be0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de78d108458222133a0a6ac307a2340088908885","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"436b12df_6faded34","updated":"2021-11-10 16:02:05.000000000","message":"Just couple of small things inline","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"b4f849320c02972b5c346f51b7009479019c59c5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"69a158ab_beae981a","updated":"2021-11-23 02:01:49.000000000","message":"The following test fails in the openstack-tox-py36 check job.\n\n* nova.tests.unit.api.openstack.test_wsgi_app.WSGIAppTest.test_init_application_called_twice\n\nIt is reproducible. It should be fixed.\n","commit_id":"f00032ab63d9a14e621fbe6e53bb2ff6a88fb035"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d56b7f2a5d347d638ff4902beeb0fa12d9d951a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"0205b595_1f5bc722","updated":"2021-11-19 17:18:25.000000000","message":"my comments were fixed so I\u0027m happy with this now.","commit_id":"f00032ab63d9a14e621fbe6e53bb2ff6a88fb035"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5019d66733c3206d29991d9f0ff96b08df241f73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7c5dc1f4_c9c30d92","updated":"2021-11-23 01:35:37.000000000","message":"recheck","commit_id":"f00032ab63d9a14e621fbe6e53bb2ff6a88fb035"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83b38aa5155abda9bbd975483bc9135d50756bb5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7367dcc4_6fe8bad0","in_reply_to":"69a158ab_beae981a","updated":"2022-01-28 18:59:47.000000000","message":"Done","commit_id":"f00032ab63d9a14e621fbe6e53bb2ff6a88fb035"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3b4ba1321aee5eed9dd24585723c28058d7f1d77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"276d508c_89f8aeec","updated":"2022-02-08 16:13:49.000000000","message":"Discussed this on IRC today. We\u0027re going to wait until Z opens, when we can\u0027t forget about Python3.6, since unittest.mock has too many bugs in 3.6","commit_id":"c0d1013eb9487e3574eebc64398fbe0326886d47"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"773147c191b3cd139408baee301e5eb31d79f6b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fca31ecf_40cf76d7","updated":"2022-02-04 12:09:42.000000000","message":"recheck","commit_id":"c0d1013eb9487e3574eebc64398fbe0326886d47"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ed9e0c9a809ad6f7f52d26ca935e117afc7c3db5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3f3b43b4_ed42f770","updated":"2022-02-07 10:09:41.000000000","message":"the functional-py36 failure feels relevant. :/","commit_id":"c0d1013eb9487e3574eebc64398fbe0326886d47"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f346d659a8e3e37b05cf0084b487bdc6c82f84dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bae5adab_fdbaebc7","updated":"2022-02-08 14:48:06.000000000","message":"yep i tought they were fixed in the last respin\ni guess not","commit_id":"c0d1013eb9487e3574eebc64398fbe0326886d47"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5b91c4fbd7803311d926e12f67f6189212fa916c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"54fc820e_1a4a7bd6","updated":"2022-07-27 09:39:27.000000000","message":"As efried pointed out in https://review.opendev.org/c/openstack/nova/+/708768/8 py310 failure is relevant. We do double mocking and in py310 unittest.mock does not allow that.","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"204581f7a0e5f029fb64f49b70d57e1cdf18f587","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"794ffd79_bca806af","updated":"2022-07-27 09:30:18.000000000","message":"Looks good. Let\u0027s do this!","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e580fc1915c55c59ee0508df96dca123821ca916","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"c367917f_42ef97ec","updated":"2022-07-27 09:31:39.000000000","message":"holding +A until the inflight microversion 2.91 lands","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1ca856f005be8b87f9ba352624edae0f475f164","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bde7e26a_9014ba09","updated":"2022-07-26 19:10:52.000000000","message":"this took a while but its basiclaly mechanical and the only non mechanical parts look correct too.\n\ni was +2w on revison 13 and i dont see anything in 14 to change that","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"892aa4bd07672defc983ce7e96dae986f4505db5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5e39e768_0ce07c03","in_reply_to":"54fc820e_1a4a7bd6","updated":"2022-08-01 15:04:42.000000000","message":"py310 issue is fixed in a follow up (https://review.opendev.org/c/openstack/nova/+/851445) as soon as that passes py310 and functional-py310 jobs, I will approve this.","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43046a22d0e668afb2ac9d7dff42ad091ee65fab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"24fd81bb_8c88db39","updated":"2022-08-01 15:48:06.000000000","message":"just fixed up a pep8 issue","commit_id":"89ef050b8c049b9a6f0e2c70408fc93c826c55e0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"51d36873867044c1f573ab27858321d9d3c1e282","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"42c390ff_f951cf7b","updated":"2022-08-01 18:22:38.000000000","message":"lgtm, thanks","commit_id":"89ef050b8c049b9a6f0e2c70408fc93c826c55e0"}],"nova/tests/functional/api_sample_tests/test_migrate_server.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_utils import versionutils"},{"line_number":17,"context_line":"from unittest import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import exception"},{"line_number":20,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_986e1793","line":17,"updated":"2020-03-27 20:34:54.000000000","message":"Should move up into standard import group.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_utils import versionutils"},{"line_number":17,"context_line":"from unittest import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import exception"},{"line_number":20,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3e7b3bbe","line":17,"in_reply_to":"df33271e_986e1793","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/compute/test_resource_tracker.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os_resource_classes as orc"},{"line_number":14,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.compute import power_state"},{"line_number":18,"context_line":"from nova.compute import resource_tracker"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_78699389","line":15,"updated":"2020-03-27 20:34:54.000000000","message":"Move up.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os_resource_classes as orc"},{"line_number":14,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.compute import power_state"},{"line_number":18,"context_line":"from nova.compute import resource_tracker"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_be48eb86","line":15,"in_reply_to":"df33271e_78699389","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/db/test_quota.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import ddt"},{"line_number":14,"context_line":"from oslo_utils import uuidutils"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova import context"},{"line_number":18,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_58f92fc6","line":15,"updated":"2020-03-27 20:34:54.000000000","message":"Move up (and move ddt down).","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import ddt"},{"line_number":14,"context_line":"from oslo_utils import uuidutils"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova import context"},{"line_number":18,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3e54db20","line":15,"in_reply_to":"df33271e_58f92fc6","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/db/test_virtual_interface.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import datetime"},{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":"from oslo_utils import timeutils"},{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova import context"},{"line_number":19,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_38f42bcf","line":16,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import datetime"},{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":"from oslo_utils import timeutils"},{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova import context"},{"line_number":19,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_be3d8bde","line":16,"in_reply_to":"df33271e_38f42bcf","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/libvirt/test_numa_servers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"import testtools"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_d82edf41","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"Move up and move the other two down.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"import testtools"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_5e2c3fab","line":18,"in_reply_to":"df33271e_d82edf41","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ddt"},{"line_number":17,"context_line":"import fixtures"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_b8315ba5","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"Move and up move other two down.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ddt"},{"line_number":17,"context_line":"import fixtures"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3e297b9a","line":18,"in_reply_to":"df33271e_b8315ba5","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/libvirt/test_report_cpu_traits.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os_resource_classes as orc"},{"line_number":17,"context_line":"import os_traits as ost"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import conf"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_f82be32c","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os_resource_classes as orc"},{"line_number":17,"context_line":"import os_traits as ost"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import conf"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_9e1b677f","line":18,"in_reply_to":"df33271e_f82be32c","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"29f26d43e081dcc76f620c3796357ee90e9099e3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os_resource_classes as orc"},{"line_number":17,"context_line":"import os_traits as ost"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import conf"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_4f0007ac","line":18,"updated":"2020-03-31 17:55:16.000000000","message":"Missed this one.","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"79d760f9b17979677079bbdbee49a88cd079f5a9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os_resource_classes as orc"},{"line_number":17,"context_line":"import os_traits as ost"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import conf"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_28710f45","line":18,"in_reply_to":"df33271e_4f0007ac","updated":"2020-05-05 09:50:27.000000000","message":"Done","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"}],"nova/tests/functional/notification_sample_tests/test_libvirt.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import nova.conf"},{"line_number":19,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_5822cf53","line":16,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import nova.conf"},{"line_number":19,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_de116f5f","line":16,"in_reply_to":"df33271e_5822cf53","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/regressions/test_bug_1554631.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"from cinderclient import exceptions as cinder_exceptions"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova import test"},{"line_number":18,"context_line":"from nova.tests import fixtures as nova_fixtures"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_381d4b0f","line":15,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"from cinderclient import exceptions as cinder_exceptions"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova import test"},{"line_number":18,"context_line":"from nova.tests import fixtures as nova_fixtures"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_5e055f13","line":15,"in_reply_to":"df33271e_381d4b0f","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/regressions/test_bug_1781286.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"from oslo_db import exception as oslo_db_exc"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.compute import manager as compute_manager"},{"line_number":18,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_981c5713","line":15,"updated":"2020-03-27 20:34:54.000000000","message":"Move up and move fixtures down.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"from oslo_db import exception as oslo_db_exc"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.compute import manager as compute_manager"},{"line_number":18,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_8105c813","line":15,"in_reply_to":"df33271e_981c5713","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"80cbca4b1304e8c98340aba4ddf9386f02c16241","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_dbb92716","line":90,"updated":"2020-07-17 02:16:27.000000000","message":"I\u0027m guessing the problem with the func test failure is this statement isn\u0027t working to stop the patching, so we get the side_effect raised again when we didn\u0027t want it to be.\n\nI\u0027ve played around with this locally for awhile and so far I\u0027m unable to resolve it.","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0951cf46c068a8e6bf0d56befd6f676fc4cb044b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_1bfd143b","line":90,"in_reply_to":"bf51134e_033ad8cb","updated":"2020-07-22 12:49:14.000000000","message":"And we can\u0027t remove from global requirements until a patch like this merges to nova. :/","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cb29adf65ef27ed4ccf9e3fa1031f56d5d081c7b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_85c16583","line":90,"in_reply_to":"bf51134e_1bfd143b","updated":"2020-09-08 23:30:52.000000000","message":"I was able to resolve the failures in this file by not using fixtures.MockPatch and pushed a new PS.\n\nThis patch is in merge conflict by now though and needs a manual rebase.","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"784e6cf95a0560542a7e740d891256370ae971db","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_54e14f2a","line":90,"in_reply_to":"bf51134e_27c92425","updated":"2020-07-18 22:36:24.000000000","message":"What if the mocking gets contained to a \"with\" block so it automatically goes out of scope?","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3c3cba3053317471ed31b2bee7b1c8f00515e691","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_033ad8cb","line":90,"in_reply_to":"bf51134e_54e14f2a","updated":"2020-07-22 03:04:10.000000000","message":"I think I figured out what\u0027s going on here. I don\u0027t think there\u0027s a bug in unittest.mock -- I think the problem is that the fixtures library will prefer to use the third-party mock library if it is present [1]:\n\n  mock \u003d extras.try_imports([\u0027mock\u0027, \u0027unittest.mock\u0027], None)\n\nso when this test does fixtures.MockPatch, it will use the third-party mock library and set up the mocks there. And so mock.patch.stopall() calls unittest.mock\u0027s stopall method which will contain no mocks to stop.\n\nEven though this patch replaces \"import mock\" with \"import unittest.mock\", all of our uses of mocks from the fixtures library will still be using the third-party mock library, which is a problem.\n\nThe third-party mock library is part of global-requirements [2], so AFAIK we can\u0027t stop fixtures from using third-party mock until we remove the global requirement.\n\n[1] https://github.com/testing-cabal/fixtures/blob/20bf99299955dd7152538fd23ea3b6fd95a87f65/fixtures/_fixtures/mockpatch.py#L22\n[2] https://github.com/openstack/requirements/blob/30109be02aec75349c502e98417deea9c2806846/global-requirements.txt#L403","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8ba0f1badb5e0aa629b3e13079deaa52d5554434","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":88,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":89,"context_line":"        # the mock that needs to be stopped."},{"line_number":90,"context_line":"        mock.patch.stopall()"},{"line_number":91,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":92,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":93,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_27c92425","line":90,"in_reply_to":"bf51134e_dbb92716","updated":"2020-07-17 08:36:45.000000000","message":"Yeah, exactly. There\u0027s a bug in the version of unittest.mock on Python 3.6 (I think?) where stopall basically doesn\u0027t work. I tried to workaround this but didn\u0027t get anywhere. You can confirm by importing \u0027nova.objects.AggregateList.get_by_host\u0027 and checking the type. It\u0027ll still be a mock after this.","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"80cbca4b1304e8c98340aba4ddf9386f02c16241","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        # Note that we use stopall here because we actually called _prep_resize"},{"line_number":163,"context_line":"        # twice so we have more than one instance of the mock that needs to be"},{"line_number":164,"context_line":"        # stopped."},{"line_number":165,"context_line":"        mock.patch.stopall()"},{"line_number":166,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":167,"context_line":"        final_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":168,"context_line":"        self.assertNotIn(final_host, [original_host, self.rescheduled])"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_3b34a3ac","line":165,"updated":"2020-07-17 02:16:27.000000000","message":"Here too.","commit_id":"638965e83db92b1ce31a2f07df97f096425387ee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d38ee5754544b1e9e324070643fc0fd019ee06f5","unresolved":true,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"from oslo_db import exception as oslo_db_exc"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"a8c4aa73_2c29c4ee","side":"PARENT","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":15},"updated":"2021-11-09 17:17:35.000000000","message":"why remove the use of fixtures.\n\nthis seams unrelated.","commit_id":"78d398ad91c7708d2a868ae216284b5bdcdc5ec6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83b38aa5155abda9bbd975483bc9135d50756bb5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"from oslo_db import exception as oslo_db_exc"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"b63b4b98_a54cf055","side":"PARENT","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":15},"in_reply_to":"6388940a_deffae03","updated":"2022-01-28 18:59:47.000000000","message":"It because of the weird thing we\u0027re doing below. You\u0027ll note that we use `mock.patch.stop`. This will now call `unittest.mock`, not `mock`. However, [fixtures uses `mock`](https://github.com/testing-cabal/fixtures/pull/49) which means this call doesn\u0027t \"stop\" anything. I\u0027ll call this out in the commit message.","commit_id":"78d398ad91c7708d2a868ae216284b5bdcdc5ec6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14d0fc2277db5a76b145371bb65ded670d25f587","unresolved":true,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"from oslo_db import exception as oslo_db_exc"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"6388940a_deffae03","side":"PARENT","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":15},"in_reply_to":"a8c4aa73_2c29c4ee","updated":"2021-11-09 17:30:39.000000000","message":"Umm, I\u0027m not sure anymore. I did this a long time ago and I don\u0027t seem to have called it out in the commit message. I\u0027ll have a look again","commit_id":"78d398ad91c7708d2a868ae216284b5bdcdc5ec6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de78d108458222133a0a6ac307a2340088908885","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            # have access to the API DB."},{"line_number":70,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":71,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":72,"context_line":"            patcher.start()"},{"line_number":73,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9c4240e4_daab7e6d","line":72,"updated":"2021-11-10 16:02:05.000000000","message":"I think self.addCleanup(patcher.stop) is missing. The MockPatch fixture did that for use and I think we still need to make sure that we stop the patcher after the test case","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06310632b84fe585964cc790be052973277efdea","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # have access to the API DB."},{"line_number":70,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":71,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":72,"context_line":"            patcher.start()"},{"line_number":73,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"b8e5671d_dfd092b0","line":72,"in_reply_to":"9c4240e4_daab7e6d","updated":"2021-11-19 16:35:25.000000000","message":"Done","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de78d108458222133a0a6ac307a2340088908885","unresolved":true,"context_lines":[{"line_number":131,"context_line":"            # have access to the API DB."},{"line_number":132,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":133,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":134,"context_line":"            self.agg_mock \u003d patcher.start()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            if self.rescheduled is None:"},{"line_number":137,"context_line":"                # Track the first host that we rescheduled from."}],"source_content_type":"text/x-python","patch_set":11,"id":"a0b0e595_4614f594","line":134,"updated":"2021-11-10 16:02:05.000000000","message":"ditto","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06310632b84fe585964cc790be052973277efdea","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            # have access to the API DB."},{"line_number":132,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":133,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":134,"context_line":"            self.agg_mock \u003d patcher.start()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            if self.rescheduled is None:"},{"line_number":137,"context_line":"                # Track the first host that we rescheduled from."}],"source_content_type":"text/x-python","patch_set":11,"id":"0c832feb_c1769796","line":134,"in_reply_to":"a0b0e595_4614f594","updated":"2021-11-19 16:35:25.000000000","message":"Done","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1ca856f005be8b87f9ba352624edae0f475f164","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        def wrap_bari(*args, **kwargs):"},{"line_number":68,"context_line":"            # Poison the AZ query to blow up as if the cell conductor does not"},{"line_number":69,"context_line":"            # have access to the API DB."},{"line_number":70,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":71,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":72,"context_line":"            patcher.start()"},{"line_number":73,"context_line":"            self.addCleanup(patcher.stop)"},{"line_number":74,"context_line":"            return original_bari(*args, **kwargs)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.stub_out(\u0027nova.compute.manager.ComputeManager.\u0027"},{"line_number":77,"context_line":"                      \u0027build_and_run_instance\u0027, wrap_bari)"},{"line_number":78,"context_line":"        server \u003d self._build_server()"},{"line_number":79,"context_line":"        server \u003d self.api.post_server({\u0027server\u0027: server})"},{"line_number":80,"context_line":"        # Because we poisoned AggregateList.get_by_host after hitting the"},{"line_number":81,"context_line":"        # compute service we have to wait for the notification that the build"},{"line_number":82,"context_line":"        # is complete and then stop the mock so we can use the API again."},{"line_number":83,"context_line":"        self.notifier.wait_for_versioned_notifications(\u0027instance.create.end\u0027)"},{"line_number":84,"context_line":"        # Note that we use stopall here because we actually called"},{"line_number":85,"context_line":"        # build_and_run_instance twice so we have more than one instance of"},{"line_number":86,"context_line":"        # the mock that needs to be stopped."},{"line_number":87,"context_line":"        mock.patch.stopall()"},{"line_number":88,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":89,"context_line":"        # We should have rescheduled and the instance AZ should be set from the"},{"line_number":90,"context_line":"        # Selection object. Since neither compute host is in an AZ, the server"},{"line_number":91,"context_line":"        # is in the default AZ from config."},{"line_number":92,"context_line":"        self.assertEqual(\u0027us-central\u0027, server[\u0027OS-EXT-AZ:availability_zone\u0027])"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"class RescheduleMigrateAvailabilityZoneUpCall("},{"line_number":96,"context_line":"        test.TestCase, integrated_helpers.InstanceHelperMixin):"},{"line_number":97,"context_line":"    \"\"\"This is a regression test for the resize/cold migrate aspect of"},{"line_number":98,"context_line":"    bug 1781286 where the cell conductor does not have access to the API DB."},{"line_number":99,"context_line":"    \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def setUp(self):"},{"line_number":102,"context_line":"        super(RescheduleMigrateAvailabilityZoneUpCall, self).setUp()"},{"line_number":103,"context_line":"        # Use the standard fixtures."},{"line_number":104,"context_line":"        self.useFixture(nova_fixtures.RealPolicyFixture())"},{"line_number":105,"context_line":"        self.useFixture(nova_fixtures.GlanceFixture(self))"},{"line_number":106,"context_line":"        self.useFixture(nova_fixtures.NeutronFixture(self))"},{"line_number":107,"context_line":"        self.useFixture(func_fixtures.PlacementFixture())"},{"line_number":108,"context_line":"        # Start controller services."},{"line_number":109,"context_line":"        self.api \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":110,"context_line":"            api_version\u003d\u0027v2.1\u0027)).admin_api"},{"line_number":111,"context_line":"        self.start_service(\u0027conductor\u0027)"},{"line_number":112,"context_line":"        self.start_service(\u0027scheduler\u0027)"},{"line_number":113,"context_line":"        # We need three hosts for this test, one is the initial host on which"},{"line_number":114,"context_line":"        # the server is built, and the others are for the migration where the"},{"line_number":115,"context_line":"        # first will fail and the second is an alternate."},{"line_number":116,"context_line":"        self.start_service(\u0027compute\u0027, host\u003d\u0027host1\u0027)"},{"line_number":117,"context_line":"        self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"},{"line_number":118,"context_line":"        self.start_service(\u0027compute\u0027, host\u003d\u0027host3\u0027)"},{"line_number":119,"context_line":"        # Listen for notifications."},{"line_number":120,"context_line":"        self.notifier \u003d self.useFixture("},{"line_number":121,"context_line":"            nova_fixtures.NotificationFixture(self))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_migrate_reschedule_blocked_az_up_call(self):"},{"line_number":124,"context_line":"        self.flags(default_availability_zone\u003d\u0027us-central\u0027)"},{"line_number":125,"context_line":"        # We need to stub out the call to get_host_availability_zone to blow"},{"line_number":126,"context_line":"        # up once we have gone to the compute service."},{"line_number":127,"context_line":"        original_prep_resize \u003d compute_manager.ComputeManager._prep_resize"},{"line_number":128,"context_line":"        self.rescheduled \u003d None"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        def wrap_prep_resize(_self, *args, **kwargs):"},{"line_number":131,"context_line":"            # Poison the AZ query to blow up as if the cell conductor does not"},{"line_number":132,"context_line":"            # have access to the API DB."},{"line_number":133,"context_line":"            patcher \u003d mock.patch(\u0027nova.objects.AggregateList.get_by_host\u0027,"},{"line_number":134,"context_line":"                                 side_effect\u003doslo_db_exc.CantStartEngineError)"},{"line_number":135,"context_line":"            self.agg_mock \u003d patcher.start()"},{"line_number":136,"context_line":"            self.addCleanup(patcher.stop)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            if self.rescheduled is None:"},{"line_number":139,"context_line":"                # Track the first host that we rescheduled from."}],"source_content_type":"text/x-python","patch_set":14,"id":"f3a2d4bc_ce663209","line":136,"range":{"start_line":70,"start_character":11,"end_line":136,"end_character":41},"updated":"2022-07-26 19:10:52.000000000","message":"i think i mentioned before that this really isnt required we coudl still use fixture but im also ok with this so +2 overall","commit_id":"cfbda3d845de285ec05ed20586450c037addd7d5"}],"nova/tests/functional/regressions/test_bug_1862633.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from neutronclient.common import exceptions as neutron_exception"},{"line_number":13,"context_line":"from unittest import mock"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from nova import test"},{"line_number":16,"context_line":"from nova.tests import fixtures as nova_fixtures"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_18de873e","line":13,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from neutronclient.common import exceptions as neutron_exception"},{"line_number":13,"context_line":"from unittest import mock"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from nova import test"},{"line_number":16,"context_line":"from nova.tests import fixtures as nova_fixtures"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_611a446f","line":13,"in_reply_to":"df33271e_18de873e","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/test_boot_from_volume.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import six"},{"line_number":14,"context_line":"from unittest import mock"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova import context"},{"line_number":17,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_f8e003fd","line":14,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import six"},{"line_number":14,"context_line":"from unittest import mock"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova import context"},{"line_number":17,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_41174046","line":14,"in_reply_to":"df33271e_f8e003fd","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/test_compute_mgr.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"from unittest import mock"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova import context"},{"line_number":17,"context_line":"from nova.network import model as network_model"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_58e76f13","line":14,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"from unittest import mock"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova import context"},{"line_number":17,"context_line":"from nova.network import model as network_model"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_c124f0b1","line":14,"in_reply_to":"df33271e_58e76f13","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/test_report_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import os_traits as ot"},{"line_number":19,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":20,"context_line":"import pkg_resources"},{"line_number":21,"context_line":"from unittest import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.cmd import status"},{"line_number":24,"context_line":"from nova.compute import provider_tree"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_98f1f7d0","line":21,"updated":"2020-03-27 20:34:54.000000000","message":"Move up and move keystoneauth1 down.","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import os_traits as ot"},{"line_number":19,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":20,"context_line":"import pkg_resources"},{"line_number":21,"context_line":"from unittest import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.cmd import status"},{"line_number":24,"context_line":"from nova.compute import provider_tree"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_e1549400","line":21,"in_reply_to":"df33271e_98f1f7d0","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/test_server_group.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.compute import instance_actions"},{"line_number":21,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_78ecf3f2","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.compute import instance_actions"},{"line_number":21,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_c1a7d00a","line":18,"in_reply_to":"df33271e_78ecf3f2","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/functional/test_servers_provider_tree.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os_traits"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_d8bc1fde","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os_traits"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_41b3c04d","line":18,"in_reply_to":"df33271e_d8bc1fde","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/unit/api/openstack/compute/admin_only_action_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a7674afcfe96ff7ffb48d977b05abe3b486cd69","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":"from oslo_utils import timeutils"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.compute import vm_states"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_18b7a7f8","line":18,"updated":"2020-03-27 20:34:54.000000000","message":"^","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":"from oslo_utils import timeutils"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.compute import vm_states"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_818ae866","line":18,"in_reply_to":"df33271e_18b7a7f8","updated":"2020-03-31 16:28:52.000000000","message":"Done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/unit/api/openstack/compute/test_baremetal_nodes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from ironicclient import exc as ironic_exc"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":"from webob import exc"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova.api.openstack.compute import baremetal_nodes \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_418c607e","line":19,"updated":"2020-03-31 16:28:52.000000000","message":"done","commit_id":"adab37061f870abc8c70150800006f307678e541"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"29f26d43e081dcc76f620c3796357ee90e9099e3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from ironicclient import exc as ironic_exc"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_cfda5749","line":17,"updated":"2020-03-31 17:55:16.000000000","message":"Looks like this got left behind.","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"79d760f9b17979677079bbdbee49a88cd079f5a9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from ironicclient import exc as ironic_exc"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_a89a3f5e","line":17,"in_reply_to":"df33271e_cfda5749","updated":"2020-05-05 09:50:27.000000000","message":"Done","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"}],"nova/tests/unit/api/openstack/compute/test_create_backup.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_utils import timeutils"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.api.openstack import common"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_e1f01400","line":18,"updated":"2020-03-31 16:28:52.000000000","message":"done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/unit/api/openstack/compute/test_evacuate.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import testtools"},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":"import webob"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova.api.openstack.compute import evacuate as evacuate_v21"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_81d8287b","line":19,"updated":"2020-03-31 16:28:52.000000000","message":"done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/unit/api/openstack/compute/test_floating_ips.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb35fa0829474ff317eec31383fcf1fff8c4d005","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova.api.openstack.compute import floating_ips as fips_v21"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_01c41890","line":18,"updated":"2020-03-31 16:28:52.000000000","message":"done","commit_id":"adab37061f870abc8c70150800006f307678e541"}],"nova/tests/unit/console/test_websocketproxy.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e588c3943a3f558ec35ca25b710a1afc6a378c7d","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        conn \u003d mock.MagicMock()"},{"line_number":625,"context_line":"        address \u003d mock.MagicMock()"},{"line_number":626,"context_line":"        self.wh.server.top_new_client(conn, address)"},{"line_number":627,"context_line":"        self.assertIsNone(self.wh._compute_rpcapi)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    @mock.patch(\u0027websockify.websocketproxy.select_ssl_version\u0027)"},{"line_number":630,"context_line":"    def test_ssl_min_version_is_not_set(self, mock_select_ssl):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_9dd178cf","side":"PARENT","line":627,"updated":"2020-07-16 01:22:00.000000000","message":"I wrote this test and need more explanation as to why you think this is not testing what\u0027s intended. It is correctly verifying that an error raised by recv() (as would happen if a TCP RST is received) will *not* result in creation of a nova.compute.rpcapi.ComputeAPI object and being an easy DoS vector.\n\nI read the explanation in the commit message and I\u0027m afraid I don\u0027t understand it.\n\nWhy do you think it isn\u0027t testing the relevant fix? It fails without the fix and passes with it.\n\nThe goal of this test is to raise an exception during a recv() which will interrupt the code path leading to the NovaProxyRequestHandler.new_websocket_client call when a request comes into the top-level of the server (simulated by calling WebSockifyServer.top_new_client). NovaProxyRequestHandler.new_websocket_client is where we create the nova.compute.rpcapi.ComputeAPI object upon access and when I raise a socket.error from recv() it will prevent NovaProxyRequestHandler.new_websocket_client from being called and then we verify that a nova.compute.rpcapi.ComputeAPI object was not constructed.","commit_id":"1fa6799e4171d7c93f4d6330f2437891733d7d27"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e052ee5b42a3389cf3e297a26fc415e5e676e7a5","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        conn \u003d mock.MagicMock()"},{"line_number":625,"context_line":"        address \u003d mock.MagicMock()"},{"line_number":626,"context_line":"        self.wh.server.top_new_client(conn, address)"},{"line_number":627,"context_line":"        self.assertIsNone(self.wh._compute_rpcapi)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    @mock.patch(\u0027websockify.websocketproxy.select_ssl_version\u0027)"},{"line_number":630,"context_line":"    def test_ssl_min_version_is_not_set(self, mock_select_ssl):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_fedcebe1","side":"PARENT","line":627,"in_reply_to":"bf51134e_9dd178cf","updated":"2020-07-16 05:11:05.000000000","message":"\u003e FWIW, it\u0027s the same issue, where the act of creating the mock is\n \u003e calling the class @property that creates the nova.compute.rpcapi.ComputeAPI\n \u003e object. I don\u0027t understand how or why create_autospec would call\n \u003e class property methods?\n\nI\u0027m stumped. It appears that some autospeccing in oslotest calling getattr is resulting in the compute_rpcapi @property being called (by the mock itself, not by the nova request flow) but only in python3.8 and not python3.6:\n\nhttps://bugs.launchpad.net/nova/+bug/1887735/comments/3\n\nIt seems to make sense that getattr would result in a call of the @property but why only in 3.8 and not 3.6? ...","commit_id":"1fa6799e4171d7c93f4d6330f2437891733d7d27"}],"nova/tests/unit/test_versions.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5ae0d739652236d36ebbcc18601466ee8f1951cc","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        real_open \u003d builtins.open"},{"line_number":39,"context_line":"        real_find_file \u003d cfg.CONF.find_file"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        def fake_find_file(self, name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_634a7e27","line":38,"updated":"2020-07-08 09:49:45.000000000","message":"Can we add a NOTE here to use test.patch_open after commit_msg/[1] is fixed or we drop support for py36?","commit_id":"3de8c1308131dee422ad1d9cd7608cb112fcdc25"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d38ee5754544b1e9e324070643fc0fd019ee06f5","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        # NOTE(smcginnis) after https://bugs.python.org/issue21269 merges or we"},{"line_number":39,"context_line":"        # drop support for py36, test.patch_open should be used."},{"line_number":40,"context_line":"        real_open \u003d builtins.open"},{"line_number":41,"context_line":"        real_find_file \u003d cfg.CONF.find_file"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ebf5dd90_598a1e7a","line":39,"range":{"start_line":38,"start_character":8,"end_line":39,"end_character":64},"updated":"2021-11-09 17:17:35.000000000","message":"this has been merged for some time now so perhaps we should do as the comment says?","commit_id":"f1ec5351802fe92280171292882daa75cf8c3be0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"83b38aa5155abda9bbd975483bc9135d50756bb5","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        # NOTE(smcginnis) after https://bugs.python.org/issue21269 merges or we"},{"line_number":39,"context_line":"        # drop support for py36, test.patch_open should be used."},{"line_number":40,"context_line":"        real_open \u003d builtins.open"},{"line_number":41,"context_line":"        real_find_file \u003d cfg.CONF.find_file"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"d5064b0e_70508bf2","line":39,"range":{"start_line":38,"start_character":8,"end_line":39,"end_character":64},"in_reply_to":"837b8cfd_20914671","updated":"2022-01-28 18:59:47.000000000","message":"Done\n\nhttps://review.opendev.org/c/openstack/nova/+/714676/comment/aced6c41_5613b602/","commit_id":"f1ec5351802fe92280171292882daa75cf8c3be0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14d0fc2277db5a76b145371bb65ded670d25f587","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        # NOTE(smcginnis) after https://bugs.python.org/issue21269 merges or we"},{"line_number":39,"context_line":"        # drop support for py36, test.patch_open should be used."},{"line_number":40,"context_line":"        real_open \u003d builtins.open"},{"line_number":41,"context_line":"        real_find_file \u003d cfg.CONF.find_file"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"837b8cfd_20914671","line":39,"range":{"start_line":38,"start_character":8,"end_line":39,"end_character":64},"in_reply_to":"ebf5dd90_598a1e7a","updated":"2021-11-09 17:30:39.000000000","message":"I\u0027ll check if this works on Python 3.6. There\u0027s a chance that Ubuntu haven\u0027t backported the fix though, so I suspect teh second item is more actionable","commit_id":"f1ec5351802fe92280171292882daa75cf8c3be0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de78d108458222133a0a6ac307a2340088908885","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        # NOTE(smcginnis) after https://bugs.python.org/issue21269 merges or we"},{"line_number":39,"context_line":"        # drop support for py36, test.patch_open should be used."},{"line_number":40,"context_line":"        real_open \u003d builtins.open"},{"line_number":41,"context_line":"        real_find_file \u003d cfg.CONF.find_file"}],"source_content_type":"text/x-python","patch_set":11,"id":"aced6c41_5613b602","line":38,"updated":"2021-11-10 16:02:05.000000000","message":"This is actually merged and it talks about mock.call() args and kwargs not about test.patch_open. So I\u0027m confused.","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06310632b84fe585964cc790be052973277efdea","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_release_file(self):"},{"line_number":37,"context_line":"        version.loaded \u003d False"},{"line_number":38,"context_line":"        # NOTE(smcginnis) after https://bugs.python.org/issue21269 merges or we"},{"line_number":39,"context_line":"        # drop support for py36, test.patch_open should be used."},{"line_number":40,"context_line":"        real_open \u003d builtins.open"},{"line_number":41,"context_line":"        real_find_file \u003d cfg.CONF.find_file"}],"source_content_type":"text/x-python","patch_set":11,"id":"90fc8575_bb35bc86","line":38,"in_reply_to":"aced6c41_5613b602","updated":"2021-11-19 16:35:25.000000000","message":"Yeah, it\u0027s wrong. What I\u0027d written in the commit message was more relevant. I\u0027ve copied the text from the commit I referenced there to here","commit_id":"6d7bde10fa1e2c5071ff1b9da1aa8027c3ab2cec"}],"nova/tests/unit/virt/hyperv/test_volumeops.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"29f26d43e081dcc76f620c3796357ee90e9099e3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from os_brick.initiator import connector"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_4f9c8769","line":17,"updated":"2020-03-31 17:55:16.000000000","message":"Leftover.","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"79d760f9b17979677079bbdbee49a88cd079f5a9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from os_brick.initiator import connector"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_e89f274d","line":17,"in_reply_to":"df33271e_4f9c8769","updated":"2020-05-05 09:50:27.000000000","message":"Done","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"}],"nova/tests/unit/virt/ironic/test_client_wrapper.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"29f26d43e081dcc76f620c3796357ee90e9099e3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from ironicclient import client as ironic_client"},{"line_number":17,"context_line":"from ironicclient import exc as ironic_exception"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneauth1 import discover as ksa_disc"},{"line_number":21,"context_line":"import keystoneauth1.session"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_8f8b2f1d","line":18,"updated":"2020-03-31 17:55:16.000000000","message":"Divided the third party imports.","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"79d760f9b17979677079bbdbee49a88cd079f5a9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from ironicclient import client as ironic_client"},{"line_number":17,"context_line":"from ironicclient import exc as ironic_exception"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneauth1 import discover as ksa_disc"},{"line_number":21,"context_line":"import keystoneauth1.session"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_48abb373","line":18,"in_reply_to":"df33271e_8f8b2f1d","updated":"2020-05-05 09:50:27.000000000","message":"Done","commit_id":"b91f52c21bc1e63a63f69a126486cb1d333ef6a5"}]}
