)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Done:"},{"line_number":14,"context_line":"  1) Add processing to update_snapshot_status API for new fields"},{"line_number":15,"context_line":"  2) Add new fields to the update_snapshot_status call made by Nova"},{"line_number":16,"context_line":"  3) Data Model / DB related work to store file info recd. from Nova"},{"line_number":17,"context_line":"  4) Added code to ensure old/new Nova works with old/new Cinder"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"TODOs:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7ad32947_31a197aa","line":16,"updated":"2015-04-27 17:45:13.000000000","message":"It may be necessary to add changes to support backing up the volume_admin_metadata metadata with cinder backup.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"957af5455e1847e91ce3c82120cc87a26d92a460","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Done:"},{"line_number":14,"context_line":"  1) Add processing to update_snapshot_status API for new fields"},{"line_number":15,"context_line":"  2) Add new fields to the update_snapshot_status call made by Nova"},{"line_number":16,"context_line":"  3) Data Model / DB related work to store file info recd. from Nova"},{"line_number":17,"context_line":"  4) Added code to ensure old/new Nova works with old/new Cinder"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"TODOs:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_c390e545","line":16,"in_reply_to":"1aca2d91_21182584","updated":"2015-05-18 08:57:55.000000000","message":"@Eric,\n  I think you suggested this with the assumption that the volume format tracking\ncode is part of this patch ? Thinking again, i don\u0027t see how this comment is otherwise relevant to this patch, pls let me know.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Done:"},{"line_number":14,"context_line":"  1) Add processing to update_snapshot_status API for new fields"},{"line_number":15,"context_line":"  2) Add new fields to the update_snapshot_status call made by Nova"},{"line_number":16,"context_line":"  3) Data Model / DB related work to store file info recd. from Nova"},{"line_number":17,"context_line":"  4) Added code to ensure old/new Nova works with old/new Cinder"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"TODOs:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aca2d91_21182584","line":16,"in_reply_to":"7ad32947_31a197aa","updated":"2015-05-07 11:56:54.000000000","message":"added TODO for the same","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":28,"context_line":"     Change-Id: I9bda95cd4ab09aed88536d4a988d6c6579441c37"},{"line_number":29,"context_line":"  2) I am testing this patch with the Nova changes (with above Change-Ids)"},{"line_number":30,"context_line":"     using GlusterFS as the Cinder backend"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Implements: blueprint assisted-snapshot-improvements"},{"line_number":33,"context_line":"Change-Id: Ifa2836a87271d465af61c4ae4b2018cde0698924"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7ad32947_56588956","line":31,"updated":"2015-04-27 17:45:13.000000000","message":"This is probably a good place to use Depends-On (at least for now to do GlusterFS CI) with the Nova patch.\n\nhttp://docs.openstack.org/infra/manual/developers.html#cross-project-dependencies","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":28,"context_line":"     Change-Id: I9bda95cd4ab09aed88536d4a988d6c6579441c37"},{"line_number":29,"context_line":"  2) I am testing this patch with the Nova changes (with above Change-Ids)"},{"line_number":30,"context_line":"     using GlusterFS as the Cinder backend"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Implements: blueprint assisted-snapshot-improvements"},{"line_number":33,"context_line":"Change-Id: Ifa2836a87271d465af61c4ae4b2018cde0698924"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aca2d91_011d2973","line":31,"in_reply_to":"7ad32947_56588956","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"}],"cinder/api/contrib/snapshot_actions.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f1af5122b0c1269554f5e4d68af581baadabe04","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(SnapshotActionsController, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":"        LOG.debug(\"SnapshotActionsController initialized\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # NOTE(deepakcs): Remove this in the \u0027M\u0027 release"},{"line_number":37,"context_line":"    def _update_snapshot_status_old(self, context, id, body):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        LOG.info(\"DPKS: Detected Old Nova, In _update_snapshot_status_old\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_6fe911e6","line":36,"updated":"2015-05-03 19:39:03.000000000","message":"Should be TODO","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(SnapshotActionsController, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":"        LOG.debug(\"SnapshotActionsController initialized\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # NOTE(deepakcs): Remove this in the \u0027M\u0027 release"},{"line_number":37,"context_line":"    def _update_snapshot_status_old(self, context, id, body):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        LOG.info(\"DPKS: Detected Old Nova, In _update_snapshot_status_old\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_c53a9ccd","line":36,"in_reply_to":"3acd31a7_6fe911e6","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # Update snapshot admin metadata table for volume drivers to"},{"line_number":67,"context_line":"        # know that we are dealing with old Nova"},{"line_number":68,"context_line":"        sam_update_dict \u003d {\u0027id\u0027: id,"},{"line_number":69,"context_line":"                           \u0027old_nova\u0027: True}"},{"line_number":70,"context_line":"        db.snapshot_admin_metadata_update(context, id, sam_update_dict, True)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        update_dict \u003d {\u0027id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_11f33b75","line":69,"updated":"2015-04-27 17:45:13.000000000","message":"I don\u0027t think it\u0027s appropriate to pass \"old_nova\" as info through the snapshot admin metadata table.  This causes information to cross a lot of layers of abstractions and there is probably a cleaner way to achieve the goal this is serving.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # Update snapshot admin metadata table for volume drivers to"},{"line_number":67,"context_line":"        # know that we are dealing with old Nova"},{"line_number":68,"context_line":"        sam_update_dict \u003d {\u0027id\u0027: id,"},{"line_number":69,"context_line":"                           \u0027old_nova\u0027: True}"},{"line_number":70,"context_line":"        db.snapshot_admin_metadata_update(context, id, sam_update_dict, True)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        update_dict \u003d {\u0027id\u0027: id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_01273665","line":69,"in_reply_to":"7ad32947_11f33b75","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"650db700254691b58d2f5811623e4b54272788f3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            msg \u003d _(\"Support for os-update_snapshot_status without \""},{"line_number":107,"context_line":"                    \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                    \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                    \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warn(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_old(context, id, body)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_5a1b8973","line":109,"updated":"2015-05-20 09:10:10.000000000","message":"Should add _LW","commit_id":"0551b3032971139e4d2958289ea196521fa5008b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"650db700254691b58d2f5811623e4b54272788f3","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                    \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                    \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                    \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warn(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_old(context, id, body)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        LOG.info(_LI(\"DPKS: Detected New Nova , In _update_snapshot_status\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_3a18cd74","line":110,"updated":"2015-05-20 09:10:10.000000000","message":"Now LOG.warn has been deprecated, please use LOG.warning.","commit_id":"0551b3032971139e4d2958289ea196521fa5008b"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a54de0630960851d29406cd7c726bbad6d16d7f3","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                      \u0027deleting\u0027: [\u0027deleting_compute_complete\u0027,"},{"line_number":123,"context_line":"                                   \u0027deleting_compute_error\u0027]}"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        current_snapshot \u003d db.snapshot_get(context, id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        if current_snapshot[\u0027status\u0027] not in status_map:"},{"line_number":128,"context_line":"            msg \u003d _(\"Snapshot status %(cur)s not allowed for \""}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_a88a4619","line":125,"updated":"2015-06-04 13:36:18.000000000","message":"You should be using objects.Snapshot.get_by_id instead of db.snapshot_get.","commit_id":"5469edbd333cac107ee0bcd14677370652e2ee37"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a54de0630960851d29406cd7c726bbad6d16d7f3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                     \"table with info %(dict)s\"),"},{"line_number":149,"context_line":"                 {\u0027id\u0027: id, \u0027dict\u0027: sam_update_dict})"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        db.snapshot_admin_metadata_update(context, id, sam_update_dict, True)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        # TODO(deepakcs): Use file_info[\u0027active_file_fmt\u0027] to track Cinder"},{"line_number":154,"context_line":"        # volume format changes"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_c8710246","line":151,"updated":"2015-06-04 13:36:18.000000000","message":"Instead of making direct db calls, this \"feature\" should be part of the snapshot object, not separate.","commit_id":"5469edbd333cac107ee0bcd14677370652e2ee37"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            msg \u003d _(\"Support for os-update_snapshot_status without \""},{"line_number":107,"context_line":"                    \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                    \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                    \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warning(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_compat(context, id, body)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_bd718daa","line":109,"updated":"2015-06-16 07:01:21.000000000","message":"Please localize this message with _LW.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            msg \u003d _(\"Support for os-update_snapshot_status without \""},{"line_number":107,"context_line":"                    \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                    \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                    \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warning(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_compat(context, id, body)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_7444421a","line":109,"in_reply_to":"fa32b979_bd718daa","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class SnapshotActionsController(wsgi.Controller):"},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        super(SnapshotActionsController, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":"        LOG.debug(\"SnapshotActionsController initialized\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # For compatibility with pre-liberty Nova"},{"line_number":37,"context_line":"    # TODO(deepakcs): Remove this in the \u0027M\u0027 release"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_732f313f","line":34,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class SnapshotActionsController(wsgi.Controller):"},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        super(SnapshotActionsController, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":"        LOG.debug(\"SnapshotActionsController initialized\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # For compatibility with pre-liberty Nova"},{"line_number":37,"context_line":"    # TODO(deepakcs): Remove this in the \u0027M\u0027 release"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_38280133","line":34,"in_reply_to":"fa32b979_732f313f","updated":"2015-06-24 07:40:33.000000000","message":"Change is not part of the patch","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            update_dict.update({\u0027progress\u0027: progress})"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        LOG.info(_LI(\"Updating snapshot %(id)s with info %(dict)s\"),"},{"line_number":82,"context_line":"                 {\u0027id\u0027: id, \u0027dict\u0027: update_dict})"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        current_snapshot.update(update_dict)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_f3d10124","line":81,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            update_dict.update({\u0027progress\u0027: progress})"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        LOG.info(_LI(\"Updating snapshot %(id)s with info %(dict)s\"),"},{"line_number":82,"context_line":"                 {\u0027id\u0027: id, \u0027dict\u0027: update_dict})"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        current_snapshot.update(update_dict)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_98002dad","line":81,"in_reply_to":"fa32b979_f3d10124","updated":"2015-06-24 07:40:33.000000000","message":"Change is not part of the patch","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                           \u0027compute_snapshot_status\u0027: compute_snapshot_status}"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        LOG.info(_LI(\"Updating snapshot %(id)s in snapshot admin metadata \""},{"line_number":149,"context_line":"                     \"table with info %(dict)s\"),"},{"line_number":150,"context_line":"                 {\u0027id\u0027: id, \u0027dict\u0027: sam_update_dict})"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        current_snapshot.update({\u0027admin_metadata\u0027: sam_update_dict})"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_6e298689","line":149,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                           \u0027compute_snapshot_status\u0027: compute_snapshot_status}"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        LOG.info(_LI(\"Updating snapshot %(id)s in snapshot admin metadata \""},{"line_number":149,"context_line":"                     \"table with info %(dict)s\"),"},{"line_number":150,"context_line":"                 {\u0027id\u0027: id, \u0027dict\u0027: sam_update_dict})"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        current_snapshot.update({\u0027admin_metadata\u0027: sam_update_dict})"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_58bb85e5","line":149,"in_reply_to":"fa32b979_6e298689","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8305d958052574b6b1d41380a0ba66c2e8ce2a1a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":98,"context_line":"        authorize(context, \u0027update_snapshot_status\u0027)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        LOG.debug(\"body: %s\", body)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # For compatibility with pre-liberty Nova"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_c49fc05d","line":100,"updated":"2015-07-27 15:37:14.000000000","message":"Please, change it to something like:\nLOG.debug(\"_update_snapshot_status. Request body: %s\", body)","commit_id":"e4ca1a44df90c7289974c6b7bafa423db5bbb12a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"63fdb8b6429c15b9fdd0a0ca1f61d029769e2be4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":98,"context_line":"        authorize(context, \u0027update_snapshot_status\u0027)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        LOG.debug(\"body: %s\", body)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # For compatibility with pre-liberty Nova"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_075c6349","line":100,"in_reply_to":"3a50d1a3_c49fc05d","updated":"2015-07-29 12:07:27.000000000","message":"Done","commit_id":"e4ca1a44df90c7289974c6b7bafa423db5bbb12a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8305d958052574b6b1d41380a0ba66c2e8ce2a1a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                      \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                      \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                      \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warning(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_compat(context, id, body)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_24f46485","line":110,"updated":"2015-07-27 15:37:14.000000000","message":"Please, use versionutils.report_deprecated_feature instead of LOG.warning","commit_id":"e4ca1a44df90c7289974c6b7bafa423db5bbb12a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"63fdb8b6429c15b9fdd0a0ca1f61d029769e2be4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                      \"\u0027file_info\u0027 is deprecated and will be removed. \""},{"line_number":108,"context_line":"                      \"Please upgrade Nova to support \""},{"line_number":109,"context_line":"                      \"os-update_snapshot_status with \u0027file_info\u0027.\")"},{"line_number":110,"context_line":"            LOG.warning(msg)"},{"line_number":111,"context_line":"            return self._update_snapshot_status_compat(context, id, body)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_c7519b31","line":110,"in_reply_to":"3a50d1a3_24f46485","updated":"2015-07-29 12:07:27.000000000","message":"Done","commit_id":"e4ca1a44df90c7289974c6b7bafa423db5bbb12a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"1eb265620800a8af1e0fe3b92321c8b1fe9d32b8","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    def _update_snapshot_status(self, req, id, body):"},{"line_number":91,"context_line":"        \"\"\"Update database fields related to status of a snapshot."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"           Intended for creation of snapshots, so snapshot state"},{"line_number":94,"context_line":"           must start as \u0027creating\u0027 and be changed to \u0027available\u0027,"},{"line_number":95,"context_line":"           \u0027creating\u0027, or \u0027error\u0027."},{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":99,"context_line":"        authorize(context, \u0027update_snapshot_status\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_8f3b8538","line":96,"range":{"start_line":93,"start_character":11,"end_line":96,"end_character":11},"updated":"2015-08-21 18:39:22.000000000","message":"minor style nit if you have another update, unindent this block so it matches up with the other block comments in cinder","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"}],"cinder/db/api.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":359,"context_line":"def snapshot_admin_metadata_update(context, snapshot_id, metadata, delete):"},{"line_number":360,"context_line":"    \"\"\"Update admin metadata if it exists, otherwise create it.\"\"\""},{"line_number":361,"context_line":"    return IMPL.snapshot_admin_metadata_update(context, snapshot_id,"},{"line_number":362,"context_line":"                                         metadata, delete)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_36c50d5b","line":362,"updated":"2015-04-27 17:45:13.000000000","message":"indentation is wrong","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":359,"context_line":"def snapshot_admin_metadata_update(context, snapshot_id, metadata, delete):"},{"line_number":360,"context_line":"    \"\"\"Update admin metadata if it exists, otherwise create it.\"\"\""},{"line_number":361,"context_line":"    return IMPL.snapshot_admin_metadata_update(context, snapshot_id,"},{"line_number":362,"context_line":"                                         metadata, delete)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_61edcaee","line":362,"in_reply_to":"7ad32947_36c50d5b","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f1af5122b0c1269554f5e4d68af581baadabe04","unresolved":false,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"@require_context"},{"line_number":2134,"context_line":"def _snapshot_admin_metadata_get_item(context, snapshot_id, key, session\u003dNone):"},{"line_number":2135,"context_line":"    result \u003d _snapshot_admin_metadata_get_query(context,"},{"line_number":2136,"context_line":"                                          snapshot_id,"},{"line_number":2137,"context_line":"                                          session\u003dsession).\\"},{"line_number":2138,"context_line":"        filter_by(key\u003dkey).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_cfd70522","line":2135,"updated":"2015-05-03 19:39:03.000000000","message":"Please, use () instead of \\","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"@require_context"},{"line_number":2134,"context_line":"def _snapshot_admin_metadata_get_item(context, snapshot_id, key, session\u003dNone):"},{"line_number":2135,"context_line":"    result \u003d _snapshot_admin_metadata_get_query(context,"},{"line_number":2136,"context_line":"                                          snapshot_id,"},{"line_number":2137,"context_line":"                                          session\u003dsession).\\"},{"line_number":2138,"context_line":"        filter_by(key\u003dkey).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_e4eb2877","line":2135,"in_reply_to":"3acd31a7_cfd70522","updated":"2015-05-07 11:56:54.000000000","message":"Using () for line continuation is giving me syntax error. Given most of this file uses \\ , it would be a separate effort to change it to use () (once I know how tho\u0027)","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"        # Set existing metadata to deleted if delete argument is True"},{"line_number":2154,"context_line":"        if delete:"},{"line_number":2155,"context_line":"            original_metadata \u003d _snapshot_admin_metadata_get(context, snapshot_id,"},{"line_number":2156,"context_line":"                                                       session)"},{"line_number":2157,"context_line":"            for meta_key, meta_value in original_metadata.iteritems():"},{"line_number":2158,"context_line":"                if meta_key not in metadata:"},{"line_number":2159,"context_line":"                    meta_ref \u003d _snapshot_admin_metadata_get_item(context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_36174def","line":2156,"updated":"2015-04-27 17:45:13.000000000","message":"indentation is wrong","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"        # Set existing metadata to deleted if delete argument is True"},{"line_number":2154,"context_line":"        if delete:"},{"line_number":2155,"context_line":"            original_metadata \u003d _snapshot_admin_metadata_get(context, snapshot_id,"},{"line_number":2156,"context_line":"                                                       session)"},{"line_number":2157,"context_line":"            for meta_key, meta_value in original_metadata.iteritems():"},{"line_number":2158,"context_line":"                if meta_key not in metadata:"},{"line_number":2159,"context_line":"                    meta_ref \u003d _snapshot_admin_metadata_get_item(context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_84ab541d","line":2156,"in_reply_to":"7ad32947_36174def","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f1af5122b0c1269554f5e4d68af581baadabe04","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"                    meta_ref \u003d _snapshot_admin_metadata_get_item(context,"},{"line_number":2160,"context_line":"                                                           snapshot_id,"},{"line_number":2161,"context_line":"                                                           meta_key, session)"},{"line_number":2162,"context_line":"                    meta_ref.update({\u0027deleted\u0027: True})"},{"line_number":2163,"context_line":"                    meta_ref.save(session\u003dsession)"},{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"        meta_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_afde093d","line":2162,"updated":"2015-05-03 19:39:03.000000000","message":"deleted_at field should be updated too","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"                    meta_ref \u003d _snapshot_admin_metadata_get_item(context,"},{"line_number":2160,"context_line":"                                                           snapshot_id,"},{"line_number":2161,"context_line":"                                                           meta_key, session)"},{"line_number":2162,"context_line":"                    meta_ref.update({\u0027deleted\u0027: True})"},{"line_number":2163,"context_line":"                    meta_ref.save(session\u003dsession)"},{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"        meta_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_4f2795b6","line":2162,"in_reply_to":"3acd31a7_afde093d","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":2167,"context_line":"        # Now update all existing items with new values, or create new meta"},{"line_number":2168,"context_line":"        # objects"},{"line_number":2169,"context_line":"        for meta_key, meta_value in metadata.items():"},{"line_number":2170,"context_line":""},{"line_number":2171,"context_line":"            # update the value whether it exists or not"},{"line_number":2172,"context_line":"            item \u003d {\"value\": meta_value}"},{"line_number":2173,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_b6b8fde6","line":2170,"updated":"2015-04-27 17:45:13.000000000","message":"remove extra newline","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":2167,"context_line":"        # Now update all existing items with new values, or create new meta"},{"line_number":2168,"context_line":"        # objects"},{"line_number":2169,"context_line":"        for meta_key, meta_value in metadata.items():"},{"line_number":2170,"context_line":""},{"line_number":2171,"context_line":"            # update the value whether it exists or not"},{"line_number":2172,"context_line":"            item \u003d {\"value\": meta_value}"},{"line_number":2173,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_8f35addb","line":2170,"in_reply_to":"7ad32947_b6b8fde6","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"03d3390ec3cf3700cfbbb8a230c1fd1a52a99415","unresolved":false,"context_lines":[{"line_number":2162,"context_line":"###################"},{"line_number":2163,"context_line":""},{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"def _snapshot_admin_metadata_get_query(context, snapshot_id, session\u003dNone):"},{"line_number":2166,"context_line":"    return model_query(context, models.SnapshotAdminMetadata,"},{"line_number":2167,"context_line":"                       session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":2168,"context_line":"        filter_by(snapshot_id\u003dsnapshot_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_ba333761","line":2165,"updated":"2015-06-18 21:49:15.000000000","message":"Do we really need _snapshot... methods here?","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":2162,"context_line":"###################"},{"line_number":2163,"context_line":""},{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"def _snapshot_admin_metadata_get_query(context, snapshot_id, session\u003dNone):"},{"line_number":2166,"context_line":"    return model_query(context, models.SnapshotAdminMetadata,"},{"line_number":2167,"context_line":"                       session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":2168,"context_line":"        filter_by(snapshot_id\u003dsnapshot_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_d8a475a7","line":2165,"in_reply_to":"fa32b979_ba333761","updated":"2015-06-24 07:40:33.000000000","message":"I just followed snapshot_metadata_XXX way, and it has the same method, so not clear why you don\u0027t want it here ?","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"03d3390ec3cf3700cfbbb8a230c1fd1a52a99415","unresolved":false,"context_lines":[{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"def _snapshot_admin_metadata_get_query(context, snapshot_id, session\u003dNone):"},{"line_number":2166,"context_line":"    return model_query(context, models.SnapshotAdminMetadata,"},{"line_number":2167,"context_line":"                       session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":2168,"context_line":"        filter_by(snapshot_id\u003dsnapshot_id)"},{"line_number":2169,"context_line":""},{"line_number":2170,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_ba8017f8","line":2167,"updated":"2015-06-18 21:49:15.000000000","message":"Please, don\u0027t use \u0027\\\u0027 to split code to the multiple lines","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"def _snapshot_admin_metadata_get_query(context, snapshot_id, session\u003dNone):"},{"line_number":2166,"context_line":"    return model_query(context, models.SnapshotAdminMetadata,"},{"line_number":2167,"context_line":"                       session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":2168,"context_line":"        filter_by(snapshot_id\u003dsnapshot_id)"},{"line_number":2169,"context_line":""},{"line_number":2170,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_b5a07343","line":2167,"in_reply_to":"fa32b979_ba8017f8","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"03d3390ec3cf3700cfbbb8a230c1fd1a52a99415","unresolved":false,"context_lines":[{"line_number":2192,"context_line":"def snapshot_admin_metadata_delete(context, snapshot_id, key):"},{"line_number":2193,"context_line":"    _snapshot_admin_metadata_get_query(context, snapshot_id).\\"},{"line_number":2194,"context_line":"        filter_by(key\u003dkey).\\"},{"line_number":2195,"context_line":"        update({\u0027deleted\u0027: True,"},{"line_number":2196,"context_line":"                \u0027deleted_at\u0027: timeutils.utcnow(),"},{"line_number":2197,"context_line":"                \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)})"},{"line_number":2198,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_bae577dc","line":2195,"updated":"2015-06-18 21:49:15.000000000","message":"Please, use \u0027delete\u0027 method","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":2192,"context_line":"def snapshot_admin_metadata_delete(context, snapshot_id, key):"},{"line_number":2193,"context_line":"    _snapshot_admin_metadata_get_query(context, snapshot_id).\\"},{"line_number":2194,"context_line":"        filter_by(key\u003dkey).\\"},{"line_number":2195,"context_line":"        update({\u0027deleted\u0027: True,"},{"line_number":2196,"context_line":"                \u0027deleted_at\u0027: timeutils.utcnow(),"},{"line_number":2197,"context_line":"                \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)})"},{"line_number":2198,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_f8d59242","line":2195,"in_reply_to":"fa32b979_bae577dc","updated":"2015-06-24 07:40:33.000000000","message":"Sorry, but haven\u0027t really understood \u0027delete\u0027 method of what ? We are implementing the delete method itself here. Looking at other snapshot_metadata_delete \u0026 other _delete functions in this file, this is how i see its done. If this is incorrect, pls point me to the right way, as I am not a DB/sqlalchemy expert to figure it out myself!","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"}],"cinder/db/sqlalchemy/migrate_repo/versions/041_add_snapshot_admin_metadata_table.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_76cee55b","line":12,"updated":"2015-04-27 17:45:13.000000000","message":"Need to move to migration 047.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_cf6965c0","line":12,"in_reply_to":"7ad32947_76cee55b","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"}],"cinder/db/sqlalchemy/migrate_repo/versions/047_add_snapshot_admin_metadata_table.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"290e343041e8b2b23293a00a7a900bbefa68b24e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_b1ac5b8d","line":14,"updated":"2015-05-26 18:59:05.000000000","message":"Please import only modules, but not Classes / Objects.\n\nLike:\n\nimport sqlalchemy\n\nuse as \"sqlalchemy.Boolean\"\n\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"570e588dddde9965cddb02bba8b69bfbbd920237","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.i18n import _LE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_b46d5034","line":14,"in_reply_to":"7a016987_b1ac5b8d","updated":"2015-05-27 10:53:18.000000000","message":"Sorry, sqlalchemy is exceptional for this rule.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"290e343041e8b2b23293a00a7a900bbefa68b24e","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.i18n import _LE"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_51bac7c1","line":15,"updated":"2015-05-26 18:59:05.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"570e588dddde9965cddb02bba8b69bfbbd920237","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_log import log as logging"},{"line_number":14,"context_line":"from sqlalchemy import Boolean, Column, DateTime"},{"line_number":15,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, ForeignKey"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.i18n import _LE"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_94681423","line":15,"in_reply_to":"7a016987_51bac7c1","updated":"2015-05-27 10:53:18.000000000","message":"Sorry, sqlalchemy is exceptional for this rule.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    try:"},{"line_number":57,"context_line":"        snapshot_admin_metadata.drop()"},{"line_number":58,"context_line":"    except Exception:"},{"line_number":59,"context_line":"        LOG.error(_LE(\"snapshot_admin_metadata table not dropped\"))"},{"line_number":60,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_ae8f8e73","line":59,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    try:"},{"line_number":57,"context_line":"        snapshot_admin_metadata.drop()"},{"line_number":58,"context_line":"    except Exception:"},{"line_number":59,"context_line":"        LOG.error(_LE(\"snapshot_admin_metadata table not dropped\"))"},{"line_number":60,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_f83cb294","line":59,"in_reply_to":"fa32b979_ae8f8e73","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"03d3390ec3cf3700cfbbb8a230c1fd1a52a99415","unresolved":false,"context_lines":[{"line_number":487,"context_line":"class SnapshotAdminMetadata(BASE, CinderBase):"},{"line_number":488,"context_line":"    \"\"\"Represents an adminstrator metadata key/value pair for a snapshot.\"\"\""},{"line_number":489,"context_line":"    __tablename__ \u003d \u0027snapshot_admin_metadata\u0027"},{"line_number":490,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":491,"context_line":"    key \u003d Column(String(255))"},{"line_number":492,"context_line":"    value \u003d Column(String(255))"},{"line_number":493,"context_line":"    snapshot_id \u003d Column(String(36),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_ba58178b","line":490,"updated":"2015-06-18 21:49:15.000000000","message":"IMO, using uuid for PK is more preferable but I won\u0027t block patch for it","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":487,"context_line":"class SnapshotAdminMetadata(BASE, CinderBase):"},{"line_number":488,"context_line":"    \"\"\"Represents an adminstrator metadata key/value pair for a snapshot.\"\"\""},{"line_number":489,"context_line":"    __tablename__ \u003d \u0027snapshot_admin_metadata\u0027"},{"line_number":490,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":491,"context_line":"    key \u003d Column(String(255))"},{"line_number":492,"context_line":"    value \u003d Column(String(255))"},{"line_number":493,"context_line":"    snapshot_id \u003d Column(String(36),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_f86352af","line":490,"in_reply_to":"fa32b979_ba58178b","updated":"2015-06-24 07:40:33.000000000","message":"I ain\u0027t a DB pro, so all DB related work, i just used snapshot_metadata and volume_admin_metadata impl as reference, so I am just following what has been done before :)","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"}],"cinder/objects/snapshot.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"f9a3eae512bd3a178d6427b4b3e434752dfeb02c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def get_by_id(cls, context, id):"},{"line_number":142,"context_line":"        db_snapshot \u003d db.snapshot_get(context, id)"},{"line_number":143,"context_line":"        return cls._from_db_object(context, cls(context), db_snapshot,"},{"line_number":144,"context_line":"                                   expected_attrs\u003d[\u0027metadata\u0027, \u0027admin_metadata\u0027])"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @base.remotable"},{"line_number":147,"context_line":"    def create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af86dd1_c7e7223f","line":144,"updated":"2015-06-12 15:24:15.000000000","message":"Is it necessary to automatically load the admin_metadata every time a snapshot is loaded?  Not sure of the reason.  If it is not needed to load every time, then making it lazy-loaded looks fine.","commit_id":"1a16e96de1c765f1a24ca205e9d44c630ff6f053"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"a2b2ab1741d3664977a45f588fbcfcb7d67be5e4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def get_by_id(cls, context, id):"},{"line_number":142,"context_line":"        db_snapshot \u003d db.snapshot_get(context, id)"},{"line_number":143,"context_line":"        return cls._from_db_object(context, cls(context), db_snapshot,"},{"line_number":144,"context_line":"                                   expected_attrs\u003d[\u0027metadata\u0027, \u0027admin_metadata\u0027])"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @base.remotable"},{"line_number":147,"context_line":"    def create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_727364b2","line":144,"in_reply_to":"1af86dd1_c7e7223f","updated":"2015-06-15 07:56:20.000000000","message":"Done","commit_id":"1a16e96de1c765f1a24ca205e9d44c630ff6f053"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"f9a3eae512bd3a178d6427b4b3e434752dfeb02c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        snapshots \u003d db.snapshot_get_all(context)"},{"line_number":248,"context_line":"        return base.obj_make_list(context, cls(), objects.Snapshot,"},{"line_number":249,"context_line":"                                  snapshots,"},{"line_number":250,"context_line":"                                  expected_attrs\u003d[\u0027metadata\u0027, \u0027admin_metadata\u0027])"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @base.remotable_classmethod"},{"line_number":253,"context_line":"    def get_by_host(cls, context, host, filters\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af86dd1_a7e4263b","line":250,"updated":"2015-06-12 15:24:15.000000000","message":"Ditto","commit_id":"1a16e96de1c765f1a24ca205e9d44c630ff6f053"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"a2b2ab1741d3664977a45f588fbcfcb7d67be5e4","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        snapshots \u003d db.snapshot_get_all(context)"},{"line_number":248,"context_line":"        return base.obj_make_list(context, cls(), objects.Snapshot,"},{"line_number":249,"context_line":"                                  snapshots,"},{"line_number":250,"context_line":"                                  expected_attrs\u003d[\u0027metadata\u0027, \u0027admin_metadata\u0027])"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @base.remotable_classmethod"},{"line_number":253,"context_line":"    def get_by_host(cls, context, host, filters\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_32663cee","line":250,"in_reply_to":"1af86dd1_a7e4263b","updated":"2015-06-15 07:56:20.000000000","message":"Done","commit_id":"1a16e96de1c765f1a24ca205e9d44c630ff6f053"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        if \u0027metadata\u0027 in self and self.metadata !\u003d self._orig_metadata:"},{"line_number":103,"context_line":"            changes.add(\u0027metadata\u0027)"},{"line_number":104,"context_line":"        if \u0027admin_metadata\u0027 in self and \\"},{"line_number":105,"context_line":"                self.admin_metadata !\u003d self._orig_admin_metadata:"},{"line_number":106,"context_line":"            changes.add(\u0027admin_metadata\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return changes"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_1d919999","line":105,"updated":"2015-06-16 07:01:21.000000000","message":"Please use (\u0027admin_metadata\u0027 in self and self.admin_metadata !\u003d self._orig_admin_metadata) to avoid \\","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        if \u0027metadata\u0027 in self and self.metadata !\u003d self._orig_metadata:"},{"line_number":103,"context_line":"            changes.add(\u0027metadata\u0027)"},{"line_number":104,"context_line":"        if \u0027admin_metadata\u0027 in self and \\"},{"line_number":105,"context_line":"                self.admin_metadata !\u003d self._orig_admin_metadata:"},{"line_number":106,"context_line":"            changes.add(\u0027admin_metadata\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return changes"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_14d13623","line":105,"in_reply_to":"fa32b979_1d919999","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class Snapshot(base.CinderPersistentObject, base.CinderObject,"},{"line_number":35,"context_line":"               base.CinderObjectDictCompat):"},{"line_number":36,"context_line":"    # Version 1.0: Initial version"},{"line_number":37,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    fields \u003d {"},{"line_number":40,"context_line":"        \u0027id\u0027: fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_4e5a82f3","line":37,"updated":"2015-06-18 15:01:32.000000000","message":"Not sure, but should there be a description of the version here since you have a version number?","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class Snapshot(base.CinderPersistentObject, base.CinderObject,"},{"line_number":35,"context_line":"               base.CinderObjectDictCompat):"},{"line_number":36,"context_line":"    # Version 1.0: Initial version"},{"line_number":37,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    fields \u003d {"},{"line_number":40,"context_line":"        \u0027id\u0027: fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_5ab620dd","line":37,"in_reply_to":"fa32b979_4e5a82f3","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"2c1f9179d4e0f905a0779adfbd2c8b8f5d83e1f6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                                   if \u0027metadata\u0027 in self else {})"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _reset_admin_metadata_tracking(self, fields\u003dNone):"},{"line_number":96,"context_line":"        if fields is None or \u0027admin_metadata\u0027 in fields:"},{"line_number":97,"context_line":"            self._orig_admin_metadata \u003d (dict(self.admin_metadata)"},{"line_number":98,"context_line":"                                         if \u0027admin_metadata\u0027 in self else {})"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_a05d9d7a","line":96,"updated":"2015-06-17 12:05:25.000000000","message":"You should combine this method into _reset_metadata_tracking(), so that it resets all types of metadata.","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                                   if \u0027metadata\u0027 in self else {})"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _reset_admin_metadata_tracking(self, fields\u003dNone):"},{"line_number":96,"context_line":"        if fields is None or \u0027admin_metadata\u0027 in fields:"},{"line_number":97,"context_line":"            self._orig_admin_metadata \u003d (dict(self.admin_metadata)"},{"line_number":98,"context_line":"                                         if \u0027admin_metadata\u0027 in self else {})"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_1f416a0b","line":96,"in_reply_to":"fa32b979_a05d9d7a","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"2c1f9179d4e0f905a0779adfbd2c8b8f5d83e1f6","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if not md_was_changed:"},{"line_number":219,"context_line":"            self.obj_reset_changes([\u0027metadata\u0027])"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def delete_admin_metadata_key(self, context, key):"},{"line_number":222,"context_line":"        db.snapshot_admin_metadata_delete(context, self.id, key)"},{"line_number":223,"context_line":"        md_was_changed \u003d \u0027admin_metadata\u0027 in self.obj_what_changed()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_a0eb5d77","line":221,"updated":"2015-06-17 12:05:25.000000000","message":"Please add unit tests for the changes you created in the snapshot object in cinder/tests/unit/objects/test_snapshot.py","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if not md_was_changed:"},{"line_number":219,"context_line":"            self.obj_reset_changes([\u0027metadata\u0027])"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def delete_admin_metadata_key(self, context, key):"},{"line_number":222,"context_line":"        db.snapshot_admin_metadata_delete(context, self.id, key)"},{"line_number":223,"context_line":"        md_was_changed \u003d \u0027admin_metadata\u0027 in self.obj_what_changed()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_ba9acc6c","line":221,"in_reply_to":"fa32b979_a0eb5d77","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"}],"cinder/tests/unit/api/contrib/test_snapshot_actions.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":64,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    # Tests for liberty Nova and beyond"},{"line_number":67,"context_line":"    def test_update_snapshot_status(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_b68b7f1e","line":64,"updated":"2015-05-22 15:16:23.000000000","message":"Here, the order of parameters is wrong. This should be (expected, actual)\n\nSo,\n\nself.assertEqual(400, res.status_int)","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        req.body \u003d jsonutils.dumps(body)"},{"line_number":83,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":86,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_update_snapshot_status_no_status(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_768187fa","line":85,"updated":"2015-05-22 15:16:23.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":86,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_update_snapshot_status_no_status(self):"},{"line_number":89,"context_line":"        self.stubs.Set(db, \u0027snapshot_get\u0027, stub_snapshot_get)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_3680aff4","line":86,"updated":"2015-05-22 15:16:23.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":106,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_update_snapshot_status_no_compute_snapshot_status(self):"},{"line_number":109,"context_line":"        self.stubs.Set(db, \u0027snapshot_get\u0027, stub_snapshot_get)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_167b7329","line":106,"updated":"2015-05-22 15:16:23.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":126,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def test_update_snapshot_status_invalid_db_status(self):"},{"line_number":129,"context_line":"        self.stubs.Set(db, \u0027snapshot_get\u0027, stub_snapshot_get)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_f6757731","line":126,"updated":"2015-05-22 15:16:23.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":147,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_update_snapshot_status_invalid_state_transition(self):"},{"line_number":150,"context_line":"        self.stubs.Set(db, \u0027snapshot_get\u0027, stub_snapshot_get)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_d6703b42","line":147,"updated":"2015-05-22 15:16:23.000000000","message":"Same as above.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":86,"context_line":"            self.assertEqual(res.status_int, 202)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_update_snapshot_status_invalid_status_compat(self):"},{"line_number":89,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_bd442d1b","line":86,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":86,"context_line":"            self.assertEqual(res.status_int, 202)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_update_snapshot_status_invalid_status_compat(self):"},{"line_number":89,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_74b3e2e9","line":86,"in_reply_to":"fa32b979_bd442d1b","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":102,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_update_snapshot_status_without_status_compat(self):"},{"line_number":105,"context_line":"        body \u003d {\u0027os-update_snapshot_status\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_3d51fdd8","line":102,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":102,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_update_snapshot_status_without_status_compat(self):"},{"line_number":105,"context_line":"        body \u003d {\u0027os-update_snapshot_status\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_14cdb665","line":102,"in_reply_to":"fa32b979_3d51fdd8","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":112,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # Tests for liberty Nova and beyond"},{"line_number":115,"context_line":"    def test_update_snapshot_status(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_dd5ed1e8","line":112,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":112,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # Tests for liberty Nova and beyond"},{"line_number":115,"context_line":"    def test_update_snapshot_status(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_34ca3a4f","line":112,"in_reply_to":"fa32b979_dd5ed1e8","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":197,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_update_snapshot_status_invalid_db_status(self):"},{"line_number":200,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_fd0875db","line":197,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":197,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_update_snapshot_status_invalid_db_status(self):"},{"line_number":200,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_14d4d6e9","line":197,"in_reply_to":"fa32b979_fd0875db","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":219,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_update_snapshot_status_invalid_state_transition(self):"},{"line_number":222,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_7df545c9","line":219,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":219,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_update_snapshot_status_invalid_state_transition(self):"},{"line_number":222,"context_line":"        s \u003d self._create_fake_snapshot_obj()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_34d1dafa","line":219,"in_reply_to":"fa32b979_7df545c9","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"4f4c15159f8d3dbb23cd93b00435d1cffab7d1b5","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":241,"context_line":"            self.assertEqual(res.status_int, 400)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_dd2c914c","line":241,"updated":"2015-06-16 07:01:21.000000000","message":"expected value and then the actual value for assertEqual.","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"2a66198da8e9de08e87e14addec5cd7194c6724c","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            req.headers[\"content-type\"] \u003d \"application/json\""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            res \u003d req.get_response(fakes.wsgi_app())"},{"line_number":241,"context_line":"            self.assertEqual(res.status_int, 400)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_d4d98e23","line":241,"in_reply_to":"fa32b979_dd2c914c","updated":"2015-06-17 09:21:37.000000000","message":"Done","commit_id":"ba6e6cb2783e9fb9089d31ef735c7d914287e3e3"}],"cinder/tests/unit/test_glusterfs.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"2c1f9179d4e0f905a0779adfbd2c8b8f5d83e1f6","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027admin_metadata\u0027: admin_metadata or {},"},{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":"        ctxt \u003d context.RequestContext(\u0027fake_user\u0027, \u0027fake_project\u0027)"},{"line_number":104,"context_line":"        snap_obj \u003d objects.Snapshot(ctxt, **kwargs)"},{"line_number":105,"context_line":"        snap_obj.update \u003d mock.Mock()"},{"line_number":106,"context_line":"        snap_obj.save \u003d mock.Mock()"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_208f4dcd","line":104,"updated":"2015-06-17 12:05:25.000000000","message":"Can you use fake_snapshot.fake_snapshot_obj()?  You can send the custom fields, i.e. id, metadata, progress, and admin_metadata to it in the arguments.","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027admin_metadata\u0027: admin_metadata or {},"},{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":"        ctxt \u003d context.RequestContext(\u0027fake_user\u0027, \u0027fake_project\u0027)"},{"line_number":104,"context_line":"        snap_obj \u003d objects.Snapshot(ctxt, **kwargs)"},{"line_number":105,"context_line":"        snap_obj.update \u003d mock.Mock()"},{"line_number":106,"context_line":"        snap_obj.save \u003d mock.Mock()"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_b2ebd0db","line":104,"in_reply_to":"fa32b979_208f4dcd","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"}],"cinder/tests/unit/test_remotefs.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        s[\u0027status\u0027] \u003d \u0027deleting\u0027"},{"line_number":256,"context_line":"        s[\u0027progress\u0027] \u003d \u002790%\u0027"},{"line_number":257,"context_line":"        db.snapshot_get \u003d mock.Mock(return_value\u003ds)"},{"line_number":258,"context_line":"        db.snapshot_admin_metadata_get \u003d mock.Mock(return_value\u003dsam)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        delete_info \u003d {"},{"line_number":261,"context_line":"            \u0027active_file\u0027: fake_snapshot_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_69af687d","line":258,"updated":"2015-05-22 15:16:23.000000000","message":"As test_glusterfs.py is also testing the same code, we also need to mock \"snapshot_admin_metadata_get\" there as well.\n\nBecause of this some test cases are failing in test_glusterfs.py.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"ba92738a5d138cd7fb6405b32ee9d9514bff0cad","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                self._FAKE_CONTEXT, self._FAKE_SNAPSHOT[\u0027id\u0027], \u0027id\u0027)]"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        self.assertEqual(db.snapshot_admin_metadata_delete.mock_calls,"},{"line_number":407,"context_line":"                         exp_calls)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        expected_snap_info \u003d {\u0027active\u0027: fake_snapshot_name}"},{"line_number":410,"context_line":"        self._driver._write_info_file.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_76af477d","line":407,"updated":"2015-05-22 15:16:23.000000000","message":"Please change the order of parameters.","commit_id":"6c80dfd5df9698c4bfc17ba367675b07eb41b3da"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"2c1f9179d4e0f905a0779adfbd2c8b8f5d83e1f6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            \u0027metadata\u0027: metadata or {},"},{"line_number":77,"context_line":"            \u0027admin_metadata\u0027: admin_metadata or {},"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":"        snap_obj \u003d objects.Snapshot(context\u003dself._FAKE_CONTEXT, **kwargs)"},{"line_number":80,"context_line":"        snap_obj.update \u003d mock.Mock()"},{"line_number":81,"context_line":"        snap_obj.save \u003d mock.Mock()"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_806bb9f0","line":79,"updated":"2015-06-17 12:05:25.000000000","message":"Please use fake_snapshot.fake_snapshot_obj().","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            \u0027metadata\u0027: metadata or {},"},{"line_number":77,"context_line":"            \u0027admin_metadata\u0027: admin_metadata or {},"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":"        snap_obj \u003d objects.Snapshot(context\u003dself._FAKE_CONTEXT, **kwargs)"},{"line_number":80,"context_line":"        snap_obj.update \u003d mock.Mock()"},{"line_number":81,"context_line":"        snap_obj.save \u003d mock.Mock()"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_58006501","line":79,"in_reply_to":"fa32b979_806bb9f0","updated":"2015-06-24 07:40:33.000000000","message":"Done","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"d4b9deec5a78f760b8546a87d114f56610cd81f5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                                             self._FAKE_SNAPSHOT,"},{"line_number":300,"context_line":"                                             delete_info)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        self.assertEqual(snap_get.call_count, 2)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        exp_info \u003d dict(delete_info)"},{"line_number":305,"context_line":"        exp_info.update({\u0027file_to_merge\u0027: None,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_e4ccde8a","line":302,"updated":"2015-08-06 23:11:42.000000000","message":"Argument order for assertEqual should be reversed.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"d4b9deec5a78f760b8546a87d114f56610cd81f5","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                                             self._FAKE_SNAPSHOT,"},{"line_number":405,"context_line":"                                             delete_info)"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        self.assertEqual(snap_get.call_count, 2)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        exp_info \u003d dict(delete_info)"},{"line_number":410,"context_line":"        exp_info.update({\u0027file_to_merge\u0027: None,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_64a76ebd","line":407,"updated":"2015-08-06 23:11:42.000000000","message":"Argument order for assertEqual should be reversed.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"d4b9deec5a78f760b8546a87d114f56610cd81f5","unresolved":false,"context_lines":[{"line_number":583,"context_line":"            fake_snapshot[\u0027context\u0027], fake_snapshot[\u0027volume_id\u0027],"},{"line_number":584,"context_line":"            exp_connection_info)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"        self.assertEqual(snap_get.call_count, 1)"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    @mock.patch(\u0027cinder.objects.Snapshot.get_by_id\u0027)"},{"line_number":589,"context_line":"    def test_create_snapshot_online_compat_error(self, snap_get):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_e4937e59","line":586,"updated":"2015-08-06 23:11:42.000000000","message":"Argument order for assertEqual should be reversed.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"d4b9deec5a78f760b8546a87d114f56610cd81f5","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            fake_snapshot[\u0027context\u0027], fake_snapshot[\u0027volume_id\u0027],"},{"line_number":631,"context_line":"            exp_connection_info)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        self.assertEqual(snap_get.call_count, 1)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    @mock.patch(\u0027cinder.objects.Snapshot.get_by_id\u0027)"},{"line_number":636,"context_line":"    def test_create_snapshot_online_error(self, snap_get):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_a499f67a","line":633,"updated":"2015-08-06 23:11:42.000000000","message":"Argument order for assertEqual should be reversed.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f1af5122b0c1269554f5e4d68af581baadabe04","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"                        break"},{"line_number":1281,"context_line":"                except KeyError:"},{"line_number":1282,"context_line":"                    # Either sam is not yet updated or we are having old nova"},{"line_number":1283,"context_line":"                    # NOTE(deepakcs): Remove in \u0027M\u0027 release"},{"line_number":1284,"context_line":"                    if s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027:"},{"line_number":1285,"context_line":"                        LOG.info(\"DPKS: In s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027\")"},{"line_number":1286,"context_line":"                        # Nova tasks completed successfully"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_4fe4150c","line":1283,"updated":"2015-05-03 19:39:03.000000000","message":"Should be TODO","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"                        break"},{"line_number":1281,"context_line":"                except KeyError:"},{"line_number":1282,"context_line":"                    # Either sam is not yet updated or we are having old nova"},{"line_number":1283,"context_line":"                    # NOTE(deepakcs): Remove in \u0027M\u0027 release"},{"line_number":1284,"context_line":"                    if s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027:"},{"line_number":1285,"context_line":"                        LOG.info(\"DPKS: In s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027\")"},{"line_number":1286,"context_line":"                        # Nova tasks completed successfully"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_efa8a1dd","line":1283,"in_reply_to":"3acd31a7_4fe4150c","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        # Loop and wait for result"},{"line_number":1367,"context_line":"        # Nova will call Cinderclient to update the status in the database"},{"line_number":1368,"context_line":"        # Old Method: An update of progress \u003d \u002790%\u0027 means that Nova is done"},{"line_number":1369,"context_line":"        # New Method: Uses the snapshot admin metadata compute_snapshot_status field"},{"line_number":1370,"context_line":"        seconds_elapsed \u003d 0"},{"line_number":1371,"context_line":"        increment \u003d 1"},{"line_number":1372,"context_line":"        timeout \u003d 7200"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_71c4af3f","line":1369,"updated":"2015-04-27 17:45:13.000000000","message":"Would be less confusing to describe this as using the new field, and falling back to the \u002790%\u0027 method if the new field isn\u0027t present.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        # Loop and wait for result"},{"line_number":1367,"context_line":"        # Nova will call Cinderclient to update the status in the database"},{"line_number":1368,"context_line":"        # Old Method: An update of progress \u003d \u002790%\u0027 means that Nova is done"},{"line_number":1369,"context_line":"        # New Method: Uses the snapshot admin metadata compute_snapshot_status field"},{"line_number":1370,"context_line":"        seconds_elapsed \u003d 0"},{"line_number":1371,"context_line":"        increment \u003d 1"},{"line_number":1372,"context_line":"        timeout \u003d 7200"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_8f4a4dc4","line":1369,"in_reply_to":"7ad32947_71c4af3f","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"            db.snapshot_admin_metadata_delete(context, snapshot[\u0027id\u0027], \u0027compute_snapshot_status\u0027)"},{"line_number":1432,"context_line":"        else: "},{"line_number":1433,"context_line":"            # Old Nova support. Remove this in \u0027M\u0027 release"},{"line_number":1434,"context_line":"            # Determime file_to_delete based on our understanding of what Nova does"},{"line_number":1435,"context_line":"            # Fixup snap_info accordingly"},{"line_number":1436,"context_line":"            if info[\u0027active_file\u0027] \u003d\u003d info[\u0027snapshot_file\u0027]:"},{"line_number":1437,"context_line":"                # blockRebase/Pull base into active"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_71202ff8","line":1434,"updated":"2015-04-27 17:45:13.000000000","message":"Determime typo","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"            db.snapshot_admin_metadata_delete(context, snapshot[\u0027id\u0027], \u0027compute_snapshot_status\u0027)"},{"line_number":1432,"context_line":"        else: "},{"line_number":1433,"context_line":"            # Old Nova support. Remove this in \u0027M\u0027 release"},{"line_number":1434,"context_line":"            # Determime file_to_delete based on our understanding of what Nova does"},{"line_number":1435,"context_line":"            # Fixup snap_info accordingly"},{"line_number":1436,"context_line":"            if info[\u0027active_file\u0027] \u003d\u003d info[\u0027snapshot_file\u0027]:"},{"line_number":1437,"context_line":"                # blockRebase/Pull base into active"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_2f7d79e7","line":1434,"in_reply_to":"7ad32947_71202ff8","updated":"2015-05-07 11:56:54.000000000","message":"Done","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7026bf3e0feb3ce23614109131b8c0d405450469","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"            # Old Nova support. Remove this in \u0027M\u0027 release"},{"line_number":1434,"context_line":"            # Determime file_to_delete based on our understanding of what Nova does"},{"line_number":1435,"context_line":"            # Fixup snap_info accordingly"},{"line_number":1436,"context_line":"            if info[\u0027active_file\u0027] \u003d\u003d info[\u0027snapshot_file\u0027]:"},{"line_number":1437,"context_line":"                # blockRebase/Pull base into active"},{"line_number":1438,"context_line":"                # info[\u0027base\u0027] \u003d\u003e snapshot_file"},{"line_number":1439,"context_line":"                file_to_delete \u003d info[\u0027base_file\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_f182ffc7","line":1436,"updated":"2015-04-27 17:45:13.000000000","message":"This should be unified with the snap_info update case(s) above rather than split into old/new sections, if possible.","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4134f30e5f0b17e362a1a5ccde20e9e25d860473","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"            # Old Nova support. Remove this in \u0027M\u0027 release"},{"line_number":1434,"context_line":"            # Determime file_to_delete based on our understanding of what Nova does"},{"line_number":1435,"context_line":"            # Fixup snap_info accordingly"},{"line_number":1436,"context_line":"            if info[\u0027active_file\u0027] \u003d\u003d info[\u0027snapshot_file\u0027]:"},{"line_number":1437,"context_line":"                # blockRebase/Pull base into active"},{"line_number":1438,"context_line":"                # info[\u0027base\u0027] \u003d\u003e snapshot_file"},{"line_number":1439,"context_line":"                file_to_delete \u003d info[\u0027base_file\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_aa92979d","line":1436,"in_reply_to":"7ad32947_f182ffc7","updated":"2015-05-07 11:56:54.000000000","message":"I tried, but was hitting some corner case so it was best to keep them separate. Its better that ways since when we remove support for Old Nova , we can simply delete the else part and we should be good to go. Also the way we determine whether Nova did a blockRebase is different for the 2 cases which is needed for updating the info file","commit_id":"256278cebbe0944d368cca7f5292ceaeffa7135a"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":995,"context_line":"                    break"},{"line_number":996,"context_line":"            if base_id is None:"},{"line_number":997,"context_line":"                # This means we are deleting the oldest snapshot"},{"line_number":998,"context_line":"                LOG.debug(\u0027No %(base_id)s found for %(file)s\u0027,"},{"line_number":999,"context_line":"                          {\u0027base_id\u0027: \u0027base_id\u0027, \u0027file\u0027: snapshot_file})"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"            online_delete_info \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_a9ac688c","line":998,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":995,"context_line":"                    break"},{"line_number":996,"context_line":"            if base_id is None:"},{"line_number":997,"context_line":"                # This means we are deleting the oldest snapshot"},{"line_number":998,"context_line":"                LOG.debug(\u0027No %(base_id)s found for %(file)s\u0027,"},{"line_number":999,"context_line":"                          {\u0027base_id\u0027: \u0027base_id\u0027, \u0027file\u0027: snapshot_file})"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"            online_delete_info \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_580625cf","line":998,"in_reply_to":"fa32b979_a9ac688c","updated":"2015-06-24 07:40:33.000000000","message":"Change is not part of the patch","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"                connection_info)"},{"line_number":1303,"context_line":"            LOG.debug(\u0027nova call result: %s\u0027, result)"},{"line_number":1304,"context_line":"        except Exception:"},{"line_number":1305,"context_line":"            LOG.exception(_LE(\u0027Call to Nova to create snapshot failed\u0027))"},{"line_number":1306,"context_line":"            raise"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"        # Loop and wait for result"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_e9cd9066","line":1305,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"                connection_info)"},{"line_number":1303,"context_line":"            LOG.debug(\u0027nova call result: %s\u0027, result)"},{"line_number":1304,"context_line":"        except Exception:"},{"line_number":1305,"context_line":"            LOG.exception(_LE(\u0027Call to Nova to create snapshot failed\u0027))"},{"line_number":1306,"context_line":"            raise"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"        # Loop and wait for result"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_98690d8f","line":1305,"in_reply_to":"fa32b979_e9cd9066","updated":"2015-06-24 07:40:33.000000000","message":"Change is not part of the patch","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f7bddb3c65c7466e857c3e7df5ec7b72d9fa16ab","unresolved":false,"context_lines":[{"line_number":1346,"context_line":"                        \u0027while creating snapshot.\u0027)"},{"line_number":1347,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"            LOG.debug(\u0027Status of snapshot %(id)s is now %(status)s\u0027,"},{"line_number":1350,"context_line":"                      {\u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":1351,"context_line":"                       \u0027status\u0027: s.status})"},{"line_number":1352,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_290b787e","line":1349,"updated":"2015-06-18 15:01:32.000000000","message":"\".\" at EOL","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"98215473eb88b3181cffd92bb07eafe427dd57a0","unresolved":false,"context_lines":[{"line_number":1346,"context_line":"                        \u0027while creating snapshot.\u0027)"},{"line_number":1347,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"            LOG.debug(\u0027Status of snapshot %(id)s is now %(status)s\u0027,"},{"line_number":1350,"context_line":"                      {\u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":1351,"context_line":"                       \u0027status\u0027: s.status})"},{"line_number":1352,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_786449b8","line":1349,"in_reply_to":"fa32b979_290b787e","updated":"2015-06-24 07:40:33.000000000","message":"Change is not part of the patch","commit_id":"0be0e5db48847284a3834c1bd904646b56599968"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"af6c05f01251f51a721031fbbe0242a68c765b8f","unresolved":false,"context_lines":[{"line_number":1391,"context_line":"                           \u0027merge_target_file\u0027: info[\u0027base_file\u0027]}"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        info.update(delete_info)"},{"line_number":1394,"context_line":"        # Preserve compatibility with pre-liberty Nova - end"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"        try:"},{"line_number":1397,"context_line":"            self._nova.delete_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_7851a535","line":1394,"updated":"2015-07-16 11:54:48.000000000","message":"Comments like this really indicate that this needs to be split into smaller methods.","commit_id":"0043c0c7422567ff7041874dd8937e38c7b44c0b"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"1cc6a8437156d65ca10813261414c15e8b8b6b6a","unresolved":false,"context_lines":[{"line_number":1391,"context_line":"                           \u0027merge_target_file\u0027: info[\u0027base_file\u0027]}"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        info.update(delete_info)"},{"line_number":1394,"context_line":"        # Preserve compatibility with pre-liberty Nova - end"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"        try:"},{"line_number":1397,"context_line":"            self._nova.delete_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_1c9e0307","line":1394,"in_reply_to":"3a50d1a3_5b8acdc0","updated":"2015-07-23 06:46:01.000000000","message":"Done","commit_id":"0043c0c7422567ff7041874dd8937e38c7b44c0b"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"9bec8c36c23ab6779c3a800747e93df77d719979","unresolved":false,"context_lines":[{"line_number":1391,"context_line":"                           \u0027merge_target_file\u0027: info[\u0027base_file\u0027]}"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        info.update(delete_info)"},{"line_number":1394,"context_line":"        # Preserve compatibility with pre-liberty Nova - end"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"        try:"},{"line_number":1397,"context_line":"            self._nova.delete_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_5b8acdc0","line":1394,"in_reply_to":"9a41bdd9_7851a535","updated":"2015-07-21 09:41:51.000000000","message":"Forgot about this in patch set #13 which I just posted.\nWill do this in next patchset (#14)","commit_id":"0043c0c7422567ff7041874dd8937e38c7b44c0b"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"1eb265620800a8af1e0fe3b92321c8b1fe9d32b8","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"        seconds_elapsed \u003d 0"},{"line_number":1312,"context_line":"        increment \u003d 1"},{"line_number":1313,"context_line":"        timeout \u003d 600"},{"line_number":1314,"context_line":"        sam \u003d {}"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"        while True:"},{"line_number":1317,"context_line":"            s \u003d objects.Snapshot.get_by_id(context.elevated(), snapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_afb44982","line":1314,"updated":"2015-08-21 18:39:22.000000000","message":"in general i would recommend a more descriptive variable name than \u0027sam\u0027","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"1eb265620800a8af1e0fe3b92321c8b1fe9d32b8","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"            # compute_snapshot_status isn\u0027t present."},{"line_number":1323,"context_line":"            if s.status \u003d\u003d \u0027creating\u0027:"},{"line_number":1324,"context_line":"                if \u0027compute_snapshot_status\u0027 in sam:"},{"line_number":1325,"context_line":"                    if sam[\u0027compute_snapshot_status\u0027] \u003d\u003d \\"},{"line_number":1326,"context_line":"                            \u0027creating_compute_complete\u0027:"},{"line_number":1327,"context_line":"                        # Nova tasks completed successfully"},{"line_number":1328,"context_line":"                        break"},{"line_number":1329,"context_line":"                    elif sam[\u0027compute_snapshot_status\u0027] \u003d\u003d \\"},{"line_number":1330,"context_line":"                            \u0027creating_compute_error\u0027:"},{"line_number":1331,"context_line":"                        # Nova tasks failed, raise excp"},{"line_number":1332,"context_line":"                        msg \u003d _(\u0027Nova returned \"error\" status while creating \u0027"},{"line_number":1333,"context_line":"                                \u0027snapshot.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_af420967","line":1330,"range":{"start_line":1325,"start_character":20,"end_line":1330,"end_character":53},"updated":"2015-08-21 18:39:22.000000000","message":"switch to using ( ) instead of \\ for multiline conditions like these","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"15a388dbe0d634052a3869970dd49341ca3a7143","unresolved":false,"context_lines":[{"line_number":1329,"context_line":"                    elif sam[\u0027compute_snapshot_status\u0027] \u003d\u003d \\"},{"line_number":1330,"context_line":"                            \u0027creating_compute_error\u0027:"},{"line_number":1331,"context_line":"                        # Nova tasks failed, raise excp"},{"line_number":1332,"context_line":"                        msg \u003d _(\u0027Nova returned \"error\" status while creating \u0027"},{"line_number":1333,"context_line":"                                \u0027snapshot.\u0027)"},{"line_number":1334,"context_line":"                        raise exception.RemoteFSException(msg)"},{"line_number":1335,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_1d7c4c71","line":1332,"updated":"2015-08-24 15:37:46.000000000","message":"I think this would be better if we added the snapshot ID in question.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"15a388dbe0d634052a3869970dd49341ca3a7143","unresolved":false,"context_lines":[{"line_number":1430,"context_line":"            # isn\u0027t present."},{"line_number":1431,"context_line":"            if s.status \u003d\u003d \u0027deleting\u0027:"},{"line_number":1432,"context_line":"                if \u0027compute_snapshot_status\u0027 in sam:"},{"line_number":1433,"context_line":"                    if sam[\u0027compute_snapshot_status\u0027] \u003d\u003d \\"},{"line_number":1434,"context_line":"                            \u0027deleting_compute_complete\u0027:"},{"line_number":1435,"context_line":"                        # Nova tasks completed successfully"},{"line_number":1436,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_3d44b019","line":1433,"updated":"2015-08-24 15:37:46.000000000","message":"Please don\u0027t use \\ if it can be avoided.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"15a388dbe0d634052a3869970dd49341ca3a7143","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"                raise exception.RemoteFSException(msg)"},{"line_number":1476,"context_line":""},{"line_number":1477,"context_line":"    def _delete_snapshot_online_post(self, context, snapshot, info):"},{"line_number":1478,"context_line":"        # Post processing after successfull online snapshot delete"},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        # Read info file"},{"line_number":1481,"context_line":"        info_path \u003d self._local_path_volume(snapshot[\u0027volume\u0027]) + \u0027.info\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_9d1a9c16","line":1478,"updated":"2015-08-24 15:37:46.000000000","message":"Should use \"\"\" to follow the normal commenting conventions.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"15a388dbe0d634052a3869970dd49341ca3a7143","unresolved":false,"context_lines":[{"line_number":1538,"context_line":"        try:"},{"line_number":1539,"context_line":"            self._do_delete_snapshot_online(context, snapshot, info)"},{"line_number":1540,"context_line":"        except Exception:"},{"line_number":1541,"context_line":"            LOG.exception(_LE(\u0027Error during online snapshot delete.\u0027))"},{"line_number":1542,"context_line":"            raise"},{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"        self._delete_snapshot_online_post(context, snapshot, info)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_dde7b410","line":1541,"updated":"2015-08-24 15:37:46.000000000","message":"Include snapshot ID here.","commit_id":"e62667cc42cd3ad59967d734ba59dd61b00801ea"}]}
