)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"bd2ef5c7eecfbb48d94f0102b354692053cb49f7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"it raises an error DatabaseNotFound."},{"line_number":16,"context_line":"Which is incorrect,"},{"line_number":17,"context_line":"because a proper error message should be"},{"line_number":18,"context_line":"user does not have access on Database."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Changes:"},{"line_number":21,"context_line":"- Added an exception UserAcessRightsNotFound indicating"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1ae5cdf2_2feb917c","line":18,"updated":"2014-06-23 07:56:56.000000000","message":"Apart from fixing some of the other comments made by Craig and amrith, can you please also clean up this commit message? Lines are really short, and this makes it somewhat hard to read. Also please don\u0027t use full-stops (periods) in the middle of a sentence; reserve them for when you have completed the entire sentence. Thanks!","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"}],"trove/common/exception.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1182b62ea9331bd76d78c051cf6aedd05e310497","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                \" set as of %(parameter_deleted_at)s\")"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2F8eQ%3D","line":406,"updated":"2014-04-09 10:23:44.000000000","message":"AccessNotFound sounds wrong. I\u0027d suggest to name it UserAccessRightsNotFound","commit_id":"9f5a0cbc392db4caf4155f5ba48f434dcd443145"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cca81c5eddbb11ef98d1350c730971670e36bc22","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                \" set as of %(parameter_deleted_at)s\")"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F0b8%3D","line":406,"updated":"2014-04-10 07:57:50.000000000","message":"AccessNotFound sounds wrong. Should be UserAccessRightsNotFound","commit_id":"48af8425a1724fd8b0b3416cbb226e34d39b6509"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d891860449fe7c30d481f62deb1fe9e1b94b49bb","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                \" set as of %(parameter_deleted_at)s\")"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessRightNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FrUI%3D","line":406,"updated":"2014-04-11 08:04:47.000000000","message":"access rights, \u0027s\u0027 is missing","commit_id":"0bb9c796f559690c3ea02df1703c162ed92cf3b1"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"5b42a78c474e7a2fa32438f725cf909ec018c46b","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessRightsNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FT5E%3D","line":407,"updated":"2014-04-22 15:32:56.000000000","message":"or the database may not exist?\n\nUserAccessRightsOrDatabaseNotFound with a message\n\nUser does not have access on database %(uuid)s or database does not exist.","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"},{"author":{"_account_id":11041,"name":"Deepika Goswami","email":"deepika.goswami@globallogic.com","username":"DeepikaG"},"change_message_id":"42e8981d9d95d4791b730e67c2761fe90f4f0dfe","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessRightsNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_ec5f493f","line":407,"in_reply_to":"9ad9bd40_51bfeea9","updated":"2014-05-07 08:29:35.000000000","message":"Craig: Just to ensure we are on same page, here we are discussing about revoking an access of a user from a schema and not about deleting a schema.\n\n- Considering the revoking context , if user try to revoke access from schema \u0027fooo\u0027 instead of \u0027foo\u0027 which does not exist , user will get message that \"User does  not have access on  database \u0027fooo\u0027\". So in turn user can make out if it was actually a typo error or no need to revoke since the access already does not exist.\n\nBecause As I mentioned earlier . A user can have an access on a schema even if schema does not exist , so he can revoke the same also.","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"13bd56f3e7d43fb6473e67c0c9328fefc4634b13","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessRightsNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_51bfeea9","line":407,"in_reply_to":"9ad9bd40_949e7255","updated":"2014-05-07 06:42:12.000000000","message":"I think amrith has a point here where the error message returned to a user could be confused if they delete a schema call \u0027fooo\u0027 and they ment \u0027foo\u0027 where that schema doesn\u0027t actually exist.\n\nside note.\n\ni suggest the key here be database_name instead of uuid and then you can just passin a kwarg of database_name instead of uuid because its technically not a uuid in any case with this message.","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"},{"author":{"_account_id":11041,"name":"Deepika Goswami","email":"deepika.goswami@globallogic.com","username":"DeepikaG"},"change_message_id":"439e4ec32ab92447430342ff5d6b8a1ac85c7225","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class UserAccessRightsNotFound(NotFound):"},{"line_number":407,"context_line":"    message \u003d _(\"User does not have access on database %(uuid)s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_949e7255","line":407,"in_reply_to":"AAAAXH%2F%2FT5E%3D","updated":"2014-04-30 08:06:16.000000000","message":"Since for mysql, user can have access on a Schema even if it does not exist . . So while revoking also, it is fine that we check for access only irrespective of database exists or not. And in turn this message is sufficient I believe.","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"}],"trove/common/wsgi.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"5b42a78c474e7a2fa32438f725cf909ec018c46b","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            exception.DatabaseNotFound,"},{"line_number":335,"context_line":"            exception.QuotaResourceUnknown,"},{"line_number":336,"context_line":"            exception.BackupFileNotFound,"},{"line_number":337,"context_line":"            exception.UserAccessRightsNotFound"},{"line_number":338,"context_line":"        ],"},{"line_number":339,"context_line":"        webob.exc.HTTPConflict: ["},{"line_number":340,"context_line":"            exception.BackupNotCompleteError,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FT44%3D","line":337,"updated":"2014-04-22 15:32:56.000000000","message":"a trailing comma would be good to add so future diffs are shorter by one line ;)","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"13bd56f3e7d43fb6473e67c0c9328fefc4634b13","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            exception.DatabaseNotFound,"},{"line_number":335,"context_line":"            exception.QuotaResourceUnknown,"},{"line_number":336,"context_line":"            exception.BackupFileNotFound,"},{"line_number":337,"context_line":"            exception.UserAccessRightsNotFound"},{"line_number":338,"context_line":"        ],"},{"line_number":339,"context_line":"        webob.exc.HTTPConflict: ["},{"line_number":340,"context_line":"            exception.BackupNotCompleteError,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_f1cf227d","line":337,"in_reply_to":"AAAAXH%2F%2FT44%3D","updated":"2014-05-07 06:42:12.000000000","message":"+1","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"}],"trove/extensions/mysql/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1182b62ea9331bd76d78c051cf6aedd05e310497","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self.character_set \u003d character_set"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    @classmethod"},{"line_number":288,"context_line":"    def checkSchemaExists(cls, context, instance_id, schema):"},{"line_number":289,"context_line":"        \"\"\"To check if a schema already exists or not"},{"line_number":290,"context_line":"            Returns True if exists else return False"},{"line_number":291,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2F8d8%3D","line":288,"updated":"2014-04-09 10:23:44.000000000","message":"camal case is not pythonic, please use the underscore","commit_id":"9f5a0cbc392db4caf4155f5ba48f434dcd443145"}],"trove/extensions/mysql/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cca81c5eddbb11ef98d1350c730971670e36bc22","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        if not user:"},{"line_number":244,"context_line":"            LOG.error(_(\"No such user: %(user)s \") % {\u0027user\u0027: user})"},{"line_number":245,"context_line":"            raise exception.UserNotFound(uuid\u003duser)"},{"line_number":246,"context_line":"        #Check if given Schema exists or not"},{"line_number":247,"context_line":"        if not models.Schema.check_schema_exists(context, instance_id, id):"},{"line_number":248,"context_line":"            raise exception.DatabaseNotFound(uuid\u003did)"},{"line_number":249,"context_line":"        username, hostname \u003d unquote_user_host(user_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F0b4%3D","line":246,"updated":"2014-04-10 07:57:50.000000000","message":"# Checks if given Schema exists or not","commit_id":"48af8425a1724fd8b0b3416cbb226e34d39b6509"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"5b42a78c474e7a2fa32438f725cf909ec018c46b","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        access \u003d models.User.access(context, instance_id, username, hostname)"},{"line_number":248,"context_line":"        databases \u003d [db.name for db in access.databases]"},{"line_number":249,"context_line":"        if id not in databases:"},{"line_number":250,"context_line":"            raise exception.UserAccessRightsNotFound(uuid\u003did)"},{"line_number":251,"context_line":"        models.User.revoke(context, instance_id, username, hostname, id)"},{"line_number":252,"context_line":"        return wsgi.Result(None, 202)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FT2w%3D","line":250,"updated":"2014-04-22 15:32:56.000000000","message":"what about an exception ... UserAccessRightsOrDatabaseNotFound","commit_id":"e2ea2519a5400a55104e0fa19f04b3ca994ab1bd"}],"trove/tests/api/user_access.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1182b62ea9331bd76d78c051cf6aedd05e310497","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.dbaas \u003d util.create_dbaas_client(instance_info.user)"},{"line_number":46,"context_line":"        self.users \u003d [\"test_access_user\"]"},{"line_number":47,"context_line":"        self.databases \u003d [(\"test_access_db%02i\" % i) for i in range(4)]"},{"line_number":48,"context_line":"        \u0027\u0027\u0027New code expects that before revoking access validate if DB"},{"line_number":49,"context_line":"        exist , so below addition is needed for test case to pass as per"},{"line_number":50,"context_line":"        modified code"},{"line_number":51,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2F8dE%3D","line":48,"updated":"2014-04-09 10:23:44.000000000","message":"doc string should be placed after function declaration and before code starts","commit_id":"9f5a0cbc392db4caf4155f5ba48f434dcd443145"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cca81c5eddbb11ef98d1350c730971670e36bc22","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.dbaas \u003d util.create_dbaas_client(instance_info.user)"},{"line_number":46,"context_line":"        self.users \u003d [\"test_access_user\"]"},{"line_number":47,"context_line":"        self.databases \u003d [(\"test_access_db%02i\" % i) for i in range(4)]"},{"line_number":48,"context_line":"        #Modified code expects that before revoking access validate if DB"},{"line_number":49,"context_line":"        #exist , so below addition is needed for test case to pass as per"},{"line_number":50,"context_line":"        #modified code."},{"line_number":51,"context_line":"        self.databases.append(\"test_user_access_ghost_db\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F0bI%3D","line":48,"updated":"2014-04-10 07:57:50.000000000","message":"sounds wrong,\nshould be something like:\n\n# Validation is being performed before revoking the access.\n\nAnd, do tests really needs to be commented here?","commit_id":"48af8425a1724fd8b0b3416cbb226e34d39b6509"}]}
