)]}'
{"nova/api/openstack/compute/contrib/volumes.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"733d600947881938cf5ad1ddae32a73a7b02f481","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            for bdm in bdms:"},{"line_number":511,"context_line":"                if bdm[\u0027volume_id\u0027] !\u003d volume_id:"},{"line_number":512,"context_line":"                    continue"},{"line_number":513,"context_line":"                if bdm[\u0027device_name\u0027] \u003d\u003d instance[\"root_device_name\"]:"},{"line_number":514,"context_line":"                    msg \u003d _(\"can\u0027t detach root device volume\")"},{"line_number":515,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":516,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2Fyso%3D","line":513,"updated":"2014-02-24 19:09:34.000000000","message":"this is good but once https://review.openstack.org/#/c/72341/ merges (and I suggest you base your patch on top of that) you can simply use bdm.is_root instead.","commit_id":"b2afd123aeba53ab56407e7cb59e1becc6dc0e5c"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"538ca20e95cbf19c9e7402cc880971d2daa97d8b","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            for bdm in bdms:"},{"line_number":511,"context_line":"                if bdm[\u0027volume_id\u0027] !\u003d volume_id:"},{"line_number":512,"context_line":"                    continue"},{"line_number":513,"context_line":"                if bdm[\u0027device_name\u0027] \u003d\u003d instance[\"root_device_name\"]:"},{"line_number":514,"context_line":"                    msg \u003d _(\"can\u0027t detach root device volume\")"},{"line_number":515,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":516,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAU3%2F%2FxXI%3D","line":513,"in_reply_to":"AAAAU3%2F%2Fyso%3D","updated":"2014-02-25 02:53:40.000000000","message":"Sure, I will base my patch on yours and add test case for it.\n\n\n--jyh","commit_id":"b2afd123aeba53ab56407e7cb59e1becc6dc0e5c"}],"nova/tests/api/openstack/compute/contrib/test_volumes.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d4ba8354f8f619d26513b51ee7084e0cdba5c35f","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                        \u0027volume_id\u0027: FAKE_UUID_A,"},{"line_number":393,"context_line":"                        \u0027volume_size\u0027: 1})]"},{"line_number":394,"context_line":"        self.stubs.Set(db, \u0027block_device_mapping_get_all_by_instance\u0027,"},{"line_number":395,"context_line":"                       fake_bdms_get_all_by_instance)"},{"line_number":396,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/servers/id/os-volume_attachments/uuid\u0027)"},{"line_number":397,"context_line":"        req.method \u003d \u0027DELETE\u0027"},{"line_number":398,"context_line":"        req.headers[\u0027content-type\u0027] \u003d \u0027application/json\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2F%2BfA%3D","line":395,"updated":"2014-03-12 15:44:23.000000000","message":"It\u0027s easy enough to use mock here - let\u0027s do that instead","commit_id":"f7b04f8f947754d389df7ff93aaaddf5081423f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"unresolved":false,"context_lines":[{"line_number":392,"context_line":"                        \u0027volume_id\u0027: FAKE_UUID_A,"},{"line_number":393,"context_line":"                        \u0027volume_size\u0027: 1})]"},{"line_number":394,"context_line":"        self.stubs.Set(db, \u0027block_device_mapping_get_all_by_instance\u0027,"},{"line_number":395,"context_line":"                       fake_bdms_get_all_by_instance)"},{"line_number":396,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/servers/id/os-volume_attachments/uuid\u0027)"},{"line_number":397,"context_line":"        req.method \u003d \u0027DELETE\u0027"},{"line_number":398,"context_line":"        req.headers[\u0027content-type\u0027] \u003d \u0027application/json\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2F9Y8%3D","line":395,"in_reply_to":"AAAAWH%2F%2F%2BfA%3D","updated":"2014-03-12 17:31:40.000000000","message":"Done","commit_id":"f7b04f8f947754d389df7ff93aaaddf5081423f6"}],"nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d4ba8354f8f619d26513b51ee7084e0cdba5c35f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                    {\u0027volume_id\u0027: UUID1, \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":236,"context_line":"                     \u0027destination_type\u0027: \u0027volume\u0027, \u0027id\u0027: 1, \u0027boot_index\u0027: 0})]"},{"line_number":237,"context_line":"        self.stubs.Set(db, \u0027block_device_mapping_get_all_by_instance\u0027,"},{"line_number":238,"context_line":"                       fake_bdms_get_all_by_instance_root)"},{"line_number":239,"context_line":"        url \u003d \"/v3/servers/%s/action\" % UUID1"},{"line_number":240,"context_line":"        res \u003d self._make_request(url, {\"detach\": {\"volume_id\": UUID1}})"},{"line_number":241,"context_line":"        self.assertEqual(res.status_int, 403)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2F%2Be8%3D","line":238,"updated":"2014-03-12 15:44:23.000000000","message":"Same comment about using mock here.","commit_id":"f7b04f8f947754d389df7ff93aaaddf5081423f6"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"unresolved":false,"context_lines":[{"line_number":235,"context_line":"                    {\u0027volume_id\u0027: UUID1, \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":236,"context_line":"                     \u0027destination_type\u0027: \u0027volume\u0027, \u0027id\u0027: 1, \u0027boot_index\u0027: 0})]"},{"line_number":237,"context_line":"        self.stubs.Set(db, \u0027block_device_mapping_get_all_by_instance\u0027,"},{"line_number":238,"context_line":"                       fake_bdms_get_all_by_instance_root)"},{"line_number":239,"context_line":"        url \u003d \"/v3/servers/%s/action\" % UUID1"},{"line_number":240,"context_line":"        res \u003d self._make_request(url, {\"detach\": {\"volume_id\": UUID1}})"},{"line_number":241,"context_line":"        self.assertEqual(res.status_int, 403)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2F9Yo%3D","line":238,"in_reply_to":"AAAAWH%2F%2F%2Be8%3D","updated":"2014-03-12 17:31:40.000000000","message":"Done","commit_id":"f7b04f8f947754d389df7ff93aaaddf5081423f6"}]}
