)]}'
{"nova/tests/functional/compute/test_live_migration.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"        integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"    ):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_5385c1ac","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":8},"updated":"2020-07-29 09:27:58.000000000","message":"nit","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"576cf6d5e4816bb52e12bcb8d7d312c75513652f","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"        integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"    ):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1fb4eb34","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":8},"in_reply_to":"9f560f44_5385c1ac","updated":"2020-07-29 09:43:13.000000000","message":"Done","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"        integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"    ):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_b3925df5","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":4},"updated":"2020-07-29 09:27:58.000000000","message":"nit","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"576cf6d5e4816bb52e12bcb8d7d312c75513652f","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"        integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"    ):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ffae57e5","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":4},"in_reply_to":"9f560f44_b3925df5","updated":"2020-07-29 09:43:13.000000000","message":"Done","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def setUp(self):"},{"line_number":109,"context_line":"        super().setUp()"},{"line_number":110,"context_line":"        self.flavor_id \u003d self.api.get_flavors()[0][\u0027id\u0027]"},{"line_number":111,"context_line":"        self.cinder \u003d self.useFixture(nova_fixtures.CinderFixture(self))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _setup_compute_service(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_f394d5ea","line":110,"updated":"2020-07-29 09:27:58.000000000","message":"This seems to be unnecessary since it\u0027s the default for \u0027_build_server\u0027 [1]\n\n[1] https://github.com/openstack/nova/blob/ccecb507ff4/nova/tests/functional/integrated_helpers.py#L339-L341","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"576cf6d5e4816bb52e12bcb8d7d312c75513652f","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def setUp(self):"},{"line_number":109,"context_line":"        super().setUp()"},{"line_number":110,"context_line":"        self.flavor_id \u003d self.api.get_flavors()[0][\u0027id\u0027]"},{"line_number":111,"context_line":"        self.cinder \u003d self.useFixture(nova_fixtures.CinderFixture(self))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _setup_compute_service(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_3f644fe4","line":110,"in_reply_to":"9f560f44_f394d5ea","updated":"2020-07-29 09:43:13.000000000","message":"Done","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _setup_compute_service(self):"},{"line_number":114,"context_line":"        self._start_compute(\u0027src\u0027)"},{"line_number":115,"context_line":"        self._start_compute(\u0027dest\u0027)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @mock.patch(\u0027nova.virt.fake.FakeDriver.live_migration\u0027)"},{"line_number":118,"context_line":"    def test_vol_attachments_during_driver_live_mig_failure(self, mock_lm):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_b3fd3d3c","line":115,"updated":"2020-07-29 09:27:58.000000000","message":"Oooh, shiny","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        volume_id \u003d nova_fixtures.CinderFixture.IMAGE_BACKED_VOL"},{"line_number":141,"context_line":"        server \u003d self._build_server("},{"line_number":142,"context_line":"            name\u003d\u0027test_bfv_live_migration_failure\u0027, image_uuid\u003d\u0027\u0027,"},{"line_number":143,"context_line":"            flavor_id\u003dself.flavor_id, networks\u003d\u0027none\u0027"},{"line_number":144,"context_line":"        )"},{"line_number":145,"context_line":"        server[\u0027block_device_mapping_v2\u0027] \u003d [{"},{"line_number":146,"context_line":"            \u0027source_type\u0027: \u0027volume\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_13a4e956","line":143,"range":{"start_line":143,"start_character":12,"end_line":143,"end_character":37},"updated":"2020-07-29 09:27:58.000000000","message":"as above, this is unnecessary","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fd105462cc5aa43d2300c400b3421de22335393","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Migrate the instance and wait until the migration errors out thanks"},{"line_number":170,"context_line":"        # to our mocked version of live_migration raising TestingException"},{"line_number":171,"context_line":"        self.api.post_server_action("},{"line_number":172,"context_line":"            server[\u0027id\u0027],"},{"line_number":173,"context_line":"            {\u0027os-migrateLive\u0027: {\u0027host\u0027: None, \u0027block_migration\u0027: \u0027auto\u0027}})"},{"line_number":174,"context_line":"        self._wait_for_migration_status(server, [\u0027error\u0027])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # Assert that we called the fake live_migration method"},{"line_number":177,"context_line":"        mock_lm.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_53ae612e","line":174,"range":{"start_line":171,"start_character":0,"end_line":174,"end_character":58},"updated":"2020-07-29 09:27:58.000000000","message":"Ah, you can\u0027t use\n\n    self._live_migrate(server, \u0027error\u0027)\n\n...here because we don\u0027t have an expected_state parameter yet. Probably unnecessary if this is being backported but would be a great follow-up [1]\n\n[1] https://github.com/openstack/nova/blob/ccecb507ff4/nova/tests/functional/integrated_helpers.py#L433-L439","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"576cf6d5e4816bb52e12bcb8d7d312c75513652f","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Migrate the instance and wait until the migration errors out thanks"},{"line_number":170,"context_line":"        # to our mocked version of live_migration raising TestingException"},{"line_number":171,"context_line":"        self.api.post_server_action("},{"line_number":172,"context_line":"            server[\u0027id\u0027],"},{"line_number":173,"context_line":"            {\u0027os-migrateLive\u0027: {\u0027host\u0027: None, \u0027block_migration\u0027: \u0027auto\u0027}})"},{"line_number":174,"context_line":"        self._wait_for_migration_status(server, [\u0027error\u0027])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # Assert that we called the fake live_migration method"},{"line_number":177,"context_line":"        mock_lm.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_df6433e8","line":174,"range":{"start_line":171,"start_character":0,"end_line":174,"end_character":58},"in_reply_to":"9f560f44_53ae612e","updated":"2020-07-29 09:43:13.000000000","message":"ACK, I\u0027ll do that now.","commit_id":"af5aeda720768a9ff2881b772f6f5a1d6d09ad2d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"150666c7ca17b06f7de94a3a5164d0c1d7c4837c","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"    integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_0fe139d1","line":100,"updated":"2020-07-30 22:54:37.000000000","message":"Heh, interesting way around pep8. Makes sense though. I usually indent twice on L99 and close the parens there.","commit_id":"e6c2a863286bae6a8a8caff0d6a54c001e0a2ffb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"60c1fc51246f4b36606bddc9bf930e83ea7cc010","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestVolAttachmentsDuringLiveMigration("},{"line_number":99,"context_line":"    integrated_helpers._IntegratedTestBase"},{"line_number":100,"context_line":"):"},{"line_number":101,"context_line":"    \"\"\"Assert the lifecycle of volume attachments during LM rollbacks"},{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9a69008d","line":100,"in_reply_to":"9f560f44_0fe139d1","updated":"2020-07-31 09:53:23.000000000","message":"This style works much better when you have type annotations, since those can be quite long and you need all the horizontal space you can get to avoid fugly wrapping. It\u0027s also pretty easy to visually grok, which is nice","commit_id":"e6c2a863286bae6a8a8caff0d6a54c001e0a2ffb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"150666c7ca17b06f7de94a3a5164d0c1d7c4837c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        * Live migrate the instance to another host invoking the mocked"},{"line_number":125,"context_line":"          live_migration method"},{"line_number":126,"context_line":"        * Assert that the instance is still on the source host"},{"line_number":127,"context_line":"        * Assert that the original source host volume attachment remains"},{"line_number":128,"context_line":"        \"\"\""},{"line_number":129,"context_line":"        # Mock out driver.live_migration so that we always rollback"},{"line_number":130,"context_line":"        def _fake_live_migration_with_rollback("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_efdb2518","line":127,"updated":"2020-07-30 22:54:37.000000000","message":"Love these steps describing the test. I will copy this in the future.","commit_id":"e6c2a863286bae6a8a8caff0d6a54c001e0a2ffb"}]}
