)]}'
{"trove/extensions/cassandra/service.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        password \u003d user_data[\u0027password\u0027]"},{"line_number":42,"context_line":"        databases \u003d user_data.get(\u0027databases\u0027, [])"},{"line_number":43,"context_line":"        user_model \u003d guest_models.CassandraUser(name, password)"},{"line_number":44,"context_line":"        for db in databases:"},{"line_number":45,"context_line":"            user_model.databases \u003d db[\u0027name\u0027]"},{"line_number":46,"context_line":"        return user_model"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_0d4745be","line":45,"range":{"start_line":44,"start_character":8,"end_line":45,"end_character":45},"updated":"2017-06-07 21:18:36.000000000","message":"user_model.databases is a list right?\nhttps://github.com/openstack/trove/blob/2dea3d6199cd54ff718f44c54316cf1719672d34/trove/common/db/models.py#L217\n\nI think you want the following instead:\n\nuser_model.databases \u003d [db[\u0027name\u0027] for db in databases]","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/extensions/common/service.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from trove.common.utils import correct_id_with_req"},{"line_number":39,"context_line":"from trove.common import wsgi"},{"line_number":40,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":41,"context_line":"from trove.extensions.common import models as common_utils"},{"line_number":42,"context_line":"from trove.extensions.common import views"},{"line_number":43,"context_line":"from trove.instance import models as instance_models"},{"line_number":44,"context_line":"from trove.instance.models import DBInstance"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_1750790a","line":41,"range":{"start_line":41,"start_character":53,"end_line":41,"end_character":58},"updated":"2017-06-07 21:18:36.000000000","message":"did you mean \u0027common_models\u0027 here?","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/extensions/mgmt/instances/models.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common import remote"},{"line_number":22,"context_line":"from trove.common import utils"},{"line_number":23,"context_line":"from trove.extensions.common import models as common_models"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from trove.instance import models as instance_models"},{"line_number":26,"context_line":"from trove import rpc"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_d2fe8f69","line":24,"updated":"2017-06-07 21:18:36.000000000","message":"nit: no new line here","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/extensions/postgresql/service.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        password \u003d user_data[\u0027password\u0027]"},{"line_number":42,"context_line":"        databases \u003d user_data.get(\u0027databases\u0027, [])"},{"line_number":43,"context_line":"        user_model \u003d guest_models.PostgreSQLUser(name, password)"},{"line_number":44,"context_line":"        for db in databases:"},{"line_number":45,"context_line":"            user_model.databases \u003d db[\u0027name\u0027]"},{"line_number":46,"context_line":"        return user_model"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_ed2d3295","line":45,"range":{"start_line":44,"start_character":8,"end_line":45,"end_character":45},"updated":"2017-06-07 21:18:36.000000000","message":"I think you want\n\nuser_model.databases \u003d [db[\u0027name\u0027] for db in databases]","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/tests/api/user_access.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @test(depends_on\u003d[test_grant_full_access])"},{"line_number":338,"context_line":"    def test_revoke_ghostdbs(self):"},{"line_number":339,"context_line":"        # Revokes to imaginary databases are acceptable, and are honored."},{"line_number":340,"context_line":"        self._reset_access()"},{"line_number":341,"context_line":"        self._ensure_nothing_else_created()"},{"line_number":342,"context_line":"        self._grant_access_plural(self.users, self.ghostdbs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_ef8f412c","side":"PARENT","line":339,"range":{"start_line":339,"start_character":45,"end_line":339,"end_character":55},"updated":"2017-06-07 21:18:36.000000000","message":"404\u0027d because we no longer have a generic controller. Should we fall back on this functionality for backwards compatibility? I don\u0027t think anyone is doing this but... thoughts?","commit_id":"7eb6bdc80ddd566add771c02ddaa96c637c27460"}],"trove/tests/unittests/common/test_common_extensions.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    def setUp(self):"},{"line_number":427,"context_line":"        super(TestUserAccessController, self).setUp("},{"line_number":428,"context_line":"            RoutingUserAccessController())"},{"line_number":429,"context_line":"        self.req \u003d Mock()"},{"line_number":430,"context_line":"        self.body \u003d Mock()"},{"line_number":431,"context_line":"        self.tenant_id \u003d Mock()"},{"line_number":432,"context_line":"        self.instance_id \u003d Mock()"},{"line_number":433,"context_line":"        self.coordinator_id \u003d Mock()"},{"line_number":434,"context_line":"        self.database_id \u003d Mock()"},{"line_number":435,"context_line":"        self.user_id \u003d Mock()"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    def test_index(self):"},{"line_number":438,"context_line":"        self._assert_api_call("}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_5706f121","line":435,"range":{"start_line":429,"start_character":8,"end_line":435,"end_character":29},"updated":"2017-06-07 21:18:36.000000000","message":"some of these are shared and can be moved to the setup of RoutingControllerTest.","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/tests/unittests/instance/test_instance_controller.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestInstanceController(trove_testtools.TestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(TestInstanceController, self).setUp()"},{"line_number":31,"context_line":"        self.controller \u003d InstanceController()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_4bf9614b","line":28,"updated":"2017-06-07 21:18:36.000000000","message":"?","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}],"trove/tests/unittests/mysql/test_user_controller.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestUserController(trove_testtools.TestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(TestUserController, self).setUp()"},{"line_number":29,"context_line":"        self.controller \u003d RoutingUserController()"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_52b71f3b","line":26,"updated":"2017-06-07 21:18:36.000000000","message":"?","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class TestUserAccessController(trove_testtools.TestCase):"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_validate_update_db(self):"},{"line_number":312,"context_line":"        body \u003d {\"databases\": []}"},{"line_number":313,"context_line":"        schema \u003d (RoutingUserAccessController()).get_schema(\u0027update_all\u0027, body)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_92b1374a","line":310,"updated":"2017-06-07 21:18:36.000000000","message":"?","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"1ef699d1f3a9cebdb0672513dc5b8f4c8dca245f","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"class TestSchemaController(trove_testtools.TestCase):"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def setUp(self):"},{"line_number":326,"context_line":"        super(TestSchemaController, self).setUp()"},{"line_number":327,"context_line":"        self.controller \u003d RoutingDatabaseController()"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_72ac63ec","line":324,"updated":"2017-06-07 21:18:36.000000000","message":"?","commit_id":"b48342a8d4af2e0a0dc3d14fe2edad9a8282ddb0"}]}
