)]}'
{"nova/context.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b826652696378f7603167c0041220028fca02dd2","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @classmethod"},{"line_number":206,"context_line":"    def from_dict(cls, values):"},{"line_number":207,"context_line":"        return super(RequestContext, cls).from_dict("},{"line_number":208,"context_line":"            values,"},{"line_number":209,"context_line":"            user_id\u003dvalues.get(\u0027user_id\u0027),"},{"line_number":210,"context_line":"            project_id\u003dvalues.get(\u0027project_id\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_adf15c97","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":41},"updated":"2017-05-25 14:28:58.000000000","message":"Wait, is this returning an oslo.context RequestContext or a nova.context.RequestContext?","commit_id":"f7f805c27cbc3bc6a94833dcc97e0a5f1be43d4e"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4e28c4a946aa10fd72392fc1157b1e3857b8edbf","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @classmethod"},{"line_number":206,"context_line":"    def from_dict(cls, values):"},{"line_number":207,"context_line":"        return super(RequestContext, cls).from_dict("},{"line_number":208,"context_line":"            values,"},{"line_number":209,"context_line":"            user_id\u003dvalues.get(\u0027user_id\u0027),"},{"line_number":210,"context_line":"            project_id\u003dvalues.get(\u0027project_id\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_ad571c26","line":207,"range":{"start_line":207,"start_character":15,"end_line":207,"end_character":41},"in_reply_to":"ff0f0b1f_adf15c97","updated":"2017-05-25 14:32:44.000000000","message":"it\u0027s returning a nova.context.RequestContext because of how the constructor works: https://github.com/openstack/oslo.context/blob/cce83ad5e12baf2edc0e12c2944c587224e71148/oslo_context/context.py#L358-L382","commit_id":"f7f805c27cbc3bc6a94833dcc97e0a5f1be43d4e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60a36af387beae1381b089a3ee6e0f9503ab57e5","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            values,"},{"line_number":209,"context_line":"            user_id\u003dvalues.get(\u0027user_id\u0027),"},{"line_number":210,"context_line":"            project_id\u003dvalues.get(\u0027project_id\u0027),"},{"line_number":211,"context_line":"            # TODO(sdague): also context has show_deleted, we should"},{"line_number":212,"context_line":"            # probably use that."},{"line_number":213,"context_line":"            read_deleted\u003dvalues.get(\u0027read_deleted\u0027, \u0027no\u0027),"},{"line_number":214,"context_line":"            remote_address\u003dvalues.get(\u0027remote_address\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_4804ee14","line":211,"range":{"start_line":211,"start_character":28,"end_line":211,"end_character":32},"updated":"2017-05-25 14:34:54.000000000","message":"also or oslo?","commit_id":"f7f805c27cbc3bc6a94833dcc97e0a5f1be43d4e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b826652696378f7603167c0041220028fca02dd2","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            values,"},{"line_number":209,"context_line":"            user_id\u003dvalues.get(\u0027user_id\u0027),"},{"line_number":210,"context_line":"            project_id\u003dvalues.get(\u0027project_id\u0027),"},{"line_number":211,"context_line":"            # TODO(sdague): also context has show_deleted, we should"},{"line_number":212,"context_line":"            # probably use that."},{"line_number":213,"context_line":"            read_deleted\u003dvalues.get(\u0027read_deleted\u0027, \u0027no\u0027),"},{"line_number":214,"context_line":"            remote_address\u003dvalues.get(\u0027remote_address\u0027),"},{"line_number":215,"context_line":"            timestamp\u003dvalues.get(\u0027timestamp\u0027),"},{"line_number":216,"context_line":"            quota_class\u003dvalues.get(\u0027quota_class\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_8d6fb826","line":213,"range":{"start_line":211,"start_character":12,"end_line":213,"end_character":58},"updated":"2017-05-25 14:28:58.000000000","message":"show_deleted is a boolean, read_deleted is an enum (yes/no/only), so probably not a straight transition there.","commit_id":"f7f805c27cbc3bc6a94833dcc97e0a5f1be43d4e"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4e28c4a946aa10fd72392fc1157b1e3857b8edbf","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            values,"},{"line_number":209,"context_line":"            user_id\u003dvalues.get(\u0027user_id\u0027),"},{"line_number":210,"context_line":"            project_id\u003dvalues.get(\u0027project_id\u0027),"},{"line_number":211,"context_line":"            # TODO(sdague): also context has show_deleted, we should"},{"line_number":212,"context_line":"            # probably use that."},{"line_number":213,"context_line":"            read_deleted\u003dvalues.get(\u0027read_deleted\u0027, \u0027no\u0027),"},{"line_number":214,"context_line":"            remote_address\u003dvalues.get(\u0027remote_address\u0027),"},{"line_number":215,"context_line":"            timestamp\u003dvalues.get(\u0027timestamp\u0027),"},{"line_number":216,"context_line":"            quota_class\u003dvalues.get(\u0027quota_class\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_cd2130b6","line":213,"range":{"start_line":211,"start_character":12,"end_line":213,"end_character":58},"in_reply_to":"ff0f0b1f_8d6fb826","updated":"2017-05-25 14:32:44.000000000","message":"Fair, it\u0027s probably still worth keeping the comment because show_deleted was definitely put in place because of the nova original code which has since drifted.\n\nMaybe it\u0027s a good future merge, maybe not.","commit_id":"f7f805c27cbc3bc6a94833dcc97e0a5f1be43d4e"}],"nova/tests/unit/test_context.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9fc7559f857ac388c4fbdb705abc3d7d5dbb1a1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        context.get_admin_context()"},{"line_number":169,"context_line":"        self.assertIs(o_context.get_current(), ctx1)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def test_convert_from_rc_to_dict(self):"},{"line_number":172,"context_line":"        ctx \u003d context.RequestContext("},{"line_number":173,"context_line":"            111, 222, request_id\u003d\u0027req-679033b7-1755-4929-bf85-eb3bfaef7e0b\u0027,"},{"line_number":174,"context_line":"            timestamp\u003d\u00272015-03-02T22:31:56.641629\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_b29c1b6a","side":"PARENT","line":171,"updated":"2017-05-25 13:48:20.000000000","message":"There are things in here which are nova-specific, like timestamp and quota_class. Couldn\u0027t we just treat expected_values as a subset of what we get back from to_dict so anything else that\u0027s coming in from oslo.context is ignored?","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d02699e5aca066eaadede57b9317912cb90db6e8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        context.get_admin_context()"},{"line_number":169,"context_line":"        self.assertIs(o_context.get_current(), ctx1)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def test_convert_from_rc_to_dict(self):"},{"line_number":172,"context_line":"        ctx \u003d context.RequestContext("},{"line_number":173,"context_line":"            111, 222, request_id\u003d\u0027req-679033b7-1755-4929-bf85-eb3bfaef7e0b\u0027,"},{"line_number":174,"context_line":"            timestamp\u003d\u00272015-03-02T22:31:56.641629\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_d2242f0f","side":"PARENT","line":171,"in_reply_to":"ff0f0b1f_b29c1b6a","updated":"2017-05-25 13:52:10.000000000","message":"I can respin a test to check for our extra keys.","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9fc7559f857ac388c4fbdb705abc3d7d5dbb1a1","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                           \u0027user_name\u0027: None}"},{"line_number":201,"context_line":"        self.assertEqual(expected_values, values2)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_convert_from_dict_to_dict_version_2_4_x(self):"},{"line_number":204,"context_line":"        # fake dict() created with oslo.context 2.4.x, Missing is_admin_project"},{"line_number":205,"context_line":"        # key"},{"line_number":206,"context_line":"        values \u003d {\u0027user\u0027: \u0027111\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_7291e346","side":"PARENT","line":203,"updated":"2017-05-25 13:48:20.000000000","message":"I\u0027m not sure I want to remove this one. The nova from_dict impl doesn\u0027t call into the base class at all, so it\u0027s a strict set of keys. Why will this be a problem?","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d02699e5aca066eaadede57b9317912cb90db6e8","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                           \u0027user_name\u0027: None}"},{"line_number":201,"context_line":"        self.assertEqual(expected_values, values2)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_convert_from_dict_to_dict_version_2_4_x(self):"},{"line_number":204,"context_line":"        # fake dict() created with oslo.context 2.4.x, Missing is_admin_project"},{"line_number":205,"context_line":"        # key"},{"line_number":206,"context_line":"        values \u003d {\u0027user\u0027: \u0027111\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_721683aa","side":"PARENT","line":203,"in_reply_to":"ff0f0b1f_7291e346","updated":"2017-05-25 13:52:10.000000000","message":"except it\u0027s comparing to to_dict, which is not. So we\u0027re coupled and have to insert any new upstream keys every single time they add (and we\u0027re putting a block on requirements).\n\nIt\u0027s a pretty inappropriate test of internals.","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9fc7559f857ac388c4fbdb705abc3d7d5dbb1a1","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        values2 \u003d ctx.to_dict()"},{"line_number":232,"context_line":"        self.assertEqual(values, values2)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_convert_from_dict_then_to_dict(self):"},{"line_number":235,"context_line":"        values \u003d {\u0027user\u0027: \u0027111\u0027,"},{"line_number":236,"context_line":"                  \u0027user_id\u0027: \u0027111\u0027,"},{"line_number":237,"context_line":"                  \u0027tenant\u0027: \u0027222\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_129aa760","side":"PARENT","line":234,"updated":"2017-05-25 13:48:20.000000000","message":"Same as above.","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d02699e5aca066eaadede57b9317912cb90db6e8","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        values2 \u003d ctx.to_dict()"},{"line_number":232,"context_line":"        self.assertEqual(values, values2)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_convert_from_dict_then_to_dict(self):"},{"line_number":235,"context_line":"        values \u003d {\u0027user\u0027: \u0027111\u0027,"},{"line_number":236,"context_line":"                  \u0027user_id\u0027: \u0027111\u0027,"},{"line_number":237,"context_line":"                  \u0027tenant\u0027: \u0027222\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_320c8b92","side":"PARENT","line":234,"in_reply_to":"ff0f0b1f_129aa760","updated":"2017-05-25 13:52:10.000000000","message":"as above","commit_id":"a2beeab7204064aad33e51d10a39578f7802ae99"}]}
