)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17753,"name":"Piyush Pathak","email":"cyperxprt@gmail.com","username":"piyush110786"},"change_message_id":"2ca5b187cecd5955ddb04513aead0cb6379ac1ca","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Wei Liu \u003cwei.liu@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-16 17:40:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add 3 negative test cases for dientity v3 role"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"create role with empty name"},{"line_number":10,"context_line":"create duplicate role"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a710552_fcf84c4b","line":7,"updated":"2015-12-16 11:25:53.000000000","message":"I think its typo is should be identity","commit_id":"085afcff08f7bb36158245cc48f780a7232a8d39"}],"tempest/api/identity/admin/v3/test_roles_negative.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"af6df3c2d2bd7c62179321dfe92054138e2f084e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":26,"context_line":"    @test.idempotent_id(\u0027b835f5c7-7703-4456-8031-66da3eb46791\u0027)"},{"line_number":27,"context_line":"    def test_create_role_with_empty_name(self):"},{"line_number":28,"context_line":"        # Should not be able to create a role with a empty name"},{"line_number":29,"context_line":"        self.assertRaises(lib_exc.BadRequest, self.client.create_role, \u0027\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_cd028909","line":28,"updated":"2015-12-10 19:34:20.000000000","message":"with an empty name","commit_id":"b38dc7d396da6ca239297f202ac73a799401af94"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"af6df3c2d2bd7c62179321dfe92054138e2f084e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_duplicate_role(self):"},{"line_number":34,"context_line":"        role_name \u003d data_utils.rand_name(\u0027role-dup\u0027)"},{"line_number":35,"context_line":"        role \u003d self.client.create_role(role_name)[\u0027role\u0027]"},{"line_number":36,"context_line":"        role_id \u003d role[\u0027id\u0027]"},{"line_number":37,"context_line":"        self.addCleanup(self.client.delete_role, role_id)"},{"line_number":38,"context_line":"        # Role name should be unique"},{"line_number":39,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_6d20359c","line":36,"updated":"2015-12-10 19:34:20.000000000","message":"I think it is redundant. Just use role[\u0027id\u0027].\n\n    ...\n    self.addCleanup(self.client.delete_role, role[\u0027id\u0027])\n    ...","commit_id":"b38dc7d396da6ca239297f202ac73a799401af94"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ab305b6612f7315e89069c619c07ffba5d6bf570","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.api.identity import base"},{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest_lib.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_333d60dd","line":16,"updated":"2015-12-12 13:20:03.000000000","message":"Wrong import order. It should be\n\n    from tempest_lib.common.utils import data_utils\n    from tempest_lib import exceptions as lib_exc\n\n    from tempest.api.identity import base\n    from tempest import test","commit_id":"6c1a600522023b46956ff203b68b1b7755c87dfb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ab305b6612f7315e89069c619c07ffba5d6bf570","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    @test.idempotent_id(\u0027b835f5c7-7703-4456-8031-66da3eb46791\u0027)"},{"line_number":27,"context_line":"    def test_create_role_with_empty_name(self):"},{"line_number":28,"context_line":"        # Should not be able to create a role with an empty name"},{"line_number":29,"context_line":"        self.assertRaises(lib_exc.BadRequest, self.client.create_role, \u0027\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":32,"context_line":"    @test.idempotent_id(\u0027f8d7f62a-14de-488e-a8ef-03bc69ecd8df\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_731e8871","line":29,"updated":"2015-12-12 13:20:03.000000000","message":"Could you please use here `name\u003d\u0027\u0027` instead of \u0027\u0027?\n\n    self.assertRaises(lib_exc.BadRequest, self.client.create_role, name\u003d\u0027\u0027)","commit_id":"6c1a600522023b46956ff203b68b1b7755c87dfb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ab305b6612f7315e89069c619c07ffba5d6bf570","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.addCleanup(self.client.delete_role, role[\u0027id\u0027])"},{"line_number":37,"context_line":"        # Role name should be unique"},{"line_number":38,"context_line":"        self.assertRaises("},{"line_number":39,"context_line":"            lib_exc.Conflict, self.client.create_role, role_name)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":42,"context_line":"    @test.idempotent_id(\u0027b69906f2-8af1-4c4c-a29f-3a30e7630855\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_f30a7825","line":39,"updated":"2015-12-12 13:20:03.000000000","message":"ditto\n\n    self.assertRaises(\n        lib_exc.Conflict, self.client.create_role, name\u003drole_name)","commit_id":"6c1a600522023b46956ff203b68b1b7755c87dfb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ab305b6612f7315e89069c619c07ffba5d6bf570","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_create_role_with_name_length_over_limit(self):"},{"line_number":44,"context_line":"        # Role name length should not ne greater than 255 characters"},{"line_number":45,"context_line":"        role_name \u003d \u0027a\u0027 * 256"},{"line_number":46,"context_line":"        self.assertRaises(lib_exc.BadRequest, self.client.create_role,"},{"line_number":47,"context_line":"                          role_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_9303f40f","line":46,"updated":"2015-12-12 13:20:03.000000000","message":"ditto\n\n    self.assertRaises(\n        lib_exc.BadRequest, self.client.create_role, name\u003drole_name)","commit_id":"6c1a600522023b46956ff203b68b1b7755c87dfb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f68bee90acb85cc4364a7b2de18aa758a9bbc802","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest_lib import exceptions as lib_exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_a55d04eb","line":16,"updated":"2015-12-15 12:55:21.000000000","message":"Could you please use \n\n    from tempest.common.utils import data_utils\n\ninstead of\n    \n    from tempest_lib.common.utils import data_utils","commit_id":"a599dab46c413633aaac6caeb1959be7da2d6b34"},{"author":{"_account_id":19112,"name":"Wei Liu","email":"wei.liu@easystack.cn","username":"liuwei5018"},"change_message_id":"fdeea1b50d4cf534bfcdfe085986e8e95e3b9e4e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest_lib import exceptions as lib_exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_a6b64188","line":16,"in_reply_to":"5a710552_a55d04eb","updated":"2015-12-16 05:08:31.000000000","message":"Why change to tempest.common, I notice some tasks which moving common and clients to tempest_lib, so I used tempest_lib.","commit_id":"a599dab46c413633aaac6caeb1959be7da2d6b34"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f05aafe6a17617de174cc03b0550ec341e8d73cc","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest_lib import exceptions as lib_exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_e3999220","line":16,"in_reply_to":"5a710552_a6b64188","updated":"2015-12-16 08:42:34.000000000","message":"Using tempest.common.utils.data_utils allows us to add a prefix that helps us identify the resource created by Tempest. Though these tests don\u0027t create any resources and probably it is OK to use tempest_lib.common.utils.data_utils, but other Tempest tests use  tempest.common.utils.data_utils. So you can leave it as it is and resubmit the patch if someone else request it.","commit_id":"a599dab46c413633aaac6caeb1959be7da2d6b34"},{"author":{"_account_id":19112,"name":"Wei Liu","email":"wei.liu@easystack.cn","username":"liuwei5018"},"change_message_id":"a2e7f921261d5f73ecfd2e23377fa992439b19ca","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest_lib import exceptions as lib_exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_d5fd2b3b","line":16,"in_reply_to":"5a710552_e3999220","updated":"2015-12-16 09:50:42.000000000","message":"Thanks，it is clear now. will upload another patch.","commit_id":"a599dab46c413633aaac6caeb1959be7da2d6b34"},{"author":{"_account_id":17753,"name":"Piyush Pathak","email":"cyperxprt@gmail.com","username":"piyush110786"},"change_message_id":"2ca5b187cecd5955ddb04513aead0cb6379ac1ca","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @test.idempotent_id(\u0027f8d7f62a-14de-488e-a8ef-03bc69ecd8df\u0027)"},{"line_number":33,"context_line":"    def test_create_duplicate_role(self):"},{"line_number":34,"context_line":"        role_name \u003d data_utils.rand_name(\u0027role-dup\u0027)"},{"line_number":35,"context_line":"        role \u003d self.client.create_role(role_name)[\u0027role\u0027]"},{"line_number":36,"context_line":"        self.addCleanup(self.client.delete_role, role[\u0027id\u0027])"},{"line_number":37,"context_line":"        # Role name should be unique"},{"line_number":38,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_974b2387","line":35,"updated":"2015-12-16 11:25:53.000000000","message":"it should be role \u003d self.client.create_role(name\u003drole_name)[\u0027role\u0027]","commit_id":"085afcff08f7bb36158245cc48f780a7232a8d39"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"71d15d7bb2d2dc1c98a10dd625c971b05f4fe780","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":42,"context_line":"    @test.idempotent_id(\u0027b69906f2-8af1-4c4c-a29f-3a30e7630855\u0027)"},{"line_number":43,"context_line":"    def test_create_role_with_name_length_over_limit(self):"},{"line_number":44,"context_line":"        # Role name length should not ne greater than 255 characters"},{"line_number":45,"context_line":"        role_name \u003d \u0027a\u0027 * 256"},{"line_number":46,"context_line":"        self.assertRaises(lib_exc.BadRequest, self.client.create_role,"},{"line_number":47,"context_line":"                          name\u003drole_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_74e91a1a","line":44,"range":{"start_line":44,"start_character":38,"end_line":44,"end_character":40},"updated":"2016-01-12 13:50:27.000000000","message":"Nit: ne -\u003e be","commit_id":"1ab9c9ec8e9f88473a2e58655d8d7df48a379ba7"}]}
