)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"eddd82f23c8355d298a01c32fd96ed826e097333","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Remove db access in VNX driver\u0027s functions:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* delete_consistencygroup"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ifee0cdcaba41d39500c1ce7aef0d15b2737e6a20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a26ad4f_4aabcc1d","line":12,"updated":"2015-10-29 19:56:39.000000000","message":"Can you add to this commit a little more about why accessing the db is bad and why this is the solution?","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"723d52a62ebe4eb809c310cf579d6a86c2f946bc","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Remove db access in VNX driver\u0027s functions:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* delete_consistencygroup"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ifee0cdcaba41d39500c1ce7aef0d15b2737e6a20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a26ad4f_3946e3bf","line":12,"in_reply_to":"1a26ad4f_4aabcc1d","updated":"2015-10-30 04:00:39.000000000","message":"Done","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b9c94881016139de5f405ff346b740d7427d519f","unresolved":false,"context_lines":[{"line_number":2753,"context_line":""},{"line_number":2754,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2755,"context_line":"        \"\"\"Creates a cgsnapshot (snap group).\"\"\""},{"line_number":2756,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":2757,"context_line":"        snapshots \u003d objects.SnapshotList().get_all_for_cgsnapshot("},{"line_number":2758,"context_line":"            context, cgsnapshot_id)"},{"line_number":2759,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_c625e75c","line":2756,"updated":"2015-10-27 15:14:17.000000000","message":"This should be changed as well. snapshots are now passed into the create_cgsnapshot. There is no need to read them like this anymore.","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"723d52a62ebe4eb809c310cf579d6a86c2f946bc","unresolved":false,"context_lines":[{"line_number":2753,"context_line":""},{"line_number":2754,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2755,"context_line":"        \"\"\"Creates a cgsnapshot (snap group).\"\"\""},{"line_number":2756,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":2757,"context_line":"        snapshots \u003d objects.SnapshotList().get_all_for_cgsnapshot("},{"line_number":2758,"context_line":"            context, cgsnapshot_id)"},{"line_number":2759,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_793c5b2f","line":2756,"in_reply_to":"1a26ad4f_c625e75c","updated":"2015-10-30 04:00:39.000000000","message":"Done","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b9c94881016139de5f405ff346b740d7427d519f","unresolved":false,"context_lines":[{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    def delete_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2780,"context_line":"        \"\"\"Deletes a cgsnapshot (snap group).\"\"\""},{"line_number":2781,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":2782,"context_line":"        snapshots \u003d objects.SnapshotList().get_all_for_cgsnapshot("},{"line_number":2783,"context_line":"            context, cgsnapshot_id)"},{"line_number":2784,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_461a3719","line":2781,"updated":"2015-10-27 15:14:17.000000000","message":"Same. No need for this.","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"723d52a62ebe4eb809c310cf579d6a86c2f946bc","unresolved":false,"context_lines":[{"line_number":2778,"context_line":""},{"line_number":2779,"context_line":"    def delete_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2780,"context_line":"        \"\"\"Deletes a cgsnapshot (snap group).\"\"\""},{"line_number":2781,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":2782,"context_line":"        snapshots \u003d objects.SnapshotList().get_all_for_cgsnapshot("},{"line_number":2783,"context_line":"            context, cgsnapshot_id)"},{"line_number":2784,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_194be7ca","line":2781,"in_reply_to":"1a26ad4f_461a3719","updated":"2015-10-30 04:00:39.000000000","message":"Done","commit_id":"801c3fdcc0dc4516333149f150d41908735a7bd6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"db54019eba9c5cca7bd8a3b7910c10e595fd0d19","unresolved":false,"context_lines":[{"line_number":2701,"context_line":"        except Exception:"},{"line_number":2702,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2703,"context_line":"                LOG.error(_LE(\u0027Delete consistency group %s failed.\u0027), cg_name)"},{"line_number":2704,"context_line":""},{"line_number":2705,"context_line":"        for volume_ref in volumes:"},{"line_number":2706,"context_line":"            try:"},{"line_number":2707,"context_line":"                self._client.delete_lun(volume_ref[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_1809de2c","line":2704,"updated":"2015-11-17 00:58:17.000000000","message":"Can you create a list of dictionaries, i.e., volumes_model_update, like you did for cgsnapshots functions?  Volumes will become a list of objects when the conversion to versioned objects completes.","commit_id":"66be766231f6ecb63d9b5ce52e004f6c6b10bfb9"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"9cef9d3b2628ff14ae627408d273c68b25f2d9bc","unresolved":false,"context_lines":[{"line_number":2701,"context_line":"        except Exception:"},{"line_number":2702,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2703,"context_line":"                LOG.error(_LE(\u0027Delete consistency group %s failed.\u0027), cg_name)"},{"line_number":2704,"context_line":""},{"line_number":2705,"context_line":"        for volume_ref in volumes:"},{"line_number":2706,"context_line":"            try:"},{"line_number":2707,"context_line":"                self._client.delete_lun(volume_ref[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_33e87ce2","line":2704,"in_reply_to":"ba8a016a_1809de2c","updated":"2015-11-17 05:43:26.000000000","message":"Done","commit_id":"66be766231f6ecb63d9b5ce52e004f6c6b10bfb9"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"16dacabbb3b5a87b11a8e149a737b174a2b3041d","unresolved":false,"context_lines":[{"line_number":3059,"context_line":"                volumes_model_update.append("},{"line_number":3060,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3061,"context_line":"            except Exception:"},{"line_number":3062,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":3063,"context_line":"                volumes_model_update.append("},{"line_number":3064,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3065,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_6e64c1e4","line":3062,"updated":"2015-11-17 15:45:18.000000000","message":"You are still modifying the volume object, which should not be done. Creating a dict with volume updates is enough. Line 3062 should be removed.","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"8c03275108d69cb17579248dad0e5e7b20f8aa4c","unresolved":false,"context_lines":[{"line_number":3059,"context_line":"                volumes_model_update.append("},{"line_number":3060,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3061,"context_line":"            except Exception:"},{"line_number":3062,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":3063,"context_line":"                volumes_model_update.append("},{"line_number":3064,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3065,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_0821409f","line":3062,"in_reply_to":"ba8a016a_29d793ee","updated":"2015-11-26 09:13:13.000000000","message":"Done","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"8c03275108d69cb17579248dad0e5e7b20f8aa4c","unresolved":false,"context_lines":[{"line_number":3059,"context_line":"                volumes_model_update.append("},{"line_number":3060,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3061,"context_line":"            except Exception:"},{"line_number":3062,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":3063,"context_line":"                volumes_model_update.append("},{"line_number":3064,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3065,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_682a4c80","line":3062,"in_reply_to":"ba8a016a_6e64c1e4","updated":"2015-11-26 09:13:13.000000000","message":"Done","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bfbf309064252d2525ecfd80aea79eafd2692387","unresolved":false,"context_lines":[{"line_number":3059,"context_line":"                volumes_model_update.append("},{"line_number":3060,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3061,"context_line":"            except Exception:"},{"line_number":3062,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":3063,"context_line":"                volumes_model_update.append("},{"line_number":3064,"context_line":"                    {\u0027id\u0027: volume_ref[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3065,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_29d793ee","line":3062,"in_reply_to":"ba8a016a_6e64c1e4","updated":"2015-11-17 16:07:14.000000000","message":"Good catch.  Can be changed to model_update[\u0027status\u0027] \u003d \u0027error_deleting\u0027.","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"16dacabbb3b5a87b11a8e149a737b174a2b3041d","unresolved":false,"context_lines":[{"line_number":3142,"context_line":"                snapshots_model_update.append("},{"line_number":3143,"context_line":"                    {\u0027id\u0027: snapshot[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3144,"context_line":"        except Exception:"},{"line_number":3145,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3146,"context_line":"                LOG.error(_LE(\u0027Delete cgsnapshot %s failed.\u0027),"},{"line_number":3147,"context_line":"                          cgsnapshot_id)"},{"line_number":3148,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_ce37edae","line":3145,"updated":"2015-11-17 15:45:18.000000000","message":"do you want/need error_deleting or error state for snapshots like you do when deleting the volumes in delete_consistencygroup?","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"8c03275108d69cb17579248dad0e5e7b20f8aa4c","unresolved":false,"context_lines":[{"line_number":3142,"context_line":"                snapshots_model_update.append("},{"line_number":3143,"context_line":"                    {\u0027id\u0027: snapshot[\u0027id\u0027], \u0027status\u0027: \u0027deleted\u0027})"},{"line_number":3144,"context_line":"        except Exception:"},{"line_number":3145,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3146,"context_line":"                LOG.error(_LE(\u0027Delete cgsnapshot %s failed.\u0027),"},{"line_number":3147,"context_line":"                          cgsnapshot_id)"},{"line_number":3148,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_085940fe","line":3145,"in_reply_to":"ba8a016a_ce37edae","updated":"2015-11-26 09:13:13.000000000","message":"I don\u0027t update the status for snapshots because the snapshots are not deleted one by one here. The volumes are deleted one by one in delete_consistencygroup so we can know which volume is in error state. But we can do it in this place. All snapshots are deleted in one time.","commit_id":"32c65e038c26223bb3b4a27e928594c6b7607e21"}]}
