)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"28f8b5bf71cba97c8f85abff12f5d534f5e96e73","unresolved":true,"context_lines":[{"line_number":11,"context_line":"with a neutron backend that does not support multiple port"},{"line_number":12,"context_line":"bindings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Conflicts/Changes:"},{"line_number":15,"context_line":"  nova/tests/functional/regressions/test_bug_1888395.py:"},{"line_number":16,"context_line":"    - specify api major version to allow block_migration \u0027auto\u0027"},{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - include additional setup fixtures, start_computes, and"},{"line_number":19,"context_line":"      _create_server to get the functional tests working"},{"line_number":20,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":21,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"},{"line_number":22,"context_line":"      which stubs out the is_file_in_instance_path method. That was"},{"line_number":23,"context_line":"      included in a feature patch set so just pulling the necessary"},{"line_number":24,"context_line":"      bit."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: I470a016d35afe69809321bd67359f466c3feb90a"},{"line_number":27,"context_line":"Partial-Bug: #1888395"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"abb981a8_4806a586","line":24,"range":{"start_line":14,"start_character":0,"end_line":24,"end_character":10},"updated":"2021-02-18 11:16:08.000000000","message":"You should cherry-pick this from bea55a7d45bdc97679cf08c9faec789cfc90de27 and then only reference actual conflicts between that version of the patch and this branch.","commit_id":"2b7e49547d7795aa7fdb7da86eb2ca3d4ecb9922"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f4fa608e5387693b613a1caf2eaee1f0e9ed7750","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Conflicts/Changes:"},{"line_number":15,"context_line":"  nova/tests/functional/regressions/test_bug_1888395.py:"},{"line_number":16,"context_line":"    - specify api major version to allow block_migration \u0027auto\u0027"},{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7043e0ec_ec4d9d32","line":16,"range":{"start_line":16,"start_character":6,"end_line":16,"end_character":63},"updated":"2021-04-08 11:09:57.000000000","message":"Technically this doesn\u0027t need to be included if it\u0027s already listed and changed in the Ussuri commit.","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f4fa608e5387693b613a1caf2eaee1f0e9ed7750","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Conflicts/Changes:"},{"line_number":15,"context_line":"  nova/tests/functional/regressions/test_bug_1888395.py:"},{"line_number":16,"context_line":"    - specify api major version to allow block_migration \u0027auto\u0027"},{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"377801f4_724e42db","line":17,"range":{"start_line":17,"start_character":6,"end_line":17,"end_character":44},"updated":"2021-04-08 11:09:57.000000000","message":"Iab455e22aa075bb1b3fb9b7d1870b1eb7314e320 ✔","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f4fa608e5387693b613a1caf2eaee1f0e9ed7750","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  nova/tests/functional/regressions/test_bug_1888395.py:"},{"line_number":16,"context_line":"    - specify api major version to allow block_migration \u0027auto\u0027"},{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"},{"line_number":21,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":22,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"106d9d09_69f0dfa0","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":78},"updated":"2021-04-08 11:09:57.000000000","message":"As discussed start_computes is being backported as part of Id3f77c4ecccfdc4caa6dbf120c3df4fbdfce9d0f but as you\u0027ve in-lined this I\u0027m not going to block and force you to repsin/rebase.\n\nAFAIK we have no plans to backport I84c58de90dad6d86271767363aef90ddac0f1730 for _create_server.","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"7ed6e75e06e7ac223f0d44514f32b0f5484d2d49","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  nova/tests/functional/regressions/test_bug_1888395.py:"},{"line_number":16,"context_line":"    - specify api major version to allow block_migration \u0027auto\u0027"},{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"},{"line_number":21,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":22,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bbdea35b_e64d7b7d","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":78},"in_reply_to":"106d9d09_69f0dfa0","updated":"2021-06-03 14:45:03.000000000","message":"So this part is the new stuff in train.","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f4fa608e5387693b613a1caf2eaee1f0e9ed7750","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"},{"line_number":21,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":22,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"},{"line_number":23,"context_line":"      which stubs out the is_file_in_instance_path method. That was"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"940d6707_c05f3b94","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":52},"updated":"2021-04-08 11:09:57.000000000","message":"✔","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"7ed6e75e06e7ac223f0d44514f32b0f5484d2d49","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    - use TempDir fixture for instances path"},{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"},{"line_number":21,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":22,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"},{"line_number":23,"context_line":"      which stubs out the is_file_in_instance_path method. That was"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"78ac1a76_c085c9cb","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":52},"in_reply_to":"940d6707_c05f3b94","updated":"2021-06-03 14:45:03.000000000","message":"And this one also new in train.","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f4fa608e5387693b613a1caf2eaee1f0e9ed7750","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    - worked around  lack of create_server and start_computes in integrated"},{"line_number":19,"context_line":"      helpers in train by inlining the behavior in setUp and test_live_migrate"},{"line_number":20,"context_line":"    - reverted to python2 compatiable super() syntax"},{"line_number":21,"context_line":"  nova/tests/unit/virt/libvirt/fake_imagebackend.py:"},{"line_number":22,"context_line":"    - include portion of change Ia3d7351c1805d98bcb799ab0375673c7f1cb8848"},{"line_number":23,"context_line":"      which stubs out the is_file_in_instance_path method. That was"},{"line_number":24,"context_line":"      included in a feature patch set so just pulling the necessary"},{"line_number":25,"context_line":"      bit."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I470a016d35afe69809321bd67359f466c3feb90a"},{"line_number":28,"context_line":"Partial-Bug: #1888395"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"0e51fe43_8e84eb12","line":25,"range":{"start_line":21,"start_character":0,"end_line":25,"end_character":10},"updated":"2021-04-08 11:09:57.000000000","message":"As above, this technically doesn\u0027t need to be here.","commit_id":"a4e2a6a41239a682c0da553ec5938737d0b85b52"}],"nova/tests/functional/regressions/test_bug_1888395.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"28f8b5bf71cba97c8f85abff12f5d534f5e96e73","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.ctxt \u003d context.get_admin_context()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def start_computes(self, host_info_dict\u003dNone, save_rp_uuids\u003dFalse):"},{"line_number":103,"context_line":"        \"\"\"Start compute services. The started services will be saved in"},{"line_number":104,"context_line":"        self.computes, keyed by hostname."},{"line_number":105,"context_line":"        :param host_info_dict: A hostname -\u003e fakelibvirt.HostInfo object"},{"line_number":106,"context_line":"                               dictionary representing the libvirt HostInfo of"},{"line_number":107,"context_line":"                               each compute host. If None, the default is to"},{"line_number":108,"context_line":"                               start 2 computes, named test_compute0 and"},{"line_number":109,"context_line":"                               test_compute1, with 2 NUMA nodes, 2 cores per"},{"line_number":110,"context_line":"                               node, 2 threads per core, and 16GB of RAM."},{"line_number":111,"context_line":"        :param save_rp_uuids: If True, save the resource provider UUID of each"},{"line_number":112,"context_line":"                              started compute in self.compute_rp_uuids, keyed"},{"line_number":113,"context_line":"                              by hostname."},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":"        if host_info_dict is None:"},{"line_number":116,"context_line":"            host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":117,"context_line":"                                             cpu_cores\u003d2, cpu_threads\u003d2,"},{"line_number":118,"context_line":"                                             kB_mem\u003d15740000)"},{"line_number":119,"context_line":"            host_info_dict \u003d {\u0027test_compute0\u0027: host_info,"},{"line_number":120,"context_line":"                              \u0027test_compute1\u0027: host_info}"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        def start_compute(host, host_info):"},{"line_number":123,"context_line":"            fake_connection \u003d self._get_connection(host_info\u003dhost_info,"},{"line_number":124,"context_line":"                                                   hostname\u003dhost)"},{"line_number":125,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":126,"context_line":"            # actually start the service."},{"line_number":127,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027,"},{"line_number":128,"context_line":"                            return_value\u003dfake_connection):"},{"line_number":129,"context_line":"                compute \u003d self.start_service(\u0027compute\u0027, host\u003dhost)"},{"line_number":130,"context_line":"                # Once that\u0027s done, we need to tweak the compute \"service\" to"},{"line_number":131,"context_line":"                # make sure it returns unique objects. We do this inside the"},{"line_number":132,"context_line":"                # mock context to avoid a small window between the end of the"},{"line_number":133,"context_line":"                # context and the tweaking where get_connection would revert to"},{"line_number":134,"context_line":"                # being an autospec mock."},{"line_number":135,"context_line":"                compute.driver._host.get_connection \u003d lambda: fake_connection"},{"line_number":136,"context_line":"            return compute"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        self.computes \u003d {}"},{"line_number":139,"context_line":"        self.compute_rp_uuids \u003d {}"},{"line_number":140,"context_line":"        for host, host_info in host_info_dict.items():"},{"line_number":141,"context_line":"            # NOTE(artom) A lambda: foo construct returns the value of foo at"},{"line_number":142,"context_line":"            # call-time, so if the value of foo changes with every iteration of"},{"line_number":143,"context_line":"            # a loop, every call to the lambda will return a different value of"},{"line_number":144,"context_line":"            # foo. Because that\u0027s not what we want in our lambda further up,"},{"line_number":145,"context_line":"            # we can\u0027t put it directly in the for loop, and need to introduce"},{"line_number":146,"context_line":"            # the start_compute function to create a scope in which host and"},{"line_number":147,"context_line":"            # host_info do not change with every iteration of the for loop."},{"line_number":148,"context_line":"            self.computes[host] \u003d start_compute(host, host_info)"},{"line_number":149,"context_line":"            if save_rp_uuids:"},{"line_number":150,"context_line":"                self.compute_rp_uuids[host] \u003d self.placement_api.get("},{"line_number":151,"context_line":"                    \u0027/resource_providers?name\u003d%s\u0027 % host).body["},{"line_number":152,"context_line":"                    \u0027resource_providers\u0027][0][\u0027uuid\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_server(self, host, networks):"},{"line_number":155,"context_line":"        \"\"\"Creates an instance on the specified host with the networks"},{"line_number":156,"context_line":"        specified."}],"source_content_type":"text/x-python","patch_set":4,"id":"d4d4a8b9_9acbdd1d","line":153,"range":{"start_line":102,"start_character":2,"end_line":153,"end_character":0},"updated":"2021-02-18 11:16:08.000000000","message":"I\u0027m not sure about this, we don\u0027t really need it for the test.\n\nAll we actually need is something like the following:\n\nhttps://github.com/openstack/nova/blob/42f8679570c214bf775c34259dbd8737b844b37a/nova/tests/functional/libvirt/test_evacuate.py#L402-L419","commit_id":"2b7e49547d7795aa7fdb7da86eb2ca3d4ecb9922"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93d47d51f58b1d31dcc8f753719691ae316b384c","unresolved":true,"context_lines":[{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from nova import context"},{"line_number":16,"context_line":"from nova.network import constants as neutron_constants"},{"line_number":17,"context_line":"from nova.network import neutron"},{"line_number":18,"context_line":"from nova.tests.functional.libvirt import base as libvirt_base"},{"line_number":19,"context_line":"from nova.tests.unit.virt.libvirt import fake_os_brick_connector"}],"source_content_type":"text/x-python","patch_set":5,"id":"d08bdc37_dd003041","line":16,"range":{"start_line":16,"start_character":5,"end_line":16,"end_character":17},"updated":"2021-03-12 11:28:34.000000000","message":"nova.network.neutronv2\n\nthat is why the tests failed","commit_id":"8a44a059de415ce3db0d3bbc57811c07e9315657"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"50327266ecf295530bd81bea1cf11e4ff7fec9dc","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":""},{"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.network.neutronv2 import api as neutron"}],"source_content_type":"text/x-python","patch_set":7,"id":"4087d7cc_548d5dde","line":15,"updated":"2021-04-02 21:38:49.000000000","message":"right train has pythone 2 so i need to use mock the lib","commit_id":"b24ebc603853359ca01d8847f4cf493a262f84c8"}]}
