)]}'
{".mailmap":[{"author":{"_account_id":70,"name":"Joshua McKenty","email":"joshua@pistoncloud.com","username":"joshua-mckenty"},"change_message_id":"4a2243999a31325df9a954444a606d13f5bb5578","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u003cmordred@inaugust.com\u003e \u003cmordred@hudson\u003e"},{"line_number":43,"context_line":"\u003cnaveedm9@gmail.com\u003e \u003cnaveed.massjouni@rackspace.com\u003e"},{"line_number":44,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.com\u003e"},{"line_number":45,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.coom\u003e"},{"line_number":46,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul.voccio@rackspace.com\u003e"},{"line_number":47,"context_line":"\u003cpaul@openstack.org\u003e \u003cpvoccio@castor.local\u003e"},{"line_number":48,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul@substation9.com\u003e"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAEn%2F%2F%2Fok%3D","line":45,"updated":"2012-02-02 21:09:15.000000000","message":"This looks unneeded.","commit_id":"8171c67ff3ad52ca646c3f1ec74dffda7f01faa1"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"86a606dbda6e35421a6e508e594cbea56f553021","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u003cmordred@inaugust.com\u003e \u003cmordred@hudson\u003e"},{"line_number":43,"context_line":"\u003cnaveedm9@gmail.com\u003e \u003cnaveed.massjouni@rackspace.com\u003e"},{"line_number":44,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.com\u003e"},{"line_number":45,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.coom\u003e"},{"line_number":46,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul.voccio@rackspace.com\u003e"},{"line_number":47,"context_line":"\u003cpaul@openstack.org\u003e \u003cpvoccio@castor.local\u003e"},{"line_number":48,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul@substation9.com\u003e"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAEn%2F%2F%2Fms%3D","line":45,"in_reply_to":"AAAAEn%2F%2F%2Fok%3D","updated":"2012-02-02 21:36:35.000000000","message":"yeah I tried getting rid of it and the Authors test keeps complaining that is required. One of my early on commits had that typo in it and now I can\u0027t get rid of it.","commit_id":"8171c67ff3ad52ca646c3f1ec74dffda7f01faa1"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0b5c14dc3f772fafce6408e3e92eb8b8fd9b43c1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u003cmordred@inaugust.com\u003e \u003cmordred@hudson\u003e"},{"line_number":43,"context_line":"\u003cnaveedm9@gmail.com\u003e \u003cnaveed.massjouni@rackspace.com\u003e"},{"line_number":44,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.com\u003e"},{"line_number":45,"context_line":"\u003crnirmal@gmail.com\u003e \u003cnirmal.ranganathan@rackspace.coom\u003e"},{"line_number":46,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul.voccio@rackspace.com\u003e"},{"line_number":47,"context_line":"\u003cpaul@openstack.org\u003e \u003cpvoccio@castor.local\u003e"},{"line_number":48,"context_line":"\u003cpaul@openstack.org\u003e \u003cpaul@substation9.com\u003e"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAEn%2F%2F%2FlU%3D","line":45,"updated":"2012-02-02 21:30:47.000000000","message":"You only need one of these lines","commit_id":"b064a3afc1d596dd050d82780b80326773d552dd"}],"nova/api/openstack/compute/contrib/keypairs.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"0b5c14dc3f772fafce6408e3e92eb8b8fd9b43c1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # NOTE(ja): generation is slow, so shortcut invalid name exception"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            db.key_pair_get(context, context.user_id, name)"},{"line_number":90,"context_line":"            msg \u003d _(\"Key pair \u0027%s\u0027 already exists.\" % name)"},{"line_number":91,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":92,"context_line":"        except exception.NotFound:"},{"line_number":93,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F%2FlM%3D","line":90,"updated":"2012-02-02 21:30:47.000000000","message":"the \u0027 % name\u0027 should be outside of the _(\"...\")","commit_id":"b064a3afc1d596dd050d82780b80326773d552dd"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"bd1c43f13079b65bf70009d1d40eb4ca25297f51","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        # NOTE(ja): generation is slow, so shortcut invalid name exception"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            db.key_pair_get(context, context.user_id, name)"},{"line_number":90,"context_line":"            msg \u003d _(\"Key pair \u0027%s\u0027 already exists.\" % name)"},{"line_number":91,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":92,"context_line":"        except exception.NotFound:"},{"line_number":93,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F%2Fjw%3D","line":90,"in_reply_to":"AAAAEn%2F%2F%2FlM%3D","updated":"2012-02-02 21:36:02.000000000","message":"Done","commit_id":"b064a3afc1d596dd050d82780b80326773d552dd"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"bd1c43f13079b65bf70009d1d40eb4ca25297f51","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            db.key_pair_get(context, context.user_id, name)"},{"line_number":90,"context_line":"            msg \u003d _(\"Key pair \u0027%s\u0027 already exists.\" % name)"},{"line_number":91,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":92,"context_line":"        except exception.NotFound:"},{"line_number":93,"context_line":"            pass"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F%2FlQ%3D","line":91,"updated":"2012-02-02 21:36:02.000000000","message":"updated response to 409 instead of 400","commit_id":"b064a3afc1d596dd050d82780b80326773d552dd"}],"nova/tests/api/openstack/compute/contrib/test_keypairs.py":[{"author":{"_account_id":70,"name":"Joshua McKenty","email":"joshua@pistoncloud.com","username":"joshua-mckenty"},"change_message_id":"4a2243999a31325df9a954444a606d13f5bb5578","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        req.body \u003d json.dumps(body)"},{"line_number":143,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":144,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":145,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_keypair_import_bad_key(self):"},{"line_number":148,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F%2Fn0%3D","line":145,"updated":"2012-02-02 21:09:15.000000000","message":"Duplicate keypair should be a 409, not a plain 400.","commit_id":"8171c67ff3ad52ca646c3f1ec74dffda7f01faa1"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"1cc74c68afba74a6b09baabe64d1df37b5c683a6","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        req.body \u003d json.dumps(body)"},{"line_number":143,"context_line":"        req.headers[\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":144,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":145,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_keypair_import_bad_key(self):"},{"line_number":148,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F%2Fic%3D","line":145,"in_reply_to":"AAAAEn%2F%2F%2Fn0%3D","updated":"2012-02-02 21:52:07.000000000","message":"Done","commit_id":"8171c67ff3ad52ca646c3f1ec74dffda7f01faa1"}]}
