)]}'
{"functional/common/test.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                self.assertIn(key, field_names)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def assert_show_structure(self, items, field_names):"},{"line_number":93,"context_line":"        if isinstance(items, list):"},{"line_number":94,"context_line":"            o \u003d {}"},{"line_number":95,"context_line":"            for d in items:"},{"line_number":96,"context_line":"                o.update(d)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_b5952f41","line":93,"updated":"2015-07-07 03:33:23.000000000","message":"this method could use a docstring","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                self.assertIn(key, field_names)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def assert_show_structure(self, items, field_names):"},{"line_number":93,"context_line":"        if isinstance(items, list):"},{"line_number":94,"context_line":"            o \u003d {}"},{"line_number":95,"context_line":"            for d in items:"},{"line_number":96,"context_line":"                o.update(d)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_50a5ca44","line":93,"in_reply_to":"ba3cc151_b5952f41","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for field in field_names:"},{"line_number":101,"context_line":"            self.assertIn(field, item_keys)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def parse_show_as_object(self, raw_output):"},{"line_number":104,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":105,"context_line":"        o \u003d {}"},{"line_number":106,"context_line":"        for item in items:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d590f350","line":103,"updated":"2015-07-07 03:33:23.000000000","message":"this method could use a docstring","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for field in field_names:"},{"line_number":101,"context_line":"            self.assertIn(field, item_keys)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def parse_show_as_object(self, raw_output):"},{"line_number":104,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":105,"context_line":"        o \u003d {}"},{"line_number":106,"context_line":"        for item in items:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_f062de15","line":103,"in_reply_to":"ba3cc151_d590f350","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}],"functional/tests/identity/v3/test_catalog.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def test_catalog_show(self):"},{"line_number":24,"context_line":"        raw_output \u003d self.openstack(\u0027catalog show %s\u0027 % \u0027identity\u0027)"},{"line_number":25,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":26,"context_line":"        self.assert_show_fields(items, [\u0027endpoints\u0027, \u0027name\u0027, \u0027type\u0027, \u0027\u0027, \u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_358fdf24","line":26,"updated":"2015-07-07 03:33:23.000000000","message":"could use a comment here saying why \u0027\u0027 is here","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def test_catalog_show(self):"},{"line_number":24,"context_line":"        raw_output \u003d self.openstack(\u0027catalog show %s\u0027 % \u0027identity\u0027)"},{"line_number":25,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":26,"context_line":"        self.assert_show_fields(items, [\u0027endpoints\u0027, \u0027name\u0027, \u0027type\u0027, \u0027\u0027, \u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d06f9afa","line":26,"in_reply_to":"ba3cc151_358fdf24","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}],"functional/tests/identity/v3/test_domain.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.common import exceptions"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":17,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_35b6ffdc","line":16,"updated":"2015-07-07 03:33:23.000000000","message":"we generally like to only import the module, so it\u0027ll look like:\n\nfrom functional.tests.identity.v3 import test_identity","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.common import exceptions"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":17,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_907272e2","line":16,"in_reply_to":"ba3cc151_35b6ffdc","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class DomainTests(IdentityTests):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_domain_create(self):"},{"line_number":23,"context_line":"        domain_id \u003d data_utils.rand_name(\u0027TestDomain\u0027)"},{"line_number":24,"context_line":"        raw_output \u003d self.openstack(\u0027domain create \u0027 + domain_id)"},{"line_number":25,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":26,"context_line":"        self.assert_show_fields(items, self.DOMAIN_FIELDS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_95726b10","line":23,"updated":"2015-07-07 03:33:23.000000000","message":"domain_name (not domain_id)","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class DomainTests(IdentityTests):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_domain_create(self):"},{"line_number":23,"context_line":"        domain_id \u003d data_utils.rand_name(\u0027TestDomain\u0027)"},{"line_number":24,"context_line":"        raw_output \u003d self.openstack(\u0027domain create \u0027 + domain_id)"},{"line_number":25,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":26,"context_line":"        self.assert_show_fields(items, self.DOMAIN_FIELDS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_104d0299","line":23,"in_reply_to":"ba3cc151_95726b10","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}],"functional/tests/identity/v3/test_group.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class GroupTests(IdentityTests):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_3874b69a","line":16,"updated":"2015-07-07 03:33:23.000000000","message":"import only modules","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class GroupTests(IdentityTests):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_705ece46","line":16,"in_reply_to":"ba3cc151_3874b69a","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}],"functional/tests/identity/v3/test_identity.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027%(name)s\u0027 % {\u0027domain\u0027: self.domain_name,"},{"line_number":89,"context_line":"                          \u0027name\u0027: username})"},{"line_number":90,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":91,"context_line":"        self.assert_show_fields(items, [\u0027id\u0027,"},{"line_number":92,"context_line":"                                        \u0027name\u0027,"},{"line_number":93,"context_line":"                                        \u0027domain_id\u0027,"},{"line_number":94,"context_line":"                                        \u0027enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_75580757","line":91,"updated":"2015-07-07 03:33:23.000000000","message":"use USER_FIELDS here","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":13744,"name":"Guojian Shao","email":"tjusgj@gmail.com","username":"gjshao"},"change_message_id":"18c04dd546a71b1747a777f06a029ab744a1c74e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027%(name)s\u0027 % {\u0027domain\u0027: self.domain_name,"},{"line_number":89,"context_line":"                          \u0027name\u0027: username})"},{"line_number":90,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":91,"context_line":"        self.assert_show_fields(items, [\u0027id\u0027,"},{"line_number":92,"context_line":"                                        \u0027name\u0027,"},{"line_number":93,"context_line":"                                        \u0027domain_id\u0027,"},{"line_number":94,"context_line":"                                        \u0027enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_50538a39","line":91,"in_reply_to":"ba3cc151_75580757","updated":"2015-07-07 08:05:00.000000000","message":"Done","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"72a55c884e398161d782537965e0b547c5103fdc","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                \u0027user delete %s\u0027 % self.parse_show_as_object(raw_output)[\u0027id\u0027])"},{"line_number":104,"context_line":"        return username"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def _create_dummy_role(self, add_clean_up\u003dTrue):"},{"line_number":107,"context_line":"        role_name \u003d data_utils.rand_name(\u0027TestRole\u0027)"},{"line_number":108,"context_line":"        raw_output \u003d self.openstack(\u0027role create %s\u0027 % role_name)"},{"line_number":109,"context_line":"        items \u003d self.parse_show(raw_output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a68ba41d","line":106,"updated":"2015-07-07 17:05:34.000000000","message":"nice addition to all of these!","commit_id":"aa3b3c1f0f39e05c242ddfc840774d2d23f91b46"}],"functional/tests/identity/v3/test_role.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_38ffd602","line":15,"updated":"2015-07-07 03:33:23.000000000","message":"import  modules only","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.addCleanup(self.openstack, \u0027role delete %s\u0027 % role_name)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_role_delete(self):"},{"line_number":29,"context_line":"        role_name \u003d data_utils.rand_name(\u0027TestRole\u0027)"},{"line_number":30,"context_line":"        raw_output \u003d self.openstack(\u0027role create %s\u0027 % role_name)"},{"line_number":31,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":32,"context_line":"        self.assert_show_fields(items, self.ROLE_FIELDS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d507931b","line":29,"updated":"2015-07-07 03:33:23.000000000","message":"call _create_dummy_role() instead of repeating line 21-26?","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                          \u0027user_domain\u0027: self.domain_name,"},{"line_number":54,"context_line":"                          \u0027role\u0027: role_name})"},{"line_number":55,"context_line":"        self.assertEqual(0, len(raw_output))"},{"line_number":56,"context_line":"        self.addCleanup("},{"line_number":57,"context_line":"            self.openstack,"},{"line_number":58,"context_line":"            \u0027role remove \u0027"},{"line_number":59,"context_line":"            \u0027--project %(project)s --project-domain %(project_domain)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_3826f6ba","line":56,"updated":"2015-07-07 03:33:23.000000000","message":"move this to after the list","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}],"functional/tests/identity/v3/test_user.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from functional.tests.identity.v3.test_identity import BASIC_LIST_HEADERS"},{"line_number":16,"context_line":"from functional.tests.identity.v3.test_identity import IdentityTests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d83caac1","line":15,"updated":"2015-07-07 03:33:23.000000000","message":"import only the modules","commit_id":"971aebde209a428718c89b67bcfb00597294c057"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"86a18baa7d9d6838aa3c5f269fdf27a9f682a9b5","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class UserTests(IdentityTests):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    USER_FIELDS \u003d [\u0027email\u0027, \u0027enabled\u0027, \u0027id\u0027, \u0027name\u0027, \u0027project_id\u0027,"},{"line_number":22,"context_line":"                   \u0027name\u0027, \u0027domain_id\u0027, \u0027default_project_id\u0027, \u0027description\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def _create_dummy_user(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_185a122b","line":21,"updated":"2015-07-07 03:33:23.000000000","message":"update this in IdentityTests","commit_id":"971aebde209a428718c89b67bcfb00597294c057"}]}
