)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lei Zhang \u003clei.zhang20@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-28 18:09:43 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_b0acf99f","line":7,"updated":"2015-07-28 15:04:11.000000000","message":"Suggestion: \"Prevent concurrent backups for same volume\"","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lei Zhang \u003clei.zhang20@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-28 18:09:43 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_b965061e","line":7,"in_reply_to":"3a50d1a3_b0acf99f","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_30454942","line":9,"updated":"2015-07-28 15:04:11.000000000","message":"Capitalize \"concurrent\".\n\nSuggestion: Change \"we getting\" to \"we are getting the\".","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_796f7efc","line":9,"in_reply_to":"3a50d1a3_30454942","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_465cdf18","line":10,"updated":"2015-07-28 15:04:11.000000000","message":"Suggestion: Change \"concurrently, put...\" to \" concurrently. To avoid this, move getting and changing...\".","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make concurrent backups for same volume impossible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_f97b8ebc","line":10,"in_reply_to":"3a50d1a3_465cdf18","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_0bf4a258","line":11,"updated":"2015-07-28 15:04:11.000000000","message":"Suggestion: Change \"db sessions to avoid this \" to \"db session.\".","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_b94c269e","line":11,"in_reply_to":"3a50d1a3_0bf4a258","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2b3cdf714a74593cf49af87132c53819ca5fe05a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_8693c75a","line":12,"updated":"2015-07-28 15:04:11.000000000","message":"Suggestion: Change \"and also change...\" to \" Also change back the volume status ...\".","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"concurrent backups possible due to dirty read when we"},{"line_number":10,"context_line":"getting volume status concurrently, put getting and"},{"line_number":11,"context_line":"changing volume status into one db sessions to avoid this"},{"line_number":12,"context_line":"and also change back if exception happens when"},{"line_number":13,"context_line":"creating backups."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2b3cdf714a74593cf49af87132c53819ca5fe05a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_397256e4","line":12,"in_reply_to":"3a50d1a3_8693c75a","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"}],"cinder/backup/api.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80686b1aafffdb9aae381bff30997cc17c6d2aa0","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        except Exception:"},{"line_number":249,"context_line":"            # update volume status to available when exception happens"},{"line_number":250,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":251,"context_line":"                self.db.volume_update(context, volume_id,"},{"line_number":252,"context_line":"                                      {\u0027status\u0027: \u0027available\u0027,"},{"line_number":253,"context_line":"                                       \u0027previous_status\u0027: volume[\u0027status\u0027]})"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_3869f225","line":251,"updated":"2015-07-27 12:41:29.000000000","message":"Should we be setting state back to previous state now that live backup has merged instead of just always setting to available?","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"059563699a21302ace01fcf6f86ae7405cde6d9d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        except Exception:"},{"line_number":249,"context_line":"            # update volume status to available when exception happens"},{"line_number":250,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":251,"context_line":"                self.db.volume_update(context, volume_id,"},{"line_number":252,"context_line":"                                      {\u0027status\u0027: \u0027available\u0027,"},{"line_number":253,"context_line":"                                       \u0027previous_status\u0027: volume[\u0027status\u0027]})"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ef69508d","line":251,"in_reply_to":"3a50d1a3_3869f225","updated":"2015-07-28 10:18:55.000000000","message":"Done","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                        msg \u003d _LW("},{"line_number":181,"context_line":"                            \"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":182,"context_line":"                            \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":183,"context_line":"                            \"%(d_quota)dG already consumed)\")"},{"line_number":184,"context_line":"                        LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":185,"context_line":"                                          \u0027s_size\u0027: volume[\u0027size\u0027],"},{"line_number":186,"context_line":"                                          \u0027d_consumed\u0027: _consumed(over),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_9031bd5b","line":183,"updated":"2015-07-28 15:04:11.000000000","message":"Missing \".\" at EOL.","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                        msg \u003d _LW("},{"line_number":181,"context_line":"                            \"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":182,"context_line":"                            \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":183,"context_line":"                            \"%(d_quota)dG already consumed)\")"},{"line_number":184,"context_line":"                        LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":185,"context_line":"                                          \u0027s_size\u0027: volume[\u0027size\u0027],"},{"line_number":186,"context_line":"                                          \u0027d_consumed\u0027: _consumed(over),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_f952ae34","line":183,"in_reply_to":"3a50d1a3_9031bd5b","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d2de94d2d40c48c507ee0072c556d2ce394076da","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                        msg \u003d _LW("},{"line_number":194,"context_line":"                            \"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":195,"context_line":"                            \"backups (%(d_consumed)d backups \""},{"line_number":196,"context_line":"                            \"already consumed)\")"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                        LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":199,"context_line":"                                          \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_10460dc0","line":196,"updated":"2015-07-28 15:04:11.000000000","message":"Missing \".\" at EOL.","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"c794b977454910bcbc4492a52b5348bd6f556f9d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                        msg \u003d _LW("},{"line_number":194,"context_line":"                            \"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":195,"context_line":"                            \"backups (%(d_consumed)d backups \""},{"line_number":196,"context_line":"                            \"already consumed)\")"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                        LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":199,"context_line":"                                          \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_d957b224","line":196,"in_reply_to":"3a50d1a3_10460dc0","updated":"2015-08-17 09:00:39.000000000","message":"Done","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"}],"cinder/tests/unit/backup/test_backup_api.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"cf6a84cb68e2d7514eab0d261c287301ac93a1ad","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Tests for Backup code."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_3cd19b57","line":16,"updated":"2015-07-28 17:21:02.000000000","message":"I\u0027m a bit concerned about the proliferation of backup test files.  This is a reasonable place to put unit tests for backup api.  But how do we organize and avoid overlap with cinder/tests/unit/api/contrib/test_backups.py","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"54cbc5bf66df89b026cb914d32d0bc3a0716e06a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Tests for Backup code."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_8de038fc","line":16,"in_reply_to":"3a50d1a3_3cd19b57","updated":"2015-07-31 02:36:58.000000000","message":"I think we could do this way, all the test case which is test the logic in cinder.api.contrib.backups.py should be in cinder/tests/unit/api/contrib/test_backups.py, and all the test case which is test the logic in cinder.backup.api.py should be in this one.","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"be3405b60cc08186785f8da9bd7b72ff1de78954","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Tests for Backup code."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_349a7dc6","line":16,"in_reply_to":"3a50d1a3_8de038fc","updated":"2015-07-31 10:19:46.000000000","message":"Yes, I agree.","commit_id":"61913bebc34128d509a7d7b13e626f1e6c02f201"}],"cinder/tests/unit/test_db_api.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80686b1aafffdb9aae381bff30997cc17c6d2aa0","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                                                         volume[\u0027id\u0027])"},{"line_number":903,"context_line":"        self.assertEqual(\u0027available\u0027, origin_volume[\u0027status\u0027])"},{"line_number":904,"context_line":"        self.assertEqual(\u0027available\u0027, volume[\u0027previous_status\u0027])"},{"line_number":905,"context_line":"        self.assertEqual(\u0027backing-up\u0027, volume[\u0027status\u0027])"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_volume_prepare_backup_for_inuse_without_force(self):"},{"line_number":908,"context_line":"        volume \u003d db.volume_create(self.ctxt, {\u0027status\u0027: \u0027in-use\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9329073a","line":905,"updated":"2015-07-27 12:41:29.000000000","message":"Shouldn\u0027t this test also fetch the updated volume record from the database and test its status?  Otherwise, we are testing what is returned by volume_prepare_backup but we aren\u0027t really testing what it did.","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"059563699a21302ace01fcf6f86ae7405cde6d9d","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                                                         volume[\u0027id\u0027])"},{"line_number":903,"context_line":"        self.assertEqual(\u0027available\u0027, origin_volume[\u0027status\u0027])"},{"line_number":904,"context_line":"        self.assertEqual(\u0027available\u0027, volume[\u0027previous_status\u0027])"},{"line_number":905,"context_line":"        self.assertEqual(\u0027backing-up\u0027, volume[\u0027status\u0027])"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"    def test_volume_prepare_backup_for_inuse_without_force(self):"},{"line_number":908,"context_line":"        volume \u003d db.volume_create(self.ctxt, {\u0027status\u0027: \u0027in-use\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_cf3254a7","line":905,"in_reply_to":"3a50d1a3_9329073a","updated":"2015-07-28 10:18:55.000000000","message":"Done","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80686b1aafffdb9aae381bff30997cc17c6d2aa0","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        origin_volume, volume \u003d db.volume_prepare_backup(self.ctxt,"},{"line_number":910,"context_line":"                                                         volume[\u0027id\u0027])"},{"line_number":911,"context_line":"        self.assertEqual(\u0027in-use\u0027, origin_volume[\u0027status\u0027])"},{"line_number":912,"context_line":"        self.assertEqual(\u0027in-use\u0027, volume[\u0027status\u0027])"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_volume_prepare_backup_for_inuse_with_force(self):"},{"line_number":915,"context_line":"        volume \u003d db.volume_create(self.ctxt, {\u0027status\u0027: \u0027in-use\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_531cdf12","line":912,"updated":"2015-07-27 12:41:29.000000000","message":"ditto","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"059563699a21302ace01fcf6f86ae7405cde6d9d","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        origin_volume, volume \u003d db.volume_prepare_backup(self.ctxt,"},{"line_number":910,"context_line":"                                                         volume[\u0027id\u0027])"},{"line_number":911,"context_line":"        self.assertEqual(\u0027in-use\u0027, origin_volume[\u0027status\u0027])"},{"line_number":912,"context_line":"        self.assertEqual(\u0027in-use\u0027, volume[\u0027status\u0027])"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_volume_prepare_backup_for_inuse_with_force(self):"},{"line_number":915,"context_line":"        volume \u003d db.volume_create(self.ctxt, {\u0027status\u0027: \u0027in-use\u0027})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_6f230059","line":912,"in_reply_to":"3a50d1a3_531cdf12","updated":"2015-07-28 10:18:55.000000000","message":"Done","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80686b1aafffdb9aae381bff30997cc17c6d2aa0","unresolved":false,"context_lines":[{"line_number":917,"context_line":"                                                         volume[\u0027id\u0027], True)"},{"line_number":918,"context_line":"        self.assertEqual(\u0027in-use\u0027, origin_volume[\u0027status\u0027])"},{"line_number":919,"context_line":"        self.assertEqual(\u0027in-use\u0027, volume[\u0027previous_status\u0027])"},{"line_number":920,"context_line":"        self.assertEqual(\u0027backing-up\u0027, volume[\u0027status\u0027])"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"    def test_volume_update_nonexistent(self):"},{"line_number":923,"context_line":"        self.assertRaises(exception.VolumeNotFound, db.volume_update,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b3d3e337","line":920,"updated":"2015-07-27 12:41:29.000000000","message":"ditto","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"},{"author":{"_account_id":17024,"name":"Lei Zhang","email":"lei.zhang20@hp.com","username":"lei.zhang20hp.com"},"change_message_id":"059563699a21302ace01fcf6f86ae7405cde6d9d","unresolved":false,"context_lines":[{"line_number":917,"context_line":"                                                         volume[\u0027id\u0027], True)"},{"line_number":918,"context_line":"        self.assertEqual(\u0027in-use\u0027, origin_volume[\u0027status\u0027])"},{"line_number":919,"context_line":"        self.assertEqual(\u0027in-use\u0027, volume[\u0027previous_status\u0027])"},{"line_number":920,"context_line":"        self.assertEqual(\u0027backing-up\u0027, volume[\u0027status\u0027])"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"    def test_volume_update_nonexistent(self):"},{"line_number":923,"context_line":"        self.assertRaises(exception.VolumeNotFound, db.volume_update,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_8f28cc34","line":920,"in_reply_to":"3a50d1a3_b3d3e337","updated":"2015-07-28 10:18:55.000000000","message":"Done","commit_id":"c4c67c6dfafea28fe0256ea48e5b0f0c281c63d0"}]}
