)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"22872be6b528aaebe8629c06dba97d34e8903c79","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get volume from db again before updating it\u0027s status"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During uploading volume to image, if the instance is deleted then"},{"line_number":10,"context_line":"the volume remains in \"in-use\" status. So get the volume again"},{"line_number":11,"context_line":"from db before updating it\u0027s status."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a930d6b_53d90682","line":9,"updated":"2015-01-23 15:21:21.000000000","message":"I would have been not confused looking at this line if it was:\n\n During uploading a volume which is attached to an instance to image, if the instance ...\n\n:)\n\nAlso, you can say \u0027image service\u0027 or \u0027Glance\u0027 instead of \u0027image\u0027 here..","commit_id":"92019c725eca8f3b3c470916d9fdad9fab749d14"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"af596243324b022b2054f258fc07ed39aefeae16","unresolved":false,"context_lines":[{"line_number":11,"context_line":"So get the volume again from db before updating it\u0027s status."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Added new db api called \u0027volume_update_status_based_on_attached_instance_id\u0027."},{"line_number":14,"context_line":"It gets volume from db and updates it\u0027s status using same session."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1406703"},{"line_number":17,"context_line":"Change-Id: I01d313438f021cd2fe0d6f5c23f2029279d4b55a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba7be1f8_152f7af7","line":14,"updated":"2015-03-02 10:45:49.000000000","message":"Should \"it\u0027s\" be \"its\"? Also need a \"the\" before \"same session\".","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6b21dfffff97ed214442071e5c191f3a87ff738b","unresolved":false,"context_lines":[{"line_number":1457,"context_line":""},{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"@require_context"},{"line_number":1460,"context_line":"def volume_update_status_based_on_attached_instance_id(context, volume_id):"},{"line_number":1461,"context_line":"    \"\"\"Update volume status based on attached instance id."},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"    Get volume and check if \u0027instance_uuid\u0027, \u0027attached_host\u0027 parameters"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_42986c1b","line":1460,"updated":"2015-03-01 02:44:19.000000000","message":"Function name is a bit confusing.","commit_id":"35d645501089381e2ba7bc6c034605572bca9819"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"2d293c250447c1f8cd5c5534ee2ae78f28e77a2d","unresolved":false,"context_lines":[{"line_number":1457,"context_line":""},{"line_number":1458,"context_line":""},{"line_number":1459,"context_line":"@require_context"},{"line_number":1460,"context_line":"def volume_update_status_based_on_attached_instance_id(context, volume_id):"},{"line_number":1461,"context_line":"    \"\"\"Update volume status based on attached instance id."},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"    Get volume and check if \u0027instance_uuid\u0027, \u0027attached_host\u0027 parameters"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_587cd0eb","line":1460,"in_reply_to":"ba7be1f8_42986c1b","updated":"2015-03-02 07:32:06.000000000","message":"Hi Huang,\n\nCould you please suggest some generic name to this function, I will make the changes accordingly.\n\nThanks","commit_id":"35d645501089381e2ba7bc6c034605572bca9819"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6b21dfffff97ed214442071e5c191f3a87ff738b","unresolved":false,"context_lines":[{"line_number":1461,"context_line":"    \"\"\"Update volume status based on attached instance id."},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"    Get volume and check if \u0027instance_uuid\u0027, \u0027attached_host\u0027 parameters"},{"line_number":1464,"context_line":"    are present in volume, then update volume status accordingly."},{"line_number":1465,"context_line":""},{"line_number":1466,"context_line":"    :param context: context to query under"},{"line_number":1467,"context_line":"    :param volume_id: id of volume to be updated"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_629f3004","line":1464,"updated":"2015-03-01 02:44:19.000000000","message":"Description should explicitly state how volume status is going to be updated, i.e. in what cases vol status will be set to \u0027available\u0027 or \u0027in-use\u0027.","commit_id":"35d645501089381e2ba7bc6c034605572bca9819"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"af596243324b022b2054f258fc07ed39aefeae16","unresolved":false,"context_lines":[{"line_number":1545,"context_line":""},{"line_number":1546,"context_line":""},{"line_number":1547,"context_line":"@require_context"},{"line_number":1548,"context_line":"def volume_update_status_based_on_attached_instance_id(context, volume_id):"},{"line_number":1549,"context_line":"    \"\"\"Update volume status based on attached instance id."},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    Get volume and check if \u0027instance_uuid\u0027, \u0027attached_host\u0027 parameters"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_605c76ee","line":1548,"updated":"2015-03-02 10:45:49.000000000","message":"The name is too long. Would \"volume_refresh_status\" be better?","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"}],"cinder/tests/test_volume.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"571527c34efe3e57248808e9bcd9851f594e94b2","unresolved":false,"context_lines":[{"line_number":3374,"context_line":"        # Check volume status has changed to available because"},{"line_number":3375,"context_line":"        # instance is deleted"},{"line_number":3376,"context_line":"        volume \u003d db.volume_get(self.context, self.volume_id)"},{"line_number":3377,"context_line":"        self.assertEqual(volume[\u0027status\u0027], \u0027available\u0027)"},{"line_number":3378,"context_line":""},{"line_number":3379,"context_line":"    def test_copy_volume_to_image_status_use(self):"},{"line_number":3380,"context_line":"        self.image_meta[\u0027id\u0027] \u003d \u0027a440c04b-79fa-479c-bed1-0b816eaec379\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_84ec05bd","line":3377,"updated":"2015-01-05 14:36:20.000000000","message":"Looks like the order of the parameters are reversed. It should be expected, actual.\nself.assertEqual(\u0027available\u0027, volume[\u0027status\u0027])","commit_id":"2b0666ad32b9a20c04e60ef404323f3882995bba"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ee63c33faa3da3e6af43c26a14274c12cde01d30","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            mock_trace_cls.return_value \u003d mock_decorator"},{"line_number":108,"context_line":"            self.volume \u003d importutils.import_object(CONF.volume_manager)"},{"line_number":109,"context_line":"        self.configuration \u003d mock.Mock(conf.Configuration)"},{"line_number":110,"context_line":"        #self.configuration \u003d conf.Configuration(fake_opts, \u0027fake_group\u0027)"},{"line_number":111,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":112,"context_line":"        self.context.user_id \u003d \u0027fake\u0027"},{"line_number":113,"context_line":"        self.context.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ab237003","line":110,"updated":"2015-01-06 11:05:58.000000000","message":"Remove unused comment line?","commit_id":"c534033a08ed8d77058bb2da8f622120274e24db"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"72e9938d6ae678b631b6d1623ac4fa2d760764d8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            mock_trace_cls.return_value \u003d mock_decorator"},{"line_number":108,"context_line":"            self.volume \u003d importutils.import_object(CONF.volume_manager)"},{"line_number":109,"context_line":"        self.configuration \u003d mock.Mock(conf.Configuration)"},{"line_number":110,"context_line":"        #self.configuration \u003d conf.Configuration(fake_opts, \u0027fake_group\u0027)"},{"line_number":111,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":112,"context_line":"        self.context.user_id \u003d \u0027fake\u0027"},{"line_number":113,"context_line":"        self.context.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_e9a660aa","line":110,"in_reply_to":"3a961159_ab237003","updated":"2015-01-06 12:42:24.000000000","message":"Yuck, yes please. Unrelated to this patch but shouldn\u0027t ever have snuck in.","commit_id":"c534033a08ed8d77058bb2da8f622120274e24db"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"1062d1065fecf7133e3361a112cfeefeed4976cf","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            mock_trace_cls.return_value \u003d mock_decorator"},{"line_number":108,"context_line":"            self.volume \u003d importutils.import_object(CONF.volume_manager)"},{"line_number":109,"context_line":"        self.configuration \u003d mock.Mock(conf.Configuration)"},{"line_number":110,"context_line":"        #self.configuration \u003d conf.Configuration(fake_opts, \u0027fake_group\u0027)"},{"line_number":111,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":112,"context_line":"        self.context.user_id \u003d \u0027fake\u0027"},{"line_number":113,"context_line":"        self.context.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_7d692324","line":110,"in_reply_to":"3a961159_e9a660aa","updated":"2015-01-07 15:53:30.000000000","message":"Thanks for the work :-)","commit_id":"c534033a08ed8d77058bb2da8f622120274e24db"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"93b60733f63b258deed0c195831a9847b1224f05","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import eventlet"},{"line_number":30,"context_line":"import mock"},{"line_number":31,"context_line":"from mock import patch"},{"line_number":32,"context_line":"import mox"},{"line_number":33,"context_line":"from oslo.config import cfg"},{"line_number":34,"context_line":"from oslo.serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_2f291837","line":31,"updated":"2015-02-26 02:02:39.000000000","message":"There\u0027s another patch that is enabling H302. This is going to fail.","commit_id":"92019c725eca8f3b3c470916d9fdad9fab749d14"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"93b60733f63b258deed0c195831a9847b1224f05","unresolved":false,"context_lines":[{"line_number":3371,"context_line":"            # because after deleting instance instance_uuid of volume is"},{"line_number":3372,"context_line":"            # set to None"},{"line_number":3373,"context_line":"            db.volume_update(context, volume_id, {\u0027instance_uuid\u0027: None})"},{"line_number":3374,"context_line":"            db.sqlalchemy.api.\\"},{"line_number":3375,"context_line":"                volume_update_status_based_on_attached_instance_id(context,"},{"line_number":3376,"context_line":"                                                                   volume_id)"},{"line_number":3377,"context_line":"        with patch.object("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_0fdd3442","line":3374,"updated":"2015-02-26 02:02:39.000000000","message":"just call db.volume_update_status_based_on_attached_instance_id","commit_id":"92019c725eca8f3b3c470916d9fdad9fab749d14"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"0bf87b9ddd0613893368da5c7db576a67a309050","unresolved":false,"context_lines":[{"line_number":3371,"context_line":"            # because after deleting instance instance_uuid of volume is"},{"line_number":3372,"context_line":"            # set to None"},{"line_number":3373,"context_line":"            db.volume_update(context, volume_id, {\u0027instance_uuid\u0027: None})"},{"line_number":3374,"context_line":"            db.sqlalchemy.api.\\"},{"line_number":3375,"context_line":"                volume_update_status_based_on_attached_instance_id(context,"},{"line_number":3376,"context_line":"                                                                   volume_id)"},{"line_number":3377,"context_line":"        with patch.object("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_9f530b16","line":3374,"in_reply_to":"ba7be1f8_0fdd3442","updated":"2015-02-26 08:07:24.000000000","message":"Hi Mike,\n\nHere I am not able to call \u0027db.volume_update_status_based_on_attached_instance_id\u0027, because it will give\n\u0027recursion\u0027 error. I have mocked db.volume_update_status_based_on_attached_instance_id and from it\u0027s\nside effect calling db.sqlalchemy.api.volume_update_status_based_on_attached_instance_id.\n\nHere we need to set volume\u0027s \u0027instance_uuid\u0027 to None before calling db api\n\u0027volume_update_status_based_on_attached_instance_id\u0027.\n\nIn new patch set I am storing unmocked reference of \u0027db.volume_update_status_based_on_attached_instance_id\u0027\nin local variable, and calling unmocked reference from side effect.","commit_id":"92019c725eca8f3b3c470916d9fdad9fab749d14"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"af596243324b022b2054f258fc07ed39aefeae16","unresolved":false,"context_lines":[{"line_number":3683,"context_line":"                                             \u002745b1161abb02\u0027"},{"line_number":3684,"context_line":"        db.volume_create(self.context, self.volume_attrs)"},{"line_number":3685,"context_line":""},{"line_number":3686,"context_line":"        # storing unmocked db api function reference here, because we have to"},{"line_number":3687,"context_line":"        # update volume status (set instance_uuid to None) before calling the"},{"line_number":3688,"context_line":"        # \u0027volume_update_status_based_on_attached_instance_id\u0027 db api."},{"line_number":3689,"context_line":"        unmocked_db_api \u003d db.volume_update_status_based_on_attached_instance_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_8095ea41","line":3686,"updated":"2015-03-02 10:45:49.000000000","message":"Capitalize the first letter?","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"af596243324b022b2054f258fc07ed39aefeae16","unresolved":false,"context_lines":[{"line_number":3689,"context_line":"        unmocked_db_api \u003d db.volume_update_status_based_on_attached_instance_id"},{"line_number":3690,"context_line":""},{"line_number":3691,"context_line":"        def mock_volume_update_after_upload(context, volume_id):"},{"line_number":3692,"context_line":"            # first update volume and set \u0027instance_uuid\u0027 to None"},{"line_number":3693,"context_line":"            # because after deleting instance, instance_uuid of volume is"},{"line_number":3694,"context_line":"            # set to None"},{"line_number":3695,"context_line":"            db.volume_update(context, volume_id, {\u0027instance_uuid\u0027: None})"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_807c0a22","line":3692,"updated":"2015-03-02 10:45:49.000000000","message":"Same as above.","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"af596243324b022b2054f258fc07ed39aefeae16","unresolved":false,"context_lines":[{"line_number":3712,"context_line":"        # Check volume status has changed to available because"},{"line_number":3713,"context_line":"        # instance is deleted"},{"line_number":3714,"context_line":"        volume \u003d db.volume_get(self.context, self.volume_id)"},{"line_number":3715,"context_line":"        self.assertEqual(\u0027available\u0027, volume[\u0027status\u0027])"},{"line_number":3716,"context_line":""},{"line_number":3717,"context_line":"    def test_copy_volume_to_image_status_use(self):"},{"line_number":3718,"context_line":"        self.image_meta[\u0027id\u0027] \u003d \u0027a440c04b-79fa-479c-bed1-0b816eaec379\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_5bf763f5","line":3715,"updated":"2015-03-02 10:45:49.000000000","message":"I think the \u0027in-use\u0027 path is not covered.","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"c564a8445c1b615608502e50c852037c47e216c9","unresolved":false,"context_lines":[{"line_number":3712,"context_line":"        # Check volume status has changed to available because"},{"line_number":3713,"context_line":"        # instance is deleted"},{"line_number":3714,"context_line":"        volume \u003d db.volume_get(self.context, self.volume_id)"},{"line_number":3715,"context_line":"        self.assertEqual(\u0027available\u0027, volume[\u0027status\u0027])"},{"line_number":3716,"context_line":""},{"line_number":3717,"context_line":"    def test_copy_volume_to_image_status_use(self):"},{"line_number":3718,"context_line":"        self.image_meta[\u0027id\u0027] \u003d \u0027a440c04b-79fa-479c-bed1-0b816eaec379\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_a972d60e","line":3715,"in_reply_to":"ba7be1f8_5bf763f5","updated":"2015-03-02 12:55:57.000000000","message":"Hi Accela,\n\n\u0027in-use\u0027 path is covered in below \u0027test_copy_volume_to_image_status_use\u0027 test case.","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"e15fef204a442dcb298e5f11a7eebbfa70c9cc08","unresolved":false,"context_lines":[{"line_number":3712,"context_line":"        # Check volume status has changed to available because"},{"line_number":3713,"context_line":"        # instance is deleted"},{"line_number":3714,"context_line":"        volume \u003d db.volume_get(self.context, self.volume_id)"},{"line_number":3715,"context_line":"        self.assertEqual(\u0027available\u0027, volume[\u0027status\u0027])"},{"line_number":3716,"context_line":""},{"line_number":3717,"context_line":"    def test_copy_volume_to_image_status_use(self):"},{"line_number":3718,"context_line":"        self.image_meta[\u0027id\u0027] \u003d \u0027a440c04b-79fa-479c-bed1-0b816eaec379\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_39ea89ac","line":3715,"in_reply_to":"ba7be1f8_a972d60e","updated":"2015-03-03 06:58:21.000000000","message":"Thank you for pointing it out, Abhijeet.","commit_id":"7db80f73a809dec2376fc340b03fc77fb4a24b05"}],"cinder/volume/manager.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"dccb85dc0003261bb83a9b636b4af9f3d848ba6f","unresolved":false,"context_lines":[{"line_number":904,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":905,"context_line":"                payload[\u0027message\u0027] \u003d unicode(error)"},{"line_number":906,"context_line":"        finally:"},{"line_number":907,"context_line":"            # Uploading volume to image is a long running task and"},{"line_number":908,"context_line":"            # during uploading there is a possibility that instance to which"},{"line_number":909,"context_line":"            # volume is attached may be deleted."},{"line_number":910,"context_line":"            self.db.volume_update_status_based_on_attachment(context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_20314aed","line":907,"updated":"2015-04-01 13:28:25.000000000","message":"This comment is confusing.  What you are doing here is clear - no need for the comment.  Please remove.","commit_id":"ddbb71d3df0c6c1d42cbd2c2b1f0cdaa5b7f2424"}]}
