)]}'
{"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"067be53c1ce64a8fb5fcd502d905ddae8b66e68c","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    def create(self, req, body):"},{"line_number":555,"context_line":"        \"\"\"Creates a new snapshot.\"\"\""},{"line_number":556,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":557,"context_line":"        authorize(context)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        snapshot \u003d body[\u0027snapshot\u0027]"},{"line_number":560,"context_line":"        volume_id \u003d snapshot[\u0027volume_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_e01038ab","line":557,"updated":"2016-04-04 09:58:36.000000000","message":"This may have triggered 403 anyways, so this doesn\u0027t need a microversion.","commit_id":"5546df0f4110628a4b706f81657bf1da475d86ff"}],"nova/tests/functional/regressions/test_bug_1554631.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"716cb3363494883a08535a0c78c4bda2f19cdc3b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        volume \u003d {\u0027display_name\u0027: \u0027vol1\u0027, \u0027size\u0027: 3}"},{"line_number":73,"context_line":"        e \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":74,"context_line":"                              self.api.post_volume, {\u0027volume\u0027: volume})"},{"line_number":75,"context_line":"        self.assertEqual(403, e.response.status_code)"},{"line_number":76,"context_line":"        # Make sure we went over on volumes"},{"line_number":77,"context_line":"        self.assertIn(\u0027volumes\u0027, e.response.content)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_3b562ece","line":75,"updated":"2016-03-23 21:27:11.000000000","message":"I was thinking maybe we should add a OpenStackApiForbiddenException we can assert on instead of having to use the generic exception and take an extra step to verify the status code","commit_id":"5546df0f4110628a4b706f81657bf1da475d86ff"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"067be53c1ce64a8fb5fcd502d905ddae8b66e68c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        volume \u003d {\u0027display_name\u0027: \u0027vol1\u0027, \u0027size\u0027: 3}"},{"line_number":73,"context_line":"        e \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":74,"context_line":"                              self.api.post_volume, {\u0027volume\u0027: volume})"},{"line_number":75,"context_line":"        self.assertEqual(403, e.response.status_code)"},{"line_number":76,"context_line":"        # Make sure we went over on volumes"},{"line_number":77,"context_line":"        self.assertIn(\u0027volumes\u0027, e.response.content)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_20519063","line":75,"in_reply_to":"fa0719c6_3b562ece","updated":"2016-04-04 09:58:36.000000000","message":"That would be a nice tidy up, maybe a follow on patch?","commit_id":"5546df0f4110628a4b706f81657bf1da475d86ff"}]}
