)]}'
{"nova/tests/functional/libvirt/base.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b291eccb55058d4b4c5df83637d2c210d0b7f5f4","unresolved":true,"context_lines":[{"line_number":115,"context_line":"            hostname\u003dhostname)"},{"line_number":116,"context_line":"        return fake_connection"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":119,"context_line":"        dest \u003d self.computes[\u0027dest\u0027]"},{"line_number":120,"context_line":"        dest.driver._host.get_connection().createXML("},{"line_number":121,"context_line":"            params[\u0027destination_xml\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"335e9265_04f66787","line":118,"updated":"2021-08-11 20:16:23.000000000","message":"I agree with and strongly applaud the intent, but shouldn\u0027t this be in a mixin? It\u0027s making all kinds of assumptions about having 2 computes started and their names, so any child class using those will have to adhere to those. If we make a LiveMigrationMixin, the setUp() can be made to start these two computes as well. The open question will then be - how does the child class specify the two computes\u0027 NUMA and/or PCI host info?","commit_id":"c9027109c9218e556ef36813ebdf25d5c125b20d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"3e1601f430556a119c72a7b59b81d1e1f9d7a173","unresolved":true,"context_lines":[{"line_number":115,"context_line":"            hostname\u003dhostname)"},{"line_number":116,"context_line":"        return fake_connection"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":119,"context_line":"        dest \u003d self.computes[\u0027dest\u0027]"},{"line_number":120,"context_line":"        dest.driver._host.get_connection().createXML("},{"line_number":121,"context_line":"            params[\u0027destination_xml\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"38c10ba1_cf408470","line":118,"in_reply_to":"15d16b62_798920f7","updated":"2021-08-12 07:27:24.000000000","message":"Yup that\u0027s fair, I just wanted it out of my positive test class but a mixin is likely the best place for it.","commit_id":"c9027109c9218e556ef36813ebdf25d5c125b20d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c13cefc98c2021bd1aabf611ac9b4e4b160c5f53","unresolved":true,"context_lines":[{"line_number":115,"context_line":"            hostname\u003dhostname)"},{"line_number":116,"context_line":"        return fake_connection"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _migrate_stub(self, domain, destination, params, flags):"},{"line_number":119,"context_line":"        dest \u003d self.computes[\u0027dest\u0027]"},{"line_number":120,"context_line":"        dest.driver._host.get_connection().createXML("},{"line_number":121,"context_line":"            params[\u0027destination_xml\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"15d16b62_798920f7","line":118,"in_reply_to":"335e9265_04f66787","updated":"2021-08-11 20:22:54.000000000","message":"Answering my own question, I guess we could set them in the class. So something like:\n\n  class LiveMigrationMixin:\n\n    def setUp(self):\n      ...\n      src_host_info \u003d (self.src_host_info if hasattr(self, \u0027src_host_info\u0027)\n                       else default_host_info)\n      dest_host_info \u003d \u003cditto\u003e\n      src_pci_info \u003d \u003cditto\u003e\n      dest_pci_info \u003d \u003cditto\u003e\n\n      start_compute(src_host_info, src_pci_info)\n      start_compute(dest_host_info\n \n  class MyAwesomeLMTest(LiveMigrationMixin):\n\n    src_host_info \u003d \u003cblah\u003e\n    dest_host_info \u003d \u003cblah\u003e\n    src_pci_info \u003d \u003cblah\u003e\n    dest_pci_info \u003d \u003cblah\u003e","commit_id":"c9027109c9218e556ef36813ebdf25d5c125b20d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"77add055e46675042d2eb7bf75c19969cabf6675","unresolved":true,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class LibvirtMigrationMixin(object):"},{"line_number":164,"context_line":"    \"\"\"A simple mixin to facilliate successful libvirt live migrations"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    Requires that the test class set self.server for the specific test instnace"},{"line_number":167,"context_line":"    and self.{src,dest} to indicate the direction of the migration. For any"}],"source_content_type":"text/x-python","patch_set":4,"id":"51a50e49_4523827a","line":164,"range":{"start_line":164,"start_character":25,"end_line":164,"end_character":35},"updated":"2021-08-20 00:15:00.000000000","message":"facilitate","commit_id":"6a7c6a1ce96f8f048aa9a6758585d9a5fd6bae14"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"487b30735777cdaf350828e619f6f6102c67b688","unresolved":true,"context_lines":[{"line_number":163,"context_line":"class LibvirtMigrationMixin(object):"},{"line_number":164,"context_line":"    \"\"\"A simple mixin to facilliate successful libvirt live migrations"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    Requires that the test class set self.server for the specific test instnace"},{"line_number":167,"context_line":"    and self.{src,dest} to indicate the direction of the migration. For any"},{"line_number":168,"context_line":"    scenarios more complex than this they should override _migrate_stub with"},{"line_number":169,"context_line":"    their own implementation."}],"source_content_type":"text/x-python","patch_set":4,"id":"cc095874_60bfa50a","line":166,"range":{"start_line":166,"start_character":71,"end_line":166,"end_character":79},"updated":"2021-08-18 09:36:32.000000000","message":"nit: instance","commit_id":"6a7c6a1ce96f8f048aa9a6758585d9a5fd6bae14"}]}
