)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"99b0541faf03a887c2e9bf25c474e0d7192530ff","unresolved":false,"context_lines":[{"line_number":13,"context_line":"- Create/delete consistent group snapshots"},{"line_number":14,"context_line":"- Create consistent groups from snapshots"},{"line_number":15,"context_line":"- Clone consistent groups"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: blueprint unity-consistent-group-support"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I0ef2ec959f892acb79d8d08a31d9a8ad47c4350f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_44ce0784","line":16,"updated":"2019-02-21 14:48:53.000000000","message":"Can you reword the commit message to clarify that CG is supported based on group type?  Basically if group type supports CG, it will be CG; otherwise it is generic volume group.","commit_id":"dbc0e692a3bb1f285103e89552626670e68bdee4"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_client.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2d0701b9829b52bc502dd2f6ef7ac128b4e5019f","unresolved":false,"context_lines":[{"line_number":637,"context_line":"            mocked_get.assert_called_once_with(name\u003d\u0027not_found_name\u0027)"},{"line_number":638,"context_line":"            self.assertIsNone(ret)"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"    def test_delete_cg(self):"},{"line_number":641,"context_line":"        existing_cg \u003d MockResource(_id\u003d\u0027cg_1\u0027)"},{"line_number":642,"context_line":"        with mock.patch.object(existing_cg, \u0027delete\u0027, create\u003dTrue"},{"line_number":643,"context_line":"                               ) as mocked_delete, \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_b613890d","line":640,"range":{"start_line":640,"start_character":3,"end_line":640,"end_character":28},"updated":"2019-01-13 19:08:12.000000000","message":"should we test CG when it is empty and when it is not empty?","commit_id":"871f7515559bf961444be724caa108f50056e62a"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"349152773a3897f86f49bac258b72026aa5bcde5","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        ret \u003d self.driver.create_group_from_src(self.get_context(), cg,"},{"line_number":404,"context_line":"                                                volumes,"},{"line_number":405,"context_line":"                                                group_snapshot\u003dcg_snap)"},{"line_number":406,"context_line":"        self.assertEqual(ret[0], cg)"},{"line_number":407,"context_line":"        self.assertListEqual(ret[1], volumes)"},{"line_number":408,"context_line":"        self.assertEqual(ret[2], cg_snap)"},{"line_number":409,"context_line":"        self.assertIsNone(ret[3])"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfb3d3c7_c86ef2c7","line":406,"range":{"start_line":406,"start_character":25,"end_line":406,"end_character":35},"updated":"2019-05-30 14:29:27.000000000","message":"Argument order should (EXPECTED_VALUE, ACTUAL_VALUE) throughout.","commit_id":"661a4f121261569e1ce73c3ba19811db2342762d"}],"cinder/volume/drivers/dell_emc/unity/adapter.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0c76ee4248344023df3eae6192c8a0103c77a77b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.i18n import _"},{"line_number":29,"context_line":"from cinder.objects.fields import GroupStatus"},{"line_number":30,"context_line":"from cinder.objects.fields import SnapshotStatus"},{"line_number":31,"context_line":"from cinder import utils as cinder_utils"},{"line_number":32,"context_line":"from cinder.volume.drivers.dell_emc.unity import client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_c00cb63a","line":29,"updated":"2018-10-02 12:49:21.000000000","message":"Please, import modules, not objects","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"0fd900735703dbd0a785f794a5bfdb816331d700","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.i18n import _"},{"line_number":29,"context_line":"from cinder.objects.fields import GroupStatus"},{"line_number":30,"context_line":"from cinder.objects.fields import SnapshotStatus"},{"line_number":31,"context_line":"from cinder import utils as cinder_utils"},{"line_number":32,"context_line":"from cinder.volume.drivers.dell_emc.unity import client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_980c3545","line":29,"in_reply_to":"3f79a3b5_c00cb63a","updated":"2018-10-11 02:56:47.000000000","message":"Done","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cec4df36ba552924bfe7e0d581a19ca3320891fd","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        cg_name \u003d group.id"},{"line_number":809,"context_line":"        description \u003d group.description if group.description else group.name"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        LOG.info(\u0027Create CG: %(name)s, description: %(description)s\u0027,"},{"line_number":812,"context_line":"                 {\u0027name\u0027: cg_name, \u0027description\u0027: description})"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        self.client.create_cg(cg_name, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_94584ef9","line":811,"range":{"start_line":811,"start_character":25,"end_line":811,"end_character":27},"updated":"2018-10-01 20:21:52.000000000","message":"This might not be a consistent group.\n\nAlso, consistency groups were deprecated, so it would be better not to refer to these as CGs to avoid confusion.","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"0fd900735703dbd0a785f794a5bfdb816331d700","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        cg_name \u003d group.id"},{"line_number":809,"context_line":"        description \u003d group.description if group.description else group.name"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        LOG.info(\u0027Create CG: %(name)s, description: %(description)s\u0027,"},{"line_number":812,"context_line":"                 {\u0027name\u0027: cg_name, \u0027description\u0027: description})"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        self.client.create_cg(cg_name, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_7807d91e","line":811,"range":{"start_line":811,"start_character":25,"end_line":811,"end_character":27},"in_reply_to":"3f79a3b5_94584ef9","updated":"2018-10-11 02:56:47.000000000","message":"Done","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"}],"cinder/volume/drivers/dell_emc/unity/client.py":[{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"003e43fe88b91bd1823fbd5c00262a5e4e5b2543","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return self.system.serial_number"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_lun(self, name, size, pool, description\u003dNone,"},{"line_number":60,"context_line":"                   io_limit_policy\u003dNone, cg_name\u003dNone):"},{"line_number":61,"context_line":"        \"\"\"Creates LUN on the Unity system."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        :param name: lun name"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_10b787f7","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":53},"updated":"2018-06-11 07:10:37.000000000","message":"No description for this parameter","commit_id":"f8e4079ce34bcb5019cb2a95c5186baa5c42ced6"}],"cinder/volume/drivers/dell_emc/unity/driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0c76ee4248344023df3eae6192c8a0103c77a77b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        3.0.0 - Add IPv6 support"},{"line_number":76,"context_line":"        3.1.0 - Support revert to snapshot API"},{"line_number":77,"context_line":"        4.0.0 - Support remove empty host"},{"line_number":78,"context_line":"        4.1.0 - Support generic group and consistent group"},{"line_number":79,"context_line":"        4.2.0 - Support compressed volume"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_00206e99","line":78,"updated":"2018-10-02 12:49:21.000000000","message":"Looks like v4.1.0 was missed. I\u0027m not sure that it\u0027s a good idea to add it now","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"0fd900735703dbd0a785f794a5bfdb816331d700","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        3.0.0 - Add IPv6 support"},{"line_number":76,"context_line":"        3.1.0 - Support revert to snapshot API"},{"line_number":77,"context_line":"        4.0.0 - Support remove empty host"},{"line_number":78,"context_line":"        4.1.0 - Support generic group and consistent group"},{"line_number":79,"context_line":"        4.2.0 - Support compressed volume"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_f329ca88","line":78,"in_reply_to":"3f79a3b5_00206e99","updated":"2018-10-11 02:56:47.000000000","message":"The review was sent out before Rocky was released. But it missed the code freeze milestone of Rocky.\nIn patch 6, I changed it to 5.0.0 for the first version of Stein.","commit_id":"b4fd7fbc12d8a2b73c35051e71be3c8445960217"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"f136429894a638af02d7dabc6a8bcc001147dc4d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        4.0.0 - Support remove empty host"},{"line_number":78,"context_line":"        4.2.0 - Support compressed volume"},{"line_number":79,"context_line":"        5.0.0 - Support storage assisted volume migration"},{"line_number":80,"context_line":"        5.1.0 - Support generic group and consistent group"},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    VERSION \u003d \u002705.01.00\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_943c4be2","line":80,"range":{"start_line":80,"start_character":0,"end_line":80,"end_character":58},"updated":"2019-03-04 16:06:10.000000000","message":"Good. expect that it will be updated depending on the ordering replication and this patch.","commit_id":"f18195191ac39afd0cc784bd895686600ffbdde7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"349152773a3897f86f49bac258b72026aa5bcde5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import interface"},{"line_number":24,"context_line":"from cinder.volume import configuration"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfb3d3c7_c87cb273","line":21,"updated":"2019-05-30 14:29:27.000000000","message":"Six import should be grouped together with the oslo_* imports.","commit_id":"661a4f121261569e1ce73c3ba19811db2342762d"}],"cinder/volume/drivers/dell_emc/unity/utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c64403b3e8ec47261c727bc18ac74b30acfd13f9","unresolved":false,"context_lines":[{"line_number":310,"context_line":"def append_capabilities(func):"},{"line_number":311,"context_line":"    capabilities \u003d {"},{"line_number":312,"context_line":"        \u0027thin_provisioning_support\u0027: True,"},{"line_number":313,"context_line":"        \u0027thick_provisioning_support\u0027: True,"},{"line_number":314,"context_line":"        \u0027consistent_group_snapshot_enabled\u0027: True"},{"line_number":315,"context_line":"    }"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_57968996","line":313,"updated":"2019-02-25 02:15:11.000000000","message":"These two capabilities are not related to CGs. Please add a note in the commit msg for this change.","commit_id":"b370b338a7e75b5d802e9ea1b0e03c9bf0c99bdb"}],"doc/source/configuration/block-storage/drivers/dell-emc-unity-driver.rst":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"b65365788e488d3fde29b9e0fd2f36025f9a84c5","unresolved":false,"context_lines":[{"line_number":373,"context_line":"Consistent group support"},{"line_number":374,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"For a group to support consistent group snapshot, the group specs in the"},{"line_number":377,"context_line":"corresponding group type should have the following entry:"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. code-block:: ini"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fdfeff1_6cef041d","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":57},"updated":"2019-02-14 03:56:20.000000000","message":"This looks strange. Can you review the text?\nSHouldn\u0027t that we in the group definition by default?\n\nI can understand that for Volume block this snipped is needed, but why for the group?\nOr this is really needed for snapshot ini block not group one?","commit_id":"dbc0e692a3bb1f285103e89552626670e68bdee4"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"65fd9de42acc157ddbe5baf2326aa23a8be71b76","unresolved":false,"context_lines":[{"line_number":373,"context_line":"Consistent group support"},{"line_number":374,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"For a group to support consistent group snapshot, the group specs in the"},{"line_number":377,"context_line":"corresponding group type should have the following entry:"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":".. code-block:: ini"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fdfeff1_2c0edc3a","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":57},"in_reply_to":"9fdfeff1_6cef041d","updated":"2019-02-14 05:57:47.000000000","message":"Currently, the group here is a Generic Group which could be not a consistency group. When the user creates a group and he/she wants it to be a consistency one, he/she needs to create a group type with the spec `\u0027consistent_group_snapshot_enabled\u0027: \u003cis\u003e True`. Then the scheduler could schedule the group creation to our Unity driver. Finally the group is a consistency group because it is created as a Unity CG.","commit_id":"dbc0e692a3bb1f285103e89552626670e68bdee4"}],"releasenotes/notes/support-cg-2b55da0bd9f69c7d.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"99b0541faf03a887c2e9bf25c474e0d7192530ff","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Dell EMC Unity driver: Add consistent group support. The supported"},{"line_number":5,"context_line":"    operations are: create/delete consistent groups, add volumes to and remove"},{"line_number":6,"context_line":"    volumes from consistent groups, create/delete consistent group snapshots,"},{"line_number":7,"context_line":"    create consistent groups from snapshots, clone consistent groups."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fdfeff1_84a94f91","line":7,"updated":"2019-02-21 14:48:53.000000000","message":"Add clarification that CG supported is based on group type.","commit_id":"dbc0e692a3bb1f285103e89552626670e68bdee4"}]}
