)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a0ee56dd685a725fdabde26c5dd8cc22ef64698c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     huangtianhua \u003ctiantian223@163.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-08 10:51:02 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add some negative tests for tenant updating and add the negative tags"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- test_update_non_existent_tenant"},{"line_number":10,"context_line":"- test_tenant_update_by_unauthorized_user"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATH%2F%2F6qQ%3D","line":7,"updated":"2013-10-08 04:03:10.000000000","message":"Current title is 69 characters.\nGit commit messages should start with a short 50 character or less summary in a single paragraph. \n\nPlease see https://wiki.openstack.org/wiki/Gerrit_Workflow#Committing_Changes","commit_id":"601adb05e05b7fde79d8961fa7018af4d253ddfa"}],"tempest/api/identity/admin/test_tenant_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":20,"context_line":"from tempest import exceptions"},{"line_number":21,"context_line":"from tempest.test import attr"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1FQ%3D","line":19,"updated":"2013-10-09 09:42:07.000000000","message":"After the review of https://review.openstack.org/#/c/46886/9/tempest/api/compute/floating_ips/test_floating_ips_actions.py , we are trying to change\n\n  from tempest.common.utils.data_utils import rand_name\n\nto\n\n  from tempest.common.utils import data_utils\n\nCould you also apply it in this patch?","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def test_tenant_delete_by_unauthorized_user(self):"},{"line_number":43,"context_line":"        # Non-administrator user should not be able to delete a tenant"},{"line_number":44,"context_line":"        tenant_name \u003d rand_name(\u0027tenant-\u0027)"},{"line_number":45,"context_line":"        resp, tenant \u003d self.client.create_tenant(tenant_name)"},{"line_number":46,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":47,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":48,"context_line":"                          self.non_admin_client.delete_tenant, tenant[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1Dg%3D","line":45,"updated":"2013-10-09 09:42:07.000000000","message":"\"self.assertEqual(200, resp.status)\" of here can find a problem faster.","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_tenant_delete_request_without_token(self):"},{"line_number":52,"context_line":"        # Request to delete a tenant without a valid token should fail"},{"line_number":53,"context_line":"        tenant_name \u003d rand_name(\u0027tenant-\u0027)"},{"line_number":54,"context_line":"        resp, tenant \u003d self.client.create_tenant(tenant_name)"},{"line_number":55,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":56,"context_line":"        token \u003d self.client.get_auth()"},{"line_number":57,"context_line":"        self.client.delete_token(token)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1Dc%3D","line":54,"updated":"2013-10-09 09:42:07.000000000","message":"ditto","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def test_tenant_create_duplicate(self):"},{"line_number":70,"context_line":"        # Tenant names should be unique"},{"line_number":71,"context_line":"        tenant_name \u003d rand_name(\u0027tenant-dup-\u0027)"},{"line_number":72,"context_line":"        resp, body \u003d self.client.create_tenant(tenant_name)"},{"line_number":73,"context_line":"        tenant \u003d body"},{"line_number":74,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":75,"context_line":"        tenant1_id \u003d body.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1Cw%3D","line":72,"updated":"2013-10-09 09:42:07.000000000","message":"ditto","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def test_tenant_update_by_unauthorized_user(self):"},{"line_number":120,"context_line":"        # Non-administrator user should not be able to update a tenant"},{"line_number":121,"context_line":"        tenant_name \u003d rand_name(\u0027tenant-\u0027)"},{"line_number":122,"context_line":"        resp, tenant \u003d self.client.create_tenant(tenant_name)"},{"line_number":123,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":124,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":125,"context_line":"                          self.non_admin_client.update_tenant, tenant[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1Cs%3D","line":122,"updated":"2013-10-09 09:42:07.000000000","message":"ditto","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d5f0bcc6d084edfa7822556a3113de70b0ab1362","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    def test_tenant_update_request_without_token(self):"},{"line_number":129,"context_line":"        # Request to update a tenant without a valid token should fail"},{"line_number":130,"context_line":"        tenant_name \u003d rand_name(\u0027tenant-\u0027)"},{"line_number":131,"context_line":"        resp, tenant \u003d self.client.create_tenant(tenant_name)"},{"line_number":132,"context_line":"        self.data.tenants.append(tenant)"},{"line_number":133,"context_line":"        token \u003d self.client.get_auth()"},{"line_number":134,"context_line":"        self.client.delete_token(token)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F1Co%3D","line":131,"updated":"2013-10-09 09:42:07.000000000","message":"ditto","commit_id":"4174790b5d3f6956eb6f6b5cc857e15ad82a22e0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"05e07bfd7ffb657379458cf778d7b209c28019a5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F0Nw%3D","line":3,"updated":"2013-10-09 13:44:13.000000000","message":"I\u0027m not sure this line is necessary.","commit_id":"a551e7005679b6111d85c0b6b9ee593f5c599de1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"05e07bfd7ffb657379458cf778d7b209c28019a5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def test_delete_non_existent_tenant(self):"},{"line_number":66,"context_line":"        # Attempt to delete a non existent tenant should fail"},{"line_number":67,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_tenant,"},{"line_number":68,"context_line":"                          \u0027junk_tenant_123456abc\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":71,"context_line":"    def test_tenant_create_duplicate(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F0K8%3D","line":68,"updated":"2013-10-09 13:44:13.000000000","message":"At keystone side, tenant-id is generated with uuid.uuid4().hex.\n\nso how about changing here to:\n\n non_existent_tenant \u003d str(uuid.uuid4().hex)\n\nand passing non_existent_tenant to delete_tenant()?","commit_id":"a551e7005679b6111d85c0b6b9ee593f5c599de1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"05e07bfd7ffb657379458cf778d7b209c28019a5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def test_update_non_existent_tenant(self):"},{"line_number":117,"context_line":"        # Attempt to update a non existent tenant should fail"},{"line_number":118,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.update_tenant,"},{"line_number":119,"context_line":"                          \u0027hth_tenant_123456abc\u0027)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":122,"context_line":"    def test_tenant_update_by_unauthorized_user(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F0Ko%3D","line":119,"updated":"2013-10-09 13:44:13.000000000","message":"ditto","commit_id":"a551e7005679b6111d85c0b6b9ee593f5c599de1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"448de7ac8771b48d6af90012f3fbd7b4d7ae5e7e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions"},{"line_number":21,"context_line":"from tempest.test import attr"},{"line_number":22,"context_line":"import uuid"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TenantsNegativeTestJSON(base.BaseIdentityAdminTest):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATH%2F%2Fxeg%3D","line":22,"updated":"2013-10-10 02:44:07.000000000","message":"\"import uuid\" is Stdlib, and it should be imported before OpenStack lib(tempest). so here should be:\n\n import uuid\n (new line)\n from tempest.api.identity import base \n from tempest.common.utils import data_utils\n [..]\n\nPlease see Matthew\u0027s comment on https://review.openstack.org/#/c/45779/ .\nI have learn about this topic from his comment.","commit_id":"ec0a5979cffd90abb9feb40c13c888ab238610c2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"448de7ac8771b48d6af90012f3fbd7b4d7ae5e7e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def test_delete_non_existent_tenant(self):"},{"line_number":67,"context_line":"        # Attempt to delete a non existent tenant should fail"},{"line_number":68,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_tenant,"},{"line_number":69,"context_line":"                          str(uuid.uuid4()))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":72,"context_line":"    def test_tenant_create_duplicate(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATH%2F%2FxdA%3D","line":69,"updated":"2013-10-10 02:44:07.000000000","message":"nit: uuid.uuid4() generates an UUID with hyphens like \u0027c5d1f1dc-086e-4576-8b56-2ed0f2ac3961\u0027.\n\non the other hands, Keystone generates a tenant-id with uuid.uuid4().hex. The id does not contain hyphens like \u0027733ae8486edf4dbc9b9f9c37dde077ef\u0027.","commit_id":"ec0a5979cffd90abb9feb40c13c888ab238610c2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"448de7ac8771b48d6af90012f3fbd7b4d7ae5e7e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def test_update_non_existent_tenant(self):"},{"line_number":118,"context_line":"        # Attempt to update a non existent tenant should fail"},{"line_number":119,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.update_tenant,"},{"line_number":120,"context_line":"                          str(uuid.uuid4()))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":123,"context_line":"    def test_tenant_update_by_unauthorized_user(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATH%2F%2Fxc0%3D","line":120,"updated":"2013-10-10 02:44:07.000000000","message":"ditto","commit_id":"ec0a5979cffd90abb9feb40c13c888ab238610c2"}],"tempest/api/identity/admin/test_tenants.py":[{"author":{"_account_id":8625,"name":"Anju Tiwari","username":"Anju5","inactive":true},"change_message_id":"2e160e603088d79e290c6216b27b163d41f36147","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        self.client.delete_tenant(t_id)"},{"line_number":279,"context_line":"        self.data.tenants.remove(tenant)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":282,"context_line":"    def test_update_non_existent_tenant(self):"},{"line_number":283,"context_line":"        # Attempt to update a non existent tenant should fail"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FM7A%3D","line":280,"updated":"2013-10-02 13:15:08.000000000","message":"Better if you mark negative in decorator.As it is a negative test.","commit_id":"ba3438d9fbe4b176f46f8bf4d62ebaa4e7ff7f05"}]}
