)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"305e550cbf3ce1b909b1f62ea4aa1048ff679d49","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement Consistency Groups for ONTAP Drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch includes the driver changes necessary for NetApp 7mode and"},{"line_number":10,"context_line":"CDOT backends to support all consistency group functionality."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Alex Meade \u003cmr.alex.meade@gmail.com\u003e"},{"line_number":13,"context_line":"Co-Authored-By: Chuck Fouts \u003cfchuck@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bae84128_c7b769d6","line":10,"range":{"start_line":10,"start_character":46,"end_line":10,"end_character":47},"updated":"2016-02-23 14:36:57.000000000","message":"You might also want to mention cgsnapshot here too.","commit_id":"7f16c6993ea5de61d667a9032a3647b329a01d4f"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"6051580da0ac39aad245f6efd43dd0ef01fea45f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement Consistency Groups for ONTAP Drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch includes the driver changes necessary for NetApp 7mode and"},{"line_number":10,"context_line":"CDOT backends to support all consistency group functionality."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Alex Meade \u003cmr.alex.meade@gmail.com\u003e"},{"line_number":13,"context_line":"Co-Authored-By: Chuck Fouts \u003cfchuck@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bae84128_f31864d5","line":10,"range":{"start_line":10,"start_character":46,"end_line":10,"end_character":47},"in_reply_to":"bae84128_c7b769d6","updated":"2016-02-23 17:45:30.000000000","message":"Done","commit_id":"7f16c6993ea5de61d667a9032a3647b329a01d4f"}],"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":982,"context_line":"        for volume in volumes:"},{"line_number":983,"context_line":"            try:"},{"line_number":984,"context_line":"                self._delete_lun(volume[\u0027name\u0027])"},{"line_number":985,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":986,"context_line":"            except Exception:"},{"line_number":987,"context_line":"                volume[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":988,"context_line":"                LOG.exception(_LE(\"Volume %(vol) in the consistency group \""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_1c2fcd88","line":985,"updated":"2016-02-23 21:53:53.000000000","message":"Please don\u0027t modify the passed in volumes.  Should return a list of dictionaries constructed in this function, i.e., {\u0027id\u0027: \u0027xxxx\u0027, \u0027status\u0027: \u0027deleted\u0027}","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":982,"context_line":"        for volume in volumes:"},{"line_number":983,"context_line":"            try:"},{"line_number":984,"context_line":"                self._delete_lun(volume[\u0027name\u0027])"},{"line_number":985,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":986,"context_line":"            except Exception:"},{"line_number":987,"context_line":"                volume[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":988,"context_line":"                LOG.exception(_LE(\"Volume %(vol) in the consistency group \""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_6a453d41","line":985,"in_reply_to":"bae84128_1c2fcd88","updated":"2016-02-24 15:13:45.000000000","message":"Good point.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9289fe7bf14bc052caeb70331052c9952b5160f1","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# Copyright (c) 2015 Tom Barron.  All rights reserved."},{"line_number":9,"context_line":"# Copyright (c) 2015 Dustin Schoenbrun. All rights reserved."},{"line_number":10,"context_line":"# Copyright (c) 2016 Chuck Fouts. All rights reserved."},{"line_number":11,"context_line":"# Copyright (c) 2016 Mike Rooney. All rights reserved."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":14,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_7a030077","line":11,"updated":"2016-02-25 15:28:05.000000000","message":"Pretty soon we\u0027ll have a full list of every NetApp OpenStack employee. ;)","commit_id":"3b2d17a5db07dfba5d20a1697025706dda6f0a0a"}],"cinder/volume/drivers/netapp/dataontap/client/client_7mode.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        snapshots \u003d result.get_child_by_name(\u0027snapshots\u0027)"},{"line_number":519,"context_line":"        if not snapshots:"},{"line_number":520,"context_line":"            msg \u003d _(\u0027No snapshots could be found on volume %(vol)s.\u0027)"},{"line_number":521,"context_line":"            raise Exception(msg % {\u0027vol\u0027: volume_name})"},{"line_number":522,"context_line":"        snapshot_list \u003d snapshots.get_children()"},{"line_number":523,"context_line":"        snapshot \u003d None"},{"line_number":524,"context_line":"        for s in snapshot_list:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_711ba281","line":521,"updated":"2016-02-23 21:53:53.000000000","message":"This should be a more specific exception such as VolumeBackendAPIException or VolumeDriverException.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        snapshots \u003d result.get_child_by_name(\u0027snapshots\u0027)"},{"line_number":519,"context_line":"        if not snapshots:"},{"line_number":520,"context_line":"            msg \u003d _(\u0027No snapshots could be found on volume %(vol)s.\u0027)"},{"line_number":521,"context_line":"            raise Exception(msg % {\u0027vol\u0027: volume_name})"},{"line_number":522,"context_line":"        snapshot_list \u003d snapshots.get_children()"},{"line_number":523,"context_line":"        snapshot \u003d None"},{"line_number":524,"context_line":"        for s in snapshot_list:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_7914fde7","line":521,"in_reply_to":"bae84128_711ba281","updated":"2016-02-24 15:13:45.000000000","message":"Done","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                msg \u003d _(\u0027Could not find unique snapshot %(snap)s on \u0027"},{"line_number":542,"context_line":"                        \u0027volume %(vol)s.\u0027)"},{"line_number":543,"context_line":"                msg_args \u003d {\u0027snap\u0027: snapshot_name, \u0027vol\u0027: volume_name}"},{"line_number":544,"context_line":"                raise Exception(msg % msg_args)"},{"line_number":545,"context_line":"        if not snapshot:"},{"line_number":546,"context_line":"            raise exception.SnapshotNotFound(snapshot_id\u003dsnapshot_name)"},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_b111aa5f","line":544,"updated":"2016-02-23 21:53:53.000000000","message":"Same","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                msg \u003d _(\u0027Could not find unique snapshot %(snap)s on \u0027"},{"line_number":542,"context_line":"                        \u0027volume %(vol)s.\u0027)"},{"line_number":543,"context_line":"                msg_args \u003d {\u0027snap\u0027: snapshot_name, \u0027vol\u0027: volume_name}"},{"line_number":544,"context_line":"                raise Exception(msg % msg_args)"},{"line_number":545,"context_line":"        if not snapshot:"},{"line_number":546,"context_line":"            raise exception.SnapshotNotFound(snapshot_id\u003dsnapshot_name)"},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_d9d5491c","line":544,"in_reply_to":"bae84128_b111aa5f","updated":"2016-02-24 15:13:45.000000000","message":"Done","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"}],"cinder/volume/drivers/netapp/dataontap/client/client_base.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        cg_id \u003d self._start_cg_snapshot(volume_names, snapshot_name)"},{"line_number":396,"context_line":"        if not cg_id:"},{"line_number":397,"context_line":"            msg \u003d _(\u0027Could not start consistency group snapshot %s.\u0027)"},{"line_number":398,"context_line":"            raise Exception(msg % snapshot_name)"},{"line_number":399,"context_line":"        self._commit_cg_snapshot(cg_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def _start_cg_snapshot(self, volume_names, snapshot_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_d100ae36","line":398,"updated":"2016-02-23 21:53:53.000000000","message":"This should be a more specific exception such as VolumeBackendAPIException or VolumeDriverException.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        cg_id \u003d self._start_cg_snapshot(volume_names, snapshot_name)"},{"line_number":396,"context_line":"        if not cg_id:"},{"line_number":397,"context_line":"            msg \u003d _(\u0027Could not start consistency group snapshot %s.\u0027)"},{"line_number":398,"context_line":"            raise Exception(msg % snapshot_name)"},{"line_number":399,"context_line":"        self._commit_cg_snapshot(cg_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    def _start_cg_snapshot(self, volume_names, snapshot_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_f6849ad3","line":398,"in_reply_to":"bae84128_d100ae36","updated":"2016-02-24 15:13:45.000000000","message":"Done","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def clone_lun(self, volume, name, new_name, space_reserved\u003d\u0027true\u0027,"},{"line_number":263,"context_line":"                  qos_policy_group_name\u003dNone, src_block\u003d0, dest_block\u003d0,"},{"line_number":264,"context_line":"                  block_count\u003d0, source_snapshot\u003dNone):"},{"line_number":265,"context_line":"        # zAPI can only handle 2^24 blocks per range"},{"line_number":266,"context_line":"        bc_limit \u003d 2 ** 24  # 8GB"},{"line_number":267,"context_line":"        # zAPI can only handle 32 block ranges per call"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_71b9e2cb","line":264,"updated":"2016-02-23 21:53:53.000000000","message":"So if source is a volume, the \"name\" parameter identifies the source volume?","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def clone_lun(self, volume, name, new_name, space_reserved\u003d\u0027true\u0027,"},{"line_number":263,"context_line":"                  qos_policy_group_name\u003dNone, src_block\u003d0, dest_block\u003d0,"},{"line_number":264,"context_line":"                  block_count\u003d0, source_snapshot\u003dNone):"},{"line_number":265,"context_line":"        # zAPI can only handle 2^24 blocks per range"},{"line_number":266,"context_line":"        bc_limit \u003d 2 ** 24  # 8GB"},{"line_number":267,"context_line":"        # zAPI can only handle 32 block ranges per call"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_568c66d9","line":264,"in_reply_to":"bae84128_71b9e2cb","updated":"2016-02-24 15:13:45.000000000","message":"Yes, that understanding is correct.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":881,"context_line":"            if error_code \u003d\u003d netapp_api.ESNAPSHOTNOTALLOWED:"},{"line_number":882,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":883,"context_line":"            else:"},{"line_number":884,"context_line":"                raise Exception(msg % msg_args)"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    def _handle_snapshot_not_found(self, result, snapshot_info_list,"},{"line_number":887,"context_line":"                                   snapshot_name, volume_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_51665e51","line":884,"updated":"2016-02-23 21:53:53.000000000","message":"This should be a more specific exception such as VolumeBackendAPIException or VolumeDriverException.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":881,"context_line":"            if error_code \u003d\u003d netapp_api.ESNAPSHOTNOTALLOWED:"},{"line_number":882,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":883,"context_line":"            else:"},{"line_number":884,"context_line":"                raise Exception(msg % msg_args)"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    def _handle_snapshot_not_found(self, result, snapshot_info_list,"},{"line_number":887,"context_line":"                                   snapshot_name, volume_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_b987a55f","line":884,"in_reply_to":"bae84128_51665e51","updated":"2016-02-24 15:13:45.000000000","message":"Done","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d4e4f49e0bbf098c934cf20b77e34186a0cb9377","unresolved":false,"context_lines":[{"line_number":891,"context_line":"            msg \u003d _(\u0027Could not find unique snapshot %(snap)s on \u0027"},{"line_number":892,"context_line":"                    \u0027volume %(vol)s.\u0027)"},{"line_number":893,"context_line":"            msg_args \u003d {\u0027snap\u0027: snapshot_name, \u0027vol\u0027: volume_name}"},{"line_number":894,"context_line":"            raise Exception(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_114976b7","line":894,"updated":"2016-02-23 21:53:53.000000000","message":"Same as above.  Should be a more specific exception.","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":16064,"name":"Mike Rooney","email":"rooneym@netapp.com","username":"rooneym"},"change_message_id":"affda5b80bec8e491f38e79f8585822ea5caf2f6","unresolved":false,"context_lines":[{"line_number":891,"context_line":"            msg \u003d _(\u0027Could not find unique snapshot %(snap)s on \u0027"},{"line_number":892,"context_line":"                    \u0027volume %(vol)s.\u0027)"},{"line_number":893,"context_line":"            msg_args \u003d {\u0027snap\u0027: snapshot_name, \u0027vol\u0027: volume_name}"},{"line_number":894,"context_line":"            raise Exception(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_197b317c","line":894,"in_reply_to":"bae84128_114976b7","updated":"2016-02-24 15:13:45.000000000","message":"Done","commit_id":"216491bcfd120cbb04d2ecfed82ad4dd78bb7f91"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9289fe7bf14bc052caeb70331052c9952b5160f1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume.drivers.netapp.dataontap.client import client_base"},{"line_number":30,"context_line":"from cinder.volume.drivers.netapp import utils as na_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from oslo_utils import strutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_3a817890","line":32,"updated":"2016-02-25 15:28:05.000000000","message":"This should actually be above the cinder imports with the other third party libs. Not a critical issue though.","commit_id":"3b2d17a5db07dfba5d20a1697025706dda6f0a0a"}]}
