)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"441bc639314d786c2e56729282ddce6587139e8d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     2387f93f (Teach simple_tenant_usage about cells)"},{"line_number":2,"context_line":"Author:     Dan Smith \u003cdansmith@redhat.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2017-03-03 12:11:12 -0800"},{"line_number":4,"context_line":"Commit:     Dan Smith \u003cdansmith@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba2be162_c839aff4","line":1,"updated":"2017-03-06 16:26:27.000000000","message":"blueprint?","commit_id":"b473012e8e5efbe580aaf8cd7d1de158416ca084"}],"nova/consoleauth/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"441bc639314d786c2e56729282ddce6587139e8d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            return self.cells_rpcapi.validate_console_port(context,"},{"line_number":118,"context_line":"                    instance_uuid, token[\u0027port\u0027], token[\u0027console_type\u0027])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        mapping \u003d objects.InstanceMapping.get_by_instance_uuid(context,"},{"line_number":121,"context_line":"                                                               instance_uuid)"},{"line_number":122,"context_line":"        with nova_context.target_cell(context, mapping.cell_mapping):"},{"line_number":123,"context_line":"            instance \u003d objects.Instance.get_by_uuid(context, instance_uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_6802830d","line":120,"updated":"2017-03-06 16:26:27.000000000","message":"Need exception handling for Instance[Mapping]NotFound?","commit_id":"b473012e8e5efbe580aaf8cd7d1de158416ca084"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ae6d56fc6f8e73fb19e6fe53b5524b2388195480","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    instance_uuid, token[\u0027port\u0027], token[\u0027console_type\u0027])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        mapping \u003d objects.InstanceMapping.get_by_instance_uuid(context,"},{"line_number":121,"context_line":"                                                               instance_uuid)"},{"line_number":122,"context_line":"        with nova_context.target_cell(context, mapping.cell_mapping):"},{"line_number":123,"context_line":"            instance \u003d objects.Instance.get_by_uuid(context, instance_uuid)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_5518c61d","line":121,"updated":"2017-03-07 18:08:47.000000000","message":"Did we want to handle exceptions here around an instance not being found?","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ba59900b23b520bc6df19727ed5362c548ca91cb","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    instance_uuid, token[\u0027port\u0027], token[\u0027console_type\u0027])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        mapping \u003d objects.InstanceMapping.get_by_instance_uuid(context,"},{"line_number":121,"context_line":"                                                               instance_uuid)"},{"line_number":122,"context_line":"        with nova_context.target_cell(context, mapping.cell_mapping):"},{"line_number":123,"context_line":"            instance \u003d objects.Instance.get_by_uuid(context, instance_uuid)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_9b30ad58","line":121,"in_reply_to":"9a30ddce_5518c61d","updated":"2017-03-07 18:41:39.000000000","message":"We don\u0027t handle InstanceNotFound in the old code, even in the api caller. I can tack on a cleanup of the existing and new cases to just return None in that case, which is all it checks for.\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/console_auth_tokens.py#L42-L44","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"}],"nova/tests/unit/consoleauth/test_consoleauth.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ae6d56fc6f8e73fb19e6fe53b5524b2388195480","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_tokens_expire(self, mock_get):"},{"line_number":52,"context_line":"        mock_get.return_value \u003d None"},{"line_number":53,"context_line":"        fake_im \u003d objects.InstanceMapping.get_by_instance_uuid(self.context,"},{"line_number":54,"context_line":"                                                               \u0027fake\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Test that tokens expire correctly."},{"line_number":57,"context_line":"        self.useFixture(test.TimeOverride())"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_557fe6a9","line":54,"updated":"2017-03-07 18:08:47.000000000","message":"I think you probably want to create concrete InstanceMapping objects instead of calling the DB, since this is a unit test?\n\n fake_im \u003d objects.InstanceMapping(\n     self.context,\n     instance_uuid\u003duuids.instance,\n     cell_mapping\u003dobjects.CellMapping(\n         self.context,\n         uuid\u003duuids.cell1,\n         transport_url\u003d\u0027transport\u0027,\n         db_connection\u003d\u0027db\u0027,\n     ),\n     project_id\u003d\u0027fake-project\u0027,\n )\n\nI formatted the above just like I know you like it. :P","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c9833ae686e62ec39f808505ca775287f5945c10","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_tokens_expire(self, mock_get):"},{"line_number":52,"context_line":"        mock_get.return_value \u003d None"},{"line_number":53,"context_line":"        fake_im \u003d objects.InstanceMapping.get_by_instance_uuid(self.context,"},{"line_number":54,"context_line":"                                                               \u0027fake\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Test that tokens expire correctly."},{"line_number":57,"context_line":"        self.useFixture(test.TimeOverride())"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_5b1b9572","line":54,"in_reply_to":"9a30ddce_38826795","updated":"2017-03-07 18:33:06.000000000","message":"Yes, that\u0027s the one.\n\nI\u0027ll add a comment since I\u0027m respinning anyway.","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2645427b1a18592d995ae2087bed978b576126b1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_tokens_expire(self, mock_get):"},{"line_number":52,"context_line":"        mock_get.return_value \u003d None"},{"line_number":53,"context_line":"        fake_im \u003d objects.InstanceMapping.get_by_instance_uuid(self.context,"},{"line_number":54,"context_line":"                                                               \u0027fake\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Test that tokens expire correctly."},{"line_number":57,"context_line":"        self.useFixture(test.TimeOverride())"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_784dbf71","line":54,"in_reply_to":"9a30ddce_557fe6a9","updated":"2017-03-07 18:11:15.000000000","message":"No, this is getting the mapping from the fixture we use underneath. It doesn\u0027t come from the database, it comes from the fixture. I\u0027m just pulling it so Ican use it below after I mock this out to verify that it gets called.","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c3c306e11f7fb70765c04690939f70accf14cae9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_tokens_expire(self, mock_get):"},{"line_number":52,"context_line":"        mock_get.return_value \u003d None"},{"line_number":53,"context_line":"        fake_im \u003d objects.InstanceMapping.get_by_instance_uuid(self.context,"},{"line_number":54,"context_line":"                                                               \u0027fake\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Test that tokens expire correctly."},{"line_number":57,"context_line":"        self.useFixture(test.TimeOverride())"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_38826795","line":54,"in_reply_to":"9a30ddce_784dbf71","updated":"2017-03-07 18:31:35.000000000","message":"OK. A little obscure, but makes sense. I assume this is the fixture you are referring to?\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L256","commit_id":"ada647efe6f7f690b815044976586c5badc68b1b"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"c12bbd3372b9ba21cbaaaa9be63bddfc9429e207","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.manager_api \u003d self.manager \u003d manager.ConsoleAuthManager()"},{"line_number":38,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":39,"context_line":"        self.instance_uuid \u003d \u002700000000-0000-0000-0000-000000000000\u0027"},{"line_number":40,"context_line":"        self.is_cells \u003d False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_reset(self):"},{"line_number":43,"context_line":"        with mock.patch(\u0027nova.compute.rpcapi.ComputeAPI\u0027) as mock_rpc:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_c7ca2c1a","line":40,"updated":"2017-03-08 11:00:31.000000000","message":"nit: Do you want to call this cellsv1? It\u0027s a bit confusing, as the \u0027non-cells\u0027 code now explicitly handles cells.","commit_id":"4f2b97c30eed7e32a402adae4f54ae55b5ea3418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cdfa54f028f3f27b2ef97aa69252721e9f1664a9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.manager_api \u003d self.manager \u003d manager.ConsoleAuthManager()"},{"line_number":38,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":39,"context_line":"        self.instance_uuid \u003d \u002700000000-0000-0000-0000-000000000000\u0027"},{"line_number":40,"context_line":"        self.is_cells \u003d False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_reset(self):"},{"line_number":43,"context_line":"        with mock.patch(\u0027nova.compute.rpcapi.ComputeAPI\u0027) as mock_rpc:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_4b55591b","line":40,"in_reply_to":"9a30ddce_c7ca2c1a","updated":"2017-03-08 17:10:41.000000000","message":"Agree the name on the variable is confusing.","commit_id":"4f2b97c30eed7e32a402adae4f54ae55b5ea3418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cdfa54f028f3f27b2ef97aa69252721e9f1664a9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.manager_api.authorize_console(self.context, token, \u0027novnc\u0027,"},{"line_number":67,"context_line":"                                         \u0027127.0.0.1\u0027, \u00278080\u0027, \u0027host\u0027,"},{"line_number":68,"context_line":"                                         self.instance_uuid)"},{"line_number":69,"context_line":"        with mock.patch(\u0027nova.objects.InstanceMapping.\u0027"},{"line_number":70,"context_line":"                        \u0027get_by_instance_uuid\u0027) as mock_get:"},{"line_number":71,"context_line":"            mock_get.return_value \u003d fake_im"},{"line_number":72,"context_line":"            self.assertIsNotNone(self.manager_api.check_token(self.context,"},{"line_number":73,"context_line":"                                                              token))"},{"line_number":74,"context_line":"            timeutils.advance_time_seconds(1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_0b09a131","line":71,"range":{"start_line":69,"start_character":0,"end_line":71,"end_character":43},"updated":"2017-03-08 17:10:41.000000000","message":"Isn\u0027t this redundant since SingleCellSimple already stubs this out? Or is the point to get the mock so you can assert the call on it?","commit_id":"4f2b97c30eed7e32a402adae4f54ae55b5ea3418"}]}
