)]}'
{"tempest/openstack.py":[{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"83081a9bc5c00ffb52a7e49c16de2b42202b8795","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class ServiceManager(object):"},{"line_number":70,"context_line":"    "},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    Top-level object housing clients for OpenStack APIs"},{"line_number":73,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2FsU%3D","line":70,"updated":"2012-01-09 21:21:06.000000000","message":"Whitespace that needs to go away.","commit_id":"a59fb89d43e6fb72afd26916db670141fa3c904a"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"eb7fe9e4e3145380acdd60439520e88d9253c446","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class ServiceManager(object):"},{"line_number":70,"context_line":" "},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    Top-level object housing clients for OpenStack APIs"},{"line_number":73,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F%2B%2BM%3D","line":70,"updated":"2012-01-11 17:06:58.000000000","message":"Evil spaces....","commit_id":"541b79d3951f7aff5e58891198357627f6b50eb4"}],"tempest/services/images/service.py":[{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"83081a9bc5c00ffb52a7e49c16de2b42202b8795","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        :param config: `tempest.config.Config` object"},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        self.config \u003d config"},{"line_number":35,"context_line":"        "},{"line_number":36,"context_line":"        # Determine the Images API version"},{"line_number":37,"context_line":"        self.api_version \u003d int(config.images.api_version)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2FsQ%3D","line":35,"updated":"2012-01-09 21:21:06.000000000","message":"whitespace that needs to go","commit_id":"a59fb89d43e6fb72afd26916db670141fa3c904a"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"eb7fe9e4e3145380acdd60439520e88d9253c446","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        :param config: `tempest.config.Config` object"},{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        self.config \u003d config"},{"line_number":35,"context_line":" "},{"line_number":36,"context_line":"        # Determine the Images API version"},{"line_number":37,"context_line":"        self.api_version \u003d int(config.images.api_version)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F%2B%2BQ%3D","line":35,"updated":"2012-01-11 17:06:58.000000000","message":"Ack! Still one more space.","commit_id":"541b79d3951f7aff5e58891198357627f6b50eb4"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"864bcd22d4065fd93804bad29ed268e1267924e4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        Returns a client object that may be used to query"},{"line_number":59,"context_line":"        the service API."},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        assert self._client"},{"line_number":62,"context_line":"        return self._client"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F91w%3D","line":61,"updated":"2012-01-16 18:26:17.000000000","message":"Can you explain why this assert is necessary?","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f00aefcd10636b8c24fc8eae86415bacecd6a6d2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        Returns a client object that may be used to query"},{"line_number":59,"context_line":"        the service API."},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        assert self._client"},{"line_number":62,"context_line":"        return self._client"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F91k%3D","line":61,"in_reply_to":"AAAAD3%2F%2F91w%3D","updated":"2012-01-16 18:45:33.000000000","message":"Ah, it\u0027s just a check to ensure that the client has been set up in the constructor, nothing more...","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"}],"tempest/tests/images/test_images.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"864bcd22d4065fd93804bad29ed268e1267924e4","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import cStringIO as StringIO"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import unittest2 as unittest"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nose.plugins.attrib import attr"},{"line_number":23,"context_line":"from nose.plugins.skip import SkipTest"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F910%3D","line":20,"updated":"2012-01-16 18:26:17.000000000","message":"unittest2 is a third party lib, not sure if that matters :)","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f00aefcd10636b8c24fc8eae86415bacecd6a6d2","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import cStringIO as StringIO"},{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":"import unittest2 as unittest"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nose.plugins.attrib import attr"},{"line_number":23,"context_line":"from nose.plugins.skip import SkipTest"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F91g%3D","line":20,"in_reply_to":"AAAAD3%2F%2F910%3D","updated":"2012-01-16 18:45:33.000000000","message":"Done","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"864bcd22d4065fd93804bad29ed268e1267924e4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        for image_id in cls.created_images:"},{"line_number":52,"context_line":"            cls.client.delete_image(image_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @attr(type\u003d\u0027images\u0027)"},{"line_number":55,"context_line":"    def test_register_with_invalid_data(self):"},{"line_number":56,"context_line":"        \"\"\"Negative tests for invalid data supplied to POST /images\"\"\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F92I%3D","line":54,"updated":"2012-01-16 18:26:17.000000000","message":"Should the type be \u0027image\u0027? I\u0027m just not sure what scheme we\u0027re going for here... \u0027images\u0027 would make sense with \u0027servers\u0027, but not with \u0027compute\u0027","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f00aefcd10636b8c24fc8eae86415bacecd6a6d2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        for image_id in cls.created_images:"},{"line_number":52,"context_line":"            cls.client.delete_image(image_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @attr(type\u003d\u0027images\u0027)"},{"line_number":55,"context_line":"    def test_register_with_invalid_data(self):"},{"line_number":56,"context_line":"        \"\"\"Negative tests for invalid data supplied to POST /images\"\"\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F91c%3D","line":54,"in_reply_to":"AAAAD3%2F%2F92I%3D","updated":"2012-01-16 18:45:33.000000000","message":"Done","commit_id":"f796c4ac17b2d01fc616a2fa18b46742005d69fd"}],"tempest/tests/test_list_images.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"c23d93158a5073181d39ae9a4c990bb115b785d1","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def test_get_nonexistant_image(self):"},{"line_number":229,"context_line":"        \"\"\"Negative test: GET on non existant image should fail\"\"\""},{"line_number":230,"context_line":"        try:"},{"line_number":231,"context_line":"            resp, image \u003d self.client.get_image(999)"},{"line_number":232,"context_line":"        except:"},{"line_number":233,"context_line":"            pass"},{"line_number":234,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F90I%3D","line":231,"updated":"2012-01-16 18:49:06.000000000","message":"You should be using uuids for image ids. In this case it isn\u0027t clear if we are failing on a malformed image id or on a nonexistent image. Also, could you catch a more specific exception so it\u0027s obvious what the expected outcome is?","commit_id":"d5b021af387e9895d2c33ca574d74a44593e4351"}]}
