)]}'
{"nova/compute/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":3651,"context_line":"            self.compute_rpcapi.confirm_resize(context,"},{"line_number":3652,"context_line":"                                               instance,"},{"line_number":3653,"context_line":"                                               migration,"},{"line_number":3654,"context_line":"                                               migration.source_compute)"},{"line_number":3655,"context_line":""},{"line_number":3656,"context_line":"    @staticmethod"},{"line_number":3657,"context_line":"    def _allow_cross_cell_resize(context, instance):"}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_04f3c7e8","line":3654,"updated":"2019-12-09 15:30:19.000000000","message":"style nit: could have re-wrapped these while you moving things around. I wouldn\u0027t have judged :)","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"}],"nova/tests/functional/test_cross_cell_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1ad9519f9440b41faef054df691a16c842c122c8","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            with nova_context.target_cell(ctxt, cell) as cctxt:"},{"line_number":361,"context_line":"                self.assertRaises(exception.InstanceNotFound,"},{"line_number":362,"context_line":"                                  objects.Instance.get_by_uuid,"},{"line_number":363,"context_line":"                                  cctxt, server[\u0027id\u0027])"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    def test_resize_revert_volume_backed(self):"},{"line_number":366,"context_line":"        \"\"\"Tests a volume-backed resize to another cell where the resize"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_4ddade79","line":363,"updated":"2019-02-19 15:14:31.000000000","message":"It would also be good to assert that there are no leaked volume attachments at this point. Did we create any volume attachments during the resize and forget to delete them?","commit_id":"34220b431f6f14634b69b92292acf33d1617130e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c7decb9d775a1438ab9cfbccb5deffc7690d033","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            with nova_context.target_cell(ctxt, cell) as cctxt:"},{"line_number":361,"context_line":"                self.assertRaises(exception.InstanceNotFound,"},{"line_number":362,"context_line":"                                  objects.Instance.get_by_uuid,"},{"line_number":363,"context_line":"                                  cctxt, server[\u0027id\u0027])"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    def test_resize_revert_volume_backed(self):"},{"line_number":366,"context_line":"        \"\"\"Tests a volume-backed resize to another cell where the resize"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_0b1d9972","line":363,"in_reply_to":"9fdfeff1_4ddade79","updated":"2019-02-19 19:24:56.000000000","message":"Done","commit_id":"34220b431f6f14634b69b92292acf33d1617130e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \"instance.volume_attach.end\" versioned notification."},{"line_number":387,"context_line":"        \"\"\""},{"line_number":388,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: volume_id}}"},{"line_number":389,"context_line":"        self.api.api_post("},{"line_number":390,"context_line":"            \u0027/servers/%s/os-volume_attachments\u0027 % server_id, body)"},{"line_number":391,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":392,"context_line":"            \u0027instance.volume_attach.end\u0027)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_e4246b10","line":390,"range":{"start_line":389,"start_character":0,"end_line":390,"end_character":66},"updated":"2019-12-09 15:30:19.000000000","message":"Any reason you didn\u0027t use \u0027self.api.post_server_volume\u0027 here instead? If not, could you switch in a follow-up? To be honest, this is a useful enough pattern that it might make sense in the \u0027integrated_helpers\u0027 base classes. I see a few other users as-is","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                         self.cinder.volume_to_attachment)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def assert_resize_confirm_actions(self, server):"},{"line_number":452,"context_line":"        actions \u003d self.api.api_get("},{"line_number":453,"context_line":"            \u0027/servers/%s/os-instance-actions\u0027 % server[\u0027id\u0027]"},{"line_number":454,"context_line":"        ).body[\u0027instanceActions\u0027]"},{"line_number":455,"context_line":"        actions_by_action \u003d {action[\u0027action\u0027]: action for action in actions}"},{"line_number":456,"context_line":"        self.assertIn(instance_actions.CONFIRM_RESIZE, actions_by_action)"},{"line_number":457,"context_line":"        confirm_action \u003d actions_by_action[instance_actions.CONFIRM_RESIZE]"}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_e4522b68","line":454,"range":{"start_line":452,"start_character":0,"end_line":454,"end_character":33},"updated":"2019-12-09 15:30:19.000000000","message":"Again, we have \u0027self.api.get_instance_actions\u0027 available to us, no? (from nova/tests/functional/api/client.py)","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        actions_by_action \u003d {action[\u0027action\u0027]: action for action in actions}"},{"line_number":456,"context_line":"        self.assertIn(instance_actions.CONFIRM_RESIZE, actions_by_action)"},{"line_number":457,"context_line":"        confirm_action \u003d actions_by_action[instance_actions.CONFIRM_RESIZE]"},{"line_number":458,"context_line":"        detail \u003d self.api.api_get("},{"line_number":459,"context_line":"            \u0027/servers/%s/os-instance-actions/%s\u0027 % ("},{"line_number":460,"context_line":"                server[\u0027id\u0027], confirm_action[\u0027request_id\u0027])"},{"line_number":461,"context_line":"        ).body[\u0027instanceAction\u0027]"},{"line_number":462,"context_line":"        events_by_name \u003d {event[\u0027event\u0027]: event for event in detail[\u0027events\u0027]}"},{"line_number":463,"context_line":"        self.assertEqual(2, len(detail[\u0027events\u0027]), detail)"}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_c445af9c","line":460,"range":{"start_line":458,"start_character":0,"end_line":460,"end_character":59},"updated":"2019-12-09 15:30:19.000000000","message":"ditto","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        # The migration should be confirmed."},{"line_number":495,"context_line":"        migrations \u003d self.api.api_get("},{"line_number":496,"context_line":"            \u0027/os-migrations?instance_uuid\u003d%s\u0027 % server[\u0027id\u0027]"},{"line_number":497,"context_line":"        ).body[\u0027migrations\u0027]"},{"line_number":498,"context_line":"        self.assertEqual(1, len(migrations), migrations)"},{"line_number":499,"context_line":"        migration \u003d migrations[0]"},{"line_number":500,"context_line":"        self.assertEqual(\u0027confirmed\u0027, migration[\u0027status\u0027], migration)"}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_44cf7f27","line":497,"range":{"start_line":495,"start_character":0,"end_line":497,"end_character":28},"updated":"2019-12-09 15:30:19.000000000","message":"\u0027self.api.get_migrations\u0027 (though that one needs some work to support the instance_uuid argument). I\u0027ll stop calling these out now","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        # Confirm the resize and assert the guest remains off."},{"line_number":627,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027confirmResize\u0027: None})"},{"line_number":628,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027SHUTOFF\u0027)"},{"line_number":629,"context_line":"        self.assertEqual(4, server[\u0027OS-EXT-STS:power_state\u0027],"},{"line_number":630,"context_line":"                         \"Unexpected power state after confirmResize.\")"},{"line_number":631,"context_line":"        self._wait_for_migration_status(server, [\u0027confirmed\u0027])"},{"line_number":632,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_c4bb6fbb","line":629,"range":{"start_line":629,"start_character":25,"end_line":629,"end_character":26},"updated":"2019-12-09 15:30:19.000000000","message":"have we an enum/constant we can use instead of this?","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d70ab5bbc0460451e80f7bbe26a29ed3a32dcc14","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        target_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":490,"context_line":"        source_host \u003d \u0027host1\u0027 if target_host \u003d\u003d \u0027host2\u0027 else \u0027host2\u0027"},{"line_number":491,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027confirmResize\u0027: None})"},{"line_number":492,"context_line":"        self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        # The migration should be confirmed."},{"line_number":495,"context_line":"        migrations \u003d self.api.api_get("}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_7be1bcce","line":492,"updated":"2019-12-12 19:13:05.000000000","message":"I had to remove self.api from this in a rebase.","commit_id":"386aa315a4f2f0e3a985c59c63c654ec1f31a561"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d70ab5bbc0460451e80f7bbe26a29ed3a32dcc14","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        server \u003d self._resize_and_validate(volume_backed\u003dTrue, stopped\u003dTrue)[0]"},{"line_number":626,"context_line":"        # Confirm the resize and assert the guest remains off."},{"line_number":627,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027confirmResize\u0027: None})"},{"line_number":628,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027SHUTOFF\u0027)"},{"line_number":629,"context_line":"        self.assertEqual(4, server[\u0027OS-EXT-STS:power_state\u0027],"},{"line_number":630,"context_line":"                         \"Unexpected power state after confirmResize.\")"},{"line_number":631,"context_line":"        self._wait_for_migration_status(server, [\u0027confirmed\u0027])"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_5bcac045","line":628,"updated":"2019-12-12 19:13:05.000000000","message":"same","commit_id":"386aa315a4f2f0e3a985c59c63c654ec1f31a561"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d70ab5bbc0460451e80f7bbe26a29ed3a32dcc14","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        # Now try cold-migrating back to cell1 to make sure there is no"},{"line_number":634,"context_line":"        # duplicate entry error in the DB."},{"line_number":635,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":636,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":637,"context_line":"        # Should be back on host1 in cell1."},{"line_number":638,"context_line":"        self.assertEqual(\u0027host1\u0027, server[\u0027OS-EXT-SRV-ATTR:host\u0027])"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_fbd4cceb","line":636,"updated":"2019-12-12 19:13:05.000000000","message":"same","commit_id":"386aa315a4f2f0e3a985c59c63c654ec1f31a561"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7be81634bf245f0ef034d1da2c35cac66481c406","unresolved":false,"context_lines":[{"line_number":6762,"context_line":"            mock_conductor_confirm"},{"line_number":6763,"context_line":"        ):"},{"line_number":6764,"context_line":"            self.compute_api.confirm_resize(self.context, instance)"},{"line_number":6765,"context_line":"        mock_elevated.assert_called_once_with()"},{"line_number":6766,"context_line":"        mock_migration_save.assert_called_once_with()"},{"line_number":6767,"context_line":"        self.assertEqual(\u0027confirming\u0027, migration.status)"},{"line_number":6768,"context_line":"        mock_record_action.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":54,"id":"3fa7e38b_e400eb37","line":6765,"updated":"2019-12-09 15:30:19.000000000","message":"style nit: newline above here sure would be nice to visually separate $thing from assertions about $thing","commit_id":"ae1a85d78c864cc98baa4e97cd66d82a644c816a"}]}
